Hello,
we have mass-manufacturing of sensors based on CC1310 for almost 3 years now. All of them are battery-operating and running continiously without restart and user interaction for years.
They are based on the Easylink rfWsnNode project with big modifications to both logic of operation and radiopart (we are only transmitting sensor data, w/o waiting for an ACK or any other data from the collector, some kind of simple broadcasting). Both of the cases described below are based on older version of SimpleLink (most likely 2.10 or 2.40)
After some time I have noticed that some sensors stoped sending data. Investigation of these cases is always difficult since devices are installed at customer sites in different countries. I would describe two situations that I saw on my own:
- one device out of several hundreds from the same batch, installed at the same time stoped sending data after approximately a year. I have a feature that allows to restart device without physical interaction with the board, by putting strong magnet close to device for 20 seconds. If magnetometer values exceeds some limit we are performing SysCtrlSystemReset(). And exactly after 20s device restarted and started sending messages again correctly.
- two devices from the other batch with other firmware version stoped sending after several months. Other devices from same batch still working fine. I had physical access to these boards and power consumption on both of them was inside the limits for this firmware version. So main core was operating normally. Power reset returned their operation to normal, radio started to work.
So for me both of these cases look the same way. Main core operating normally but radio core is stuck.
Now I need your suggestions on how to improve stability on long runs of radio transmittions so that device will work for 5+ years without modifications and restarts.
I am planning to upgrade to latest SimpleLink 3.20 since I saw several fixes for the Easylink (such as EZLINKPROP-544 for example). Will it improve the situation?
I am also thinking about calling EasyLink_init() on sending of every message, not only on start in NodeRadioTask.c since it has RF_close(rfHandle) to restart the radio core. Is this a good idea?
What other ideas can you propose to improve stability on long runs? Is my thought of stucked radio core correct and what can actually cause it?
Looking forward for your ideas. Best regards,
Max