97 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /****************************************************************************
 | |
| 
 | |
| 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
 |