mirror of
https://github.com/espressif/openthread.git
synced 2026-10-02 22:07:36 +00:00
[low-power] implement enhanced-ack based probing (#5780)
This commit implements Enhanced-ACK Probing (on simulation platform). - Add a new public API otLinkMetricsConfigEnhAckProbing which sends Link Metrics Management Request to configure the probing. This is called on Probing Initiator side. - Add a new radio platform API otPlatRadioConfigureEnhAckProbing. This API should be called on Probing Subject side when handling the requests from Initiators. This API notifies the radio to start/stop aggregating link metrics info and include the data into Vendor IE in enhanced-ACK for the specific neighbor. As discussed in #5746, the code for doing such thing should be put in radio driver. - Add a util module util/link_metrics, which provides a group of APIs to implement Probing Subject side logic for Enh-ACK Probing. Any platform could use this module to implement the feature easily in radio driver. - Add new util APIs in util/mac_frame to generate Enh-ACK Probing IE (Vendor IE with Thread OUI and SubType = 0) and set value for this IE. - Update the implementation in simulation/radio.c to support Probing Subject side logic for Enh-ACK Probing, using APIs in util/link_metrics and util/mac_frame. - Add a test v1_2_LowPower_7_1_01_SingleProbeLinkMetricsWithEnhancedAcks.py for testing. Misc: - Add check for all the public Link Metrics APIs (Initiator side) to ensure that the Subject is a neighbor of the Initiator. If the address is not link-local or the neighbor is not found, an error UNKNOWN_NEIGHBOR would be returned. - Update PrepareEmptyFrame so that when it's called for reference device, its frame version would be set to 2015.
This commit is contained in:
@@ -275,6 +275,7 @@ _LAYER_FIELDS = {
|
||||
'wpan.channel': _auto,
|
||||
'wpan.header_ie.id': _list(_auto),
|
||||
'wpan.header_ie.csl.period': _auto,
|
||||
'wpan.payload_ie.vendor.oui': _auto,
|
||||
|
||||
# MLE
|
||||
'mle.cmd': _auto,
|
||||
@@ -320,13 +321,16 @@ _LAYER_FIELDS = {
|
||||
'mle.tlv.addr16': _auto,
|
||||
'mle.tlv.channel': _auto,
|
||||
'mle.tlv.addr_reg_iid': _list(_auto),
|
||||
'mle.tlv.link_enh_ack_flags': _auto,
|
||||
'mle.tlv.link_forward_series': _list(_auto),
|
||||
'mle.tlv.link_requested_type_id_flags': _list(_hex),
|
||||
'mle.tlv.link_sub_tlv': _auto,
|
||||
'mle.tlv.link_status_sub_tlv': _auto,
|
||||
'mle.tlv.query_id': _auto,
|
||||
'mle.tlv.metric_type_id_flags.type': _list(_hex),
|
||||
'mle.tlv.metric_type_id_flags.metric': _list(_hex),
|
||||
'mle.tlv.metric_type_id_flags.l': _list(_hex),
|
||||
'mle.tlv.link_requested_type_id_flags': _bytes,
|
||||
|
||||
# IP
|
||||
'ip.version': _auto,
|
||||
|
||||
Reference in New Issue
Block a user