.. _program_listing_file_include_libcaer_network.h: Program Listing for File network.h ================================== |exhale_lsh| :ref:`Return to documentation for file ` (``include/libcaer/network.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef LIBCAER_NETWORK_H_ #define LIBCAER_NETWORK_H_ #include "libcaer.h" #ifdef __cplusplus extern "C" { #endif #define AEDAT3_NETWORK_HEADER_LENGTH 20 #define AEDAT3_NETWORK_MAGIC_NUMBER 0x1D378BC90B9A6658 #define AEDAT3_NETWORK_VERSION 0x01 #define AEDAT3_FILE_VERSION "3.1" // Standard MTU 1500 - 20 IP header - 8 UDP header => 1472 bytes #define AEDAT3_MAX_UDP_SIZE (1472 - AEDAT3_NETWORK_HEADER_LENGTH) PACKED_STRUCT(struct aedat3_network_header { int64_t magicNumber; int64_t sequenceNumber; int8_t versionNumber; int8_t formatNumber; int16_t sourceID; }); static inline struct aedat3_network_header caerParseNetworkHeader(const uint8_t *dataBuffer) { // Network header is 20 bytes long. Use struct to interpret. struct aedat3_network_header networkHeader; // Copy data into packet struct. memcpy(&networkHeader, dataBuffer, AEDAT3_NETWORK_HEADER_LENGTH); // Ensure endianness conversion is done if needed. networkHeader.magicNumber = le64toh(networkHeader.magicNumber); networkHeader.sequenceNumber = le64toh(networkHeader.sequenceNumber); networkHeader.sourceID = le16toh(networkHeader.sourceID); return (networkHeader); } #ifdef __cplusplus } #endif #endif /* LIBCAER_NETWORK_H_ */