Xbee
XBEE.h@0:fbed291691a6, 2018-10-14 (annotated)
- Committer:
- renanbmx123
- Date:
- Sun Oct 14 02:01:07 2018 +0000
- Revision:
- 0:fbed291691a6
Xbee
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
renanbmx123 | 0:fbed291691a6 | 1 | #if !defined(__XBEE_H_) |
renanbmx123 | 0:fbed291691a6 | 2 | #define __XBEE_H_ |
renanbmx123 | 0:fbed291691a6 | 3 | |
renanbmx123 | 0:fbed291691a6 | 4 | #include "mbed.h" |
renanbmx123 | 0:fbed291691a6 | 5 | #include <string.h> |
renanbmx123 | 0:fbed291691a6 | 6 | #include <stdint.h> // uint8_t |
renanbmx123 | 0:fbed291691a6 | 7 | #include <stdlib.h> // itoa |
renanbmx123 | 0:fbed291691a6 | 8 | #include <math.h> |
renanbmx123 | 0:fbed291691a6 | 9 | |
renanbmx123 | 0:fbed291691a6 | 10 | #define XB_SIZEBUF 64 |
renanbmx123 | 0:fbed291691a6 | 11 | #define XB_PAYLOAD 16 |
renanbmx123 | 0:fbed291691a6 | 12 | |
renanbmx123 | 0:fbed291691a6 | 13 | #define XBEE_COORD 0 |
renanbmx123 | 0:fbed291691a6 | 14 | #define XBEE_BROAD 1 |
renanbmx123 | 0:fbed291691a6 | 15 | |
renanbmx123 | 0:fbed291691a6 | 16 | // para poder declarar como typedef |
renanbmx123 | 0:fbed291691a6 | 17 | typedef struct __attribute__ ((__packed__)) { |
renanbmx123 | 0:fbed291691a6 | 18 | uint8_t start_delimiter; |
renanbmx123 | 0:fbed291691a6 | 19 | uint8_t length_H; |
renanbmx123 | 0:fbed291691a6 | 20 | uint8_t length; |
renanbmx123 | 0:fbed291691a6 | 21 | // Frame do Pacote |
renanbmx123 | 0:fbed291691a6 | 22 | uint8_t frame_type; // 10 |
renanbmx123 | 0:fbed291691a6 | 23 | uint8_t frame_id; |
renanbmx123 | 0:fbed291691a6 | 24 | uint8_t dest_addr64[8]; |
renanbmx123 | 0:fbed291691a6 | 25 | uint8_t dest_addr16[2]; |
renanbmx123 | 0:fbed291691a6 | 26 | uint8_t broadcast_radius; |
renanbmx123 | 0:fbed291691a6 | 27 | uint8_t options; |
renanbmx123 | 0:fbed291691a6 | 28 | uint8_t rf_data[100]; //NOTE: last byte MUST be checksum |
renanbmx123 | 0:fbed291691a6 | 29 | }pkt_tx; |
renanbmx123 | 0:fbed291691a6 | 30 | |
renanbmx123 | 0:fbed291691a6 | 31 | // para poder declarar como typedef |
renanbmx123 | 0:fbed291691a6 | 32 | typedef struct __attribute__ ((__packed__)) { |
renanbmx123 | 0:fbed291691a6 | 33 | uint8_t start_delimiter; |
renanbmx123 | 0:fbed291691a6 | 34 | uint8_t length_H; |
renanbmx123 | 0:fbed291691a6 | 35 | uint8_t length; |
renanbmx123 | 0:fbed291691a6 | 36 | // Frame do Pacote |
renanbmx123 | 0:fbed291691a6 | 37 | uint8_t frame_type; // 8 |
renanbmx123 | 0:fbed291691a6 | 38 | uint8_t frame_id; |
renanbmx123 | 0:fbed291691a6 | 39 | uint8_t command[2]; // ASCII |
renanbmx123 | 0:fbed291691a6 | 40 | uint8_t rf_data[16]; //NOTE: last byte MUST be checksum |
renanbmx123 | 0:fbed291691a6 | 41 | }pkt_cmd; |
renanbmx123 | 0:fbed291691a6 | 42 | |
renanbmx123 | 0:fbed291691a6 | 43 | |
renanbmx123 | 0:fbed291691a6 | 44 | /* Classe para controlar XBEE Zigbee usando API*/ |
renanbmx123 | 0:fbed291691a6 | 45 | class XBEE { |
renanbmx123 | 0:fbed291691a6 | 46 | public: |
renanbmx123 | 0:fbed291691a6 | 47 | uint8_t buf_tx[XB_SIZEBUF]; // Serial TX |
renanbmx123 | 0:fbed291691a6 | 48 | uint8_t buf_rx[XB_SIZEBUF]; // Serial RX |
renanbmx123 | 0:fbed291691a6 | 49 | //CircularBuffer<uint8_t, XB_SIZEBUF> buf_rx; |
renanbmx123 | 0:fbed291691a6 | 50 | int count_tx; |
renanbmx123 | 0:fbed291691a6 | 51 | int count_rx; |
renanbmx123 | 0:fbed291691a6 | 52 | // DEVICE DATA |
renanbmx123 | 0:fbed291691a6 | 53 | char NI[16]; // Device Name |
renanbmx123 | 0:fbed291691a6 | 54 | int ID; // Net ID |
renanbmx123 | 0:fbed291691a6 | 55 | int MY; // Device Net Address |
renanbmx123 | 0:fbed291691a6 | 56 | int SH; // Serial High |
renanbmx123 | 0:fbed291691a6 | 57 | int SL; // Serial Low |
renanbmx123 | 0:fbed291691a6 | 58 | int PL; // Power Level |
renanbmx123 | 0:fbed291691a6 | 59 | int BD; // Baud Rate |
renanbmx123 | 0:fbed291691a6 | 60 | int AO; // API option |
renanbmx123 | 0:fbed291691a6 | 61 | int DB; // RSSI between messages |
renanbmx123 | 0:fbed291691a6 | 62 | int TP; // Temperature inside module |
renanbmx123 | 0:fbed291691a6 | 63 | |
renanbmx123 | 0:fbed291691a6 | 64 | //XBEE(PinName tx, PinName rx, int baud = 9600); |
renanbmx123 | 0:fbed291691a6 | 65 | XBEE(Serial* serial, int baud = 9600); |
renanbmx123 | 0:fbed291691a6 | 66 | /** Class destructor */ |
renanbmx123 | 0:fbed291691a6 | 67 | virtual ~XBEE(); |
renanbmx123 | 0:fbed291691a6 | 68 | void recvAttach (void); |
renanbmx123 | 0:fbed291691a6 | 69 | |
renanbmx123 | 0:fbed291691a6 | 70 | // High Level Function |
renanbmx123 | 0:fbed291691a6 | 71 | void init (void); |
renanbmx123 | 0:fbed291691a6 | 72 | int send_msg(char * str, int dest); |
renanbmx123 | 0:fbed291691a6 | 73 | int set_cfg(char * cmd, int value); |
renanbmx123 | 0:fbed291691a6 | 74 | int recv_msg(char * buf, int tam); |
renanbmx123 | 0:fbed291691a6 | 75 | int read_cfg(char * cmd, int & var); |
renanbmx123 | 0:fbed291691a6 | 76 | void clear_buf(void); |
renanbmx123 | 0:fbed291691a6 | 77 | |
renanbmx123 | 0:fbed291691a6 | 78 | // Low Level Function |
renanbmx123 | 0:fbed291691a6 | 79 | int create_TX(char * str, int dest); |
renanbmx123 | 0:fbed291691a6 | 80 | int create_CMD(char * cmd, int val); |
renanbmx123 | 0:fbed291691a6 | 81 | void sendBuffer(void); |
renanbmx123 | 0:fbed291691a6 | 82 | //void printBuffer(void); |
renanbmx123 | 0:fbed291691a6 | 83 | void recv_NI(void); |
renanbmx123 | 0:fbed291691a6 | 84 | void recv_CMD(int & cmd); |
renanbmx123 | 0:fbed291691a6 | 85 | void int_mng(int value); |
renanbmx123 | 0:fbed291691a6 | 86 | |
renanbmx123 | 0:fbed291691a6 | 87 | // Auxiliar Function |
renanbmx123 | 0:fbed291691a6 | 88 | //char validPackage (uint8_t * buf, int tam); |
renanbmx123 | 0:fbed291691a6 | 89 | int dec2hex(int nbr); |
renanbmx123 | 0:fbed291691a6 | 90 | int hex2dec(int nbr); //ToDo |
renanbmx123 | 0:fbed291691a6 | 91 | |
renanbmx123 | 0:fbed291691a6 | 92 | protected: |
renanbmx123 | 0:fbed291691a6 | 93 | //RawSerial *xbee; |
renanbmx123 | 0:fbed291691a6 | 94 | Serial* xbee; |
renanbmx123 | 0:fbed291691a6 | 95 | int int_ctrl; |
renanbmx123 | 0:fbed291691a6 | 96 | }; |
renanbmx123 | 0:fbed291691a6 | 97 | |
renanbmx123 | 0:fbed291691a6 | 98 | #endif /* defined(__XBEE_H_) */ |