mirror of
https://github.com/espressif/openthread.git
synced 2026-10-16 12:47:38 +00:00
Radio API: set short address, extended address, and panid must not fail. (#774)
This commit is contained in:
@@ -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;
|
(void)aInstance;
|
||||||
|
|
||||||
if (sState != kStateTransmit)
|
HWREG(RFCORE_FFSM_PAN_ID0) = panid & 0xFF;
|
||||||
{
|
HWREG(RFCORE_FFSM_PAN_ID1) = panid >> 8;
|
||||||
HWREG(RFCORE_FFSM_PAN_ID0) = panid & 0xFF;
|
|
||||||
HWREG(RFCORE_FFSM_PAN_ID1) = panid >> 8;
|
|
||||||
error = kThreadError_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
return error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadError otPlatRadioSetExtendedAddress(otInstance *aInstance, uint8_t *address)
|
void otPlatRadioSetExtendedAddress(otInstance *aInstance, uint8_t *address)
|
||||||
{
|
{
|
||||||
ThreadError error = kThreadError_Busy;
|
|
||||||
(void)aInstance;
|
(void)aInstance;
|
||||||
|
|
||||||
if (sState != kStateTransmit)
|
for (int i = 0; i < 8; i++)
|
||||||
{
|
{
|
||||||
int i;
|
((volatile uint32_t *)RFCORE_FFSM_EXT_ADDR0)[i] = address[i];
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
{
|
|
||||||
((volatile uint32_t *)RFCORE_FFSM_EXT_ADDR0)[i] = address[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
error = kThreadError_None;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadError otPlatRadioSetShortAddress(otInstance *aInstance, uint16_t address)
|
void otPlatRadioSetShortAddress(otInstance *aInstance, uint16_t address)
|
||||||
{
|
{
|
||||||
ThreadError error = kThreadError_Busy;
|
|
||||||
(void)aInstance;
|
(void)aInstance;
|
||||||
|
|
||||||
if (sState != kStateTransmit)
|
HWREG(RFCORE_FFSM_SHORT_ADDR0) = address & 0xFF;
|
||||||
{
|
HWREG(RFCORE_FFSM_SHORT_ADDR1) = address >> 8;
|
||||||
HWREG(RFCORE_FFSM_SHORT_ADDR0) = address & 0xFF;
|
|
||||||
HWREG(RFCORE_FFSM_SHORT_ADDR1) = address >> 8;
|
|
||||||
error = kThreadError_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
return error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cc2538RadioInit(void)
|
void cc2538RadioInit(void)
|
||||||
|
|||||||
@@ -300,52 +300,26 @@ void otPlatRadioGetIeeeEui64(otInstance *aInstance, uint8_t *aIeeeEui64)
|
|||||||
aIeeeEui64[7] = NODE_ID & 0xff;
|
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;
|
(void)aInstance;
|
||||||
|
sPanid = panid;
|
||||||
if (sState != kStateTransmit)
|
|
||||||
{
|
|
||||||
sPanid = panid;
|
|
||||||
error = kThreadError_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
return error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadError otPlatRadioSetExtendedAddress(otInstance *aInstance, uint8_t *address)
|
void otPlatRadioSetExtendedAddress(otInstance *aInstance, uint8_t *address)
|
||||||
{
|
{
|
||||||
ThreadError error = kThreadError_Busy;
|
|
||||||
(void)aInstance;
|
(void)aInstance;
|
||||||
|
|
||||||
if (sState != kStateTransmit)
|
for (size_t i = 0; i < sizeof(sExtendedAddress); i++)
|
||||||
{
|
{
|
||||||
size_t i;
|
sExtendedAddress[i] = address[sizeof(sExtendedAddress) - 1 - i];
|
||||||
|
|
||||||
for (i = 0; i < sizeof(sExtendedAddress); i++)
|
|
||||||
{
|
|
||||||
sExtendedAddress[i] = address[sizeof(sExtendedAddress) - 1 - i];
|
|
||||||
}
|
|
||||||
|
|
||||||
error = kThreadError_None;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadError otPlatRadioSetShortAddress(otInstance *aInstance, uint16_t address)
|
void otPlatRadioSetShortAddress(otInstance *aInstance, uint16_t address)
|
||||||
{
|
{
|
||||||
ThreadError error = kThreadError_Busy;
|
|
||||||
(void)aInstance;
|
(void)aInstance;
|
||||||
|
sShortAddress = address;
|
||||||
if (sState != kStateTransmit)
|
|
||||||
{
|
|
||||||
sShortAddress = address;
|
|
||||||
error = kThreadError_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
return error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void otPlatRadioSetPromiscuous(otInstance *aInstance, bool aEnable)
|
void otPlatRadioSetPromiscuous(otInstance *aInstance, bool aEnable)
|
||||||
|
|||||||
@@ -162,31 +162,26 @@ void otPlatRadioGetIeeeEui64(otInstance *aInstance, uint8_t *aIeeeEui64);
|
|||||||
* @param[in] aInstance The OpenThread instance structure.
|
* @param[in] aInstance The OpenThread instance structure.
|
||||||
* @param[in] aPanId The IEEE 802.15.4 PAN ID.
|
* @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.
|
* Set the Extended Address for address filtering.
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* @param[in] aInstance The OpenThread instance structure.
|
* @param[in] aInstance The OpenThread instance structure.
|
||||||
* @param[in] aExtendedAddress A pointer to the IEEE 802.15.4 Extended Address.
|
* @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.
|
* Set the Short Address for address filtering.
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* @param[in] aInstance The OpenThread instance structure.
|
* @param[in] aInstance The OpenThread instance structure.
|
||||||
* @param[in] aShortAddress The IEEE 802.15.4 Short Address.
|
* @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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|||||||
@@ -351,8 +351,8 @@ const ExtAddress *Mac::GetExtAddress(void) const
|
|||||||
|
|
||||||
ThreadError Mac::SetExtAddress(const ExtAddress &aExtAddress)
|
ThreadError Mac::SetExtAddress(const ExtAddress &aExtAddress)
|
||||||
{
|
{
|
||||||
ThreadError error;
|
ThreadError error = kThreadError_None;
|
||||||
uint8_t buf[8];
|
uint8_t buf[sizeof(aExtAddress)];
|
||||||
|
|
||||||
VerifyOrExit(!aExtAddress.IsGroup(), error = kThreadError_InvalidArgs);
|
VerifyOrExit(!aExtAddress.IsGroup(), error = kThreadError_InvalidArgs);
|
||||||
|
|
||||||
@@ -361,7 +361,7 @@ ThreadError Mac::SetExtAddress(const ExtAddress &aExtAddress)
|
|||||||
buf[i] = aExtAddress.m8[7 - i];
|
buf[i] = aExtAddress.m8[7 - i];
|
||||||
}
|
}
|
||||||
|
|
||||||
SuccessOrExit(error = otPlatRadioSetExtendedAddress(mNetif.GetInstance(), buf));
|
otPlatRadioSetExtendedAddress(mNetif.GetInstance(), buf);
|
||||||
mExtAddress = aExtAddress;
|
mExtAddress = aExtAddress;
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
@@ -390,7 +390,8 @@ ShortAddress Mac::GetShortAddress(void) const
|
|||||||
ThreadError Mac::SetShortAddress(ShortAddress aShortAddress)
|
ThreadError Mac::SetShortAddress(ShortAddress aShortAddress)
|
||||||
{
|
{
|
||||||
mShortAddress = aShortAddress;
|
mShortAddress = aShortAddress;
|
||||||
return otPlatRadioSetShortAddress(mNetif.GetInstance(), aShortAddress);
|
otPlatRadioSetShortAddress(mNetif.GetInstance(), aShortAddress);
|
||||||
|
return kThreadError_None;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t Mac::GetChannel(void) const
|
uint8_t Mac::GetChannel(void) const
|
||||||
@@ -446,7 +447,8 @@ PanId Mac::GetPanId(void) const
|
|||||||
ThreadError Mac::SetPanId(PanId aPanId)
|
ThreadError Mac::SetPanId(PanId aPanId)
|
||||||
{
|
{
|
||||||
mPanId = aPanId;
|
mPanId = aPanId;
|
||||||
return otPlatRadioSetPanId(mNetif.GetInstance(), mPanId);
|
otPlatRadioSetPanId(mNetif.GetInstance(), mPanId);
|
||||||
|
return kThreadError_None;
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint8_t *Mac::GetExtendedPanId(void) const
|
const uint8_t *Mac::GetExtendedPanId(void) const
|
||||||
|
|||||||
@@ -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)
|
void otPlatRadioSetPromiscuous(otInstance *, bool)
|
||||||
|
|||||||
Reference in New Issue
Block a user