5 #define MAX_ETH_PACKET_DATA_SIZE 4096
9 #define GET_REQ_INDEX(word) ((word) & 0x000F)
10 #define GET_WR_ACK(word) ((word) & 0x0030)
11 #define GET_RD_ACK(word) ((word) & 0x0040)
12 #define GET_TR_OK(word) ((word) & 0x0080)
13 #define GET_TYPE(word) ((word) & 0xF000)
14 #define PUT_TYPE(word, ty) (((word) & 0x0FFF) | ((ty) & 0xF000) )
17 #define RESP_TYPE_ADC_DATA 0x0000
18 #define RESP_TYPE_SLOW_CTRL 0x1000
20 #define RESP_TYPE_HISTOGRAM 0x2000
21 #define RESP_TYPE_HISTOSTAT 0x3000
22 #define RESP_TYPE_HISTOSUMMARY 0x4000
23 #define GET_RESP_TYPE(word) (((word) & 0xF000)>>12)
24 #define GET_RESP_INDEX(word) ((word) & 0x000F)
27 #define GET_FEC_ERROR(word) (((word) & 0x03F0)>>4)
28 #define GET_LOS_FLAG(word) (((word) & 0x0400)>>10)
29 #define GET_SYNCH_FAIL(word) (((word) & 0x0800)>>11)
32 #define GET_RB_MODE(word) (((word) & 0x4000)>>14)
33 #define GET_RB_COMPRESS(word) (((word) & 0x2000)>>13)
34 #define GET_RB_ARG2(word) (((word) & 0x1E00)>>9)
35 #define GET_RB_ARG1(word) (((word) & 0x01FF))
38 #define GET_EVENT_TYPE(word) (((word) & 0xC000)>>14)
39 #define GET_EVENT_COUNT(word) (((word) & 0x3FFF))
42 #define CELL_INDEX_FLAG 0x1000
43 #define GET_CELL_INDEX(word) (((word) & 0x0FFF))
44 #define ARGUMENT_FLAG 0x2000
45 #define GET_ARGUMENTS(word) (((word) & 0xDFFF))
46 #define SAMPLE_COUNT_FLAG 0x4000
47 #define GET_SAMPLE_COUNT(word) (((word) & 0x0FFF))
51 typedef struct _PacketRxCommonHdr {
66 #define MAX_NB_OF_FEM_PER_DCC 12
67 #define MIN_FEM_INDEX 0
68 #define MAX_FEM_INDEX ((FEM_PER_DCC < MAX_NB_OF_FEM_PER_DCC) ? (MIN_FEM_INDEX+FEM_PER_DCC-1): (MAX_NB_OF_FEM_PER_DCC-1))
75 typedef struct _EndOfEventPacket {
77 unsigned short dcchdr;
82 unsigned int tot_byte_rcv;
83 unsigned int tot_byte_snd;
87 typedef struct _DataPacket {
89 unsigned short dcchdr;
102 typedef struct _DataPacketV1 {
114 #define FRAME_TYPE_FEM_DATA 0x0000
115 #define FRAME_TYPE_DCC_DATA 0x0001
116 #define FRAME_FLAG_EORQ 0x0004
117 #define FRAME_FLAG_EOEV 0x0008
118 #define GET_FEM_INDEX(word) (((word) & 0x000F)>>0)
119 #define GET_DCC_INDEX(word) (((word) & 0x03F0)>>4)
120 #define GET_FRAME_TY_V2(word) (((word) & 0x3C00)>>10)
121 #define PUT_FEM_INDEX(word, ix) (((word) & 0xFFF0) | (((ix) & 0x000F) << 0))
122 #define PUT_DCC_INDEX(word, ix) (((word) & 0xFC0F) | (((ix) & 0x003F) << 4))
123 #define PUT_FRAME_TY_V2(word, ty) (((word) & 0x03FF) | FRAME_HDR_V2 | (((ty) & 0x000F) <<10))
126 #define FRAME_HDR_V2_FIELD 0xC000
127 #define FRAME_HDR_V2 0x4000
128 #define IS_DATA_PACKET_V2(word) (((word) & FRAME_HDR_V2_FIELD) == FRAME_HDR_V2)
133 #define DATA_PACKET_VER(word) (((word) & FRAME_HDR_V2_FIELD)>>12)
struct _PacketRxCommonHdr PacketRxCommonHdr
struct _DataPacket DataPacket
#define MAX_ETH_PACKET_DATA_SIZE
struct _DataPacketV1 DataPacketV1
struct _EndOfEventPacket EndOfEventPacket
#define MAX_NB_OF_FEM_PER_DCC