Code APP3
Dependencies: mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial
Fork of APP3_Lab by
main.cpp
- Committer:
- Cheroukee
- Date:
- 2017-10-02
- Revision:
- 19:75e600a40741
- Parent:
- 17:8abdbfa6019c
- Child:
- 21:04fae6a95131
- Child:
- 22:7edae38d0758
File content as of revision 19:75e600a40741:
#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); int process_frame(frame_t* frame); #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() { 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) { process_frame(¤t_frame); //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); } int process_frame(frame_t* frame) { Serial pc(USBTX, USBRX); // tx, rx if (frame->length <= 0) { return -1; } /*for (int i = 0; i < frame->length; i++) { char current = frame->buffer[i]; } */ if (frame->buffer[0] == 0x90) { // Manage source address // Detect the source address and list it dynamically //Data starts at 12 for (int i = 12; i < frame->length; i++) { pc.putc(frame->buffer[i]); } } return 0; }