DigiMesh Receive Data example for mbed XBeeLib By Digi

Dependencies:   XBeeLib mbed

Fork of XBeeZB_Receive_Data by Digi International Inc.

Description

This example shows how to receive data from a remote XBeeDM module.
A remote XBee module sends a packet to our local XBee module though the air. The local XBee module receives the packet and sends it to the mbed module through the serial port. This library decodes the packet and calls a user defined method to process the packet.

See Receiving Data from other module chapter for more information.

Common Setup

Make sure you have a valid Example Common Setup

Example Setup

This example does not require any additional setup.

Running the example

Build and deploy the example to the mbed module.
Reset the mbed module so the example starts. You should see the example debug information through the debug interface configured in the 'Local Setup' chapter.

While the example is running, go to the "Console" tab of the X-CTU connected to the remote XBee module. Press the "Add API frame to the list" and paste following bytes that create a new broadcast transmit request packet:

7E 00 19 10 01 00 00 00 00 00 00 FF FF FF FE 00 00 48 65 6C 6C 6F 20 58 42 65 65 21 5A

Select the frame and press the "Send selected frame" button to send the frame ("Hello XBee!") to the XBee network.

Verify that the local XBee module has received the frame by accessing the debug interface console terminal. If it was successful, the "Hello XBee!" message will be displayed there.

Revision:
2:994e979d9df8
Parent:
0:0d348bfc487e
--- a/main.cpp	Tue May 05 18:30:05 2015 +0200
+++ b/main.cpp	Fri May 08 11:52:54 2015 +0200
@@ -24,14 +24,9 @@
 /** Callback function, invoked at packet reception */
 static void receive_cb(const RemoteXBeeZB& remote, bool broadcast, const uint8_t *const data, uint16_t len)
 {
-    Addr64 remote64;
-    uint16_t remote16;
+    const uint64_t remote_addr64 = remote.get_addr64();
 
-    remote.get_addr(&remote64);
-    remote.get_addr(&remote16);
-
-    log_serial->printf("\r\nGot a %s RX packet [%08x:%08x:|%04x], len %d\r\nData: ", broadcast ? "BROADCAST" : "UNICAST",
-        remote64.get_high32(), remote64.get_low32(), remote16, len);
+    log_serial->printf("\r\nGot a %s RX packet [%08x:%08x|%04x], len %d\r\nData: ", broadcast ? "BROADCAST" : "UNICAST", UINT64_HI32(remote_addr64), UINT64_LO32(remote_addr64), remote.get_addr16(), len);
 
     for (int i = 0; i < len; i++)
         log_serial->printf("%02x ", data[i]);