This commit adds a new log output model for NCP to use a newly added
spinel stream log property. `OPENTHREAD_CONFIG_LOG_OUTPUT_NCP_SPINEL`
can be used to be select the new log output model.
This commit defines a new spinel property `SPINEL_PROP_STREAM_LOG`
which provides streaming of formatted log string from NCP along with
an optional metadata structure. OpenThread log level and log region
are included as part of the metadata.
This commit also updates the `toranj` configuration header file to
use the new log output model.
Pseudo resets allow for `otPlatReset()` to reset the OpenThread state
without resetting the chip. This is important if the SoC is presenting
itself as a USB device.
The build option `OPENTHREAD_PLATFORM_USE_PSEUDO_RESET` can be used to
force this feature to be enabled or disabled by setting it to `1` or
`0` accordingly. Otherwise it will be set to a platform-specified
default value.
The existing platform.h is really a part of the examples and not a part of
OpenThread core. This commit moves the platform.h out of the public API
and into the examples directory.
* [ncp] Transforming spinel frames between AP and NCP
NCP Spinel Transformer allows to transform spinel frames sent between
Application Processor (AP) and Network Co-Processor (NCP).
Spinel frames can be transformed by using transformer library
(or libraries) implementing spinel_transformer.hpp. Libraries
can be specified using option --with-ncp-spinel-transformer-libs.
Addidionaly, transformer's outbound buffer can be changed if needed,
using option --with-ncp-spinel-transformer-outbound-buffer-size.
Thread (and OpenThread) does not employ any form of transmit power control.
As a result, while OpenThread provides APIs to control transmit power, it
simply buffers and passes the transmit power value straight through to the
radio.
Currently, the transmit power APIs allow specifying an int8_t in units of
dBm. This is overly constraining for platforms that have more advanced ways
of configuring the transmit power.
This commit removes the transmit power configuration from the core. This
provides better flexibility in platform-specific ways to configure transmit
power.
* New Platform Startup
* Flash memory handling improved
* Ramdom generator improved
* Faster platform reboot
* UART based on interrupts intruduced
* ARM core and linker related files moved to "third_party" folder
* Radio Sleep Fixed
* TLS config fixed
* Software FIFO for UART added
* Add support for cc2652
Updated CC26XXware to latest release.
Moved CC26XXware to match the SimpleLink cc26x2 SDK directory structure.
Added CC2652 Platform support
Previously, a global 'map.map' filename was used. However, when
building FTD and MTD versions of a given application, the 'map.map'
files would overwrite each other. This commit gives different filenames
to each .map file for a given binary.
This commit new configuration option `enable-multiple-instances` and
its corresponding option `OPENTHREAD_ENABLE_MULTIPLE_INSTANCES`. When
enabled OpenThread supports handling of multiple instances. By default
this is disabled.
This commit also adds two optimizations for single instance case to
simplify the code and also help reduce memory/RAM usage:
(1) OpenThread objects/classes typically keep a reference to a higher
level object (e.g., many classes keep track of owning `ThreadNetif`)
to be able to access other objects/methods within OpenThread class
hierarchy. In single instance mode, the reference member variables are
removed and instead global functions are used to access the singleton
objects from one class to the other. To implement this, a group of
`<Object>Locator` classes are defined (e.g., `ThreadNetifLocator`,
etc.) which are then used as base class of other OpenThread classes.
(2) OpenThread objects which provide a callback/handler (e.g.,
`Timer`, `Tasklet`, etc.) have `void *mContext` member variable which
is used to keep track of the owner of the object. In single instance
mode the `mConext` member variables are removed since the owner is
expected to be a singleton and can be uniquely determined from the
callback function.
To implement this, two changes are made: First the handler methods are
modified to provide a reference to the object (e.g., `Timer` handler
will provide a `Timer &aTimer` as a parameter of its handler
callback). Second, a new base class `Context` is introduced which
hides the implementation providing an arbitrary context information. A
new static method `GetOwner(aContext)` is added to classes which own a
callback providing objects. This method help convert a `Context` to
the reference of the owner class object.
* Add dhcp6 client define, and update openthred-config include scheme
* #1663 - update include to use quotes instead of angle brackets
* #1663 - update file to use underscore instead of dash
* #1663 - remove extra space
* #1663 - update location of new header file and update files to point to it
* #1663 - update location of new header file and update files to point to it
* #1663 update makefile.am to include new header
* update for make pretty changes
* more pretty fixes
* cleanup, and remove automatic mbedtls change
* remove debugging change
* #1663 - Remove extra space, and change include to use angle brackets instead of quotes.
* rename the enable defines file to openthred_config
* #1663 clean up for code review
* #1663 - clean up last nits
* #1663 - missed merge conflicts - file openthread-config.h -> openthread/openthread_config.h
* Add embARC EMSK BSP in third_party folder.
* Add synopsys in Makefile.am for embARC BSP
* Add platform implementation on ARC EMSK
* Add EMSK in Makefile.am and Makefile-emsk
* Add EMSK support in apps
* Modify configure.ac to add ARC EMSK.
* Unify the location of "#if OPENTHREAD_FTD" which include/exclude the whole file
Also correct some comments in xxx_api.cpp
* Remove Address Resolver related features from MTD build
* Remove some Leader/Router related features from MTD build
* Remove Leader/Router related APIs from MTD build
* Remove Leader/Router related functions from MTD build
This commit includes two changes:
* Removes existing `AC_NO_EXECUTABLES` from `configure.ac`, since it
is a hack only intended to be used by the GCC project.
* Adds a new configure argument: `--enable-no-executables-hack`,
which restores `AC_NO_EXECUTABLES` for broken build environemnts
which require it.
* Removes `--target` from example makefiles, since it is only
appropriate when compiling compilers.
As a side effect of the second change, cross compiling with the
makefiles now no longer causes the `arm-none-eabi-` prefix to be
prepended to all built executables. This change updates all of the
documentation accordingly.
* Initial new API helpers
* Finish up API helper
* Update App to use new API helpers
* More cleanup and added support for preferred router ID
* Clean up state change handlers
* Add logging
* Some more clean up and redesign
* Added small readme for Windows App.