mythen3: txndelay frame added

This commit is contained in:
2020-08-18 15:27:30 +02:00
parent afabc9a503
commit eeb386fef5
8 changed files with 47 additions and 9 deletions

View File

@ -140,6 +140,13 @@
#define DTA_OFFSET_REG (0x24 * REG_OFFSET + BASE_CONTROL)
/* Formatting for data core -----------------------------------------------*/
#define FMT_CONFIG_REG (0x00 * REG_OFFSET + BASE_FMT)
#define FMT_CONFIG_TXN_DELAY_OFST (0)
#define FMT_CONFIG_TXN_DELAY_MSK (0x00FFFFFF << FMT_CONFIG_TXN_DELAY_OFST)
/* Packetizer -------------------------------------------------------------*/
/* Packetizer Config Register */

View File

@ -2067,6 +2067,28 @@ int getClockDivider(enum CLKINDEX ind) {
return clkDivider[ind];
}
int getTransmissionDelayFrame() {
return ((bus_r(FMT_CONFIG_REG) & FMT_CONFIG_TXN_DELAY_MSK) >>
FMT_CONFIG_TXN_DELAY_OFST);
}
int setTransmissionDelayFrame(int value) {
if (value < 0 || value > MAX_TIMESLOT_VAL) {
LOG(logERROR, ("Transmission delay %d should be in range: 0 - %d\n",
value, MAX_TIMESLOT_VAL));
return FAIL;
}
LOG(logINFO, ("Setting transmission delay: %d\n", value));
uint32_t addr = FMT_CONFIG_REG;
bus_w(addr, bus_r(addr) & ~FMT_CONFIG_TXN_DELAY_MSK);
bus_w(addr, (bus_r(addr) | ((value << FMT_CONFIG_TXN_DELAY_OFST) &
FMT_CONFIG_TXN_DELAY_MSK)));
LOG(logDEBUG1, ("Transmission delay read %d\n",
((bus_r(addr) & FMT_CONFIG_TXN_DELAY_MSK) >>
FMT_CONFIG_TXN_DELAY_OFST)));
return OK;
}
/* aquisition */
int startStateMachine() {

View File

@ -45,6 +45,7 @@
#define DEFAULT_MSTR_OTPT_P1_NUM_PULSES (20)
/* Firmware Definitions */
#define MAX_TIMESLOT_VAL (0xFFFFFF)
#define IP_HEADER_SIZE (20)
#define FIXED_PLL_FREQUENCY (020000000) // 20MHz
#define READOUT_PLL_VCO_FREQ_HZ (1250000000) // 1.25GHz

View File

@ -531,6 +531,8 @@ int *getBadChannels(int *nch);
#if defined(JUNGFRAUD) || defined(EIGERD)
int getTenGigaFlowControl();
int setTenGigaFlowControl(int value);
#endif
#if defined(JUNGFRAUD) || defined(EIGERD) || defined(MYTHEN3D)
int getTransmissionDelayFrame();
int setTransmissionDelayFrame(int value);
#endif

View File

@ -3489,12 +3489,12 @@ int set_transmission_delay_frame(int file_des) {
return printSocketReadError();
LOG(logINFO, ("Setting transmission delay frame: %d\n", arg));
#if !defined(EIGERD) && !defined(JUNGFRAUD)
#if !defined(EIGERD) && !defined(JUNGFRAUD) && !defined(MYTHEN3D)
functionNotImplemented();
#else
// only set
if (Server_VerifyLock() == OK) {
#ifdef JUNGFRAUD
#if defined(JUNGFRAUD) || defined(MYTHEN3D)
if (arg > MAX_TIMESLOT_VAL) {
ret = FAIL;
sprintf(mess, "Transmission delay %d should be in range: 0 - %d\n",
@ -3526,7 +3526,7 @@ int get_transmission_delay_frame(int file_des) {
LOG(logDEBUG1, ("Getting transmission delay frame\n"));
#if !defined(EIGERD) && !defined(JUNGFRAUD)
#if !defined(EIGERD) && !defined(JUNGFRAUD) && !defined(MYTHEN3D)
functionNotImplemented();
#else
// get only