openthread / wpantund

Wireless Network Interface Daemon for Low-Power Wireless SoCs
Apache License 2.0
174 stars 110 forks source link

Add support for Discerner for Joiner/Commissioner #472

Closed abtink closed 4 years ago

abtink commented 4 years ago

This commit adds support for Joiner Discerner in wpantund and wpanctl. The Joiner Discerner enables new a mechanism for Thread commissioning. The traditional Thread commissioning process uses factory assigned EUI-64 of the device to derive the Joiner ID and identify/filter a joiner (through steering data bloom filter). The Joiner Discerner (which is an unsigned value along with a user-specified bit length up to 64 bits) allows users to have more control and do not rely on factory-assigned EUI-64.

For support of Discerner for Joiner operation in wpantund two methods are provided: Support for two new wpan properties Joiner:Discerner:Value and Joiner:Discerner:BitLength are added. To set the Joiner Discerner on device, the bit-length must be set first followed by setting the value. Setting the bit-length to zero will clear any previously set Joiner Discerner on the NCP (i.e., device would go back to default behavior using the factory-assigned EUI-64). Alternatively, the discerner value can be specified as the value-map parameters (with same keys as wpan property names) passed along through a "Joiner Start" DBus API call.

For commissioner, the NCP Control Interface related APIs and the corresponding DBus APIs are updated to allow either an EUI-64 or a Joiner Discerner (or accepting any Joiner) to be provided. wpanctl commissioner command is also updated to allow the same.


Related PR in openthread: https://github.com/openthread/openthread/pull/5137