Code APP3
Dependencies: mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial
Fork of APP3_Lab by
Revision 11:ecf5776b950a, committed 2017-09-30
- Comitter:
- Cheroukee
- Date:
- Sat Sep 30 21:09:13 2017 +0000
- Parent:
- 10:edcf07f33583
- Child:
- 12:1286b80c68f7
- Commit message:
- Added working receive function
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
xbee.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sat Sep 30 20:29:47 2017 +0000 +++ b/main.cpp Sat Sep 30 21:09:13 2017 +0000 @@ -4,7 +4,7 @@ #include "parser.h" #include "sensors.h" -#define IS_COORDINATOR 0 +#define IS_COORDINATOR 1 #define PAN_ID 0xC0FFEE @@ -22,7 +22,7 @@ char hello_world[12] = "Hello world"; - frame_t* current_frame; + frame_t current_frame; #if IS_COORDINATOR @@ -34,24 +34,18 @@ #endif while(1) { - /*if (pc.readable()) - { - c = pc.getc(); - xbee.putc(c); - //pc.putc(c); - }*/ - - bool finished_packet = receive(current_frame, 2048); + bool finished_packet = receive(¤t_frame, 2048); if (finished_packet) { - pc.printf("DATA RECEIVED : Data count = %u", current_frame->length); - for (int i = 0; i < current_frame->length; i++) + pc.printf("Data count = %u\r\n", current_frame.length); + pc.printf("data start::: "); + for (int i = 0; i < current_frame.length && i < 2048; i++) { - pc.putc(current_frame->buffer[i]); + pc.putc(current_frame.buffer[i]); } - pc.printf("\n\r"); + pc.printf(" :::end\n\r"); } - + //wait_ms(1); } }
--- a/xbee.cpp Sat Sep 30 20:29:47 2017 +0000 +++ b/xbee.cpp Sat Sep 30 21:09:13 2017 +0000 @@ -24,7 +24,7 @@ wait_ms(5000); - xbee_receive_led = 1; + //xbee_receive_led = 1; } @@ -195,41 +195,45 @@ static int curr_length = 0; static frame_recv_state_t recv_state = wait_delimiter; - static frame_t frame; + frame_t* frame = out_frame; static char checksum = 0xFF; bool finished_frame = false; + xbee_receive_led = !xbee_receive_led; while(xbee.readable() && curr_length < max_length && !finished_frame) { + char current = xbee.getc(); switch(recv_state) { case wait_delimiter: { - if (xbee.getc() == ZIGBEE_DELIMITER) + if (current == ZIGBEE_DELIMITER) { + curr_length = 0; recv_state = read_length_msb; + frame->length = 0; } break; } case read_length_msb: { - frame.length = (xbee.getc() << 8); + frame->length = (current << 8); recv_state = read_length_lsb; break; } case read_length_lsb: - { - frame.length |= xbee.getc(); + { + frame->length |= current; checksum = 0xFF; recv_state = read_frame_specific; break; } case read_frame_specific: { - frame.buffer[curr_length] = xbee.getc(); - checksum -= frame.buffer[curr_length++]; - if (curr_length >= frame.length) + frame->buffer[curr_length++] = current; + checksum -= current; + if (curr_length >= frame->length) { recv_state = read_checksum; } @@ -238,10 +242,8 @@ case read_checksum: { recv_state = wait_delimiter; - xbee_receive_led = !xbee_receive_led; - if (checksum == xbee.getc()) + if (checksum == current) { - out_frame = &frame; finished_frame = true; } break;