ieee802154: Support dynamic FCS length. Adds IEEE802154_ATTR_PHY_FCSLEN.
This change introduces IEEE802154_ATTR_PHY_FCSLEN which the radio layer can support to set/get the FCS length that's added to the end of the frame. One use case, in promiscuous mode, is to add back in the FCS of the received frame by increasing the iob->io_len by the FCS length.
Approved-by: Gregory Nutt <gnutt@nuttx.org>
wireless/ieee8021254: Adds support for energy detect.
Adds support for energy detect by introducing a new radio call/callback, as the PHY layer is required to perform the energy detect.
Approved-by: Gregory Nutt <gnutt@nuttx.org>
Fixed coding standard error in several files. Use of while( is incorrect; a space is required between while and (. Also ran tools/nxstyle and fix thoses complaints as well in most files.
Changes to comply with coding standard. Mostly focused on files with missing space after keyword in if(, switch(, and for(. Offending files also got changes to comply with tools nxstyle. If there were logs of nxstyle complaints, the file also got a taste of tools/indent.sh. Still need to fix occurrences of while( with missing space. There are a lot of them.
This commit backs out most of commit b4747286b1. That change was added because sem_wait() would sometimes cause cancellation points inappropriated. But with these recent changes, nxsem_wait() is used instead and it is not a cancellation point.
In the OS, all calls to sem_wait() changed to nxsem_wait(). nxsem_wait() does not return errors via errno so each place where nxsem_wait() is now called must not examine the errno variable.
In all OS functions (not libraries), change sem_wait() to nxsem_wait(). This will prevent the OS from creating bogus cancellation points and from modifying the per-task errno variable.
sched/semaphore: Add the function nxsem_wait(). This is a new internal OS interface. It is functionally equivalent to sem_wait() except that (1) it is not a cancellation point, and (2) it does not set the per-thread errno value on return.
sched/semaphore: Add nxsem_post() which is identical to sem_post() except that it never modifies the errno variable. Changed all references to sem_post in the OS to nxsem_post().
sched/semaphore: Add nxsem_destroy() which is identical to sem_destroy() except that it never modifies the errno variable. Changed all references to sem_destroy() in the OS to nxsem_destroy().
libc/semaphore and sched/semaphore: Add nxsem_getprotocol() and nxsem_setprotocola which are identical to sem_getprotocol() and set_setprotocol() except that they never modifies the errno variable. Changed all references to sem_setprotocol in the OS to nxsem_setprotocol(). sem_getprotocol() was not used in the OS
Merged in merlin17/nuttx/mac802154-sock (pull request #479)
wireless/ieee802154: Adds support for receiving MAC events via IOCTL through socket interface. Other small fixes and cleanup
* ioctl: Cleans up MAC802154IOC values
* wireless/ieee802154: Cleans up MAC802154IOC_NOTIFY_REGISTER logic in character driver
* wireless/ieee802154/mac802154_netdev: Adds support for MAC event notification via IOCTL
* wireless/ieee802154/mac802154: Changes reset logic. No longer reset extended address.
* wireless/ieee802154: Cleans up MAC802154IOC logic
Moves MAC802154IOC from ieee802154_ioctl.h and renames ieee802154_ioctl.h to ieee802154_device.h since it only contains types relevant to the MAC char device now.
* wireless/ieee802154/mac802154_device: Cleans up IOCTL logic for recent changes.
* drivers/wireless/ieee802154/mrf24j40: Adds missing break in case statement
* wireless/ieee802154/mac802154_netdev: Starts adding support for passing MAC events via IOCTL
* wireless/ieee802154/mac802154: Fixes issue with receiver enable logic
* wireless/ieee802154/mac802154: Fixes issue where extended address is cleared and not rewritten after radio reset
* configs/clicker2-stm32/mrf24j40-mac: Enables RAMLOG and wireless driver logging
* wireless/ieee802154/mac802154: Fixes poll logic meant to automatically choose address mode based on short address range.
Approved-by: Gregory Nutt <gnutt@nuttx.org>