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