I've been beating my head bloody trying to get some S2C XBees to talk. Listening was easy.
I am using the Andrew Wrapp xbee library and am basically just trying to get the Series 2 RX example to see data transmitted by the Series 2 TX example.
In XCTU everything is fine: I connect to my coordinator enabled module which is plugged into a USB Xbee explorer board. API mode is selected.
BTW: Router/nodes are API enabled with Join Network verification also enabled.
All the S2C modules I have are running the latest firmware (Zigbee TH Reg, 4060) and are on the same PAN and with default values for all the other parameters except for their Node IDs.
XCTU can scan the radio network and see my router/node modules which are hooked up to mega2560 boards running the Series 2 RX example (with a few embellishments like Serial3 for the xbee, and debugging on Serial).
I can create a frame in XCTU, address it to the desired module, send it, and it is received by the remote node module as expected. I can even enter 0 for SH, and FFFF for the SL address and the frame gets transmitted in broadcast mode to all my little test receivers as expected.
So far so good right? (so close but yet so far)
So now I plug one my remote router/node mac addressess into the XBee Series 2 TX example code and give that a run on another mega board. The xbee.readPacket() call fails and it seems like the Xbee module never responds.
After countless permutations with no success, I decided to try using the broadcast address (SH=0,SL=FFFF)
Surprise! The test payload gets sent to all my mega boards with router/node modules (via the Series 2 RX example code).
I verified that this broadcast address version of the sample code worked when the xbee module was a coordinator or a router/node (with coordinator module also present on the network).
So now I've checked and rechecked the SH and SL of my addr64 value, I've tried using the alternate XBeeAddress64 constructors, I've called getMsb and getLsb to verify the values, but still I can't get a direct addressed frame transmitted via arduino code.
Quick summary:
XBeeAddress64 addr64 = XBeeAddress64(0x00000000, 0x0000FFFF); // this works!
XBeeAddress64 addr64 = XBeeAddress64(0x0013a200, 0x4176e982); //this doesn't work
Suggestions, hints, and advice appreciated.