⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packet.h

📁 Open DMT Client C Source code
💻 H
📖 第 1 页 / 共 2 页
字号:
    /* Diagnostic packets */    PKT_CLIENT_DIAGNOSTIC               = PKT_CLIENT_HEADER|0xD0,    // Diagnostic codes        // Payload:        //   0:2 - Diagnostic code        //   2:X - Diagnostic data    /* Error packets */    PKT_CLIENT_ERROR                    = PKT_CLIENT_HEADER|0xE0,    // Error codes        // Payload:        //   0:2 - Error code        //   2:X - Error data    /* File download packets? */    };typedef enum ClientPacketType_enum ClientPacketType_t;// ----------------------------------------------------------------------------// Server originated packets#define PKT_SERVER_HEADER               ((UInt16)PACKET_HEADER_SERVER_BASIC << 8)enum ServerPacketType_enum {        /* End-Of-Block packets */    PKT_SERVER_EOB_DONE                 = PKT_SERVER_HEADER|0x00,    // ""       : End of transmission, query response        // Payload:        //   0:1 - Optional maximum number of events to send per block        //   1:X - Optional server key    PKT_SERVER_EOB_SPEAK_FREELY         = PKT_SERVER_HEADER|0x01,    // ""       : End of transmission, speak freely        // Payload:        //   0:1 - Optional maximum number of events to send per block        //   1:X - Optional server key        // The client may treat this packet the same as PKT_SERVER_EOB_DONE    /* Acknowledge packet */    PKT_SERVER_ACK                      = PKT_SERVER_HEADER|0xA0,    // "%*u"    : Acknowledge        // Payload:        //   0:X - Acknowledged sequence    /* Property packets */    PKT_SERVER_GET_PROPERTY             = PKT_SERVER_HEADER|0xB0,    // "%2u"    : Get property        // Payload:        //   0:2 - Property ID    PKT_SERVER_SET_PROPERTY             = PKT_SERVER_HEADER|0xB1,    // "%2u%*b" : Set property        // Payload:        //   0:2 - Property ID        //   2:X - Property value    /* File upload packets */    PKT_SERVER_FILE_UPLOAD              = PKT_SERVER_HEADER|0xC0,    // "%1x%3u%*b" : File upload        // Payload:        //   0:1 - Start/Data/End indicator        //   1:3 - File length/offset        //   4:X - Filename/Data/Checksum        // The client may choose to ignore this packet    /* Error packets */    PKT_SERVER_ERROR                    = PKT_SERVER_HEADER|0xE0,    // "%2u"    : NAK/Error codes        // Payload:        //   0:2 - Error code        //   2:2 - Offending packet header        //   4:2 - Ofending packet type        //   6:X - Optional error data    /* End-Of-Transmission */    PKT_SERVER_EOT                      = PKT_SERVER_HEADER|0xFF,    // ""       : End transmission (socket will be closed)        // Payload:        //  (None)};typedef enum ServerPacketType_enum ServerPacketType_t;// ----------------------------------------------------------------------------typedef struct {    ServerPacketType_t      pktType;    char                    *format;    UInt16                  flags;} ServerPacketEntry_t;// ----------------------------------------------------------------------------#define PACKET_MAX_ENCODED_LENGTH       600 // (with excess) largest possible ASCII encoded packet// ----------------------------------------------------------------------------enum PacketPriority_enum {     PRIORITY_NONE       = 0,     PRIORITY_LOW        = 1,    // generally sent via Simplex only (GPRS)    PRIORITY_NORMAL     = 2,    // generally sent via Duplex  only (GPRS)    PRIORITY_HIGH       = 3     // generally sent via Duplex  only (GPRS, then Satellite)};typedef enum PacketPriority_enum PacketPriority_t;// ----------------------------------------------------------------------------#define ENCODING_BASE64_CHAR        '='#define ENCODING_HEX_CHAR           ':'#define ENCODING_CSV_CHAR           ','#define ENCODING_ASCII_CKSUM_       (0x8000)#define ENCODING_IS_CHECKSUM(E)     (((E) & ENCODING_ASCII_CKSUM_) != 0)#define ENCODING_IS_ASCII(E)        (ENCODING_VALUE(E) != ENCODING_BINARY)#define ENCODING_VALUE(E)           ((E) & 0x0F)#define ENCODING_CHECKSUM(E)        (ENCODING_VALUE(E) | ENCODING_ASCII_CKSUM_)#define ENCODING_MASK(E)            (1 << ENCODING_VALUE(E))#define ENCODING_BINARY             0    // server must support#define ENCODING_BINARY_MASK        ENCODING_MASK(ENCODING_BINARY)  // 0x01#define ENCODING_BASE64             1    // server must support#define ENCODING_BASE64_CKSUM       ENCODING_CHECKSUM(ENCODING_BASE64)#define ENCODING_BASE64_MASK        ENCODING_MASK(ENCODING_BASE64)  // 0x02#define ENCODING_HEX                2    // server must support#define ENCODING_HEX_CKSUM          ENCODING_CHECKSUM(ENCODING_HEX)#define ENCODING_HEX_MASK           ENCODING_MASK(ENCODING_HEX)     // 0x04#define ENCODING_CSV                3    // server support optional#define ENCODING_CSV_CKSUM          ENCODING_CHECKSUM(ENCODING_CSV)#define ENCODING_CSV_MASK           ENCODING_MASK(ENCODING_CSV)#define ENCODING_UNDEFINED          (0xFFFF)#define ENCODING_REQUIRED_MASK      (ENCODING_BINARY_MASK | ENCODING_BASE64_MASK | ENCODING_HEX_MASK)#define ENCODING_ALL_MASK           (ENCODING_REQUIRED_MASK | ENCODING_CSV_MASK)typedef UInt16 PacketEncoding_t;// ----------------------------------------------------------------------------// Internal packet function error codes#define PKTERR_NULL_PACKET          -301    // internal#define PKTERR_BIN_PRINTF           -302    // internal: buffer overflow or invalid format#define PKTERR_ENCODING             -303    // internal: packet encoding error#define PKTERR_OVERFLOW             -304    // internal: buffer overflow#define PKTERR_BIN_FORMAT_DIGIT     -331    // internal: invalid format digit#define PKTERR_BIN_FORMAT_CHAR      -332    // internal: invalid format char// ----------------------------------------------------------------------------// this value is used to indicate that 'all' sent event packets are to be acknowledged#define SEQUENCE_ALL            0xFFFFFFFFL#define SEQUENCE_MASK(N)        ((1L << ((N) * 8)) - 1L)// ----------------------------------------------------------------------------typedef struct {    UInt32              sequence;   // sequence number (MUST MATCH PACKET ENCODED SEQUENCE!!!)    ClientPacketType_t  hdrType;    // packet type (ie. EVENT_FIXED_FORMAT_TYPE)    PacketPriority_t    priority;   // low/normal/high priority    utBool              sent;       // 'true' if sent to server    UInt8               seqPos;     // sequence position    UInt8               seqLen;     // sequence length    char                dataFmt[(PACKET_MAX_FIELD_COUNT * 3) + 3]; // null terminated    UInt8               dataLen;    // length of data in payload    UInt8               data[PACKET_MAX_PAYLOAD_LENGTH];} Packet_t; // sizeof(Packet_t) == 324 bytes// ----------------------------------------------------------------------------// ----------------------------------------------------------------------------utBool pktIsEventPacket(ClientPacketType_t pht);FmtBuffer_t *pktFmtBuffer(FmtBuffer_t *bf, Packet_t *pkt);int pktInit(Packet_t *pkt, ClientPacketType_t pktType, const char *fmt, ...);int pktVInit(Packet_t *pkt, ClientPacketType_t pktType, const char *fmt, va_list ap);int pktEncodePacket(Buffer_t *dest, Packet_t *pkt, PacketEncoding_t encoding);void pktPrintPacket(Packet_t *pkt, const char *msg, PacketEncoding_t encoding);// ----------------------------------------------------------------------------// ----------------------------------------------------------------------------#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -