Code APP3
Dependencies: mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial
Fork of APP3_Lab by
main.cpp
- Committer:
- Cheroukee
- Date:
- 2017-10-02
- Revision:
- 17:8abdbfa6019c
- Parent:
- 16:0a5f3c449c95
- Child:
- 19:75e600a40741
File content as of revision 17:8abdbfa6019c:
#include "mbed.h" #include "rtos.h" #include "xbee.h" #include "parser.h" #include "sensors.h" #define IS_COORDINATOR 1 #define PAN_ID 0xC0FFEE #define BUFFER_SIZE 64 char recv_buff[BUFFER_SIZE] = {0}; DigitalOut loop_led(LED4); void set_remote_xbee_dio4(bool set); void set_pan_id(long pan_id); #if IS_COORDINATOR void coordinator(); #else void routeur(); #endif int main() { xbee_init(); #if IS_COORDINATOR coordinator(); #else routeur(); #endif } void set_remote_xbee_dio4(bool set) { if (set) { remote_at_command_set(AT_COMMAND_DIO4_MSB, AT_COMMAND_DIO4_LSB, AT_COMMAND_DIO_OUT_LOW, 0x02); } else { remote_at_command_set(AT_COMMAND_DIO4_MSB, AT_COMMAND_DIO4_LSB, AT_COMMAND_DIO_OUT_HIGH, 0x02); } } #if IS_COORDINATOR void coordinator() { Serial pc(USBTX, USBRX); // tx, rx coordinator_config_t config = read_coordinator_config(); set_pan_id(config.pan_id); frame_t current_frame; bool toggle_led = false; while(1) { bool finished_packet = receive(¤t_frame, BUFFER_SIZE); if (finished_packet) { pc.printf("data start::: "); for (int i = 0; i < current_frame.length && i < BUFFER_SIZE; i++) { pc.putc(current_frame.buffer[i]); } pc.printf(" :::end\n\r"); //remote_at_command_query('N', 'D', 0x02); } set_remote_xbee_dio4(toggle_led); toggle_led = !toggle_led; loop_led = !loop_led; wait(1); } } #else void routeur() { router_config_t config = read_router_config(); set_pan_id(config.pan_id); char sensor_buffer[64] = {}; initialize_sensors(); DECLARE_ADDR64_COORD DECLARE_ADDR16_UNKNOWN_OR_BCAST while(1) { SENSOR accel = (*p[0])(); sprintf(sensor_buffer, "%3.2f%3.2f%3.2f", accel.Accelerometre.x, accel.Accelerometre.y, accel.Accelerometre.z); transmit_request(sensor_buffer, 15, 0, USE_ADDR64_COORD, USE_ADDR16_UNKNOWN_OR_BCAST); loop_led = !loop_led; wait(config.refresh_freq); } } #endif void set_pan_id(long pan_id) { char pan_id_buffer[8] = {0}; for (int i = 0; i < 8; i++) { pan_id_buffer[i] = 0xFF & (pan_id >> 8 * (7 - i)); } at_command_set('I', 'D', pan_id_buffer, 8); }