1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-17 04:52:59 +01:00

pkg/openwsn: update doc

This commit is contained in:
Francisco Molina 2021-11-03 19:11:04 +01:00
parent 49cecdbc44
commit 89da5f0add

View File

@ -12,8 +12,9 @@
full network stack (UDP, IPv6 (6LoWPAN), RPL, 6TiSCH) into RIOT.
It can be used instead of GNRC on supported 802.15.4 radios, and compared to
GNRC, provides a full 6TiSCH implementation. It does not yet support RIOT's
sock API, so applications will have to be written against OpenWSN's API.
GNRC, provides a full 6TiSCH implementation. It supports RIOT's
@ref net_sock API, so it can be used as a drop-in replacement for application
built on top of @ref net_sock.
This port provides a new RIOT "board" to the OpenWSN software. In this way
RIOT's hardware abstraction connects to OpenWSN's interfaces.
@ -102,30 +103,46 @@
### radio
The radio adaptation runs in its own thread with the highest priority
(`THREAD_PRIORITY_MAIN - 4`) and maps to RIOT's @ref netdev API.
The radio adaptation maps to RIOT's @ref netdev API or on
@ref drivers_ieee802154_hal API. The later is preferred but not yet
supported by all boards.
Hardware MAC layer features such as CSMA/CA, ACK handling and retransmissions
are handled by OpenWSN, so the radio driver must support disabling AUTOACK
and CSMA handling by the hardware. Frame filtering must as well be disabled.
The radio adaptation preloads the buffer so `NETOPT_PRELOADING` must be
supported.
OpenWSN needs to be notified when a frame reception/transmission starts and
when it ends. Therefore radio drivers need to support the following netdev
events:
- `NETDEV_EVENT_RX_STARTED`
- `NETDEV_EVENT_TX_STARTED`
- `NETDEV_EVENT_RX_COMPLETE`
- `NETDEV_EVENT_TX_COMPLETE`
when it ends. Without these synchronization can still work but in a deteriorated
way.
OpenWSN expects to recover crc information on every received frame even if it
will simply drop frames with invalid crc. The stack can function correctly if
radio drivers automatically drop frames with an invalid crc (i.e. the stack
doesn't get notified about these frames).
#### ieee802154_hal
The radio drivers should support the following caps:
- `IEEE802154_CAP_IRQ_RX_START`
- `IEEE802154_CAP_IRQ_TX_START`
For CRC error handling:
- `IEEE802154_CAP_IRQ_CRC_ERROR`
#### netdev
The radio adaptation preloads the buffer so `NETOPT_PRELOADING` must be
supported.
The radio drivers should support the following netdev events:
- `NETDEV_EVENT_RX_STARTED`
- `NETDEV_EVENT_TX_STARTED`
- `NETDEV_EVENT_RX_COMPLETE`
- `NETDEV_EVENT_TX_COMPLETE`
### uart
In RIOT, the first configured uart device is mapped to STDIO in most cases.
@ -214,7 +231,8 @@
## Tested Platforms and Pin configurations
So far, this has been successfully tested on `iotlab-m3`,`nucleo-f103` and
`samr21-xpro`, all based on at86rf23x radios.
`samr21-xpro`, all based on at86rf23x radios. These radios make use of
the `radio_netdev` adaptation.
### Synchronization
@ -412,9 +430,6 @@ critical sections. This can cause bytes sent over stdio to be missed.
## Todos
- `sctimer` to trigger an ISR immediately using software interrupts.
- `RTT_FREQUENCY` is not configurable for most platforms, implementations
should be adapted to make this configurable to be able to set `RTT_FREQUENCY`
to 32768Hz or the closer possible value.
- The UART wrapper uses ztimer to fake an interrupt after one byte
has been sent. This should also be done with software interrupts.
@ -422,10 +437,4 @@ critical sections. This can cause bytes sent over stdio to be missed.
It would be desirable to achieve an extraction of the MAC layer.
Immediate future steps:
- Follow up PR to add OpenWSN sock
- Complete support of OpenWSN default HW (`openmote-b`)
- Add support for other 802.15.4 network drivers
*/