This commit adds new spinel properties related to Thread Operational
Dataset and implements the corresponding get/set handlers for the
new properties in `NcpBase`.
This commit adds support for encoding/decoding `uint64_t`/`int64_t`
to spinel as primitive types. `X` and `x` are used as format ASCII
character associated with `uint64_t` and `int64_t` respectively.
This commit also updates the `SpinelEncoder` and `SpinelDecoder`
to add methods related to 64-bit long integer. The related unit test
are also updated.
This commit adds a new property `SPINEL_PROP_THREAD_ROUTER_TABLE` and
its corresponding get handler to `NcpBase`. The spinel documentation
is also updated. Some of the documentations for the related APIs are
also updated.
The same external route or on-mesh prefix can be registered by
different devices with different flags (e.g., different preference
level). This info is stored in network data as part of the
BorderRouterEntry TLV. This commit changes the methods
`GetNextOnMeshPrefix()` and `GetNextExternalRoute()` to ensure that
different entries corresponding to the same prefix are provided
separately when iterating over all entries (i.e., without giving
a specific RLOC16).
To implement this the `otNetworkDataIterator` is changed to track
both the index into the `mTlvs` buffer and the entry index.
This commit also appends an RLOC16 field to the struct packing
format of `SPINEL_PROP_THREAD_ON_MESH_NETS and `OFF_MESH_ROUTES`
spinel properties and updates the implementation and documentation
accordingly.
This commit adds a new spinel property (along with its prop handlers)
`SPINEL_PROP_IPV6_MULTICAST_ADDRESS_TABLE` to provide the list of
multicast IPv6 addresses.
It also adds `OT_CHANGED_IP6_MULTICAST_SUBSRCRIBED` and
`OT_CHANGED_IP6_MULTICAST_UNSUBSRCRIBED` to flags used in
`NetifCallback` to indicate changes in multicast address list.
This commit defines new spinel properties related to blacklist. It
also adds implementation of get/set/insert/remove handlers for the
new properties. The spinel draft documentation is also updated.
This commit renames the spinel property `THREAD_LOCAL_ROUTES` to
`THREAD_OFF_MESH_ROUTES` and updates the get handler for this property
to include `isLocal` flag which specifies if the route is from local
network data or partition's network data (this change makes the
`OFF_MESH_ROUTES` behavior similar to property `ON_MESH_NETS`). The
spinel draft documentation is also updated.
Introduces a new core property (`PROP_HOST_POWER_STATE`) which is used
by the host to inform the NCP of the power state of the *host*.
The NCP can then use this state to determine which properties need
asynchronous updates. The states are defined in similar terms to
those used for the `PROP_POWER_STATE` property.
* Add otPlatRadioGetReceiveSensitivity() API
* Add a new otPlatRadioGetReceiveSensitivity() API to get sensitivity value;
* Use the receive sensitivity value as the noise floor for link metric computation;
* Remove some unused noise floor related functions.
* Add SPINEL_PROP_PHY_RX_SENSITIVITY Spinel/NCP property
* [Spinel protocol spec] Update the Copyright Notice.
To prepare for submission of draft-rquattle-spinel-unified to IETF as an Internet
Draft, the Status of This Memo and Copyright Notice sections are updated to be in
full conformance with BCP 78, BCP 79 and the IETF Trust's Legal Provisions.
* Update the doc/Makefile.am with new filenames.
* add pskc api
* add pskc cli
* add NCP api of PSKc
* apply PSKc from network
* implement PSKC api for windows
* add name for pskc property
* clear active and pending dataset when settings pskc
* Initial preparation to post I-D.rquattle-spinel-unified to Internet Draft queue.
- Rename draft-spinel-protocol to draft-rquattle-spinel-unified.
- Starting point for I-D.rquattle-spinel-basis, i.e. the non-Thread basis of Spinel.
- Change IID to NLI (issue #1488)
- Move the glossary to {spinel-basis-glossary.md} so it can be included from both drafts.
- Correct a character encoding problem in {spinel-data-packing.md}.
* Add a comment to note the IPR category.
* Add initial commissioning commands support to the NCP
* Make GetPropertyHandler_THREAD_COMMISSIONER_ENABLED send true only if commissioner active, move commissioner state enum to oepnthread/types.h
* Use enum to return commissioner state, make spinel property return true only if Commissioner State Active
* Fix spinel documentation
This commit adds support for the dynamic log level selection. Config
option `OPENTHREAD_CONFIG_ENABLE_DYNAMIC_LOG_LEVEL` can be used to
enable/disable this feature (default setting is disabled).
Note that the `OPENTHREAD_CONFIG_LOG_LEVEL` specifies the log level at
compile/build time. The dynamic log level feature (if enabled) only
allows decreasing log level from the compile time setting.
This commit also adds `SPINEL_PROP_DEBUG_NCP_LOG_LEVEL` as a new
spinel property to control the log level. The set/get handlers for
this property along with its documentation are also added.
This commit modifies some of the log related macros/methods so
to harmonize them all to require an `otInstance` as their first
argument.
The data packing format that I designed for Spinel was a bit too
clever for its own good. While elegant from a certain perspective, the
behavior of the data blob (`D`), array (`A(...)`), and structure
(`T(...)`) types was way too confusing. I thought that I was (as the
guy who came up with it) immune from such confusion, but after taking
the time to go through all the code and address all of the mishaps in
the code it seems that the subtleties befuddled even its creator on a
time or two.
The specific issue that made me realize I needed to prioritize making
this fix was #1393.
As far as packing types go, this commit makes the following changes:
* **New type `DATATYPE_DATA_WLEN` (`d`)**: Just like `DATATYPE_DATA`
except that it ALWAYS prepends the length, irrespective of the
type's location in the type string. Think of WLEN as being "With
LENgth". Unless you are adding a property that has a type which is
just a single data blob, you should use this type instead of
`DATATYPE_DATA` (`D`). `DATATYPE_DATA` is still useful, so it will
be sticking around.
* **Changed type `DATATYPE_STRUCT` (was `T`, now `t`)**: The new
struct type, ALWAYS prepends the length of the contents of the
struct, just like `DATATYPE_DATA_WLEN`. The old `T` style struct
still works and behaves the same way, but its use is now
deprecated.
* **Changed type `DATATYPE_ARRAY` (`A`)**: This type has changed in
documentation only, as no one is currently using it in the way
that it was originally specified. The change is that this type
NEVER prepends the length of the entire array, and using it
alongside other types is now unspecified (it should only be used
alone).
I also added some convenient macros for building up datatype signature
strings that include structs.
One of the goals of these changes was to make this commit a change in
specification only, not to change what was currently on-the-wire.
However, after updating the spec and then going through and updating
all of the code to use the new nomenclature, I was horrified to find
that, due to the confusing nature of the previous datatype signature
string format, many properties that are arrays were not implemented
correctly --- making them impossible to update or add fields to
without breaking backward compatibility. To add insult to injury, some
of these instances were written by me!
This change updates all of the array properties to reflect how they
should have been implemented to begin with.
* 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.
This commit adds `SPINEL_PROP_DEBUG_TEST_ASSERT` as a new read-only
spinel property and also adds its associated get handler.
Getting this property will cause an assert on the NCP. This is
intended as a way for testing the the assert functionality of
underlying platform.
The spinel proocol documents (`md` files) are also updated
accordingly.
* spinel-doc: Add documentation for commands to get and set multiple properties at once.
After some internal discussion, it was decided that having the ability
to get or set multiple properties from a single command would be
valuable. This change describes a mechanism for how I think that
should work.
* Update design image and general design description.
* Update install scripts
* Update Travis build script
* Remove build/install from readme as it is already in wiki
- Added missing thread properties (e.g., leader network data)
- Fixed some of the existing descriptions and/or property names.
- Generate new `.txt` and `.html` versions of `draft-spinel-protocol`
This commit makes the following changes:
- It adds a new OpenThread API named `otNetworkSettingsErase()` to
allow caller to erase all the settings stored on non-volatile
memory.
- It exposes the same functionality through `SPINEL_CMD_NET_CLEAR`
spinel command. It also makes `SPINEL_CMD_NET_CLEAR` implementation
non-optional (not tied to `CAP_NET_SAVE` capability).
Sometimes the host processor doesn't have a good way to generate
high-quality random numbers suitable for cryptographic use. However,
the NCP often has such capability. This Spinel feature allows
the host processor to fetch high-quality random numbers from a
TRNG that may be present on the NCP.
This commit adds support to get history-bitmap value from
jam-detection module. It also adds a corresponding spinel property
and a get handler for the new property in `NcpBase`.
The history bitmap provides information about current state of jamming
detection module for monitoring/debugging purpose. It returns a 64-bit
value where each bit corresponds to one second interval starting with
bit 0 for the most recent interval and bit 63 for the oldest intervals
(63 sec earlier). The bit is set to 1 if the jamming detection module
observed/detected high signal level during the corresponding one second
interval.
Replaces `PROP_GPIO_AVAILABLE` and `PROP_GPIO_DIRECTION` with a new
`PROP_GPIO_CONFIG` property which has support for configuring a larger
set of GPIO features which may be present on the NCP.
These changes were inspired by feedback from Duane Ellis.