Merged in merlin17/nuttx/ieee802154 (pull request #398)

wireless/ieee802154: Fixes issue with wrong information being sent in a rejected association response frame

Approved-by: Gregory Nutt <gnutt@nuttx.org>
This commit is contained in:
Anthony Merlino 2017-06-15 17:22:12 +00:00 committed by Gregory Nutt
commit 22f42d00ce
2 changed files with 21 additions and 3 deletions

View File

@ -200,14 +200,25 @@
enum ieee802154_status_e enum ieee802154_status_e
{ {
/* This first section of enums is defined in the standard. [1] pg. 70
* They must be in this order
*/
IEEE802154_STATUS_SUCCESS = 0, IEEE802154_STATUS_SUCCESS = 0,
IEEE802154_STATUS_OUT_OF_CAPACITY,
IEEE802154_STATUS_DENIED,
/* As of now, all values below do not have a specific value defined in the
* standard
*/
IEEE802154_STATUS_FAILURE, /* This value is not outlined in the standard. It IEEE802154_STATUS_FAILURE, /* This value is not outlined in the standard. It
* is a catch-all for any failures that are not * is a catch-all for any failures that are not
* outlined in the standard * outlined in the standard
*/ */
IEEE802154_STATUS_BEACON_LOSS, IEEE802154_STATUS_BEACON_LOSS,
IEEE802154_STATUS_CHANNEL_ACCESS_FAILURE, IEEE802154_STATUS_CHANNEL_ACCESS_FAILURE,
IEEE802154_STATUS_DENIED,
IEEE802154_STATUS_DISABLE_TRX_FAILURE, IEEE802154_STATUS_DISABLE_TRX_FAILURE,
IEEE802154_STATUS_FAILED_SECURITY_CHECK, IEEE802154_STATUS_FAILED_SECURITY_CHECK,
IEEE802154_STATUS_FRAME_TOO_LONG, IEEE802154_STATUS_FRAME_TOO_LONG,
@ -218,7 +229,6 @@ enum ieee802154_status_e
IEEE802154_STATUS_NO_BEACON, IEEE802154_STATUS_NO_BEACON,
IEEE802154_STATUS_NO_DATA, IEEE802154_STATUS_NO_DATA,
IEEE802154_STATUS_NO_SHORT_ADDRESS, IEEE802154_STATUS_NO_SHORT_ADDRESS,
IEEE802154_STATUS_OUT_OF_CAP,
IEEE802154_STATUS_PAN_ID_CONFLICT, IEEE802154_STATUS_PAN_ID_CONFLICT,
IEEE802154_STATUS_REALIGNMENT, IEEE802154_STATUS_REALIGNMENT,
IEEE802154_STATUS_TRANSACTION_EXPIRED, IEEE802154_STATUS_TRANSACTION_EXPIRED,

View File

@ -374,7 +374,15 @@ int mac802154_resp_associate(MACHANDLE mac,
/* Copy in the assigned short address */ /* Copy in the assigned short address */
memcpy(&iob->io_data[iob->io_len], &resp->assocsaddr, 2); if (resp->status == IEEE802154_STATUS_SUCCESS)
{
memcpy(&iob->io_data[iob->io_len], &resp->assocsaddr, 2);
}
else
{
u16 = (FAR uint16_t *)&iob->io_data[iob->io_len];
*u16 = IEEE802154_SADDR_UNSPEC;
}
iob->io_len += 2; iob->io_len += 2;
/* Copy in the association status */ /* Copy in the association status */