Code APP3
Dependencies: mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial
Fork of APP3_Lab by
main.cpp@12:1286b80c68f7, 2017-10-01 (annotated)
- Committer:
- Cheroukee
- Date:
- Sun Oct 01 01:34:37 2017 +0000
- Revision:
- 12:1286b80c68f7
- Parent:
- 11:ecf5776b950a
- Child:
- 13:5f21dd134bd2
Added DIO4 blink on broadcast
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Cheroukee | 0:f468a460723d | 1 | #include "mbed.h" |
Cheroukee | 2:a9bb12eefc08 | 2 | |
Cheroukee | 1:ea1b52d0a8a3 | 3 | #include "xbee.h" |
Cheroukee | 5:9e6a09a38785 | 4 | #include "parser.h" |
Cheroukee | 9:3631d3685cfa | 5 | #include "sensors.h" |
Cheroukee | 2:a9bb12eefc08 | 6 | |
Cheroukee | 11:ecf5776b950a | 7 | #define IS_COORDINATOR 1 |
Cheroukee | 2:a9bb12eefc08 | 8 | |
Cheroukee | 1:ea1b52d0a8a3 | 9 | #define PAN_ID 0xC0FFEE |
Cheroukee | 2:a9bb12eefc08 | 10 | |
Cheroukee | 12:1286b80c68f7 | 11 | #define BUFFER_SIZE 2048 |
Cheroukee | 12:1286b80c68f7 | 12 | |
Cheroukee | 0:f468a460723d | 13 | Serial pc(USBTX, USBRX); // tx, rx |
Cheroukee | 0:f468a460723d | 14 | |
Cheroukee | 12:1286b80c68f7 | 15 | char recv_buff[BUFFER_SIZE] = {0}; |
Cheroukee | 6:9ed8153f1328 | 16 | |
Cheroukee | 0:f468a460723d | 17 | int main() { |
Cheroukee | 2:a9bb12eefc08 | 18 | |
Cheroukee | 5:9e6a09a38785 | 19 | ReadFile(); |
Cheroukee | 1:ea1b52d0a8a3 | 20 | xbee_init(); |
Cheroukee | 2:a9bb12eefc08 | 21 | |
Cheroukee | 12:1286b80c68f7 | 22 | char sensor_buffer[64] = {}; |
Cheroukee | 2:a9bb12eefc08 | 23 | |
Cheroukee | 9:3631d3685cfa | 24 | |
Cheroukee | 2:a9bb12eefc08 | 25 | #if IS_COORDINATOR |
Cheroukee | 12:1286b80c68f7 | 26 | frame_t current_frame; |
Cheroukee | 12:1286b80c68f7 | 27 | bool toggle_led = false; |
Cheroukee | 12:1286b80c68f7 | 28 | /*printf("Websocket Example v1.0.0\r\n"); |
Cheroukee | 12:1286b80c68f7 | 29 | EthernetInterface eth; |
Cheroukee | 12:1286b80c68f7 | 30 | eth.init(); //[URL]//Use[/URL] DHCP |
Cheroukee | 12:1286b80c68f7 | 31 | eth.connect(); |
Cheroukee | 12:1286b80c68f7 | 32 | printf("IP Address is %s\n\r", eth.getIPAddress()); |
Cheroukee | 12:1286b80c68f7 | 33 | |
Cheroukee | 12:1286b80c68f7 | 34 | Websocket ws("ws://sockets.mbed.org:443/ws/demo/rw"); |
Cheroukee | 12:1286b80c68f7 | 35 | ws.connect(); |
Cheroukee | 12:1286b80c68f7 | 36 | |
Cheroukee | 12:1286b80c68f7 | 37 | while (1) { |
Cheroukee | 12:1286b80c68f7 | 38 | int res = ws.send("WebSocket Hello World!"); |
Cheroukee | 12:1286b80c68f7 | 39 | wait(0.1); |
Cheroukee | 12:1286b80c68f7 | 40 | }*/ |
Cheroukee | 2:a9bb12eefc08 | 41 | |
Cheroukee | 2:a9bb12eefc08 | 42 | #else |
Cheroukee | 12:1286b80c68f7 | 43 | initialize_sensors(); |
Cheroukee | 2:a9bb12eefc08 | 44 | DECLARE_ADDR64_COORD |
Cheroukee | 2:a9bb12eefc08 | 45 | DECLARE_ADDR16_UNKNOWN_OR_BCAST |
Cheroukee | 2:a9bb12eefc08 | 46 | #endif |
Cheroukee | 12:1286b80c68f7 | 47 | while(1) { |
Cheroukee | 2:a9bb12eefc08 | 48 | |
Cheroukee | 12:1286b80c68f7 | 49 | #if IS_COORDINATOR |
Cheroukee | 12:1286b80c68f7 | 50 | bool finished_packet = receive(¤t_frame, BUFFER_SIZE); |
Cheroukee | 12:1286b80c68f7 | 51 | |
Cheroukee | 8:5955af1ee445 | 52 | if (finished_packet) |
Cheroukee | 1:ea1b52d0a8a3 | 53 | { |
Cheroukee | 11:ecf5776b950a | 54 | pc.printf("Data count = %u\r\n", current_frame.length); |
Cheroukee | 11:ecf5776b950a | 55 | pc.printf("data start::: "); |
Cheroukee | 12:1286b80c68f7 | 56 | for (int i = 0; i < current_frame.length && i < BUFFER_SIZE; i++) |
Cheroukee | 6:9ed8153f1328 | 57 | { |
Cheroukee | 11:ecf5776b950a | 58 | pc.putc(current_frame.buffer[i]); |
Cheroukee | 6:9ed8153f1328 | 59 | } |
Cheroukee | 11:ecf5776b950a | 60 | pc.printf(" :::end\n\r"); |
Cheroukee | 12:1286b80c68f7 | 61 | |
Cheroukee | 12:1286b80c68f7 | 62 | if (toggle_led) |
Cheroukee | 12:1286b80c68f7 | 63 | { |
Cheroukee | 12:1286b80c68f7 | 64 | remote_at_command_set(AT_COMMAND_DIO4_MSB, AT_COMMAND_DIO4_LSB, |
Cheroukee | 12:1286b80c68f7 | 65 | AT_COMMAND_DIO_OUT_LOW, 0x02); |
Cheroukee | 12:1286b80c68f7 | 66 | } |
Cheroukee | 12:1286b80c68f7 | 67 | else |
Cheroukee | 12:1286b80c68f7 | 68 | { |
Cheroukee | 12:1286b80c68f7 | 69 | remote_at_command_set(AT_COMMAND_DIO4_MSB, AT_COMMAND_DIO4_LSB, |
Cheroukee | 12:1286b80c68f7 | 70 | AT_COMMAND_DIO_OUT_HIGH, 0x02); |
Cheroukee | 12:1286b80c68f7 | 71 | } |
Cheroukee | 12:1286b80c68f7 | 72 | toggle_led = !toggle_led; |
Cheroukee | 6:9ed8153f1328 | 73 | } |
Cheroukee | 12:1286b80c68f7 | 74 | |
Cheroukee | 12:1286b80c68f7 | 75 | #else |
Cheroukee | 12:1286b80c68f7 | 76 | SENSOR accel = (*p[0])(); |
Cheroukee | 12:1286b80c68f7 | 77 | |
Cheroukee | 12:1286b80c68f7 | 78 | sprintf(sensor_buffer, "%3.2f%3.2f%3.2f", accel.Accelerometre.x, accel.Accelerometre.y, accel.Accelerometre.z); |
Cheroukee | 12:1286b80c68f7 | 79 | |
Cheroukee | 12:1286b80c68f7 | 80 | transmit_request(sensor_buffer, 15, 0, USE_ADDR64_COORD, USE_ADDR16_UNKNOWN_OR_BCAST); |
Cheroukee | 12:1286b80c68f7 | 81 | wait(2); |
Cheroukee | 12:1286b80c68f7 | 82 | #endif |
Cheroukee | 0:f468a460723d | 83 | } |
Cheroukee | 0:f468a460723d | 84 | } |