OpenThread tries to signal pending tasklets during initialization, which
currently generate an error, as the work queue configured to handle
tasklets is initialized later. This is not a fatal issue, as the
initialization code on the Zephyr side triggers a work item immediately
after the work queue was initialized, but it doesn't look good to have
errors printed on boot.
Therefore, move the work queue initialization before the OpenThread
stack initialization, so that tasklets triggered from OT side can be
signalled properly w/o an error.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
If CONFIG_OPENTHREAD_SYS_INIT is enabled, OpenThread initialisation
should also consider running OpenThread automatically if
CONFIG_OPENTHREAD_MANUAL_START is disabled.
Removed also dependency on the `net_bytes_from_str` functions from
the openthread.h file. Now, in the OpenThread module, there is an
additional `openthread_utils.c/.h` file that can implement useful
utilities for the OpenThread platform. Currently, it implements
the `bytes_from_str` function to use it instead of
`net_bytes_from_str`.
Signed-off-by: Arkadiusz Balys <arkadiusz.balys@nordicsemi.no>
* Add header with public API of OpenThread module.
* Add module include directory to Zephyr include directories.
* Use new header in platform implementation.
Signed-off-by: Adrian Gielniewski <adrian.gielniewski@nordicsemi.no>
The new CONFIG_OPENTHREAD_SYS_INIT Kconfig option allows OpenThread
to be automatically initialised during the Zephyr POST_KERNEL
initialisation stage.
If Zephyr's L2 layer OpenThread implementation is enabled, the
IEEE802.15.4 shim layer initialises OpenThread in the POST_KERNEL
phase. However, since Openthread may work without Zephyr's L2
layer, in this case, no object can initialise it automatically.
This new Kconfig option may help start OpenThread automatically
if the L2 Layer is disabled.
Signed-off-by: Arkadiusz Balys <arkadiusz.balys@nordicsemi.no>
Move OpenThread-related code from
zephyr/subsys/net/l2/openthread/openthread.c to
zephyr/modules/openthread/platform/openthread.c.
The primary goal of this refactor is to enable the use
of OpenThread as an independent module, without the necessity
of Zephyr's networking layer.
This change is particularly beneficial for simple applications
that have their own implementation of the IEEE802.15.4 driver
and do not require a networking layer. These applications can
now disable Zephyr's L2 and IEEE802.15.4 shim layers and
directly use the OpenThread module, saving valuable kilobytes
of memory.
In this approach if the CONFIG_NET_L2_OPENTHREAD
Kconfig option is set, Zephyr's L2 and IEEE802.15.4 layers
will be used, and everything will function as before.
The main difference is the Zephyr's L2 layer now uses
the OpenThread module, no longer implementing it.
While most of the functions in include/net/openthread.h
have been deprecated, they are still available for use to
maintain backwards compatibility.
Signed-off-by: Arkadiusz Balys <arkadiusz.balys@nordicsemi.no>