I have developed an application using Arduino code to connect remote IO devices over a serial protocol. The first Arduino IO device is allocated as the controller and it's possible to connect other Arduino IO devices as routers.
The Arduino is a 328P MCU and has IO device control of relay outputs and optical inputs. The Xbee is Series 2 ZB series working in API mode 2.
We are using a serial protocol that can be forwarded to other IO devices over the XBee to extend the number of IO that we can control.
The issue is that after sometime the routers appear to go-offline (after many hours).
When they get into this state - the XBee is able to send data via serial to the Arduino - but it appears to ignore all data sent via serial from the Arduino to the XBee.
It is very similar to this issue
Digis XBee Series 2 Firmware freezes/crashes when sending too much serial data
When it gets into this state - I am able to reset the Arduino but it has no impact on the communications with the XBee. The only way to recover the XBee is a hardware reset of the XBee. I believe this pretty much rules out an issue with the Arduino code.
I am communicating with the XBee without any flow control, and I am using the softwareSerial library. I have no ability to add flow control, or even hardware serial communications - the hardware I have is pretty much fixed. I am communicating with serial at 57600 bps.
I would be fairly confidant that I am overflowing the buffer in the xbee on occasions - but would never have expected that it could cause the XBee to freeze like this.
This is a very critical - hopefully there is a way this can be resolved?