176 Commits

Author SHA1 Message Date
Abtin Keshavarzian 966baf5e6b [net] SRP client implementation (#6038)
This commit adds support for SRP (Service Registration Protocol)
client in OpenThread. The implementation allows a user to provide host
info (host name and a list of host IPv6 addresses) along with a list
of services to be registered with an SRP server. Services and/or host
addresses can be added or removed during operation of client.

Users can get the list of services and host info and their current
state (indicating, for example, if service is registered with server,
being registered or being removed, etc). Users can also provide a
callback to get notified whenever there is change or an error.

When there is a new request (e.g., a new service is added/removed)
that requires an update, the SRP client will wait for a short delay
before preparing and sending an SRP update message to server. This
allows user to provide more changes that are then all sent in the same
update message. The implementation handles retries in case of
different errors and failures. An exponentially increasing retry wait
interval (with configurable min, max, and growth factor) is
implemented.

The implementation also manages the lease renew time for each service
and refreshes (re-registers) services with server before lease is
expired. It supports "opportunistic early refresh" mechanism such that
when sending an SRP update, the services that are not yet expired but
are close, are allowed to refresh early and are included in the SRP
update. This helps place more services on the same lease refresh
schedule reducing number of messages sent to the SRP server. This
behavior (whether to allow early refresh or not, and its related
parameters) can be controlled through a set of OT config definitions.
2021-01-22 13:19:21 -08:00
Jonathan Hui c777db38dc [docs] create Operational Dataset group (#6077) 2021-01-17 09:30:40 -08:00
Jeff Bumgardner 294fa264b6 [devsite] migrate Porting guide to GitHub (#5936) 2020-12-10 23:49:15 -08:00
Abtin Keshavarzian 3da1c540e9 [multi-radio] adding new public OT APIs for multi radio link config (#4440)
This commit adds new public OT definitions and API for radio link
configuration in `openthread/multi_radio.h`. Mainly the function
`otMultiRadioGetNeighborInfo()` is added which allows info about a
neighbor to be retrieved (e.g., which radio links are supported by the
neighbor and their preference value).
2020-12-10 11:46:07 -08:00
Abtin Keshavarzian ffb3fdf9bd [radio-selector] adding multi radio link support (#4440)
This commit adds support for multi radio links in OpenThread core.

A set of `OPENTHREAD_CONFIG_RADIO_LINK_*` definitions (in header
`config/radio_link.h`) determines the supported radio link types.

This commit adds a new class `RadioSelector` which selects the radio
link for each message transmission. Per neighbor it tracks the
supported radio types and a preference value for each type.
`RadioSelector` updates the preference value based on the history of
rx/tx events with the neighbor, e.g., a successful tx on a radio link
increases the preference, whereas a failed tx attempt decreases it.

A new class `Mac::Links` is added defining a layer between `Mac` and
different radio links (e.g., `SubMac` for 802.15.4 radio type).
Broadcast frames are sent in parallel over all radio links. A unicast
transmission is sent over a single radio link at a time but on a tx
failure it may be retransmitted over other radio links.

This commit also adds the concept of deferred ack, allowing radio
links report status of ack at a later time through a different
callback.
2020-12-10 11:46:07 -08:00
Seth Rickard b09e2cfc7b [docs] updates to run CC1352 and CC2652 as rcp with ot-br-posix (#5865) 2020-11-29 20:03:03 -08:00
Seth Rickard 704f183914 [site] fix border router guide typo in network (#5731) 2020-10-28 15:35:30 -07:00
Jeff Bumgardner ad87f636e5 [docs] update Doxygen menu (#5641)
- Remove the Platform BLE module
- Add the Link Metrics module
2020-10-14 07:15:20 -07:00
Jeff Bumgardner 5716ff40d7 [docs] update BBB guide formatting (#5637)
Fixing a few formatting things I should've caught when reviewing the
update to the BBB guide:
- The callouts should only have a single > on the first line
- The ### within a code block was causing issues with my import
  script... easier to just change them to a single #
2020-10-12 17:50:27 -07:00
Seth Rickard 061806620a [docs] update BeagleBone setup guide (#5606)
Added language to show how to replace Connman with Network Manager to
enable the default setup scripts.

Added pointers on setting up a WiLink 8 module for Wi-Fi AP
development.

Removed explanation of downloading and flashing the BeagleBone image
in favor of linking to the public BeagleBone documentation.

Removed explanation of expanding and truncating the filesystem in
favor of using the helper tool from BeagleBone.
2020-10-07 18:11:31 -07:00
Jeff Bumgardner 946141ed32 [docs] add source for BeagleBone Black guide (#5593)
The end formatting on openthread.io will be different (many step lists
removed and some text shifted around).

Also updated the Style Guide to add a Contributor tag section.
2020-09-30 18:41:58 -07:00
Jeff Bumgardner 5ed9081142 [docs] add style guide for documentation contributions (#5567)
Now that we have a process in place where openthread.io can source
documentation from GitHub, we need a documentation style guide to
ensure that the format of docs here on GitHub meet the format
requirements for hosting on openthread.io.
2020-09-24 11:57:36 -07:00
Yaoxing Shan a67fa9b5e7 [docs] add Chinese translation for Thread Primer (#5106) 2020-07-16 08:44:02 -07:00
Yaoxing Shan 9920685b8d [devsite] fix wrong description in Thread Primer (en) (#5163) 2020-07-01 10:43:05 -07:00
Jonathan Hui 284cd96886 [devsite] add clarifications to multicast addressing primer (#5160) 2020-06-30 08:48:08 -07:00
Jeff Bumgardner 79c564fc6e [docs] add English source for the Thread Primer (#5088) 2020-06-15 11:41:55 -07:00
Jeff Bumgardner 90ecb574bb [docs] update Doxygen menu for OTNS and BBR (#4908) 2020-04-29 10:29:02 -07:00
Jonathan Hui 082f7e9fdc [docs] apply prettier changes (#4881) 2020-04-24 16:22:00 -07:00
Jeff Bumgardner 8368d440dd [docs] update list of supporters (#4526) 2020-02-04 09:35:44 -08:00
Jeff Bumgardner f1dc2d882b [docs] move Doxygen group structure to the docs directory (#4476) 2020-02-03 09:17:40 -08:00
Jeff Bumgardner 44596e2299 [docs] add Samsung to supporters and image cleanup (#3940) 2019-06-21 12:25:49 -07:00
Jeff Bumgardner 8a039efcf8 [docs] add SiLabs to list of supporters (#3923) 2019-06-17 13:07:15 -07:00
Abtin Keshavarzian e95789e819 [doc] remove spinel-protocol-src documentation files (#3903)
This commit removes the files under `doc/spinel-protocol-src`
since all the related docs are moved to `spinel.h` or other related
header files.
2019-06-07 12:09:57 -07:00
Kamil Sroka c14cc60962 [windows] remove unsupported platform (#3878) 2019-06-06 11:55:18 -07:00
Jeff Bumgardner fb11d96e61 [docs] update logo for new branding (#3869) 2019-05-24 19:10:26 -07:00
Jonathan Hui 7f0168cbc7 [da15000] remove unsupported platform (#3827) 2019-05-16 21:37:19 -07:00
Ciaran Woodward 0aa39f8d13 [doc] Add Cascoda to contributor list (#3794) 2019-05-02 09:08:27 -07:00
Yakun Xu 617f8958dd [mesh-forwarder] verify data request is ack with fp=1 (#3785) 2019-04-30 18:37:48 -07:00
Jeff Bumgardner d912393c7f [docs] add STMicroelectronics to the list of supporters (#3627) 2019-02-25 16:01:54 -08:00
Jeff Bumgardner 3101ba7f0e [docs] Update README logo soup (#3528) 2019-01-29 08:54:50 -08: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
Jeff Bumgardner e4f5f240eb [docs] update OpenThread logos (#2699) 2018-05-07 20:47:19 -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
Jeff Bumgardner ef5d1afe2c [docs] add Project Zephyr logo to README (#2644) 2018-03-28 23:17:25 +01: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
Jeff Bumgardner 6047a94dce [docs] add Android Things logo, remove old images (#2423) 2017-12-16 00:19:53 +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