Code APP3
Dependencies: mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial
Fork of APP3_Lab by
Diff: xbee.cpp
- Revision:
- 12:1286b80c68f7
- Parent:
- 11:ecf5776b950a
- Child:
- 14:cd488eba8bba
--- a/xbee.cpp Sat Sep 30 21:09:13 2017 +0000 +++ b/xbee.cpp Sun Oct 01 01:34:37 2017 +0000 @@ -105,11 +105,11 @@ TransmitBuffer[position] = options; } -void set_transmit_request_data(char* data, int data_length) +void set_transmit_data(int start_pos, char* data, int data_length) { for (int i = 0; i < data_length; i++) { - TransmitBuffer[TRANSMIT_REQ_DATA_START + i] = data[i]; + TransmitBuffer[start_pos + i] = data[i]; } } @@ -127,7 +127,7 @@ set_broadcast_radius(15, 0); set_transmit_request_options(15, 0); - set_transmit_request_data(buffer, data_length); + set_transmit_data(TRANSMIT_REQ_DATA_START, buffer, data_length); build_api_frame_checksum(data_length + TRANSMIT_REQ_OVERHEAD_LENGTH); @@ -150,7 +150,7 @@ set_broadcast_radius(15, 0); set_transmit_request_options(15, 0); - set_transmit_request_data(buffer, data_length); + set_transmit_data(TRANSMIT_REQ_DATA_START, buffer, data_length); build_api_frame_checksum(data_length + TRANSMIT_REQ_OVERHEAD_LENGTH); @@ -172,18 +172,68 @@ set_broadcast_radius(15, 0); set_transmit_request_options(15, 0); - set_transmit_request_data(buffer, data_length); + set_transmit_data(TRANSMIT_REQ_DATA_START, buffer, data_length); build_api_frame_checksum(data_length + TRANSMIT_REQ_OVERHEAD_LENGTH); - transmit(data_length); + transmit(data_length + TRANSMIT_REQ_OVERHEAD_LENGTH); return false; } +void remote_at_command_query(char msb, char lsb, char options) +{ + char remote_command[2] = {msb, lsb}; + + build_api_frame_header(2 + REMOTE_AT_OVERHEAD_LENGTH); + + set_api_frame_type(RemoteCommandRequest); + set_api_frame_id(0x01); + + DECLARE_ADDR16_UNKNOWN_OR_BCAST + DECLARE_ADDR64_BCAST + + set_64_addr(USE_ADDR64_BCAST); + set_16_addr(USE_ADDR16_UNKNOWN_OR_BCAST); + + // Set as apply + set_transmit_request_options(15, options); + + set_transmit_data(16, remote_command, 2); + + build_api_frame_checksum(2 + REMOTE_AT_OVERHEAD_LENGTH); + + transmit(2 + REMOTE_AT_OVERHEAD_LENGTH); +} + +void remote_at_command_set(char msb, char lsb, char parameter, char options) +{ + char remote_command[3] = {msb, lsb, parameter}; + + build_api_frame_header(3 + REMOTE_AT_OVERHEAD_LENGTH); + + set_api_frame_type(RemoteCommandRequest); + set_api_frame_id(0x01); + + DECLARE_ADDR16_UNKNOWN_OR_BCAST + DECLARE_ADDR64_BCAST + + set_64_addr(USE_ADDR64_BCAST); + set_16_addr(USE_ADDR16_UNKNOWN_OR_BCAST); + + // Set as apply + set_transmit_request_options(15, options); + + set_transmit_data(16, remote_command, 3); + + build_api_frame_checksum(3 + REMOTE_AT_OVERHEAD_LENGTH); + + transmit(3 + REMOTE_AT_OVERHEAD_LENGTH); +} + void transmit(int packet_length) { - for (int i = 0; i < 18 + packet_length; i++) + for (int i = 0; i < packet_length + 4; i++) { xbee.putc(TransmitBuffer[i]); }