server side fixed

This commit is contained in:
2021-11-08 17:24:51 +01:00
parent 7b4f8c118b
commit 64a25a242b
22 changed files with 484 additions and 322 deletions

View File

@ -9,6 +9,7 @@
#include <time.h>
enum numberMode { DEC, HEX };
enum PROGRAM_INDEX { PROGRAM_FPGA, PROGRAM_KERNEL, PROGRAM_SERVER };
/**
* Convert a value from a range to a different range (eg voltage to dac or vice
@ -28,7 +29,7 @@ int getAbsPath(char *buf, size_t bufSize, char *fname);
int getTimeFromString(char *buf, time_t *result);
int getKernelVersion(char* retvals);
int getKernelVersion(char *retvals);
int validateKernelVersion(char *expectedVersion);
@ -38,9 +39,11 @@ void validate64(int *ret, char *mess, int64_t arg, int64_t retval,
char *modename, enum numberMode nummode);
int getModuleIdInFile(int *ret, char *mess, char *fileName);
int verifyChecksumFromBuffer(char *mess, char *clientChecksum, char *buffer,
ssize_t bytes);
int verifyChecksumFromFile(char *mess, char *clientChecksum, char *fname);
int verifyChecksumFromFlash(char *mess, char *clientChecksum, char *fname,
ssize_t fsize);
int verifyChecksum(char *mess, char *clientChecksum, MD5_CTX *c, char *msg);
int verifyChecksumFromBuffer(char *mess, char *functionType,
char *clientChecksum, char *buffer, ssize_t bytes);
int verifyChecksumFromFile(char *mess, char *functionType, char *clientChecksum,
char *fname);
int verifyChecksumFromFlash(char *mess, char *functionType,
char *clientChecksum, char *fname, ssize_t fsize);
int verifyChecksum(char *mess, char *functionType, char *clientChecksum,
MD5_CTX *c, char *msg);

View File

@ -2,6 +2,8 @@
// Copyright (C) 2021 Contributors to the SLS Detector Package
#pragma once
#include "common.h"
#include <stdint.h>
#include <stdio.h>
#include <sys/types.h>
@ -21,15 +23,17 @@ int emptyTempFolder(char *mess);
* verify memory available to copy
* open file to copy
*/
int preparetoCopyProgram(FILE **fd, uint64_t fsize, char *mess);
int copyToFlash(enum PROGRAMINDEX index, char *mType, ssize_t fsize,
char *clientChecksum, char *mess);
int getDrive(enum PROGRAMINDEX index, char *mess);
int preparetoCopyProgram(char *mess, char *functionType, FILE **fd,
uint64_t fsize);
int eraseAndWriteToFlash(char *mess, enum PROGRAM_INDEX index,
char *functionType, char *clientChecksum,
ssize_t fsize);
int getDrive(char *mess, enum PROGRAM_INDEX index);
/** Notify fpga not to touch flash, open src and flash drive to write */
int openFileForFlash(FILE **flashfd, FILE **srcfd, char *mess);
int openFileForFlash(char *mess, FILE **flashfd, FILE **srcfd);
int eraseFlash(char *mess);
/* write from tmp file to flash */
int writeToFlash(ssize_t fsize, FILE *flashfd, FILE *srcfd, char *mess);
int writeToFlash(char *mess, ssize_t fsize, FILE *flashfd, FILE *srcfd);
/** Notify fpga to pick up firmware from flash and wait for status confirmation
*/
int waitForFPGAtoTouchFlash(char *mess);

View File

@ -2,6 +2,8 @@
// Copyright (C) 2021 Contributors to the SLS Detector Package
#pragma once
#include "common.h"
#include <stdint.h>
#include <stdio.h>
@ -13,9 +15,10 @@ void NotifyServerStartSuccess();
/** reset fpga and controller(only implemented for >= v1.1 boards) */
void rebootControllerAndFPGA();
int eraseAndWriteToFlash(char *mess, char *checksum, char *fpgasrc,
int eraseAndWriteToFlash(char *mess, enum PROGRAM_INDEX index,
char *functionType, char *checksum, char *fpgasrc,
uint64_t fsize);
int getDrive(char *mess);
int openFileForFlash(FILE **flashfd, char *mess);
int getDrive(char *mess, enum PROGRAM_INDEX index);
int openFileForFlash(char *mess, FILE **flashfd);
int eraseFlash(char *mess);
int writeToFlash(ssize_t fsize, FILE *flashfd, char *buffer, char *mess);
int writeToFlash(char *mess, ssize_t fsize, FILE *flashfd, char *buffer);

View File

@ -13,7 +13,8 @@
#if defined(MYTHEN3D) || defined(GOTTHARD2D)
#include "programViaNios.h"
#elif defined(CHIPTESTBOARDD) || defined(JUNGFRAUD) || defined(MOENCHD)
#elif defined(CHIPTESTBOARDD) || defined(JUNGFRAUD) || defined(MOENCHD) || \
defined(GOTTHARDD)
#include "programViaBlackfin.h"
#endif
@ -60,7 +61,6 @@ typedef struct udpStruct_s {
int isInitCheckDone();
int getInitResult(char **mess);
void basictests();
int getKernelVersion(char *retvals);
#if defined(GOTTHARDD) || defined(JUNGFRAUD) || defined(CHIPTESTBOARDD) || \
defined(MOENCHD) || defined(MYTHEN3D) || defined(GOTTHARD2D)
int checkType();

View File

@ -8,8 +8,6 @@
#define GOODBYE (-200)
#define REBOOT (-400)
enum PROGRAMINDEX {FPGA_PROGRAM, KERNEL_PROGRAM, SERVER_PROGRAM}
// initialization functions
int printSocketReadError();
void init_detector();
@ -121,10 +119,6 @@ int get_transmission_delay_left(int);
int set_transmission_delay_right(int);
int get_transmission_delay_right(int);
int program_fpga(int);
void program_fpga_via_blackfin(int file_des, enum PROGRAMINDEX index,
uint64_t filesize, char *checksum);
void program_fpga_via_nios(int file_des, enum PROGRAMINDEX index,
uint64_t filesize, char *checksum);
int reset_fpga(int);
int power_chip(int);
int set_activate(int);
@ -284,4 +278,12 @@ int set_udp_first_dest(int);
int get_readout_speed(int);
int set_readout_speed(int);
int get_kernel_version(int);
int program_kernel(int);
int update_kernel(int);
int update_detector_server(int);
int receive_program(int file_des, enum PROGRAM_INDEX index);
void receive_program_via_blackfin(int file_des, enum PROGRAM_INDEX index,
char *functionType, uint64_t filesize,
char *checksum);
void receive_program_default(int file_des, enum PROGRAM_INDEX index,
char *functionType, uint64_t filesize,
char *checksum);