13#define UNUSED(x) ((void)(x))
20 "Acq mode = INT : 3",\
21 "Channel Configuration = DWORD : 131088",\
22 "Buffer organization = INT : 10",\
23 "Custom size = INT : 625",\
24 "Channel Mask = DWORD : 255",\
25 "Trigger Source = DWORD : 1073741824",\
26 "Trigger Output = DWORD : 1073741824",\
27 "Post Trigger = DWORD : 1000",\
29 "almost_full = DWORD : 850",\
34 "Threshold = DWORD[8] :",\
43 "NbOUThreshold = DWORD[8] :",\
52 "ZS_Threshold = INT[8] :",\
61 "ZS_NsAmp = DWORD[8] :",\
95 _settings_loaded=
false;
96 _settings_touched=
false;
129v1720CONET2::~v1720CONET2()
234 cout <<
"Error: trying to start already started board" <<
endl;
238 cout <<
"Error: trying to start disconnected board" <<
endl;
243 cm_msg(
MINFO,
"feoV1720",
"Note: settings on board %s touched. Re-initializing board.",
371#define MAX_BLT_READ_SIZE 10000
385 cout <<
"Error: trying to ReadEvent disconnected board" <<
endl;
418 <<
", tempnw returned " <<
tempnw <<
");" <<
endl;
519 cout <<
"Error: cannot call InitializeForAcq() without settings loaded properly" <<
endl;
522 cout <<
"Error: trying to call InitializeForAcq() to unconnected board" <<
endl;
525 cout <<
"Error: trying to call InitializeForAcq() to already running board" <<
endl;
542 printf(
"\nBusy daisy chaining \n\n");
548 cm_msg(
MINFO,
"feoV1720",
"Simulation, no firmware check");
569 cm_msg(
MERROR,
"feoV1720",
"Error AMC Channels have different Firmware \n");
575 cm_msg(
MERROR,
"feoV1720",
"Incorrect AMC Firmware Version: 0x%08x", version);
578 cm_msg(
MINFO,
"feoV1720",
"AMC Firmware Version: 0x%08x", version);
587 cm_msg(
MINFO,
"feoV1720",
"ROC Firmware Version: 0x%08x", version);
590 cm_msg(
MINFO,
"feoV1720",
"*** WARNING *** using new ROC Firmware Version: 0x%08x", version);
593 cm_msg(
MERROR,
"feoV1720",
"Incorrect ROC Firmware Version: 0x%08x", version);
601 cm_msg(
MINFO,
"feoV1720",
"*** WARNING *** Trying to use a v1720 frontend with another"
602 " type of board. Results will be unexpected!");
675 cm_msg(
MINFO,
"FE",
"Data Type: Full data with 2.5 Packing");
681 cm_msg(
MINFO,
"FE",
"Data Type: Full data with 2 Packing");
688 cm_msg(
MINFO,
"FE",
"Data Type: ZLE data with 2.5 Packing");
694 cm_msg(
MINFO,
"FE",
"Data Type: ZLE data with 2 Packing");
699 cm_msg(
MERROR,
"FE",
"V1720 Data format Unrecognised reg: 0x%04x", 0x8000);
801 ((
iMin<<16) & 0x0FFF0000) |
v1720CONET2(int feindex, int link, int board, int moduleID)
Constructor for the module object.
std::string GetName()
Get short string identifying the module's index, link and board number.
int _link
Optical link number.
bool _settings_loaded
ODB settings loaded.
CAENComm_ErrorCode WriteReg(DWORD, DWORD)
Write to 32-bit register.
BOOL IsZLEData()
Get ZLE setting.
CAENComm_ErrorCode SendTrigger()
Send a software trigger to the board.
int InitializeForAcq()
Initialize the hardware for data acquisition.
CAENComm_ErrorCode ChannelConfig(uint32_t)
Control data acquisition.
void fillQtBank(char *aDest, uint32_t *aZLEData, int aModule)
Fill Qt Bank.
int _handle
Device handler.
int _moduleID
Unique module ID.
bool _settings_touched
ODB settings touched.
CAENComm_ErrorCode SetupPreset(int)
Setup board registers using preset (see ov1720.c:ov1720_Setup())
CAENComm_ErrorCode ReadReg(DWORD, DWORD *)
Read 32-bit register.
CAENComm_ErrorCode Disconnect()
Disconnect the board through the optical link.
CAENComm_ErrorCode Poll(DWORD *)
Poll Event Stored register.
CAENComm_ErrorCode AcqCtl(uint32_t)
Control data acquisition.
static const char * config_str[]
Configuration string for this module. (ODB: /Equipment/[eq_name]/Settings/[board_name]/)
CAENComm_ErrorCode StartRun()
Start data acquisition.
BOOL mZLE
true if ZLE (Zero-length encoding) is enabled on all channels
CAENComm_ErrorCode StopRun()
Start data acquisition.
int _feindex
Frontend index number.
CAENComm_ErrorCode ReadEvent(DWORD *, int *)
Read event buffer.
bool IsRunning()
Get run status.
void getChannelConfig(DWORD aChannelConfig)
Get data type and ZLE configuration.
int SetODBRecord(HNDLE h, void(*cb_func)(INT, INT, void *))
Set the ODB record for this module.
bool IsConnected()
Get connected status.
HNDLE _odb_handle
ODB handle.
bool _running
Run in progress.
struct v1720CONET2::V1720_CONFIG_SETTINGS config
instance of config structure
int _board
Module/Board number.
CAENComm_ErrorCode Connect()
Connect the board through the optical link.
INT bk_close(void *event, void *pdata)
void bk_create(void *event, const char *name, WORD type, void **pdata)
INT cm_msg(INT message_type, const char *filename, INT line, const char *routine, const char *format,...)
INT db_open_record(HNDLE hDB, HNDLE hKey, void *ptr, INT rec_size, WORD access_mode, void(*dispatcher)(INT, INT, void *), void *info)
INT db_get_record(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT align)
char * strcomb(const char **list)
INT db_find_key(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
INT db_create_record(HNDLE hDB, HNDLE hKey, const char *orig_key_name, const char *init_str)
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
Settings structure for this v1740 module.
DWORD threshold[8]
0x1n80@[11.. 0]
DWORD nbouthreshold[8]
0x1n84@[11.. 0]
INT zs_threshold[8]
0x1n24@[31.. 0]
DWORD channel_config
0x8000@[19.. 0]
DWORD zs_nsamp[8]
0x1n28@[31.. 0]
DWORD dac[8]
0x1n98@[15.. 0]
INT acq_mode
0x8100@[ 1.. 0]
DWORD channel_mask
0x8120@[ 7.. 0]
INT buffer_organization
0x800C@[ 3.. 0]
DWORD trigger_source
0x810C@[31.. 0]
DWORD trigger_output
0x8110@[31.. 0]
DWORD post_trigger
0x8114@[31.. 0]
INT custom_size
0x8020@[31.. 0]
INT setup
Initial board setup mode number.
#define MAX_BLT_READ_SIZE
Maximum size of data to read using BLT (32-bit) cycle.