mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 10:07:59 +02:00
eiger server compiles, client side of interface to do
This commit is contained in:
@ -95,7 +95,7 @@ int bindSocket(unsigned short int port_number) {
|
||||
// success
|
||||
myport = port_number;
|
||||
ret = OK;
|
||||
FILE_LOG(logINFO, (" %s socket bound: isock=%d port=%d fd=%d\n",
|
||||
FILE_LOG(logDEBUG5, ("%s socket bound: isock=%d, port=%d, fd=%d\n",
|
||||
(isControlServer ? "Control":"Stop"), isock, port_number, socketDescriptor));
|
||||
|
||||
}
|
||||
@ -356,25 +356,34 @@ int sendModule(int file_des, sls_detector_module *myMod) {
|
||||
|
||||
|
||||
int sendModuleGeneral(int file_des, sls_detector_module *myMod, int sendAll) {
|
||||
int ts = 0;
|
||||
int ts = 0, n = 0;
|
||||
int nChips = myMod->nchip;
|
||||
int nChans = myMod->nchan;
|
||||
int nAdcs = myMod->nadc;
|
||||
int nDacs = myMod->ndac;
|
||||
|
||||
// send module structure
|
||||
ts += sendData(file_des,&(myMod->serialnumber),sizeof(myMod->serialnumber),INT32);
|
||||
ts += sendData(file_des,&(myMod->nchan),sizeof(myMod->nchan),INT32);
|
||||
ts += sendData(file_des,&(myMod->nchip),sizeof(myMod->nchip),INT32);
|
||||
ts += sendData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32);
|
||||
ts += sendData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32);
|
||||
ts += sendData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32);
|
||||
ts += sendData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER);
|
||||
ts += sendData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER);
|
||||
n = sendData(file_des,&(myMod->serialnumber),sizeof(myMod->serialnumber),INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = sendData(file_des,&(myMod->nchan),sizeof(myMod->nchan),INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = sendData(file_des,&(myMod->nchip),sizeof(myMod->nchip),INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = sendData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = sendData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = sendData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = sendData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER);
|
||||
if (!n) return -1; ts += n;
|
||||
n = sendData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER);
|
||||
if (!n) return -1; ts += n;
|
||||
FILE_LOG(logDEBUG5, ("module of size %d sent\n",ts));
|
||||
|
||||
// send dac
|
||||
ts += sendData(file_des,myMod->dacs,sizeof(int)*nDacs,INT32);
|
||||
n = sendData(file_des,myMod->dacs,sizeof(int)*nDacs,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
FILE_LOG(logDEBUG5, ("dacs of size %d sent\n",ts));
|
||||
{
|
||||
int idac;
|
||||
@ -383,18 +392,21 @@ int sendModuleGeneral(int file_des, sls_detector_module *myMod, int sendAll) {
|
||||
}
|
||||
|
||||
// send adc
|
||||
ts += sendData(file_des,myMod->adcs,sizeof(int)*nAdcs,INT32);
|
||||
n = sendData(file_des,myMod->adcs,sizeof(int)*nAdcs,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
FILE_LOG(logDEBUG5, ("adcs of size %d sent\n", ts));
|
||||
|
||||
// some detectors dont require sending all trimbits etc.
|
||||
if(sendAll) {
|
||||
// chips
|
||||
ts += sendData(file_des,myMod->chipregs,sizeof(int)*nChips,INT32);
|
||||
n = sendData(file_des,myMod->chipregs,sizeof(int)*nChips,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
FILE_LOG(logDEBUG5, ("chips of size %d sent\n", ts));
|
||||
|
||||
// channels
|
||||
ts += sendData(file_des,myMod->chanregs,sizeof(int)*nChans,INT32);
|
||||
n = sendData(file_des,myMod->chanregs,sizeof(int)*nChans,INT32);
|
||||
FILE_LOG(logDEBUG5, ("chans of size %d sent - %d\n", ts, myMod->nchan));
|
||||
if (!n) return -1; ts += n;
|
||||
}
|
||||
|
||||
FILE_LOG(logDEBUG5, ("module of size %d sent register %x\n", ts, myMod->reg));
|
||||
@ -408,7 +420,7 @@ int receiveModule(int file_des, sls_detector_module* myMod) {
|
||||
}
|
||||
|
||||
int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveAll) {
|
||||
int ts = 0;
|
||||
int ts = 0, n = 0;
|
||||
int *dacptr = myMod->dacs;
|
||||
int *adcptr = myMod->adcs;
|
||||
int *chipptr = myMod->chipregs, *chanptr = myMod->chanregs;
|
||||
@ -416,14 +428,22 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
|
||||
int nChans, nchanold = myMod->nchan, nchandiff;
|
||||
int nDacs, ndold = myMod->ndac, ndacdiff;
|
||||
int nAdcs, naold = myMod->nadc, nadcdiff;
|
||||
ts += receiveData(file_des,&(myMod->serialnumber),sizeof(myMod->serialnumber),INT32);
|
||||
ts += receiveData(file_des,&(myMod->nchan),sizeof(myMod->nchan),INT32);
|
||||
ts += receiveData(file_des,&(myMod->nchip),sizeof(myMod->nchip),INT32);
|
||||
ts += receiveData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32);
|
||||
ts += receiveData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32);
|
||||
ts += receiveData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32);
|
||||
ts += receiveData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER);
|
||||
ts += receiveData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER);
|
||||
n = receiveData(file_des,&(myMod->serialnumber),sizeof(myMod->serialnumber),INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = receiveData(file_des,&(myMod->nchan),sizeof(myMod->nchan),INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = receiveData(file_des,&(myMod->nchip),sizeof(myMod->nchip),INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = receiveData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = receiveData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = receiveData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = receiveData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER);
|
||||
if (!n) return -1; ts += n;
|
||||
n = receiveData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER);
|
||||
if (!n) return -1; ts += n;
|
||||
|
||||
myMod->dacs = dacptr;
|
||||
myMod->adcs = adcptr;
|
||||
@ -473,7 +493,8 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
|
||||
else
|
||||
FILE_LOG(logDEBUG5, ("received %d adcs\n",nAdcs));
|
||||
if (ndacdiff <= 0) {
|
||||
ts += receiveData(file_des,myMod->dacs, sizeof(int)*nDacs,INT32);
|
||||
n = receiveData(file_des,myMod->dacs, sizeof(int)*nDacs,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
FILE_LOG(logDEBUG5, ("dacs received\n"));
|
||||
int id;
|
||||
for (id = 0; id<nDacs; id++)
|
||||
@ -481,20 +502,25 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
|
||||
} else {
|
||||
dacptr = (int*)malloc(ndacdiff*sizeof(int));
|
||||
myMod->ndac = ndold;
|
||||
ts += receiveData(file_des,myMod->dacs, sizeof(int)*ndold,INT32);
|
||||
ts += receiveData(file_des,dacptr, sizeof(int)*ndacdiff,INT32);
|
||||
n = receiveData(file_des,myMod->dacs, sizeof(int)*ndold,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = receiveData(file_des,dacptr, sizeof(int)*ndacdiff,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
free(dacptr);
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if (nadcdiff <= 0) {
|
||||
ts += receiveData(file_des,myMod->adcs, sizeof(int)*nAdcs,INT32);
|
||||
n = receiveData(file_des,myMod->adcs, sizeof(int)*nAdcs,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
FILE_LOG(logDEBUG5, ("adcs received\n"));
|
||||
} else {
|
||||
adcptr = (int*)malloc(nadcdiff*sizeof(int));
|
||||
myMod->nadc = naold;
|
||||
ts += receiveData(file_des,myMod->adcs, sizeof(int)*naold,INT32);
|
||||
ts += receiveData(file_des,adcptr, sizeof(int)*nadcdiff,INT32);
|
||||
n = receiveData(file_des,myMod->adcs, sizeof(int)*naold,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = receiveData(file_des,adcptr, sizeof(int)*nadcdiff,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
free(adcptr);
|
||||
return FAIL;
|
||||
}
|
||||
@ -504,25 +530,31 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
|
||||
if(receiveAll){
|
||||
|
||||
if (nchipdiff <= 0) {
|
||||
ts += receiveData(file_des,myMod->chipregs, sizeof(int)*nChips,INT32);
|
||||
n = receiveData(file_des,myMod->chipregs, sizeof(int)*nChips,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
FILE_LOG(logDEBUG5, ("chips received\n"));
|
||||
} else {
|
||||
chipptr = (int*)malloc(nchipdiff*sizeof(int));
|
||||
myMod->nchip = nchipold;
|
||||
ts += receiveData(file_des,myMod->chipregs, sizeof(int)*nchipold,INT32);
|
||||
ts += receiveData(file_des,chipptr, sizeof(int)*nchipdiff,INT32);
|
||||
n = receiveData(file_des,myMod->chipregs, sizeof(int)*nchipold,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = receiveData(file_des,chipptr, sizeof(int)*nchipdiff,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
free(chipptr);
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if (nchandiff <= 0) {
|
||||
ts += receiveData(file_des,myMod->chanregs, sizeof(int)*nChans,INT32);
|
||||
n = receiveData(file_des,myMod->chanregs, sizeof(int)*nChans,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
FILE_LOG(logDEBUG5, ("chans received\n"));
|
||||
} else {
|
||||
chanptr = (int*)malloc(nchandiff*sizeof(int));
|
||||
myMod->nchan = nchanold;
|
||||
ts += receiveData(file_des,myMod->chanregs, sizeof(int)*nchanold,INT32);
|
||||
ts += receiveData(file_des,chanptr, sizeof(int)*nchandiff,INT32);
|
||||
n = receiveData(file_des,myMod->chanregs, sizeof(int)*nchanold,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
n = receiveData(file_des,chanptr, sizeof(int)*nchandiff,INT32);
|
||||
if (!n) return -1; ts += n;
|
||||
free(chanptr);
|
||||
return FAIL;
|
||||
}
|
||||
@ -546,7 +578,7 @@ int Server_VerifyLock() {
|
||||
}
|
||||
|
||||
|
||||
void Server_SendResult(int fileDes, intType itype, int update, void* retval, int retvalSize) {
|
||||
int Server_SendResult(int fileDes, intType itype, int update, void* retval, int retvalSize) {
|
||||
|
||||
// update if different clients (ret can be ok or acquisition finished), not fail to not overwrite e message
|
||||
if (update && ret != FAIL && differentClients)
|
||||
@ -554,7 +586,7 @@ void Server_SendResult(int fileDes, intType itype, int update, void* retval, int
|
||||
|
||||
// send success of operation
|
||||
int ret1 = ret;
|
||||
sendData(fileDes, &ret1,sizeof(ret1), INT32);/* if < 0, return , socket crash*/
|
||||
sendData(fileDes, &ret1,sizeof(ret1), INT32);
|
||||
if(ret == FAIL) {
|
||||
// send error message
|
||||
if (strlen(mess))
|
||||
@ -567,4 +599,6 @@ void Server_SendResult(int fileDes, intType itype, int update, void* retval, int
|
||||
}
|
||||
// send return value
|
||||
sendData(fileDes, retval, retvalSize, itype);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -64,7 +64,8 @@ int Server_VerifyLock();
|
||||
* @param update 1 if one must update if different clients, else 0
|
||||
* @param retval pointer to result
|
||||
* @param retvalSize size of result
|
||||
* @returns result of operation
|
||||
*/
|
||||
void Server_SendResult(int fileDes, intType itype, int update, void* retval, int retvalSize);
|
||||
int Server_SendResult(int fileDes, intType itype, int update, void* retval, int retvalSize);
|
||||
|
||||
#endif
|
||||
|
@ -20,7 +20,7 @@
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
logERROR, logWARNING, logINFO, logINFOBLUE,
|
||||
logERROR, logWARNING, logINFO, logINFOBLUE, logGREEN,
|
||||
logDEBUG, logDEBUG1, logDEBUG2, logDEBUG3, logDEBUG4, logDEBUG5
|
||||
}TLogLevel;
|
||||
|
||||
@ -35,6 +35,7 @@ static inline void FILELOG_PrintLog(TLogLevel level, char* m) {
|
||||
case logERROR: cprintf(RED BOLD, "ERROR: %s", m); break;
|
||||
case logWARNING: cprintf(YELLOW BOLD, "WARNING: %s", m); break;
|
||||
case logINFOBLUE: cprintf(BLUE, "INFO: %s", m); break;
|
||||
case logGREEN: cprintf(GREEN, "INFO: %s", m); break;
|
||||
case logINFO: cprintf(RESET, "INFO: %s", m); break;
|
||||
case logDEBUG: cprintf(MAGENTA, "DEBUG: %s", m); break;
|
||||
case logDEBUG1: cprintf(MAGENTA, "DEBUG1: %s", m); break;
|
||||
|
@ -19,15 +19,12 @@ int getFirmwareCheckResult(char** mess);
|
||||
#endif
|
||||
|
||||
void checkFirmwareCompatibility();
|
||||
#if defined(MYTHEN3D) || defined(JUNGFRAUD)
|
||||
#ifdef JUNGFRAUD
|
||||
int checkType();
|
||||
u_int32_t testFpga(void);
|
||||
int testBus(void);
|
||||
#endif
|
||||
|
||||
#ifdef MYTHEN3D
|
||||
int moduleTest( enum digitalTestMode arg);
|
||||
#endif
|
||||
#ifdef JUNGFRAUD
|
||||
int detectorTest( enum digitalTestMode arg);
|
||||
#endif
|
||||
@ -40,7 +37,7 @@ u_int64_t getFirmwareAPIVersion();
|
||||
u_int16_t getHardwareVersionNumber();
|
||||
u_int16_t getHardwareSerialNumber();
|
||||
#endif
|
||||
#if !defined(MYTHEN3D) || !defined(EIGERD)
|
||||
#ifdef EIGERD
|
||||
u_int32_t getDetectorNumber();
|
||||
#endif
|
||||
u_int64_t getDetectorMAC();
|
||||
@ -73,17 +70,11 @@ uint32_t readRegister(uint32_t offset);
|
||||
|
||||
|
||||
// firmware functions (resets)
|
||||
#if defined(MYTHEN3D) || defined(JUNGFRAUD)
|
||||
#ifdef JUNGFRAUD
|
||||
int powerChip (int on);
|
||||
void cleanFifos();
|
||||
void resetCore();
|
||||
void resetPeripheral();
|
||||
#endif
|
||||
#ifdef MYTHEN3D
|
||||
int getPhase(int i);
|
||||
int configurePhase(int val, enum CLKINDEX i);
|
||||
int configureFrequency(int val, int i);
|
||||
#elif JUNGFRAUD
|
||||
int autoCompDisable(int on);
|
||||
int adcPhase(int st);
|
||||
int getPhase();
|
||||
@ -97,7 +88,7 @@ int setROI(int n, ROI arg[], int *retvalsize, int *ret);
|
||||
#endif
|
||||
|
||||
// parameters - readout
|
||||
int setSpeed(enum speedVariable arg, int val);
|
||||
enum speedVariable setSpeed(int val);
|
||||
#ifdef EIGERD
|
||||
enum readOutFlags setReadOutFlags(enum readOutFlags val);
|
||||
#endif
|
||||
@ -129,35 +120,21 @@ int setThresholdEnergy(int ev);
|
||||
#endif
|
||||
|
||||
// parameters - dac, adc, hv
|
||||
#if defined(MYTHEN3D) || defined(JUNGFRAUD)
|
||||
#ifdef JUNGFRAUD
|
||||
void serializeToSPI(u_int32_t addr, u_int32_t val, u_int32_t csmask, int numbitstosend, u_int32_t clkmask, u_int32_t digoutmask, int digofset);
|
||||
void initDac(int dacnum);
|
||||
int voltageToDac(int value);
|
||||
int dacToVoltage(unsigned int digital);
|
||||
#endif
|
||||
#ifdef MYTHEN3D
|
||||
int setPower(enum DACINDEX ind, int val);
|
||||
int powerToDac(int value, int chip);
|
||||
int dacToPower(int value, int chip);
|
||||
#endif
|
||||
|
||||
#ifdef JUNGFRAUD
|
||||
extern void setAdc(int addr, int val); // AD9257.h
|
||||
#endif
|
||||
|
||||
void setDAC(enum DACINDEX ind, int val, int mV, int retval[]);
|
||||
#ifdef MYTHEN3D
|
||||
int getVLimit();
|
||||
void setDacRegister(int dacnum,int dacvalue);
|
||||
int getDacRegister(int dacnum);
|
||||
#endif
|
||||
#ifndef MYTHEN3D
|
||||
int getADC(enum ADCINDEX ind);
|
||||
#endif
|
||||
|
||||
#ifndef MYTHEN3D
|
||||
int setHighVoltage(int val);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@ -169,8 +146,10 @@ enum externalCommunicationMode getTiming();
|
||||
#ifdef JUNGFRAUD
|
||||
long int calcChecksum(int sourceip, int destip);
|
||||
#endif
|
||||
#ifndef MYTHEN3D
|
||||
#ifdef GOTTHARDD
|
||||
int configureMAC(uint32_t destip, uint64_t destmac, uint64_t sourcemac, uint32_t sourceip, uint32_t udpport, uint32_t udpport2, int ival);
|
||||
#else
|
||||
int configureMAC(uint32_t destip, uint64_t destmac, uint64_t sourcemac, uint32_t sourceip, uint32_t udpport, uint32_t udpport2);
|
||||
#endif
|
||||
#if defined(JUNGFRAUD) || defined(EIGERD)
|
||||
int setDetectorPosition(int pos[]);
|
||||
@ -187,7 +166,7 @@ int resetCounterBlock(int startACQ);
|
||||
int calibratePedestal(int frames);
|
||||
|
||||
// jungfrau specific - pll, flashing firmware
|
||||
#elif defined(JUNGFRAUD) || defined(MYTHEN3D)
|
||||
#elif JUNGFRAUD
|
||||
void resetPLL();
|
||||
u_int32_t setPllReconfigReg(u_int32_t reg, u_int32_t val);
|
||||
void configurePll();
|
||||
|
@ -33,6 +33,7 @@ int main(int argc, char *argv[]){
|
||||
// subsequent read/write to socket gives error - must handle locally
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
|
||||
|
||||
// circumvent the basic tests
|
||||
{
|
||||
int i;
|
||||
@ -64,28 +65,20 @@ int main(int argc, char *argv[]){
|
||||
#endif
|
||||
if (isControlServer) {
|
||||
portno = DEFAULT_PORTNO;
|
||||
FILE_LOG(logINFOBLUE,
|
||||
("***************************************************\n"
|
||||
"********* opening control server on port %d **********\n"
|
||||
"********************************************************\n\n"
|
||||
, portno));
|
||||
FILE_LOG(logINFO, ("Opening control server on port %d \n", portno));
|
||||
#ifdef STOP_SERVER
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < argc; ++i)
|
||||
sprintf(cmd, "%s %s", cmd, argv[i]);
|
||||
sprintf(cmd,"%s -stopserver&", cmd);
|
||||
FILE_LOG(logINFO, ("Command to start stop server:%s\n", cmd));
|
||||
FILE_LOG(logDEBUG5, ("Command to start stop server:%s\n", cmd));
|
||||
system(cmd);
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
portno = DEFAULT_PORTNO + 1;
|
||||
FILE_LOG(logINFOBLUE,
|
||||
("***************************************************\n"
|
||||
"*********** opening stop server on port %d ***********\n"
|
||||
"********************************************************\n\n"
|
||||
, portno));
|
||||
FILE_LOG(logINFO,("Opening stop server on port %d \n", portno));
|
||||
}
|
||||
|
||||
init_detector();
|
||||
@ -100,7 +93,7 @@ int main(int argc, char *argv[]){
|
||||
function_table();
|
||||
|
||||
if (isControlServer) {
|
||||
FILE_LOG(logINFO, ("Control Server Ready...\n\n"));
|
||||
FILE_LOG(logINFOBLUE, ("Control Server Ready...\n\n"));
|
||||
} else {
|
||||
FILE_LOG(logINFO, ("Stop Server Ready...\n\n"));
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,4 @@
|
||||
#ifndef SERVER_FUNCS_H
|
||||
#define SERVER_FUNCS_H
|
||||
|
||||
#pragma once
|
||||
#include "sls_detector_defs.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
@ -14,6 +12,7 @@ void function_table();
|
||||
void functionNotImplemented();
|
||||
void modeNotImplemented(char* modename, int mode);
|
||||
void validate(int arg, int retval, char* modename, int hex);
|
||||
void validate64(int64_t arg, int64_t retval, char* modename, int hex);
|
||||
int M_nofunc(int);
|
||||
int M_nofuncMode(int);
|
||||
|
||||
@ -79,4 +78,3 @@ int storage_cell_start(int);
|
||||
int check_version(int);
|
||||
int software_trigger(int);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user