This commit updates the documentation of spinel property sections
and also adds a new range 0x080 - 0x08F, 0x1800 - 0x18FF allocated
for MeshCop related properties.
This commit updates the APIs `otDatasetSendMgmtActiveGet` and
`otDatasetSendMgmtPendingGet` to be similar to MgmtSet APIs and use an
`otOperationalDatasetComponents` as input to specify the Dataset
components to be requested. The implementation of APIs in
`DatasetManager` and their use in in CLI is also updated.
It also defines new spinel properties `MGMT_GET_ACTIVE_DATASET` and
`THREAD_MGMT_GET_PENDING_DATASET` (with their set handlers) to add
support for sending `MGMT_GET` meshcop command for Active/Pending
Operational Dataset. It also renames the existing properties used for
sending `MGMT_SET` (include `MGMT_SET` in the property name).
It also adds a new property to allow an optional destination IPv6
address to be specified (for sending `MGMT_GET` command) as part of
spinel dictionary representation of Dataset instance.
This commit appends new fields to format of `PROP_THREAD_PARENT`
spinel property. The new fields provide age, avrerage RSSI and
last RSSI, etc. This commit also updates the spinel documentation.
This commit changes the API names (and spinel properties and
documentation) related to "channel monitor" feature to use "channel
occupancy" instead of the term "channel quality" to represent the
rate/percentage of RSSI samples which are higher than a threshold.
This commit adds a configuration option to enable NCP power state
control `OPENTHREAD_CONFIG_NCP_ENABLE_MCU_POWER_STATE_CONTROL`.
When enabled, the platform is expected to provide two functions:
`otPlatSetMcuPowerState()` and `otPlatGetMcuPowerState()`. Host
can then control the power state using the newly added spinel
property `SPINEL_PROP_MCU_POWER_STATE`.
Previously, ICMPv6 Echo Request handling was either enabled or disabled.
This commit allows enabling/disabling the handler for ICMPv6 Echo Requests
sent to unicast and multicast destinations separately.
This commit also adds an associated spinel property and NCP implementation.
This commit adds `SPINEL_PROP_THREAD_NEIGHBOR_TABLE_ERROR_RATES`
as a new spinel property to get the frame and message error rates
for all neighbors. This property requires the presence of a newly
added Spinel capability `CAP_ERROR_RATE_TRACKING` which indicates
if the error-tracking feature is enabled in OpenThread.
This commits contains the following changes related to channel
monitoring feature:
- It adds OT public APIs for this feature.
- It defines new spinel properties (and their documentation).
- It implements `NcpBase` get handlers for the new properties.
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.
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.
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.
- 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).