Code APP3
Dependencies: mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial
Fork of APP3_Lab by
Revision 1:ea1b52d0a8a3, committed 2017-09-27
- Comitter:
- Cheroukee
- Date:
- Wed Sep 27 19:58:38 2017 +0000
- Parent:
- 0:f468a460723d
- Child:
- 2:a9bb12eefc08
- Commit message:
- Fixed Router code to send transmit request
Changed in this revision
--- a/main.cpp Tue Sep 26 15:55:56 2017 +0000 +++ b/main.cpp Wed Sep 27 19:58:38 2017 +0000 @@ -1,19 +1,32 @@ #include "mbed.h" - + +#include "xbee.h" + +#define PAN_ID 0xC0FFEE + + Serial pc(USBTX, USBRX); // tx, rx -Serial xbee(p13, p14); // tx, rx -DigitalOut led(p8); int main() { - led = 0; + xbee_init(); + + char c; - wait_ms(400); + char hello_world[12] = "Hello world"; - led = 1; + transmit_request(hello_world, 11); while(1) { - pc.putc(xbee.getc() + 1); - xbee.putc(pc.getc() + 1); + if (pc.readable()) + { + c = pc.getc(); + xbee.putc(c); + //pc.putc(c); + } + if (xbee.readable()) + { + pc.putc(xbee.getc()); + } } }
--- /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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xbee.h Wed Sep 27 19:58:38 2017 +0000 @@ -0,0 +1,37 @@ +/*** +* xbee.h - en-tete de lib xbee - fouj1807 - mcgj2701 +*/ + +#pragma once + +#include "mbed.h" + +extern Serial xbee; + +typedef enum { + TransmitRequest = 0x10, + ATCommand = 0x08 +} frame_type_t; + +typedef struct { + unsigned short length; + frame_type_t frame_type; + char frame_id; + +} frame_t; + +extern char TransmitBuffer[2048]; +extern char ReceiveBuffer[2048]; + +void xbee_init(); + +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); + + +