This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 96a9b69b2c89aaf7a5747e970d27efac0d8a979b Author: raiden00pl <[email protected]> AuthorDate: Thu Oct 22 16:59:23 2026 +0200 drivers/wireless/ieee802154/mrf24j40: number every beacon the radio sends A beacon queued like a normal frame kept the sequence number the MAC left for the radio, and a beacon start restarted macBSN from zero. Set macBSN in every beacon and start it from a random value at reset, the PIB default. Assisted-by: Claude Code Signed-off-by: raiden00pl <[email protected]> --- drivers/wireless/ieee802154/mrf24j40/mrf24j40.c | 8 ++++++++ drivers/wireless/ieee802154/mrf24j40/mrf24j40_radif.c | 7 +++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/wireless/ieee802154/mrf24j40/mrf24j40.c b/drivers/wireless/ieee802154/mrf24j40/mrf24j40.c index 8c3e28fdf7b..60f7ed58dc3 100644 --- a/drivers/wireless/ieee802154/mrf24j40/mrf24j40.c +++ b/drivers/wireless/ieee802154/mrf24j40/mrf24j40.c @@ -248,6 +248,14 @@ void mrf24j40_norm_setup(FAR struct mrf24j40_radio_s *dev, mrf24j40_setreg(dev->spi, MRF24J40_TXMCR, reg); + /* The radio numbers the beacons (macBSN) */ + + if ((frame->io_data[0] & IEEE802154_FRAMECTRL_FTYPE) == + IEEE802154_FRAME_BEACON) + { + frame->io_data[2] = dev->bsn++; + } + /* Setup the FIFO */ mrf24j40_setup_fifo(dev, frame->io_data, frame->io_len, diff --git a/drivers/wireless/ieee802154/mrf24j40/mrf24j40_radif.c b/drivers/wireless/ieee802154/mrf24j40/mrf24j40_radif.c index 9a7fd3e70e9..81977c47786 100644 --- a/drivers/wireless/ieee802154/mrf24j40/mrf24j40_radif.c +++ b/drivers/wireless/ieee802154/mrf24j40/mrf24j40_radif.c @@ -29,6 +29,7 @@ #include <assert.h> #include <errno.h> #include <nuttx/debug.h> +#include <stdlib.h> #include <stdint.h> #include <stdbool.h> #include <string.h> @@ -597,7 +598,10 @@ int mrf24j40_reset(FAR struct ieee802154_radio_s *radio) } dev->max_frame_waittime = MRF24J40_DEFAULT_MAX_FRAME_WAITTIME; - dev->bsn = 0; + + /* macBSN starts from a random value */ + + dev->bsn = rand(); /* Default device params */ @@ -776,7 +780,6 @@ int mrf24j40_beaconstart(FAR struct ieee802154_radio_s *radio, /* The radio layer is responsible for setting the BSN. */ - dev->bsn = 0; mrf24j40_setreg(dev->spi, MRF24J40_BEACON_FIFO + 4, dev->bsn++); /* Set the TXBMSK (TXBCON1 0x25<7>) bit = 1 to mask the beacon
