#ifndef SERIAL_STREAMS #define SERIAL_STREAMS #if defined(SCT_ROD) #include "ABCDchip.h" #include "sctStructure.h" #define N_CHIPS (N_SCT_CHIPS) #define N_MODULES (N_SCT_MODULES) #define N_EXTMODULES (N_SCT_EXTMODULES) #define N_TOTMODULES (N_SCT_TOTMODULES) typedef ABCDModule Module; typedef ABCDChip Chip; #elif defined(PIXEL_ROD) #include "pixelCommands.h" #include "pixelConfigStructures.h" #define N_CHIPS (N_PIXEL_FE_CHIPS) #define N_MODULES (N_PIXEL_MODULES) #define N_EXTMODULES (N_PIXEL_EXTMODULES) #define N_TOTMODULES (N_PIXEL_TOTMODULES) typedef PixelModule Module; typedef PixelFEConfig Chip; #endif /* Command lists contain a series of commands which are then built into a serial stream: */ #define N_CMD_LIST_CMDS 6 typedef struct CmdList { UINT16 cmd[N_CMD_LIST_CMDS]; UINT32 data[N_CMD_LIST_CMDS]; } CmdList; /* maximum length of a command stream to configure one module= 3240 words= 0xca8; a small amount of padding is added. dpsf: true for pixels too? */ #define CMD_STREAM_WMAX 0xd00 typedef struct { UINT32 *data; /* command stream buffer */ UINT32 *data1; /* command stream buffer for sp 1. not an array for backward compatibility */ UINT32 *ilBuff; /* interleave buffer */ UINT32 bufferSizeWords; /* word is 32bits wide */ UINT32 bitIndex, bitIndex1; /* current write bit index (number of full bits in the data buffer) */ UINT8 port, setCmdMask, unused[2]; UINT32 cmdMask[2][2]; } CmdBuff; #if 0 typedef struct CmdBuff { UINT32 *data[2]; /* command stream buffers for sp 0 & 1 */ UINT32 bitIndex[2]; /* current write bit index (number of full bits in the data buffer) */ UINT32 bufferSizeWords; /* word is 32bits wide */ UINT8 port, setCmdMask, unused[2]; //Control stream modification for bin incrementing during a scan: Module *mod; INT32 *scanFxn(struct CmdBuff *cmd, Module *mod); //=> adjunct structure: varType, varWidth; UINT32 varBitIndex[N_CHIPS], unused; UINT32 cmdMask[2][2]; } CmdBuff; #endif #define WORD_INDEX(bitIndex) ((bitIndex)/32) /* returns 32bit word index */ #define ALL_MODULES 0xfe #define NO_MODULE 0xff #define MODULE_GROUP_0 0 #define MODULE_GROUP_1 1 #define MODULE_GROUP_2 2 #define MODULE_GROUP_3 3 #define MODULE_GROUP_4 4 #define MODULE_GROUP_5 5 #define MODULE_GROUP_6 6 #define MODULE_GROUP_7 7 #define MODULE_GROUP_ALL 8 #define N_MODULE_GROUPS (MODULE_GROUP_ALL) #endif /* Multiple inclusion protection */