File indexing completed on 2025-08-03 08:20:44
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 #ifndef _DATABLOCK_
0037 #define _DATABLOCK_
0038
0039 #include "phenixOnline.h"
0040 #include "packetPublic.h"
0041 #include "Cpacket.h"
0042 #include "formatError.h"
0043
0044
0045
0046
0047
0048 #ifdef __cplusplus
0049 extern "C" {
0050 #endif
0051
0052
0053
0054
0055
0056
0057
0058
0059 #define UNSTRUCT_DATA_PADDING_OFFSET_OF_DWORD 0
0060 #define UNSTRUCT_DATA_PADDING_OFFSET_IN_DWORD 24
0061 #define UNSTRUCT_DATA_PADDING_NUM_BITS 8
0062 #define UNSTRUCT_DATA_PADDING_MASK 0xff000000
0063
0064 #define UNSTRUCT_WORD_SIZE_OFFSET_OF_DWORD 0
0065 #define UNSTRUCT_WORD_SIZE_OFFSET_IN_DWORD 16
0066 #define UNSTRUCT_WORD_SIZE_NUM_BITS 8
0067 #define UNSTRUCT_WORD_SIZE_MASK 0x00ff0000
0068
0069 #define UNSTRUCT_HIT_FORMAT_OFFSET_OF_DWORD 0
0070 #define UNSTRUCT_HIT_FORMAT_OFFSET_IN_DWORD 0
0071 #define UNSTRUCT_HIT_FORMAT_NUM_BITS 16
0072 #define UNSTRUCT_HIT_FORMAT_MASK 0x0000ffff
0073
0074 CONSTANT PHDWORD UnstructDataDescrLength = 1;
0075
0076
0077
0078
0079
0080
0081
0082
0083 INLINE_P LOGIC_ret makeUnstructPacketDataDescr (PACKET_ptr, UINT, UINT);
0084
0085 INLINE_P VALUE_ret getUnstructPacketWordSize (PACKET_ptr);
0086 INLINE_P VALUE_ret getUnstructPacketDataPadding (PACKET_ptr);
0087 INLINE_P VALUE_ret getUnstructPacketHitFormat (PACKET_ptr);
0088
0089 INLINE_P LOGIC_ret setUnstructPacketWordSize (PACKET_ptr, UINT);
0090 INLINE_P LOGIC_ret setUnstructPacketDataPadding (PACKET_ptr, UINT);
0091 INLINE_P LOGIC_ret setUnstructPacketHitFormat (PACKET_ptr, UINT);
0092
0093 VALUE_ret getUnstructPacketDataLengthBytes(PACKET_ptr);
0094 VALUE_ret getUnstructPacketDataLengthWords(PACKET_ptr);
0095 VALUE_ret extendUnstructPacketDataBlock(PACKET_ptr, UINT);
0096
0097
0098
0099
0100
0101
0102
0103 INLINE_P LOGIC_ret makeUnstructDataDescr (PHDWORD*, UINT, UINT);
0104
0105 INLINE_P LOGIC_ret setUnstructDescrWordSize (PHDWORD*, UINT);
0106 INLINE_P LOGIC_ret setUnstructDescrDataPadding (PHDWORD*, UINT);
0107 INLINE_P LOGIC_ret setUnstructDescrHitFormat (PHDWORD*, UINT);
0108
0109 INLINE_P VALUE_ret getUnstructDescrWordSize (PHDWORD*);
0110 INLINE_P VALUE_ret getUnstructDescrDataPadding (PHDWORD*);
0111 INLINE_P VALUE_ret getUnstructDescrHitFormat (PHDWORD*);
0112
0113
0114 INLINE_D LOGIC_ret makeUnstructPacketDataDescr (PACKET_ptr packet_ptr,
0115 UINT inWordSize,
0116 UINT inHitFormat)
0117 {
0118 PHDWORD *descr_ptr;
0119
0120
0121
0122
0123 setPacketDataDescrLength(packet_ptr, UnstructDataDescrLength);
0124
0125 descr_ptr = findPacketDataDescr(packet_ptr);
0126 if (descr_ptr == ptrFailure) return logicFailure;
0127 else return makeUnstructDataDescr(descr_ptr, inWordSize, inHitFormat);
0128 }
0129
0130 INLINE_D VALUE_ret getUnstructPacketWordSize (PACKET_ptr packet_ptr)
0131 {
0132 PHDWORD* descr_ptr = findPacketDataDescr(packet_ptr);
0133 if (descr_ptr == ptrFailure) return valueFailure;
0134 else return getUnstructDescrWordSize(descr_ptr);
0135 }
0136
0137 INLINE_D VALUE_ret getUnstructPacketHitFormat (PACKET_ptr packet_ptr)
0138 {
0139 PHDWORD* descr_ptr = findPacketDataDescr(packet_ptr);
0140 if (descr_ptr == ptrFailure) return valueFailure;
0141 else return getUnstructDescrHitFormat(descr_ptr);
0142 }
0143
0144 INLINE_D VALUE_ret getUnstructPacketDataPadding (PACKET_ptr packet_ptr)
0145 {
0146 PHDWORD* descr_ptr = findPacketDataDescr(packet_ptr);
0147 if (descr_ptr == ptrFailure) return valueFailure;
0148 else return getUnstructDescrDataPadding(descr_ptr);
0149 }
0150
0151 INLINE_D LOGIC_ret setUnstructPacketHitFormat (PACKET_ptr packet_ptr, UINT unHitFormat)
0152 {
0153 PHDWORD* descr_ptr = findPacketDataDescr(packet_ptr);
0154 if (descr_ptr == ptrFailure) return valueFailure;
0155 else {
0156 return setUnstructDescrHitFormat(descr_ptr, unHitFormat);
0157 }
0158 }
0159
0160 INLINE_D LOGIC_ret setUnstructPacketWordSize (PACKET_ptr packet_ptr, UINT unWordSize)
0161 {
0162 PHDWORD* descr_ptr = findPacketDataDescr(packet_ptr);
0163 if (descr_ptr == ptrFailure) return valueFailure;
0164 else {
0165 return setUnstructDescrWordSize(descr_ptr, unWordSize);
0166 }
0167 }
0168
0169 INLINE_D LOGIC_ret setUnstructPacketDataPadding (PACKET_ptr packet_ptr, UINT paddingBytes)
0170 {
0171 PHDWORD* descr_ptr = findPacketDataDescr(packet_ptr);
0172 if (descr_ptr == ptrFailure) return valueFailure;
0173 else {
0174 return setUnstructDescrDataPadding(descr_ptr, paddingBytes);
0175 }
0176 }
0177
0178
0179
0180
0181
0182
0183
0184 INLINE_D LOGIC_ret makeUnstructDataDescr (PHDWORD* dataDescr_ptr, UINT inWordSize,
0185 UINT inHitFormat)
0186 {
0187 *dataDescr_ptr = 0;
0188 setUnstructDescrWordSize (dataDescr_ptr, inWordSize);
0189 setUnstructDescrHitFormat (dataDescr_ptr, inHitFormat);
0190
0191 return logicSuccess;
0192 }
0193
0194
0195
0196 INLINE_D VALUE_ret getUnstructDescrWordSize(PHDWORD* descr_ptr)
0197 {
0198 return getBitsMACRO(descr_ptr, UNSTRUCT_WORD_SIZE_OFFSET_OF_DWORD,
0199 UNSTRUCT_WORD_SIZE_OFFSET_IN_DWORD,
0200 UNSTRUCT_WORD_SIZE_MASK);
0201 }
0202
0203
0204
0205 INLINE_D VALUE_ret getUnstructDescrHitFormat(PHDWORD* descr_ptr)
0206 {
0207 return getBitsMACRO(descr_ptr, UNSTRUCT_HIT_FORMAT_OFFSET_OF_DWORD,
0208 UNSTRUCT_HIT_FORMAT_OFFSET_IN_DWORD,
0209 UNSTRUCT_HIT_FORMAT_MASK);
0210 }
0211
0212
0213
0214 INLINE_D VALUE_ret getUnstructDescrDataPadding(PHDWORD* descr_ptr)
0215 {
0216 return getBitsMACRO(descr_ptr, UNSTRUCT_DATA_PADDING_OFFSET_OF_DWORD,
0217 UNSTRUCT_DATA_PADDING_OFFSET_IN_DWORD,
0218 UNSTRUCT_DATA_PADDING_MASK);
0219 }
0220
0221
0222
0223 INLINE_D LOGIC_ret setUnstructDescrWordSize(PHDWORD* descr_ptr, UINT wordSize)
0224 {
0225 setBitsMACRO(descr_ptr, UNSTRUCT_WORD_SIZE_OFFSET_OF_DWORD,
0226 UNSTRUCT_WORD_SIZE_OFFSET_IN_DWORD,
0227 UNSTRUCT_WORD_SIZE_MASK, wordSize);
0228 return TRUE;
0229 }
0230
0231
0232
0233 INLINE_D LOGIC_ret setUnstructDescrHitFormat(PHDWORD* descr_ptr, UINT hitFormat)
0234 {
0235 setBitsMACRO(descr_ptr, UNSTRUCT_HIT_FORMAT_OFFSET_OF_DWORD,
0236 UNSTRUCT_HIT_FORMAT_OFFSET_IN_DWORD,
0237 UNSTRUCT_HIT_FORMAT_MASK, hitFormat);
0238 return TRUE;
0239 }
0240
0241
0242
0243 INLINE_D LOGIC_ret setUnstructDescrDataPadding(PHDWORD* descr_ptr,
0244 UINT paddingBytes)
0245 {
0246 setBitsMACRO(descr_ptr, UNSTRUCT_DATA_PADDING_OFFSET_OF_DWORD,
0247 UNSTRUCT_DATA_PADDING_OFFSET_IN_DWORD,
0248 UNSTRUCT_DATA_PADDING_MASK, paddingBytes);
0249 return TRUE;
0250 }
0251
0252 #ifdef __cplusplus
0253 }
0254
0255 #endif
0256
0257 #endif
0258
0259
0260
0261
0262