Code APP3

Dependencies:   mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial

Fork of APP3_Lab by Jean-Philippe Fournier

Committer:
Cheroukee
Date:
Sun Oct 01 16:34:11 2017 +0000
Revision:
13:5f21dd134bd2
Parent:
12:1286b80c68f7
Child:
14:cd488eba8bba
Added parser files for router/coordinator;

Who changed what in which revision?

UserRevisionLine numberNew 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 13:5f21dd134bd2 7 #define IS_COORDINATOR 0
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 13:5f21dd134bd2 13 char recv_buff[BUFFER_SIZE] = {0};
Cheroukee 13:5f21dd134bd2 14
Cheroukee 13:5f21dd134bd2 15 void set_remote_xbee_dio4(bool set);
Cheroukee 0:f468a460723d 16
Cheroukee 13:5f21dd134bd2 17 #if IS_COORDINATOR
Cheroukee 13:5f21dd134bd2 18 void coordinator();
Cheroukee 13:5f21dd134bd2 19 #else
Cheroukee 13:5f21dd134bd2 20 void routeur();
Cheroukee 13:5f21dd134bd2 21 #endif
Cheroukee 6:9ed8153f1328 22
Cheroukee 0:f468a460723d 23 int main() {
Cheroukee 2:a9bb12eefc08 24
Cheroukee 1:ea1b52d0a8a3 25 xbee_init();
Cheroukee 2:a9bb12eefc08 26
Cheroukee 13:5f21dd134bd2 27 #if IS_COORDINATOR
Cheroukee 13:5f21dd134bd2 28 coordinator();
Cheroukee 13:5f21dd134bd2 29 #else
Cheroukee 13:5f21dd134bd2 30 routeur();
Cheroukee 13:5f21dd134bd2 31 #endif
Cheroukee 13:5f21dd134bd2 32 }
Cheroukee 2:a9bb12eefc08 33
Cheroukee 13:5f21dd134bd2 34 void set_remote_xbee_dio4(bool set)
Cheroukee 13:5f21dd134bd2 35 {
Cheroukee 13:5f21dd134bd2 36 if (set)
Cheroukee 13:5f21dd134bd2 37 {
Cheroukee 13:5f21dd134bd2 38 remote_at_command_set(AT_COMMAND_DIO4_MSB, AT_COMMAND_DIO4_LSB,
Cheroukee 13:5f21dd134bd2 39 AT_COMMAND_DIO_OUT_LOW, 0x02);
Cheroukee 13:5f21dd134bd2 40 }
Cheroukee 13:5f21dd134bd2 41 else
Cheroukee 13:5f21dd134bd2 42 {
Cheroukee 13:5f21dd134bd2 43 remote_at_command_set(AT_COMMAND_DIO4_MSB, AT_COMMAND_DIO4_LSB,
Cheroukee 13:5f21dd134bd2 44 AT_COMMAND_DIO_OUT_HIGH, 0x02);
Cheroukee 13:5f21dd134bd2 45 }
Cheroukee 13:5f21dd134bd2 46 }
Cheroukee 9:3631d3685cfa 47
Cheroukee 2:a9bb12eefc08 48 #if IS_COORDINATOR
Cheroukee 13:5f21dd134bd2 49 void coordinator()
Cheroukee 13:5f21dd134bd2 50 {
Cheroukee 13:5f21dd134bd2 51
Cheroukee 13:5f21dd134bd2 52 Serial pc(USBTX, USBRX); // tx, rx
Cheroukee 13:5f21dd134bd2 53 coordinator_config_t config = read_coordinator_config();
Cheroukee 13:5f21dd134bd2 54
Cheroukee 12:1286b80c68f7 55 frame_t current_frame;
Cheroukee 12:1286b80c68f7 56 bool toggle_led = false;
Cheroukee 12:1286b80c68f7 57
Cheroukee 13:5f21dd134bd2 58 while(1)
Cheroukee 13:5f21dd134bd2 59 {
Cheroukee 12:1286b80c68f7 60 bool finished_packet = receive(&current_frame, BUFFER_SIZE);
Cheroukee 13:5f21dd134bd2 61
Cheroukee 8:5955af1ee445 62 if (finished_packet)
Cheroukee 1:ea1b52d0a8a3 63 {
Cheroukee 11:ecf5776b950a 64 pc.printf("Data count = %u\r\n", current_frame.length);
Cheroukee 11:ecf5776b950a 65 pc.printf("data start::: ");
Cheroukee 12:1286b80c68f7 66 for (int i = 0; i < current_frame.length && i < BUFFER_SIZE; i++)
Cheroukee 6:9ed8153f1328 67 {
Cheroukee 11:ecf5776b950a 68 pc.putc(current_frame.buffer[i]);
Cheroukee 6:9ed8153f1328 69 }
Cheroukee 11:ecf5776b950a 70 pc.printf(" :::end\n\r");
Cheroukee 6:9ed8153f1328 71 }
Cheroukee 12:1286b80c68f7 72
Cheroukee 13:5f21dd134bd2 73 set_remote_xbee_dio4(toggle_led);
Cheroukee 13:5f21dd134bd2 74 toggle_led = !toggle_led;
Cheroukee 13:5f21dd134bd2 75
Cheroukee 13:5f21dd134bd2 76 wait(1);
Cheroukee 13:5f21dd134bd2 77 }
Cheroukee 13:5f21dd134bd2 78 }
Cheroukee 12:1286b80c68f7 79 #else
Cheroukee 13:5f21dd134bd2 80 void routeur()
Cheroukee 13:5f21dd134bd2 81 {
Cheroukee 13:5f21dd134bd2 82 Serial pc(USBTX, USBRX); // tx, rx
Cheroukee 13:5f21dd134bd2 83 router_config_t config = read_router_config();
Cheroukee 13:5f21dd134bd2 84
Cheroukee 13:5f21dd134bd2 85 char sensor_buffer[64] = {};
Cheroukee 13:5f21dd134bd2 86 initialize_sensors();
Cheroukee 13:5f21dd134bd2 87 DECLARE_ADDR64_COORD
Cheroukee 13:5f21dd134bd2 88 DECLARE_ADDR16_UNKNOWN_OR_BCAST
Cheroukee 13:5f21dd134bd2 89
Cheroukee 13:5f21dd134bd2 90 while(1)
Cheroukee 13:5f21dd134bd2 91 {
Cheroukee 12:1286b80c68f7 92 SENSOR accel = (*p[0])();
Cheroukee 12:1286b80c68f7 93
Cheroukee 12:1286b80c68f7 94 sprintf(sensor_buffer, "%3.2f%3.2f%3.2f", accel.Accelerometre.x, accel.Accelerometre.y, accel.Accelerometre.z);
Cheroukee 12:1286b80c68f7 95
Cheroukee 12:1286b80c68f7 96 transmit_request(sensor_buffer, 15, 0, USE_ADDR64_COORD, USE_ADDR16_UNKNOWN_OR_BCAST);
Cheroukee 13:5f21dd134bd2 97 wait(config.refresh_freq);
Cheroukee 0:f468a460723d 98 }
Cheroukee 0:f468a460723d 99 }
Cheroukee 13:5f21dd134bd2 100 #endif