mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 01:58:00 +02:00
serialnumber fixed to point to mod id reg
This commit is contained in:
@ -127,6 +127,7 @@
|
||||
|
||||
#define MOD_ID_OFST (0)
|
||||
#define MOD_ID_MSK (0x0000FFFF << MOD_ID_OFST)
|
||||
#define MOD_MAX_VAL (0xFFFF)
|
||||
|
||||
/* ASIC registers --------------------------------------------------*/
|
||||
|
||||
|
@ -66,7 +66,6 @@ int64_t burstPeriodReg = 0;
|
||||
int filterResistor = 0;
|
||||
int cdsGain = 0;
|
||||
int detPos[2] = {};
|
||||
int64_t serialNumber = -1;
|
||||
|
||||
int isInitCheckDone() { return initCheckDone; }
|
||||
|
||||
@ -281,21 +280,18 @@ u_int16_t getHardwareVersionNumber() {
|
||||
MCB_SERIAL_NO_VRSN_OFST);
|
||||
}
|
||||
|
||||
u_int32_t getDetectorNumber() {
|
||||
if (serialNumber != -1) {
|
||||
return serialNumber;
|
||||
}
|
||||
#ifdef VIRTUAL
|
||||
return 0;
|
||||
#endif
|
||||
return bus_r(MCB_SERIAL_NO_REG);
|
||||
uint16_t getSerialNumber() {
|
||||
return ((bus_r(MOD_ID_REG) & MOD_ID_MSK) >> MOD_ID_OFST);
|
||||
}
|
||||
|
||||
void setSerialNumber(int64_t arg) {
|
||||
LOG(logINFOBLUE, ("Setting Serial Number to 0x%llx\n", (long long int)arg));
|
||||
serialNumber = arg;
|
||||
void setSerialNumber(uint16_t arg) {
|
||||
LOG(logINFOBLUE, ("Setting Serial Number to 0x%x\n", arg));
|
||||
bus_w(MOD_ID_REG, bus_r(MOD_ID_REG) & ~MOD_ID_MSK);
|
||||
bus_w(MOD_ID_REG, bus_r(MOD_ID_REG) | ((arg << MOD_ID_OFST) & MOD_ID_MSK));
|
||||
}
|
||||
|
||||
int getMaxSerialNumber() { return MOD_MAX_VAL; }
|
||||
|
||||
u_int64_t getDetectorMAC() {
|
||||
#ifdef VIRTUAL
|
||||
return 0;
|
||||
|
@ -94,7 +94,9 @@ void readDetectorNumber();
|
||||
#endif
|
||||
u_int32_t getDetectorNumber();
|
||||
#ifdef GOTTHARD2D
|
||||
void setSerialNumber(int64_t arg);
|
||||
uint16_t getSerialNumber();
|
||||
void setSerialNumber(uint16_t arg);
|
||||
int getMaxSerialNumber();
|
||||
#endif
|
||||
u_int64_t getDetectorMAC();
|
||||
u_int32_t getDetectorIP();
|
||||
|
@ -666,7 +666,11 @@ int get_serial_number(int file_des) {
|
||||
ret = OK;
|
||||
memset(mess, 0, sizeof(mess));
|
||||
int64_t retval = -1;
|
||||
#ifdef GOTTHARD2D
|
||||
retval = getSerialNumber();
|
||||
#else
|
||||
retval = getDetectorNumber();
|
||||
#endif
|
||||
LOG(logDEBUG1, ("detector number retval: 0x%llx\n", (long long int)retval));
|
||||
return Server_SendResult(file_des, INT64, &retval, sizeof(retval));
|
||||
}
|
||||
@ -683,7 +687,14 @@ int set_serial_number(int file_des) {
|
||||
#ifndef GOTTHARD2D
|
||||
functionNotImplemented();
|
||||
#else
|
||||
setSerialNumber(arg);
|
||||
if (arg > getMaxSerialNumber()) {
|
||||
ret = FAIL;
|
||||
sprintf(mess, "Could not set serial number. Max value: %d\n",
|
||||
getMaxSerialNumber());
|
||||
LOG(logERROR, (mess));
|
||||
} else {
|
||||
setSerialNumber(arg);
|
||||
}
|
||||
#endif
|
||||
return Server_SendResult(file_des, INT64, NULL, 0);
|
||||
}
|
||||
|
Reference in New Issue
Block a user