Code APP3
Dependencies: mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial
Fork of APP3_Lab by
Diff: xbee.h
- Revision:
- 5:9e6a09a38785
- Parent:
- 2:a9bb12eefc08
- Child:
- 6:9ed8153f1328
diff -r ed53c87777f6 -r 9e6a09a38785 xbee.h --- a/xbee.h Sat Sep 30 18:24:44 2017 +0000 +++ b/xbee.h Sat Sep 30 18:36:28 2017 +0000 @@ -6,16 +6,18 @@ #include "mbed.h" +// xbee serial port object extern Serial xbee; +// Type de frames possible dans le mode API typedef enum { - ATCommand = 0x08, + ATCommand = 0x08, // Commande AT ATCommandQueue = 0x09, - TransmitRequest = 0x10, + TransmitRequest = 0x10, // Requete d'envoi de donnees ExplicitAddressing = 0x11, - RemoteCommandRequest = 0x17, + RemoteCommandRequest = 0x17,// Commande AT a distance CreateSourceRoute = 0x21, - ATCommandResponse = 0x88, + ATCommandResponse = 0x88, ModemStatus = 0x8A, ZigBeeTransmitStatus = 0x8B, ZigBeeReceivePacket = 0x90, @@ -29,6 +31,7 @@ ManyToOneRouteRequestIndicator = 0xA3 } frame_type_t; +// Structure d'addressage du zigbee (64-bit) typedef struct { char addr_0; // MSB char addr_1; @@ -41,38 +44,46 @@ char addr_7; // LSB } zigbee_addr_64_t; +// Structure d'addressage du zigbee (16-bit) 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; -} frame_t; - - +// Position du frame delimiter #define FRAME_DELIMITER_POS 0 +// Length position MSB #define FRAME_LEN_MSB_POS 1 +// Length position LSB #define FRAME_LEN_LSB_POS 2 +// position Checksum #define FRAME_CHEKSUM_POS 3 + frame_data_size +// position Frame type #define API_FRAME_TYPE_POS 3 +// position Frame ID #define API_FRAME_ID_POS 4 +// position Transmit req 64-bit address #define TRANSMIT_REQ_ADDR64_MSB_POS 5 +// position Transmit req 16-bit address #define TRANSMIT_REQ_ADDR16_MSB_POS 13 +// position Transmit req radius #define TRANSMIT_REQ_RADIUS_POS 15 +// position de depart du data dans un transmit request #define TRANSMIT_REQ_DATA_START 17 +// taille du header de transmit request #define TRANSMIT_REQ_OVERHEAD_LENGTH 14 +/* +* Macro permettant de declarer une address 64-bit ou 16-bit reservee +* Usage : +* DECLARE_ADDR16_UNKNOWN_OR_BCAST // declaration de l'addresse +* USE_ADDR16_UNKNOWN_OR_BCAST // usage de l'addresse +*/ #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 }; @@ -80,28 +91,36 @@ #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 +// Zigbee delimiter value #define ZIGBEE_DELIMITER 0x7E - +// Transmit/receive buffer space extern char TransmitBuffer[2048]; extern char ReceiveBuffer[2048]; +// Init xbee communication void xbee_init(); +// Set le PAN ID du Xbee bool set_pan_id(long pan_id); +// Recupere le PAN ID du Xbee long get_pan_id(); -int receive_buffer(char* buffer, int max_length); - +// insere le api frame header dans le buffer void build_api_frame_header(int frame_data_size); +// insere le api frame cheksum dans le buffer void build_api_frame_checksum(int frame_data_size); +// Set le type d'api frame void set_api_frame_type(frame_type_t frame_type); +// set le ID du frame void set_api_frame_id(int id); +// Set at command not implemented void set_at_command(int at_command); -void set_64_addr(long address); -void set_16_addr(int address); +// Set l'address 64 bit +void set_64_addr(zigbee_addr_64_t address); +void set_16_addr(zigbee_addr_16_t address); void set_broadcast_radius(int position, char radius); void set_transmit_request_options(int position, char options); @@ -112,5 +131,5 @@ 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); +int receive(char* buffer, int max_length);