gencp_defines.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. //-----------------------------------------------------------------------------
  2. // (c) 2011 by Teledyne DALSA
  3. // Section: Digital Imaging
  4. // Project: GenCP
  5. // Author: Eric Bourbonnais
  6. //
  7. // License: This file is published under the license of the EMVA GenICam Standard Group.
  8. // A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'.
  9. // If for some reason you are missing this file please contact the EMVA or visit the website
  10. // (http://www.genicam.org) for a full copy.
  11. //
  12. // THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
  13. // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  14. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  15. // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP
  16. // OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  17. // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  18. // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  19. // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  20. // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  21. // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  22. // POSSIBILITY OF SUCH DAMAGE.
  23. //-----------------------------------------------------------------------------
  24. //
  25. // Description:
  26. // This file contains the defines required by GenCP protocol
  27. //
  28. //////////////////////////////////////////////////////////////////////////////
  29. #ifndef GENCP_DEFINES_H__
  30. #define GENCP_DEFINES_H__
  31. #if defined(WIN32)
  32. #include <stdlib.h>
  33. #else
  34. #include <sys/types.h>
  35. #include <netinet/in.h>
  36. #endif
  37. #if defined(WIN32)
  38. #pragma intrinsic(_byteswap_ushort)
  39. #pragma intrinsic(_byteswap_ulong)
  40. #pragma intrinsic(_byteswap_uint64)
  41. #define bswap_16(s) _byteswap_ushort(s)
  42. #define bswap_32(s) _byteswap_ulong(s)
  43. #define bswap_64(s) _byteswap_uint64(s)
  44. #else
  45. #define bswap_16(s) ((((s) << 8) & 0xff00U) | (((s) >> 8) & 0x00ffU))
  46. #define bswap_32(l) ((((l) << 24) & 0xff000000) | (((l) << 8) & 0x00ff0000) | (((l) >> 8) & 0x0000ff00) | (((l) >> 24) & 0x000000ff))
  47. #define bswap_64(ll) ( \
  48. (((ll) << 56) & 0xff00000000000000LL) | \
  49. (((ll) << 40) & 0x00ff000000000000LL) | \
  50. (((ll) << 24) & 0x0000ff0000000000LL) | \
  51. (((ll) << 8) & 0x000000ff00000000LL) | \
  52. (((ll) >> 8) & 0x00000000ff000000LL) | \
  53. (((ll) >> 24) & 0x0000000000ff0000LL) | \
  54. (((ll) >> 40) & 0x000000000000ff00LL) | \
  55. (((ll) >> 56) & 0x00000000000000ffLL))
  56. #endif
  57. //! Macro to set a QWORD in the datagram
  58. #define SET_QWORD( p, o, v ) \
  59. (*( CLINT64* )( ( (char *)(p) ) + o ) = bswap_64(v))
  60. //! Macro to get a QWORD from the datagram
  61. #define GET_QWORD( p, o ) \
  62. (bswap_64( *(( CLINT64* )( ( (char *)(p) ) + o ) ) ) )
  63. //! Macro to set a DWORD in the datagram
  64. #define SET_DWORD( p, o, v ) \
  65. (*( CLUINT32 * )( ( (char *)(p) ) + o ) = bswap_32(v))
  66. //! Macro to get a DWORD from the datagram
  67. #define GET_DWORD( p, o ) \
  68. (bswap_32( *( CLUINT32 * )( ( (char *)(p) ) + o ) ))
  69. //! Macro to set a WORD in the datagram
  70. #define SET_WORD( p, o, v ) \
  71. (*( UINT16 * )( ( (char *)(p) ) + o ) = bswap_16(v))
  72. //! Macro to get a WORD from the datagram
  73. #define GET_WORD( p, o ) \
  74. (bswap_16( *( UINT16 * )( ( (char *)(p) ) + o ) ))
  75. //! Macro to set a BYTE in the datagram
  76. #define SET_BYTE( p, o, v ) \
  77. (*( char * )( ( (char *)(p) ) + o ) = (v))
  78. //! Macro to get a BYTE from the datagram
  79. #define GET_BYTE( p, o ) \
  80. ( *( char * )( ( (char *)(p) ) + o ) )
  81. //! Macro to get the address of a field in the datagram
  82. #define GET_PTR( p, o ) \
  83. ( ( char * )( ( (char *)(p) ) + o ) )
  84. ///////////////////////////////////////////////////////////////////////////////
  85. // Prefix
  86. #ifdef CAMERA_LINK_HS
  87. # define GENCP_PREFIX_PREAMBLE_SIZE sizeof(UINT16)
  88. # define GENCP_PREFIX_CHANNEL_ID_SIZE sizeof(UINT16)
  89. # define GENCP_PREFIX_SIZE ( GENCP_PREFIX_PREAMBLE_SIZE + GENCP_PREFIX_CHANNEL_ID_SIZE )
  90. # define GENCP_PREFIX_PREAMBLE_OFFSET 0
  91. # define GENCP_PREFIX_CHANNEL_ID_OFFSET ( GENCP_PREFIX_PREAMBLE_OFFSET + GENCP_PREFIX_PREAMBLE_SIZE )
  92. # define GENCP_POSTFIX_CRC_SIZE sizeof(UINT16)
  93. # define GENCP_POSTFIX_RESERVED_SIZE sizeof(UINT16)
  94. # define GENCP_POSTFIX_SIZE ( GENCP_POSTFIX_CRC_SIZE + GENCP_POSTFIX_RESERVED_SIZE )
  95. # define GENCP_POSTFIX_CRC_OFFSET 0
  96. # define GENCP_POSTFIX_RESERVED_OFFSET ( GENCP_POSTFIX_CRC_OFFSET + GENCP_POSTFIX_CRC_SIZE )
  97. # define GENCP_MAX_PACKET_SIZE 0xFFFF
  98. #elif defined(CAMERA_LINK)
  99. # define GENCP_PREFIX_PREAMBLE 0x0100
  100. # define GENCP_PREFIX_PREAMBLE_LENGTH sizeof(UINT16)
  101. # define GENCP_PREFIX_HEADER_SUM_LENGTH sizeof(UINT16)
  102. # define GENCP_PREFIX_FRAME_SUM_LENGTH sizeof(UINT16)
  103. # define GENCP_PREFIX_CHANNEL_LENGTH sizeof(UINT16)
  104. # define GENCP_PREFIX_PREAMBLE_OFFSET 0
  105. # define GENCP_PREFIX_HEADER_SUM_OFFSET ( GENCP_PREFIX_PREAMBLE_OFFSET + GENCP_PREFIX_PREAMBLE_LENGTH)
  106. # define GENCP_PREFIX_FRAME_SUM_OFFSET ( GENCP_PREFIX_HEADER_SUM_OFFSET + GENCP_PREFIX_HEADER_SUM_LENGTH)
  107. # define GENCP_PREFIX_CHANNEL_OFFSET ( GENCP_PREFIX_FRAME_SUM_OFFSET + GENCP_PREFIX_FRAME_SUM_LENGTH)
  108. # define GENCP_PREFIX_SIZE 8
  109. # define GENCP_POSTFIX_SIZE 0
  110. # define GENCP_MAX_PACKET_SIZE ( (1000+8+8) + GENCP_PREFIX_SIZE + GENCP_POSTFIX_SIZE)
  111. # define GENCP_PREFIX_CHANNEL_DEFAULT 0
  112. #else
  113. # define GENCP_PREFIX_SIZE 0
  114. # define GENCP_POSTFIX_SIZE 0
  115. # define GENCP_MAX_PACKET_SIZE 0xFFFF
  116. #endif
  117. #define GENCP_VERSION_ALPHA 0x00000005
  118. #define GENCP_VERSION_RELEASE_1 0x00010000
  119. #define GENCP_VERSION_RELEASE_1_1 0x00010001
  120. #ifndef GENCP_VERSION_CURRENT
  121. # define GENCP_VERSION_CURRENT GENCP_VERSION_RELEASE_1
  122. #endif
  123. typedef UINT16 GENCP_STATUS;
  124. ///////////////////////////////////////////////////////////////////////////////
  125. // Common Command Section Header
  126. #define GENCP_CCD_STATUS_LENGTH sizeof(UINT16)
  127. #define GENCP_CCD_FLAG_LENGTH sizeof(UINT16)
  128. #define GENCP_CCD_COMMAND_LENGTH sizeof(UINT16)
  129. #define GENCP_CCD_LENGTH_LENGTH sizeof(UINT16)
  130. #define GENCP_CCD_REQ_ID_LENGTH sizeof(UINT16)
  131. #define GENCP_CCD_STATUS_OFFSET 0
  132. #define GENCP_CCD_FLAGS_OFFSET 0
  133. #define GENCP_CCD_COMMAND_OFFSET ( GENCP_CCD_FLAGS_OFFSET + GENCP_CCD_FLAG_LENGTH)
  134. #define GENCP_CCD_LENGTH_OFFSET ( GENCP_CCD_COMMAND_OFFSET + GENCP_CCD_COMMAND_LENGTH)
  135. #define GENCP_CCD_REQID_OFFSET ( GENCP_CCD_LENGTH_OFFSET + GENCP_CCD_LENGTH_LENGTH)
  136. #define GENCP_CCD_SIZE ( GENCP_CCD_REQID_OFFSET + GENCP_CCD_REQ_ID_LENGTH)
  137. ///////////////////////////////////////////////////////////////////////////////
  138. // Command Command Section Fields
  139. // Flags
  140. #define GENCP_CCD_FLAG_ACK_REQUEST (1<<14)
  141. #define GENCP_CCD_FLAG_RESEND (1<<15)
  142. // Commands
  143. #define GENCP_CCD_COMMAND_READMEM_REQ 0x0800
  144. #define GENCP_CCD_COMMAND_READMEM_ACK 0x0801
  145. #define GENCP_CCD_COMMAND_WRITEMEM_REQ 0x0802
  146. #define GENCP_CCD_COMMAND_WRITEMEM_ACK 0x0803
  147. #define GENCP_CCD_COMMAND_PENDING_ACK 0x0805
  148. #define GENCP_CCD_COMMAND_EVENT_REQ 0x0C00
  149. #define GENCP_CCD_COMMAND_EVENT_ACK 0x0C01
  150. // Status Code
  151. #define GENCP_CCD_STATUS_SUCCESS 0x0000
  152. #define GENCP_CCD_STATUS_NOT_IMPLEMENTED 0x8001
  153. #define GENCP_CCD_STATUS_INVALID_PARAMETER 0x8002
  154. #define GENCP_CCD_STATUS_INVALID_ADDRESS 0x8003
  155. #define GENCP_CCD_STATUS_WRITE_PROTECT 0x8004
  156. #define GENCP_CCD_STATUS_BAD_ALIGNMENT 0x8005
  157. #define GENCP_CCD_STATUS_ACCESS_DENIED 0x8006
  158. #define GENCP_CCD_STATUS_BUSY 0x8007
  159. #define GENCP_CCD_STATUS_LOCAL_PROBLEM 0x8008
  160. #define GENCP_CCD_STATUS_MISMATCH 0x8009
  161. #define GENCP_CCD_STATUS_INVALID_PROTOCOL 0x800A
  162. #define GENCP_CCD_STATUS_MSG_TIMEOUT 0x800B
  163. #define GENCP_CCD_STATUS_INVALID_HEADER 0x800E
  164. #define GENCP_CCD_STATUS_WRONG_CONFIG 0x800F
  165. #define GENCP_CCD_STATUS_GENERIC_ERROR 0x8FFF
  166. #define GENCP_LIB_STATUS_SUCCESS 0
  167. #define GENCP_LIB_STATUS_BAD_PACKET_SIZE -20500
  168. #define GENCP_LIB_STATUS_BAD_DATA_PACKET_SIZE -20501
  169. #define GENCP_LIB_STATUS_INVALID_PACKET -20502
  170. #define GENCP_LIB_STATUS_INVALID_ANSWER -20503
  171. #define GENCP_LIB_STATUS_INVALID_REQ_ID -20504
  172. #define GENCP_LIB_STATUS_INSUFFICENT_RESOURCE -20505
  173. #define GENCP_LIB_STATUS_INCOMPATIBLE_PROTOCOL -20506
  174. #define GENCP_LIB_STATUS_BAD_REGISTER_SIZE -20507
  175. #define GENCP_LIB_STATUS_NO_TRANSACTION_PENDING -20508
  176. #define GENCP_LIB_STATUS_UNZIPED_FAILED -20509
  177. ///////////////////////////////////////////////////////////////////////////////
  178. // Specific Command Section Header
  179. #define GENCP_MAX_SCD_SIZE ( GENCP_MAX_PACKET_SIZE - GENCP_CCD_SIZE)
  180. #define GENCP_SCD_ADDR_SIZE ( sizeof(CLINT64) )
  181. #define GENCP_SCD_READMEM_RESERVE_SIZE ( sizeof(UINT16) )
  182. #define GENCP_SCD_READMEM_LENGTH_SIZE ( sizeof(UINT16) )
  183. #define GENCP_SCD_ADDR_OFFSET ( GENCP_CCD_SIZE )
  184. #define GENCP_SCD_READMEM_DATA_OFFSET ( GENCP_CCD_SIZE )
  185. #define GENCP_SCD_READMEM_RESERVE_OFFSET ( GENCP_SCD_ADDR_OFFSET + GENCP_SCD_ADDR_SIZE )
  186. #define GENCP_SCD_READMEM_LENGTH_OFFSET ( GENCP_SCD_READMEM_RESERVE_OFFSET + GENCP_SCD_READMEM_RESERVE_SIZE )
  187. #define GENCP_SCD_WRITEMEM_DATA_OFFSET ( GENCP_SCD_ADDR_OFFSET + GENCP_SCD_ADDR_SIZE )
  188. #define GENCP_SCD_WRITEMEM_ACK_RESERVE_SIZE ( sizeof(UINT16) )
  189. #define GENCP_SCD_WRITEMEM_ACK_WRITTEN_SIZE ( sizeof(UINT16) )
  190. #define GENCP_SCD_READMEM_REQ_SIZE ( GENCP_SCD_READMEM_LENGTH_OFFSET + GENCP_SCD_READMEM_LENGTH_SIZE )
  191. #define GENCP_SCD_WRITEMEM_ACK_SIZE ( GENCP_CCD_SIZE + GENCP_SCD_WRITEMEM_ACK_RESERVE_SIZE + GENCP_SCD_WRITEMEM_ACK_WRITTEN_SIZE )
  192. #define GENCP_SCD_READMEM_MAX_DATA_SIZE ( GENCP_MAX_SCD_SIZE )
  193. #define GENCP_SCD_WRITEMEM_MAX_DATA_SIZE ( GENCP_MAX_SCD_SIZE - GENCP_SCD_ADDR_SIZE )
  194. // Pending
  195. #define GENCP_SCD_PENDING_RESERVE_SIZE ( sizeof(UINT16) )
  196. #define GENCP_SCD_PENDING_TIMEOUT_SIZE ( sizeof(UINT16) )
  197. #define GENCP_SCD_PENDING_RESERVE_OFFSET ( GENCP_CCD_SIZE )
  198. #define GENCP_SCD_PENDING_TIMEOUT_OFFSET ( GENCP_CCD_SIZE + GENCP_SCD_PENDING_RESERVE_SIZE )
  199. #define GENCP_SCD_PENDING_ACK_SIZE ( GENCP_SCD_PENDING_TIMEOUT_OFFSET + GENCP_SCD_PENDING_TIMEOUT_SIZE )
  200. // Event
  201. #define GENCP_SCD_EVENT_RESERVED_SIZE ( sizeof(UINT16) )
  202. #define GENCP_SCD_EVENTID_SIZE ( sizeof(UINT16) )
  203. #define GENCP_SCD_TIMESTAMP_SIZE ( sizeof(UINT64) )
  204. #define GENCP_SCD_EVENT_EVENTID_OFFSET ( GENCP_CCD_SIZE + GENCP_SCD_EVENT_RESERVED_SIZE)
  205. #define GENCP_SCD_EVENT_TIMESTAMP_OFFSET ( GENCP_SCD_EVENT_EVENTID_OFFSET + GENCP_SCD_EVENTID_SIZE)
  206. #define GENCP_SCD_EVENT_DATA_OFFSET ( GENCP_SCD_EVENT_TIMESTAMP_OFFSET + GENCP_SCD_TIMESTAMP_SIZE)
  207. ///////////////////////////////////////////////////////////////////////////////
  208. // Boot Strap Registers
  209. #if GENCP_VERSION_CURRENT >= 0x00010000
  210. #define _GENCP_COMPATIBILITY_OFFSET 64
  211. #else
  212. #define _GENCP_COMPATIBILITY_OFFSET 0
  213. #endif
  214. #define PROTOCOL_VERSION_OFFSET 0x0000
  215. #define MANUFACTURER_NAME_OFFSET 0x0004
  216. #define DEVICE_MODEL_OFFSET 0x0044
  217. #define DEVICE_FAMILY_OFFSET 0x0084
  218. #define DEVICE_VERSION_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x0084)
  219. #define MANUFACTURER_INFO_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x00C4)
  220. #define SERIAL_NUMBER_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x0104)
  221. #define USER_DEFINED_NAME_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x0144)
  222. #define DEVICE_CAPABILITY_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x0184)
  223. #define MAX_DEVICE_RESPONSE_TIME_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x018C)
  224. #define MANIFEST_TABLE_ADDR_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x0190)
  225. #define SBRM_ADDR_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x0198)
  226. #define DEVICE_CONFIGURATION_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x01A0)
  227. #define HEARTBEAT_TIMEOUT_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x01A8)
  228. #define MESSAGE_CHANNEL_ID_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x01AC)
  229. #define TIMESTAMP_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x01B0)
  230. #define TIMESTAMP_LATCH_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x01B8)
  231. #define TIMESTAMP_INCR_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x01BC)
  232. #define ACCESS_PRIVILEGE_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x01C4)
  233. #define PROTOCOL_ENDIANESS_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x01C8)
  234. #define IMPLEMENTATION_ENDIANESS_OFFSET (_GENCP_COMPATIBILITY_OFFSET + 0x01CC)
  235. #define PROTOCOL_VERSION_SIZE 4
  236. #define MANUFACTURER_NAME_SIZE 64
  237. #define DEVICE_MODEL_SIZE 64
  238. #define DEVICE_FAMILY_SIZE 64
  239. #define DEVICE_VERSION_SIZE 64
  240. #define MANUFACTURER_INFO_SIZE 64
  241. #define SERIAL_NUMBER_SIZE 64
  242. #define USER_DEFINED_NAME_SIZE 64
  243. #define DEVICE_CAPABILITY_SIZE 8
  244. #define MAX_DEVICE_RESPONSE_TIME_SIZE 4
  245. #define MANIFEST_TABLE_ADDR_SIZE 8
  246. #define SBRM_ADDR_SIZE 8
  247. #define DEVICE_CONFIGURATION_SIZE 8
  248. #define HEARTBEAT_TIMEOUT_SIZE 4
  249. #define MESSAGE_CHANNEL_ID_SIZE 4
  250. #define TIMESTAMP_SIZE 8
  251. #define TIMESTAMP_LATCH_SIZE 4
  252. #define TIMESTAMP_INCR_SIZE 8
  253. #define ACCESS_PRIVILEGE_SIZE 4
  254. #define PROTOCOL_ENDIANESS_SIZE 4
  255. #define IMPLEMENTATION_ENDIANESS_SIZE 4
  256. #define CAPABILITY_USER_NAME_AVAILABLE 0x0000000000000001ull
  257. #define CAPABILITY_ACCESS_PRIVILEGE_AVAILABLE 0x0000000000000002ull
  258. #define CAPABILITY_MESSAGE_CHANNEL_SUPPORTED 0x0000000000000004ull
  259. #define CAPABILITY_TIMESTAMP_SUPPORTED 0x0000000000000008ull
  260. #define CAPABILITY_STRING_ENCODING 0x00000000000000F0ull
  261. #define CAPABILITY_FAMILY_REGISTER_AVAILABLE 0x0000000000000100ull
  262. #define CAPABILITY_SBRM_SUPPORTED 0x0000000000000200ull
  263. #define CAPABILITY_ENDIANESS_REGISTER_SUPPORTED 0x0000000000000400ull
  264. #define CAPABILITY_WRITTEN_LENGTH_SUPPORTED 0x0000000000000800ull
  265. #define CAPABILITY_MULTIEVENT_SUPPORTED 0x0000000000001000ull
  266. #define CONFIGURATION_HEARTBEAT_ENABLE 0x0000000000000001ull
  267. #define CONFIGURATION_MULTIEVENT_ENABLE 0x0000000000000002ull
  268. #define ACCESS_PRIVILEGE_MASK 0x00000007l
  269. #define ACCESS_PRIVILEGE_AVAILABLE 0
  270. #define ACCESS_PRIVILEGE_EXCLUSIVE 1
  271. #define CL_SERIAL_BITRATEX_AVAILABLE_OFFSET ( SBRM_OFFSET )
  272. #define CL_SERIAL_BITRATE_AVAILABLE 4
  273. #define CL_SERIAL_BITRATEX_OFFSET ( CL_SERIAL_BITRATEX_AVAILABLE_OFFSET + CL_SERIAL_BITRATE_AVAILABLE )
  274. #define CL_SERIAL_BITRATE_SIZE 4
  275. #define MANIFEST_ENTRY_FILE_INFO_INDEX 0
  276. #define MANIFEST_ENTRY_FILE_VERSION_MAJOR_INDEX 0
  277. #define MANIFEST_ENTRY_FILE_VERSION_MINOR_INDEX 1
  278. #define MANIFEST_ENTRY_FILE_VERSION_SUBMINOR_INDEX 2
  279. #define MANIFEST_ENTRY_FILE_GEN_VERSION_MAJOR_INDEX 4
  280. #define MANIFEST_ENTRY_FILE_GEN_VERSION_MINOR_INDEX 5
  281. #define MANIFEST_ENTRY_FILE_TYPE_INDEX 6
  282. #define MANIFEST_ENTRY_FILE_ADDR_INDEX 8
  283. #define MANIFEST_ENTRY_FILE_SIZE_INDEX 16
  284. #define MANIFEST_ENTRY_RESERVED_INDEX 24
  285. #define MANIFEST_ENTRY_COUNT_OFFSET MANIFEST_OFFSET
  286. #define MANIFEST_ENTRY_COUNT_SIZE 8
  287. #define MANIFEST_ENTRY_SIZE 24
  288. #define MANIFEST_ENTRY_MAX_SIZE_SIZE 64
  289. #define MANIFEST_ENTRYX_OFFSET(X) ( MANIFEST_ENTRY_COUNT_OFFSET + MANIFEST_ENTRY_COUNT_SIZE + ( X * MANIFEST_ENTRY_MAX_SIZE_SIZE ) )
  290. #define MANIFEST_ENTRYX_INFO_OFFSET(X) ( MANIFEST_ENTRYX_OFFSET(X) + MANIFEST_ENTRY_FILE_INFO_INDEX )
  291. #define MANIFEST_ENTRYX_FILE_ADDR_OFFSET(X) ( MANIFEST_ENTRYX_OFFSET(X) + MANIFEST_ENTRY_FILE_ADDR_INDEX )
  292. #define MANIFEST_ENTRYX_FILE_SIZE_OFFSET(X) ( MANIFEST_ENTRYX_OFFSET(X) + MANIFEST_ENTRY_FILE_SIZE_INDEX )
  293. #define MANIFEST_ENTRYX_RESERVED_OFFSET(X) ( MANIFEST_ENTRYX_OFFSET(X) + MANIFEST_ENTRY_RESERVED_INDEX )
  294. //#define MANIFEST_URL_SIZE 256
  295. #endif //GENCP_DEFINES_H__