Radio API: set short address, extended address, and panid must not fail. (#774)

This commit is contained in:
Jonathan Hui
2016-10-08 18:49:23 -07:00
committed by GitHub
parent 656c919c71
commit 3ebef251eb
5 changed files with 29 additions and 85 deletions
+9 -33
View File
@@ -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)
+7 -33
View File
@@ -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)
+3 -8
View File
@@ -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);
/**
* @}
+7 -5
View File
@@ -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
+3 -6
View File
@@ -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)