Commit Graph

69 Commits

Author SHA1 Message Date
Yakun Xu 617f8958dd [mesh-forwarder] verify data request is ack with fp=1 (#3785) 2019-04-30 18:37:48 -07:00
Yakun Xu e0c802569e [meshcop] correct UDP_PROXY in script and doc (#3420) 2018-12-29 12:45:41 -08:00
Abtin Keshavarzian 8e28b626a9 [spinel] add a section for MeshCop properties and update documentation (#2885)
This commit updates the documentation of spinel property sections
and also adds a new range 0x080 - 0x08F, 0x1800 - 0x18FF allocated
for MeshCop related properties.
2018-07-20 13:50:09 -05:00
Abtin Keshavarzian 758e647d91 [dataset] update dataset SendMgmtGet APIs and add support in spinel/NCP (#2866)
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.
2018-07-19 16:33:49 -05:00
Abtin Keshavarzian f065438111 [ncp] add UDP_PROXY_STREAM to dispatcher list and update documents (#2879) 2018-07-11 20:16:56 -05:00
Abtin Keshavarzian 52354e73c7 [ncp] add new fields (age, rssi, etc) to PARENT spinel property (#2854)
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.
2018-07-04 15:40:40 -05:00
Abtin Keshavarzian 13a40c8bcf [ncp] adding new spinel property to get EID address cache table (#2788)
This commit adds a new spinel property `THREAD_ADDRESS_CACHE_TABLE`
to get the Thread EID IPv6 Address cache table.
2018-06-15 10:25:36 -07:00
Abtin Keshavarzian df45240665 [channel-monitor] use "channel occupancy" instead of "quality"
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.
2018-04-16 14:07:19 -07:00
Abtin Keshavarzian ecd28458ec [ncp] add support for controlling power state of NCP MCU (#2635)
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`.
2018-04-05 10:20:47 -07:00
Jonathan Hui f602dcd5e7 [icmp6] allow config of echo handling for unicast/multicast separately (#2609)
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.
2018-03-13 18:10:28 +00:00
Abtin Keshavarzian 10f6c4f0cd [ncp] add support to get the frame/message error rate of neighbors (#2525)
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.
2018-02-02 18:29:52 +00:00
Abtin Keshavarzian 171c951eaf [ncp] add new spinel property SPINEL_PROP_MAC_CCA_FAILURE_RATE (#2500)
This commit adds new spinel property corresponding to the MAC CCA
failure rate, and its get handler in `NcpBase`.
2018-01-23 17:10:13 +00:00
Abtin Keshavarzian ba5317a957 [ncp] channel monitoring properties and public OT API (#2462)
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.
2018-01-13 21:37:04 +00:00
Abtin Keshavarzian fb5faeb6f8 [ncp] adding CHILD_TABLE_ADDRESSES spinel property and its get handler (#2434)
This property provides the list of all addresses associated with
every child including any registered IPv6 addresses.
2017-12-21 18:31:29 +00:00
Abtin Keshavarzian 07f4ae1ff3 [ncp] update JAM_DETECT_HISTORY_BITMAP to spinel uint64_t (#2404)
This commit changes the `JAM_DETECT_HISTORY_BITMAP` format to use
spinel primitive type of `uint64_t` instead of two `uint32_t`.
2017-12-07 18:22:24 +00:00
Abtin Keshavarzian ed2112a19a [ncp] new spinel property to trigger/test watchdog (#2374) 2017-11-29 20:57:58 +00:00
Jonathan Hui 741941e271 [radio] remove transmit power config from core (#2352)
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.
2017-11-28 17:33:32 +00:00
Abtin Keshavarzian 134071d814 [spinel] update docs - property formats (#2349)
This commit updates the docs in spinel header file to provide
info about format (struct fields) of some properties.
2017-11-17 10:11:03 +00:00
Abtin Keshavarzian 4e060e4dd3 [ncp] add Thread Dataset related spinel properties and their get/set handlers in NCP (#2327)
This commit adds new spinel properties related to Thread Operational
Dataset and implements the corresponding get/set handlers for the
new properties in `NcpBase`.
2017-11-16 13:43:13 +00:00
Jonathan Hui 74b3160f9d [meshcop] use IEEE EUI-64 rather than Joiner ID on user input (#2311) 2017-11-07 09:41:46 -08:00
Abtin Keshavarzian 1e6658b3ad [spinel] add support for 64-bit long signed/unsigned integer (#2309)
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.
2017-11-01 21:46:09 -07:00
Abtin Keshavarzian 07647ababc [ncp] add support for new Spinel property THREAD_ROUTER_TABLE (#2303)
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.
2017-10-31 10:57:23 -07:00
Abtin Keshavarzian 1e61811e70 [network-data] iterate over all external routes or on-mesh prefix entries (#2073)
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.
2017-08-09 21:48:57 -07:00
Abtin Keshavarzian 5ba896266c [ncp] Support for multicast address table (#2001)
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.
2017-07-17 20:58:56 -07:00
Abtin Keshavarzian 10b72cfa5d [ncp] Add new spinel property MAC_DATA_POLL_PERIOD and its get/set handlers (#1952)
The spinel-protocol draft is also updated.
2017-07-05 14:53:14 -07:00
james woodyatt d05b8157cc [spinel] recognize previous change to specification provided by Yakun Xu (#1911)
* Recognize previous change to specification provided by Yakun Xu.

* Regenerate compiled html and txt files.
2017-06-23 05:55:28 -07:00
Abtin Keshavarzian 566930f7a8 NcpBase: Update getter for OFF_MESH_ROUTES to include NextHopIsThisDevcie field (#1886)
The spinel header file and spinel documentation are also updated
accordingly.
2017-06-09 11:01:38 -07:00
Buke Po 32eb42a157 rename border agent proxy to tmp proxy (#1883) 2017-06-07 08:55:36 -07:00
Abtin Keshavarzian 2debb19046 NcpBase: Add support for Blacklist (#1871)
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.
2017-06-05 12:32:27 -07:00
Robert Quattlebaum c88707aca8 spinel: Add support for filtering unsolicited property updates. (#1805) 2017-05-26 08:34:32 -07:00
Abtin Keshavarzian 047b1980df Ncp: Update the get handler for list of off-mesh routes (from network data) (#1812)
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.
2017-05-25 14:42:19 -07:00
Robert Quattlebaum 64544d0cee Spinel Changes (#1777)
* spinel: Updates in preparation for IETF submission.

* spinel: Use revision number instead of hash

* spinel: James is the editor
2017-05-22 12:07:01 -07:00
Robert Quattlebaum 08e52e55a5 spinel: Introduce PROP_HOST_POWER_STATE (#1722)
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.
2017-05-12 10:02:53 -07:00
Abtin Keshavarzian c28e2ff070 Spinel: Define properties for discover scan operation (#1703)
This commit define new spinel properties related to Thread's
discover scan operation. It also updates the spinel draft
documentation.
2017-05-08 14:45:10 -07:00
Shu Chen 66f6e7088d Add otPlatRadioGetReceiveSensitivity() API (#1715)
* 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
2017-05-04 20:38:37 -07:00
james woodyatt c6e597556e [Spinel protocol spec] Update the Copyright Notice. (#1690)
* [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.
2017-05-02 12:19:46 -07:00
Robert Quattlebaum 8bf14cfbbd Spinel: Thread Border Agent Support (#1545)
This commit updates the Spinel protocol to support a host-based
border-agent.
2017-04-27 19:52:04 -07:00
Buke Po 024c44de5c Add PSKc API (#1635)
* 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
2017-04-27 16:32:34 -07:00
Buke Po 7705bf4c22 Border agent proxy (#1590)
* initial commit for border agent proxy
2017-04-27 10:13:00 -07:00
james woodyatt 988648f3cb Initial preparation to post I-D.rquattle-spinel-unified to Internet D… (#1596)
* 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.
2017-04-26 15:21:10 -07:00
pszkotak 2fa7a13c1b Add initial commissioning commands support to the NCP (#1393)
* 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
2017-03-29 11:37:21 -07:00
Abtin Keshavarzian 0ad2cc0b5b Enable dynamic log level selection (#1492)
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.
2017-03-21 16:24:58 -07:00
Martin Turon db0e2057ef spinel-cli: Fixes for spinel documentation bugs. (#1478)
* spinel-cli: Fixes for spinel documentation bugs.

* spinel doc: fix PROP_STREAM_DEBUG = 'D'
2017-03-21 13:04:05 -07:00
Robert Quattlebaum b98e3c70eb spinel: Clarify data packing notation and fix implementation. (#1433)
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.
2017-03-10 11:48:31 -08:00
Nick Banks 95ff7b55dc Spinel: Radio Source Match Support (#1371)
* Add Spinel Source Match Properties

* Wrap Source Match NCP code with OPENTHREAD_ENABLE_RAW_LINK_API

* Update spinel docs

* Handle SendPropertyUpdate errors
2017-02-28 21:52:41 -08:00
Abtin Keshavarzian 860a395975 NCP/Spinel Add new spinel property to test assert (#1389)
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.
2017-02-27 17:38:15 -08:00
Robert Quattlebaum 32c72441d7 spinel-doc: Add documentation for commands to get and set multiple properties at once. (#1331)
* 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.
2017-02-23 11:43:56 -08:00
Abtin Keshavarzian 44c54b3a3e NcpBase: Add get handler for NET_SAVED spinel property (#1297) 2017-02-09 19:43:09 -08:00
Abtin Keshavarzian b4051781ea Update spinel protocol documentation (#1194)
- 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`
2017-01-23 16:03:52 -08:00
Abtin Keshavarzian 8173b134ac Add OpenThread API to erase network settings (#1123)
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).
2017-01-10 10:05:26 -08:00