[tester] IEEE 802.15.4 SubMAC on top of IEEE 802.15.4 Radio HAL#14787
[tester] IEEE 802.15.4 SubMAC on top of IEEE 802.15.4 Radio HAL#14787jia200x wants to merge 31 commits intoRIOT-OS:masterfrom
Conversation
2e83920 to
2359756
Compare
|
Here is an example of Same example with retransmissions: Both motes are next to me in my office. But I consistently get ~40% packet losses when I disable retransmissions (this is what we have in current master using these radios). Note the nrf52840 doesn't support Auto ACK (it's provided by the driver implementation) nor CSMA-CA/Retransmissions. The cc2538 supports Auto ACK and CSMA-CA, but no retransmissions. The SubMAC is handling the retransmission procedure for both radios and CSMA-CA for the nrf52840 |
2359756 to
8246844
Compare
|
note: ACK request is disabled by default here. To enable it, use the |
ec6e7f4 to
82e0d5a
Compare
... and also send on send error (i.e. when *medium* was busy)
82e0d5a to
3631972
Compare
|
the SubMAC got merged. We can close this PoC now! |
Contribution description
This draft provides a very rough implementation of #13376. In a nutshell, this module provides a uniform layer to send and receive IEEE 802.15.4 MAC frames with retransmissions and CSMA-CA. The SubMAC emulates in software hardware features (CSMA-CA, Retransmissions, etc) missing on a given radio.
Besides that, I added a a
netdev_ieee802154_submacas a transition layer. With this,defaultandgnrc_networkingare indirectly working on top on the Radio HAL (#13943 ).I hope this server as a proof for the Radio HAL API :)
I had to include the work by @miri64 from #11263. Since the radios are asynchronous now, there are some lost fragments when the radio returns
-EBUSYduring the TX process.Testing procedure
Check
tests/ieee802154_submacfor the "raw SubMAC API" calls. This example supports sending and receiving data with retransmissions and CSMA-CA.A more interesting test is running
defaultorgnrc_networkingwithnetdev_ieee802154_submac. With that, all radios from #14655 (CC2538, nrf802154, at86rf2xx) are working with full CSMA-CA/retransmissions support!! :)Try adding some noise and pinging between nodes.
Issues/PRs references
#13943
#13376
#14655 (base)
#11263