Code APP3
Dependencies: mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial
Fork of APP3_Lab by
Revision 24:29ec42daa82e, committed 2017-10-02
- Comitter:
- Cheroukee
- Date:
- Mon Oct 02 17:35:34 2017 +0000
- Parent:
- 23:c3f25b511448
- Child:
- 25:7b808fb9e025
- Commit message:
- Functional receive
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 Mon Oct 02 16:59:26 2017 +0000 +++ b/main.cpp Mon Oct 02 17:35:34 2017 +0000 @@ -71,17 +71,15 @@ bool finished_packet = receive(¤t_frame, BUFFER_SIZE); if (finished_packet) - { - - process_frame(¤t_frame); - //remote_at_command_query('N', 'D', 0x02); + { + process_frame(¤t_frame); } //set_remote_xbee_dio4(toggle_led); toggle_led = !toggle_led; loop_led = !loop_led; - wait_ms(10); + wait_ms(100); } } #else
--- a/xbee.cpp Mon Oct 02 16:59:26 2017 +0000 +++ b/xbee.cpp Mon Oct 02 17:35:34 2017 +0000 @@ -305,18 +305,17 @@ bool receive(frame_t* out_frame, int max_length) { - - //NVIC_DisableIRQ(UART1_IRQn); - /* - static int curr_length = 0; - static frame_recv_state_t recv_state = wait_delimiter; + static int curr_length = 0; + + static frame_recv_state_t recv_state = wait_delimiter; static char checksum = 0xFF; bool finished_frame = false; - while(rx_out != rx_in && !finished_frame) + xbee_receive_led = !xbee_receive_led; + while(xbee.readable() && curr_length < max_length && !finished_frame) { - char current = ReceiveBuffer[rx_out]; + char current = xbee.getc(); switch(recv_state) { case wait_delimiter: @@ -337,15 +336,13 @@ } case read_length_lsb: { - out_frame->length |= current; - //pc.printf("\n\rFrame length = %u", out_frame->length); + out_frame->length |= current; checksum = 0xFF; recv_state = read_frame_specific; break; } case read_frame_specific: - { - //pc.printf(":: read_frame_specific x%x", current); + { out_frame->buffer[curr_length++] = current; checksum -= current; if (curr_length >= out_frame->length) @@ -364,73 +361,6 @@ } break; } - } - rx_out = (rx_out + 1) % BUFFER_SIZE; - } - - NVIC_EnableIRQ(UART1_IRQn); - - return finished_frame; */ - static int curr_length = 0; - - frame_recv_state_t recv_state = wait_delimiter; - frame_t* frame = out_frame; - static char checksum = 0xFF; - - bool finished_frame = false; - - xbee_receive_led = !xbee_receive_led; - while(curr_length < max_length && !finished_frame) - { - char current = xbee.getc(); - switch(recv_state) - { - case wait_delimiter: - { - //pc.printf(":: delimiter x%x", current); - if (current == ZIGBEE_DELIMITER) - { - curr_length = 0; - recv_state = read_length_msb; - frame->length = 0; - } - break; - } - case read_length_msb: - { - frame->length = (current << 8); - recv_state = read_length_lsb; - break; - } - case read_length_lsb: - { - frame->length |= current; - //pc.printf("\n\rFrame length = %u", frame->length); - checksum = 0xFF; - recv_state = read_frame_specific; - break; - } - case read_frame_specific: - { - //pc.printf(":: read_frame_specific x%x", current); - frame->buffer[curr_length++] = current; - checksum -= current; - if (curr_length >= frame->length) - { - recv_state = read_checksum; - } - break; - } - case read_checksum: - { - // pc.printf(":: read_checksum x%x", current); - recv_state = wait_delimiter; - if (checksum == current) - { - finished_frame = true; - } - break; - } } } return finished_frame;