Code APP3

Dependencies:   mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial

Fork of APP3_Lab by Jean-Philippe Fournier

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]);
     }