From 3ebef251ebb9f55a000932d1caef3cc39a347fd4 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Sat, 8 Oct 2016 18:49:23 -0700 Subject: [PATCH] Radio API: set short address, extended address, and panid must not fail. (#774) --- examples/platforms/cc2538/radio.c | 42 +++++++------------------------ examples/platforms/posix/radio.c | 40 ++++++----------------------- include/platform/radio.h | 11 +++----- src/core/mac/mac.cpp | 12 +++++---- tests/unit/test_platform.cpp | 9 +++---- 5 files changed, 29 insertions(+), 85 deletions(-) diff --git a/examples/platforms/cc2538/radio.c b/examples/platforms/cc2538/radio.c index e60e5aa62..70b814620 100644 --- a/examples/platforms/cc2538/radio.c +++ b/examples/platforms/cc2538/radio.c @@ -123,54 +123,30 @@ void otPlatRadioGetIeeeEui64(otInstance *aInstance, uint8_t *aIeeeEui64) } } -ThreadError otPlatRadioSetPanId(otInstance *aInstance, uint16_t panid) +void otPlatRadioSetPanId(otInstance *aInstance, uint16_t panid) { - ThreadError error = kThreadError_Busy; (void)aInstance; - if (sState != kStateTransmit) - { - HWREG(RFCORE_FFSM_PAN_ID0) = panid & 0xFF; - HWREG(RFCORE_FFSM_PAN_ID1) = panid >> 8; - error = kThreadError_None; - } - - return error; + HWREG(RFCORE_FFSM_PAN_ID0) = panid & 0xFF; + HWREG(RFCORE_FFSM_PAN_ID1) = panid >> 8; } -ThreadError otPlatRadioSetExtendedAddress(otInstance *aInstance, uint8_t *address) +void otPlatRadioSetExtendedAddress(otInstance *aInstance, uint8_t *address) { - ThreadError error = kThreadError_Busy; (void)aInstance; - if (sState != kStateTransmit) + for (int i = 0; i < 8; i++) { - int i; - - for (i = 0; i < 8; i++) - { - ((volatile uint32_t *)RFCORE_FFSM_EXT_ADDR0)[i] = address[i]; - } - - error = kThreadError_None; + ((volatile uint32_t *)RFCORE_FFSM_EXT_ADDR0)[i] = address[i]; } - - return error; } -ThreadError otPlatRadioSetShortAddress(otInstance *aInstance, uint16_t address) +void otPlatRadioSetShortAddress(otInstance *aInstance, uint16_t address) { - ThreadError error = kThreadError_Busy; (void)aInstance; - if (sState != kStateTransmit) - { - HWREG(RFCORE_FFSM_SHORT_ADDR0) = address & 0xFF; - HWREG(RFCORE_FFSM_SHORT_ADDR1) = address >> 8; - error = kThreadError_None; - } - - return error; + HWREG(RFCORE_FFSM_SHORT_ADDR0) = address & 0xFF; + HWREG(RFCORE_FFSM_SHORT_ADDR1) = address >> 8; } void cc2538RadioInit(void) diff --git a/examples/platforms/posix/radio.c b/examples/platforms/posix/radio.c index a96eacad4..60ab2f3fe 100644 --- a/examples/platforms/posix/radio.c +++ b/examples/platforms/posix/radio.c @@ -300,52 +300,26 @@ void otPlatRadioGetIeeeEui64(otInstance *aInstance, uint8_t *aIeeeEui64) aIeeeEui64[7] = NODE_ID & 0xff; } -ThreadError otPlatRadioSetPanId(otInstance *aInstance, uint16_t panid) +void otPlatRadioSetPanId(otInstance *aInstance, uint16_t panid) { - ThreadError error = kThreadError_Busy; (void)aInstance; - - if (sState != kStateTransmit) - { - sPanid = panid; - error = kThreadError_None; - } - - return error; + sPanid = panid; } -ThreadError otPlatRadioSetExtendedAddress(otInstance *aInstance, uint8_t *address) +void otPlatRadioSetExtendedAddress(otInstance *aInstance, uint8_t *address) { - ThreadError error = kThreadError_Busy; (void)aInstance; - if (sState != kStateTransmit) + for (size_t i = 0; i < sizeof(sExtendedAddress); i++) { - size_t i; - - for (i = 0; i < sizeof(sExtendedAddress); i++) - { - sExtendedAddress[i] = address[sizeof(sExtendedAddress) - 1 - i]; - } - - error = kThreadError_None; + sExtendedAddress[i] = address[sizeof(sExtendedAddress) - 1 - i]; } - - return error; } -ThreadError otPlatRadioSetShortAddress(otInstance *aInstance, uint16_t address) +void otPlatRadioSetShortAddress(otInstance *aInstance, uint16_t address) { - ThreadError error = kThreadError_Busy; (void)aInstance; - - if (sState != kStateTransmit) - { - sShortAddress = address; - error = kThreadError_None; - } - - return error; + sShortAddress = address; } void otPlatRadioSetPromiscuous(otInstance *aInstance, bool aEnable) diff --git a/include/platform/radio.h b/include/platform/radio.h index e11bdc9a6..e79cd0200 100644 --- a/include/platform/radio.h +++ b/include/platform/radio.h @@ -162,31 +162,26 @@ void otPlatRadioGetIeeeEui64(otInstance *aInstance, uint8_t *aIeeeEui64); * @param[in] aInstance The OpenThread instance structure. * @param[in] aPanId The IEEE 802.15.4 PAN ID. * - * @retval ::kThreadError_None If the PAN ID was set properly. */ -ThreadError otPlatRadioSetPanId(otInstance *aInstance, uint16_t aPanId); +void otPlatRadioSetPanId(otInstance *aInstance, uint16_t aPanId); /** * Set the Extended Address for address filtering. * - * * @param[in] aInstance The OpenThread instance structure. * @param[in] aExtendedAddress A pointer to the IEEE 802.15.4 Extended Address. * - * @retval ::kThreadError_None If the Extended Address was set properly. */ -ThreadError otPlatRadioSetExtendedAddress(otInstance *aInstance, uint8_t *aExtendedAddress); +void otPlatRadioSetExtendedAddress(otInstance *aInstance, uint8_t *aExtendedAddress); /** * Set the Short Address for address filtering. * - * * @param[in] aInstance The OpenThread instance structure. * @param[in] aShortAddress The IEEE 802.15.4 Short Address. * - * @retval ::kThreadError_None If the Short Address was set properly. */ -ThreadError otPlatRadioSetShortAddress(otInstance *aInstance, uint16_t aShortAddress); +void otPlatRadioSetShortAddress(otInstance *aInstance, uint16_t aShortAddress); /** * @} diff --git a/src/core/mac/mac.cpp b/src/core/mac/mac.cpp index a9b2be6d2..938a3984c 100644 --- a/src/core/mac/mac.cpp +++ b/src/core/mac/mac.cpp @@ -351,8 +351,8 @@ const ExtAddress *Mac::GetExtAddress(void) const ThreadError Mac::SetExtAddress(const ExtAddress &aExtAddress) { - ThreadError error; - uint8_t buf[8]; + ThreadError error = kThreadError_None; + uint8_t buf[sizeof(aExtAddress)]; VerifyOrExit(!aExtAddress.IsGroup(), error = kThreadError_InvalidArgs); @@ -361,7 +361,7 @@ ThreadError Mac::SetExtAddress(const ExtAddress &aExtAddress) buf[i] = aExtAddress.m8[7 - i]; } - SuccessOrExit(error = otPlatRadioSetExtendedAddress(mNetif.GetInstance(), buf)); + otPlatRadioSetExtendedAddress(mNetif.GetInstance(), buf); mExtAddress = aExtAddress; exit: @@ -390,7 +390,8 @@ ShortAddress Mac::GetShortAddress(void) const ThreadError Mac::SetShortAddress(ShortAddress aShortAddress) { mShortAddress = aShortAddress; - return otPlatRadioSetShortAddress(mNetif.GetInstance(), aShortAddress); + otPlatRadioSetShortAddress(mNetif.GetInstance(), aShortAddress); + return kThreadError_None; } uint8_t Mac::GetChannel(void) const @@ -446,7 +447,8 @@ PanId Mac::GetPanId(void) const ThreadError Mac::SetPanId(PanId aPanId) { mPanId = aPanId; - return otPlatRadioSetPanId(mNetif.GetInstance(), mPanId); + otPlatRadioSetPanId(mNetif.GetInstance(), mPanId); + return kThreadError_None; } const uint8_t *Mac::GetExtendedPanId(void) const diff --git a/tests/unit/test_platform.cpp b/tests/unit/test_platform.cpp index 622812909..38359bc75 100644 --- a/tests/unit/test_platform.cpp +++ b/tests/unit/test_platform.cpp @@ -96,19 +96,16 @@ extern "C" { { } - ThreadError otPlatRadioSetPanId(otInstance *, uint16_t) + void otPlatRadioSetPanId(otInstance *, uint16_t) { - return kThreadError_None; } - ThreadError otPlatRadioSetExtendedAddress(otInstance *, uint8_t *) + void otPlatRadioSetExtendedAddress(otInstance *, uint8_t *) { - return kThreadError_None; } - ThreadError otPlatRadioSetShortAddress(otInstance *, uint16_t) + void otPlatRadioSetShortAddress(otInstance *, uint16_t) { - return kThreadError_None; } void otPlatRadioSetPromiscuous(otInstance *, bool)