/**************************************************************************** Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED. This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT be copied by any method or incorporated into another program without the express written consent of Aerospace C.Power. This Information or any portion thereof remains the property of Aerospace C.Power. The Information contained herein is believed to be accurate and Aerospace C.Power assumes no responsibility or liability for its use in any way and conveys no license or title under any patent or copyright and makes no representation or warranty that this Information is free from patent or copyright infringement. ****************************************************************************/ #ifndef _IOT_BT_EXT_PROTOCOL_H_ #define _IOT_BT_EXT_PROTOCOL_H_ #ifdef __cplusplus extern "C" { #endif #include "os_types_api.h" #include "os_utils_api.h" /* plc bluetooth protocol information */ /* protocol format * start_code(2) + version(1) + port(1) + crc(2) + payload len(2) * + payload(n) + end_code(2) */ /* packet start code */ #define IOT_BT_EXT_PROTO_START_CODE 0x24 /* packet end code */ #define IOT_BT_EXT_PROTO_END_CODE 0x42 /* start code fields length */ #define IOT_BT_EXT_PROTO_START_LEN 2 /* end code fields length */ #define IOT_BT_EXT_PROTO_END_LEN 2 /* payload_len field length */ #define IOT_BT_EXT_PROTO_PL_LEN_FIELD_LEN 2 /* min packet length(none payload) */ #define IOT_BT_EXT_PROTO_PACKET_MIN_LEN (sizeof(iot_bt_ext_proto_hdr_t) \ + sizeof(iot_bt_ext_proto_start_t) + sizeof(iot_bt_ext_proto_end_t)) /* plc bt protocol version */ #define IOT_BT_EXT_PROTO_VERSION 0 typedef enum { /* at command port, not support */ IOT_BT_EXT_PORT_AT_CMD = 0, /* current protocol/device port, not support */ IOT_BT_EXT_PORT_PROTO = 1, /* upgrade port */ IOT_BT_EXT_PORT_UPGRADE = 2, /* device management port */ IOT_BT_EXT_PORT_DEV_MGMT = 3, /* port id max id */ IOT_BT_EXT_PORT_SUB_NUM, } IOT_BT_EXT_PORT_SUB_ID; #pragma pack(push) #pragma pack(1) /* plc bt protocol typedef */ /* plc bt protocol start filed */ typedef struct _iot_bt_ext_proto_start { /* start sync code */ uint8_t start[IOT_BT_EXT_PROTO_START_LEN]; } iot_bt_ext_proto_start_t; /* plc bt protocol header filed */ typedef struct _iot_bt_ext_proto_hdr { /* protocol version number */ uint8_t version; /* communication port, see IOT_BT_EXT_PROTO_PORT_XXX */ uint8_t port; /* payload crc */ uint16_t crc; /* payload length */ uint16_t length; } iot_bt_ext_proto_hdr_t; /* plc bt protocol end filed */ typedef struct _iot_bt_ext_proto_end { /* end sync code */ uint8_t end[IOT_BT_EXT_PROTO_END_LEN]; } iot_bt_ext_proto_end_t; #pragma pack(pop) #ifdef __cplusplus } #endif #endif