Code APP3
Dependencies: mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial
Fork of APP3_Lab by
Diff: xbee.cpp
- Revision:
- 1:ea1b52d0a8a3
- Child:
- 2:a9bb12eefc08
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xbee.cpp Wed Sep 27 19:58:38 2017 +0000 @@ -0,0 +1,101 @@ + +/*** +* xbee.cpp - en-tete de lib xbee - fouj1807 - mcgj2701 +*/ + +#include "xbee.h" + + +#define ZIGBEE_DELIMITER 0x7E + +DigitalOut xbee_led(LED1); +DigitalOut xbee_reset(p8); + +Serial xbee(p13, p14); // tx, rx + +char TransmitBuffer[2048] = {0}; +char ReceiveBuffer[2048] = {0}; + +void xbee_init() +{ + xbee_reset = 0; + + wait_ms(400); + + xbee_reset = 1; + + wait_ms(5000); + + xbee_led = 1; +} + + +bool set_pan_id(long pan_id) +{ + return false; +} + +long get_pan_id() +{ + return 0L; +} + +bool transmit_request(char* buffer, int length) +{ + // Delimiter + TransmitBuffer[0] = ZIGBEE_DELIMITER; + + char checksum = 0xFF; + + // Frame Length + int frame_length = length + 14; + TransmitBuffer[1] = frame_length >> 8; + TransmitBuffer[2] = frame_length & 0xFF; + + // Frame Type + TransmitBuffer[3] = 0x10; + + // Frame ID + TransmitBuffer[4] = 0x01; + + // Should set address if different from coordinator + //TransmitBuffer[5] = + + // 16-bit address, broadcast address + TransmitBuffer[13] = 0xFF; + TransmitBuffer[14] = 0xFE; + + // Max hops, 0 = max + TransmitBuffer[15] = 0x00; + + // Transmit options + TransmitBuffer[16] = 0x00; + + // Insert buffer data + for (int i = 0; i < length; i++) + { + TransmitBuffer[17 + i] = buffer[i]; + } + + // Calculate checksum + for (int i = 3; i < 17 + length; i++) + { + checksum -= TransmitBuffer[i]; + } + + // Insert checksum into buffer + TransmitBuffer[17 + length] = checksum; + + for (int i = 0; i < 17 + length + 1; i++) + { + xbee.putc(TransmitBuffer[i]); + } + + xbee_led = !xbee_led; + return false; +} + +int receive_buffer(char* buffer, int max_length) +{ + return 0; +} \ No newline at end of file