Code APP3
Dependencies: mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial
Fork of APP3_Lab by
Diff: xbee.h
- Revision:
- 2:a9bb12eefc08
- Parent:
- 1:ea1b52d0a8a3
- Child:
- 5:9e6a09a38785
--- a/xbee.h Wed Sep 27 19:58:38 2017 +0000 +++ b/xbee.h Sat Sep 30 18:02:41 2017 +0000 @@ -9,17 +9,80 @@ extern Serial xbee; typedef enum { + ATCommand = 0x08, + ATCommandQueue = 0x09, TransmitRequest = 0x10, - ATCommand = 0x08 + ExplicitAddressing = 0x11, + RemoteCommandRequest = 0x17, + CreateSourceRoute = 0x21, + ATCommandResponse = 0x88, + ModemStatus = 0x8A, + ZigBeeTransmitStatus = 0x8B, + ZigBeeReceivePacket = 0x90, + ZigBeeExplicitRxIndicator = 0x91, + ZigBeeIODataSampleRxIndicator = 0x92, + XBeeSensorReadIndicator = 0x94, + NodeIndentificationIndicator = 0x95, + RemoteCommandResponse = 0x97, + OverTheAirFirmwareUpdateStatus = 0xA0, + RouteRecordIndicator = 0xA1, + ManyToOneRouteRequestIndicator = 0xA3 } frame_type_t; typedef struct { + char addr_0; // MSB + char addr_1; + char addr_2; + char addr_3; + + char addr_4; + char addr_5; + char addr_6; + char addr_7; // LSB +} zigbee_addr_64_t; + +typedef struct { + char addr_msb; + char addr_lsb; +} zigbee_addr_16_t; + +typedef enum { + // INSERT AT COMMAND LIST +} at_command_t; + +typedef struct { unsigned short length; frame_type_t frame_type; - char frame_id; - + char frame_id; } frame_t; + +#define FRAME_DELIMITER_POS 0 +#define FRAME_LEN_MSB_POS 1 +#define FRAME_LEN_LSB_POS 2 + +#define FRAME_CHEKSUM_POS 3 + frame_data_size + +#define API_FRAME_TYPE_POS 3 +#define API_FRAME_ID_POS 4 + +#define TRANSMIT_REQ_ADDR64_MSB_POS 5 +#define TRANSMIT_REQ_ADDR16_MSB_POS 13 +#define TRANSMIT_REQ_RADIUS_POS 15 + +#define TRANSMIT_REQ_DATA_START 17 +#define TRANSMIT_REQ_OVERHEAD_LENGTH 14 + +#define DECLARE_ADDR16_UNKNOWN_OR_BCAST zigbee_addr_16_t def_addr16_bcast = { 0xFF, 0xFE }; +#define USE_ADDR16_UNKNOWN_OR_BCAST def_addr16_bcast +#define DECLARE_ADDR64_COORD zigbee_addr_64_t def_addr64_coord = { 0, 0, 0, 0, 0, 0, 0, 0 }; +#define USE_ADDR64_COORD def_addr64_coord +#define DECLARE_ADDR64_BCAST zigbee_addr_64_t def_addr64_bcast = { 0, 0, 0, 0, 0, 0, 0xFF, 0xFE }; +#define USE_ADDR64_BCAST def_addr64_bcast + +#define ZIGBEE_DELIMITER 0x7E + + extern char TransmitBuffer[2048]; extern char ReceiveBuffer[2048]; @@ -28,10 +91,26 @@ bool set_pan_id(long pan_id); long get_pan_id(); -bool transmit_request(char* buffer, int length); int receive_buffer(char* buffer, int max_length); -//bool set(char command, char* buffer, int length); +void build_api_frame_header(int frame_data_size); +void build_api_frame_checksum(int frame_data_size); + +void set_api_frame_type(frame_type_t frame_type); +void set_api_frame_id(int id); + +void set_at_command(int at_command); +void set_64_addr(long address); +void set_16_addr(int address); + +void set_broadcast_radius(int position, char radius); +void set_transmit_request_options(int position, char options); + +void set_transmit_request_data(char* data, int data_length); + +bool transmit_request_64(char* buffer, int data_length, char options, zigbee_addr_64_t destination); +bool transmit_request_16(char* buffer, int data_length, char options, zigbee_addr_16_t destination); +bool transmit_request(char* buffer, int data_length, char options, zigbee_addr_64_t destination64, zigbee_addr_16_t destination16); - +void transmit(int packet_length);