Code APP3

Dependencies:   mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial

Fork of APP3_Lab by Jean-Philippe Fournier

Committer:
Cheroukee
Date:
Sun Oct 01 20:01:37 2017 +0000
Revision:
15:c4d17caf0709
Parent:
14:cd488eba8bba
Child:
16:0a5f3c449c95
Working reception + new analusis of packets;

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