Code APP3

Dependencies:   mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial

Fork of APP3_Lab by Jean-Philippe Fournier

Committer:
Cheroukee
Date:
Sat Sep 30 18:02:41 2017 +0000
Revision:
2:a9bb12eefc08
Parent:
1:ea1b52d0a8a3
Child:
5:9e6a09a38785
EHHH XBEER IS GOOD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Cheroukee 1:ea1b52d0a8a3 1 /***
Cheroukee 1:ea1b52d0a8a3 2 * xbee.h - en-tete de lib xbee - fouj1807 - mcgj2701
Cheroukee 1:ea1b52d0a8a3 3 */
Cheroukee 1:ea1b52d0a8a3 4
Cheroukee 1:ea1b52d0a8a3 5 #pragma once
Cheroukee 1:ea1b52d0a8a3 6
Cheroukee 1:ea1b52d0a8a3 7 #include "mbed.h"
Cheroukee 1:ea1b52d0a8a3 8
Cheroukee 1:ea1b52d0a8a3 9 extern Serial xbee;
Cheroukee 1:ea1b52d0a8a3 10
Cheroukee 1:ea1b52d0a8a3 11 typedef enum {
Cheroukee 2:a9bb12eefc08 12 ATCommand = 0x08,
Cheroukee 2:a9bb12eefc08 13 ATCommandQueue = 0x09,
Cheroukee 1:ea1b52d0a8a3 14 TransmitRequest = 0x10,
Cheroukee 2:a9bb12eefc08 15 ExplicitAddressing = 0x11,
Cheroukee 2:a9bb12eefc08 16 RemoteCommandRequest = 0x17,
Cheroukee 2:a9bb12eefc08 17 CreateSourceRoute = 0x21,
Cheroukee 2:a9bb12eefc08 18 ATCommandResponse = 0x88,
Cheroukee 2:a9bb12eefc08 19 ModemStatus = 0x8A,
Cheroukee 2:a9bb12eefc08 20 ZigBeeTransmitStatus = 0x8B,
Cheroukee 2:a9bb12eefc08 21 ZigBeeReceivePacket = 0x90,
Cheroukee 2:a9bb12eefc08 22 ZigBeeExplicitRxIndicator = 0x91,
Cheroukee 2:a9bb12eefc08 23 ZigBeeIODataSampleRxIndicator = 0x92,
Cheroukee 2:a9bb12eefc08 24 XBeeSensorReadIndicator = 0x94,
Cheroukee 2:a9bb12eefc08 25 NodeIndentificationIndicator = 0x95,
Cheroukee 2:a9bb12eefc08 26 RemoteCommandResponse = 0x97,
Cheroukee 2:a9bb12eefc08 27 OverTheAirFirmwareUpdateStatus = 0xA0,
Cheroukee 2:a9bb12eefc08 28 RouteRecordIndicator = 0xA1,
Cheroukee 2:a9bb12eefc08 29 ManyToOneRouteRequestIndicator = 0xA3
Cheroukee 1:ea1b52d0a8a3 30 } frame_type_t;
Cheroukee 1:ea1b52d0a8a3 31
Cheroukee 1:ea1b52d0a8a3 32 typedef struct {
Cheroukee 2:a9bb12eefc08 33 char addr_0; // MSB
Cheroukee 2:a9bb12eefc08 34 char addr_1;
Cheroukee 2:a9bb12eefc08 35 char addr_2;
Cheroukee 2:a9bb12eefc08 36 char addr_3;
Cheroukee 2:a9bb12eefc08 37
Cheroukee 2:a9bb12eefc08 38 char addr_4;
Cheroukee 2:a9bb12eefc08 39 char addr_5;
Cheroukee 2:a9bb12eefc08 40 char addr_6;
Cheroukee 2:a9bb12eefc08 41 char addr_7; // LSB
Cheroukee 2:a9bb12eefc08 42 } zigbee_addr_64_t;
Cheroukee 2:a9bb12eefc08 43
Cheroukee 2:a9bb12eefc08 44 typedef struct {
Cheroukee 2:a9bb12eefc08 45 char addr_msb;
Cheroukee 2:a9bb12eefc08 46 char addr_lsb;
Cheroukee 2:a9bb12eefc08 47 } zigbee_addr_16_t;
Cheroukee 2:a9bb12eefc08 48
Cheroukee 2:a9bb12eefc08 49 typedef enum {
Cheroukee 2:a9bb12eefc08 50 // INSERT AT COMMAND LIST
Cheroukee 2:a9bb12eefc08 51 } at_command_t;
Cheroukee 2:a9bb12eefc08 52
Cheroukee 2:a9bb12eefc08 53 typedef struct {
Cheroukee 1:ea1b52d0a8a3 54 unsigned short length;
Cheroukee 1:ea1b52d0a8a3 55 frame_type_t frame_type;
Cheroukee 2:a9bb12eefc08 56 char frame_id;
Cheroukee 1:ea1b52d0a8a3 57 } frame_t;
Cheroukee 1:ea1b52d0a8a3 58
Cheroukee 2:a9bb12eefc08 59
Cheroukee 2:a9bb12eefc08 60 #define FRAME_DELIMITER_POS 0
Cheroukee 2:a9bb12eefc08 61 #define FRAME_LEN_MSB_POS 1
Cheroukee 2:a9bb12eefc08 62 #define FRAME_LEN_LSB_POS 2
Cheroukee 2:a9bb12eefc08 63
Cheroukee 2:a9bb12eefc08 64 #define FRAME_CHEKSUM_POS 3 + frame_data_size
Cheroukee 2:a9bb12eefc08 65
Cheroukee 2:a9bb12eefc08 66 #define API_FRAME_TYPE_POS 3
Cheroukee 2:a9bb12eefc08 67 #define API_FRAME_ID_POS 4
Cheroukee 2:a9bb12eefc08 68
Cheroukee 2:a9bb12eefc08 69 #define TRANSMIT_REQ_ADDR64_MSB_POS 5
Cheroukee 2:a9bb12eefc08 70 #define TRANSMIT_REQ_ADDR16_MSB_POS 13
Cheroukee 2:a9bb12eefc08 71 #define TRANSMIT_REQ_RADIUS_POS 15
Cheroukee 2:a9bb12eefc08 72
Cheroukee 2:a9bb12eefc08 73 #define TRANSMIT_REQ_DATA_START 17
Cheroukee 2:a9bb12eefc08 74 #define TRANSMIT_REQ_OVERHEAD_LENGTH 14
Cheroukee 2:a9bb12eefc08 75
Cheroukee 2:a9bb12eefc08 76 #define DECLARE_ADDR16_UNKNOWN_OR_BCAST zigbee_addr_16_t def_addr16_bcast = { 0xFF, 0xFE };
Cheroukee 2:a9bb12eefc08 77 #define USE_ADDR16_UNKNOWN_OR_BCAST def_addr16_bcast
Cheroukee 2:a9bb12eefc08 78 #define DECLARE_ADDR64_COORD zigbee_addr_64_t def_addr64_coord = { 0, 0, 0, 0, 0, 0, 0, 0 };
Cheroukee 2:a9bb12eefc08 79 #define USE_ADDR64_COORD def_addr64_coord
Cheroukee 2:a9bb12eefc08 80 #define DECLARE_ADDR64_BCAST zigbee_addr_64_t def_addr64_bcast = { 0, 0, 0, 0, 0, 0, 0xFF, 0xFE };
Cheroukee 2:a9bb12eefc08 81 #define USE_ADDR64_BCAST def_addr64_bcast
Cheroukee 2:a9bb12eefc08 82
Cheroukee 2:a9bb12eefc08 83 #define ZIGBEE_DELIMITER 0x7E
Cheroukee 2:a9bb12eefc08 84
Cheroukee 2:a9bb12eefc08 85
Cheroukee 1:ea1b52d0a8a3 86 extern char TransmitBuffer[2048];
Cheroukee 1:ea1b52d0a8a3 87 extern char ReceiveBuffer[2048];
Cheroukee 1:ea1b52d0a8a3 88
Cheroukee 1:ea1b52d0a8a3 89 void xbee_init();
Cheroukee 1:ea1b52d0a8a3 90
Cheroukee 1:ea1b52d0a8a3 91 bool set_pan_id(long pan_id);
Cheroukee 1:ea1b52d0a8a3 92 long get_pan_id();
Cheroukee 1:ea1b52d0a8a3 93
Cheroukee 1:ea1b52d0a8a3 94 int receive_buffer(char* buffer, int max_length);
Cheroukee 1:ea1b52d0a8a3 95
Cheroukee 2:a9bb12eefc08 96 void build_api_frame_header(int frame_data_size);
Cheroukee 2:a9bb12eefc08 97 void build_api_frame_checksum(int frame_data_size);
Cheroukee 2:a9bb12eefc08 98
Cheroukee 2:a9bb12eefc08 99 void set_api_frame_type(frame_type_t frame_type);
Cheroukee 2:a9bb12eefc08 100 void set_api_frame_id(int id);
Cheroukee 2:a9bb12eefc08 101
Cheroukee 2:a9bb12eefc08 102 void set_at_command(int at_command);
Cheroukee 2:a9bb12eefc08 103 void set_64_addr(long address);
Cheroukee 2:a9bb12eefc08 104 void set_16_addr(int address);
Cheroukee 2:a9bb12eefc08 105
Cheroukee 2:a9bb12eefc08 106 void set_broadcast_radius(int position, char radius);
Cheroukee 2:a9bb12eefc08 107 void set_transmit_request_options(int position, char options);
Cheroukee 2:a9bb12eefc08 108
Cheroukee 2:a9bb12eefc08 109 void set_transmit_request_data(char* data, int data_length);
Cheroukee 2:a9bb12eefc08 110
Cheroukee 2:a9bb12eefc08 111 bool transmit_request_64(char* buffer, int data_length, char options, zigbee_addr_64_t destination);
Cheroukee 2:a9bb12eefc08 112 bool transmit_request_16(char* buffer, int data_length, char options, zigbee_addr_16_t destination);
Cheroukee 2:a9bb12eefc08 113 bool transmit_request(char* buffer, int data_length, char options, zigbee_addr_64_t destination64, zigbee_addr_16_t destination16);
Cheroukee 1:ea1b52d0a8a3 114
Cheroukee 1:ea1b52d0a8a3 115
Cheroukee 2:a9bb12eefc08 116 void transmit(int packet_length);