-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[tester] IEEE 802.15.4 SubMAC on top of IEEE 802.15.4 Radio HAL #14787
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_submac
as a transition layer. With this,default
andgnrc_networking
are 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
-EBUSY
during the TX process.Testing procedure
Check
tests/ieee802154_submac
for the "raw SubMAC API" calls. This example supports sending and receiving data with retransmissions and CSMA-CA.A more interesting test is running
default
orgnrc_networking
withnetdev_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