mirror of
https://github.com/espressif/openthread.git
synced 2026-10-08 08:47:38 +00:00
spinel-cli: Add router timing commands. (#705)
Adds support for routerselectionjitter, routerdowngradethreshold, and masterkey to fixe the slew of ncp-sim failures from recent thread-cert test updates. Also added missing otInstance parameter to the new APIs.. Added otInstance to new APIs.
This commit is contained in:
committed by
Jonathan Hui
parent
383d0783b2
commit
625e4adde4
@@ -88,6 +88,7 @@ import shlex
|
||||
import base64
|
||||
import textwrap
|
||||
import ipaddress
|
||||
import binascii
|
||||
|
||||
import logging
|
||||
import logging.config
|
||||
@@ -281,6 +282,9 @@ SPINEL_PROP_THREAD_CONTEXT_REUSE_DELAY = SPINEL_PROP_THREAD_EXT__BEGIN + 3 #< [L
|
||||
SPINEL_PROP_THREAD_NETWORK_ID_TIMEOUT = SPINEL_PROP_THREAD_EXT__BEGIN + 4 #< [b]
|
||||
SPINEL_PROP_THREAD_ACTIVE_ROUTER_IDS = SPINEL_PROP_THREAD_EXT__BEGIN + 5 #< [A(b)]
|
||||
SPINEL_PROP_THREAD_RLOC16_DEBUG_PASSTHRU = SPINEL_PROP_THREAD_EXT__BEGIN + 6 #< [b]
|
||||
SPINEL_PROP_THREAD_ROUTER_ROLE_ENABLED = SPINEL_PROP_THREAD_EXT__BEGIN + 7 #< [b]
|
||||
SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD = SPINEL_PROP_THREAD_EXT__BEGIN + 8 #< [C]
|
||||
SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER = SPINEL_PROP_THREAD_EXT__BEGIN + 9 #< [C]
|
||||
|
||||
SPINEL_PROP_THREAD_EXT__END = 0x1600,
|
||||
|
||||
@@ -515,6 +519,8 @@ def hexify_bytes(data): return str(map(hexify_chr,data))
|
||||
def hexify_str(s,delim=':'):
|
||||
return delim.join(x.encode('hex') for x in s)
|
||||
|
||||
def pack_bytes(packet): return pack("%dB" % len(packet), *packet)
|
||||
|
||||
def asciify_int(i): return "%c" % (i)
|
||||
|
||||
def hex_to_bytes(s):
|
||||
@@ -932,7 +938,7 @@ class SpinelPropertyHandler(SpinelCodec):
|
||||
prefixes = []
|
||||
slaacPrefixSet = set()
|
||||
while (len(pay) >= 22):
|
||||
(structlen) = unpack('>H', pay[:2])
|
||||
(structlen) = unpack('<H', pay[:2])
|
||||
pay = pay[2:]
|
||||
prefix = Prefix(*unpack('16sBBBB', pay[:20]))
|
||||
if (prefix.flags & kThreadPrefixSlaacFlag):
|
||||
@@ -992,6 +998,12 @@ class SpinelPropertyHandler(SpinelCodec):
|
||||
def THREAD_ROUTER_UPGRADE_THRESHOLD(self, payload):
|
||||
return self.parse_C(payload)
|
||||
|
||||
def THREAD_ROUTER_DOWNGRADE_THRESHOLD(self, payload):
|
||||
return self.parse_C(payload)
|
||||
|
||||
def THREAD_ROUTER_SELECTION_JITTER(self, payload):
|
||||
return self.parse_C(payload)
|
||||
|
||||
def THREAD_CONTEXT_REUSE_DELAY(self, payload):
|
||||
return self.parse_L(payload)
|
||||
|
||||
@@ -1148,6 +1160,8 @@ SPINEL_PROP_DISPATCH = {
|
||||
SPINEL_PROP_THREAD_CHILD_TIMEOUT: wpanPropHandler.THREAD_CHILD_TIMEOUT,
|
||||
SPINEL_PROP_THREAD_RLOC16: wpanPropHandler.THREAD_RLOC16,
|
||||
SPINEL_PROP_THREAD_ROUTER_UPGRADE_THRESHOLD: wpanPropHandler.THREAD_ROUTER_UPGRADE_THRESHOLD,
|
||||
SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD: wpanPropHandler.THREAD_ROUTER_DOWNGRADE_THRESHOLD,
|
||||
SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER: wpanPropHandler.THREAD_ROUTER_SELECTION_JITTER,
|
||||
SPINEL_PROP_THREAD_CONTEXT_REUSE_DELAY: wpanPropHandler.THREAD_CONTEXT_REUSE_DELAY,
|
||||
SPINEL_PROP_THREAD_NETWORK_ID_TIMEOUT: wpanPropHandler.THREAD_NETWORK_ID_TIMEOUT,
|
||||
SPINEL_PROP_THREAD_ACTIVE_ROUTER_IDS: wpanPropHandler.THREAD_ACTIVE_ROUTER_IDS,
|
||||
@@ -1599,7 +1613,9 @@ class SpinelCliCmd(Cmd, SpinelCodec):
|
||||
'rloc16',
|
||||
'route',
|
||||
'router',
|
||||
'routerselectionjitter',
|
||||
'routerupgradethreshold',
|
||||
'routerdowngradethreshold',
|
||||
'scan',
|
||||
'state',
|
||||
'thread',
|
||||
@@ -1669,15 +1685,20 @@ class SpinelCliCmd(Cmd, SpinelCodec):
|
||||
def prop_get_or_set_value(self, prop_id, line, format='B'):
|
||||
""" Helper to get or set a property value based on line arguments. """
|
||||
if line:
|
||||
value = self.prop_set_value(prop_id, self.prep_line(line), format)
|
||||
arg = self.prep_line(line, format)
|
||||
if format=='D': format = str(len(arg))+'s'
|
||||
value = self.prop_set_value(prop_id, arg, format)
|
||||
else:
|
||||
value = self.prop_get_value(prop_id)
|
||||
return value
|
||||
|
||||
def prep_line(self, line):
|
||||
def prep_line(self, line, format='B'):
|
||||
""" Convert a line argument to proper type """
|
||||
if line != None:
|
||||
line = int(line)
|
||||
if format == 'D':
|
||||
line = hex_to_bytes(line)
|
||||
else:
|
||||
line = int(line)
|
||||
return line
|
||||
|
||||
def prop_get(self, prop_id, format='B'):
|
||||
@@ -1697,7 +1718,8 @@ class SpinelCliCmd(Cmd, SpinelCodec):
|
||||
|
||||
def prop_set(self, prop_id, line, format='B'):
|
||||
""" Helper to set a propery and output Done or Error. """
|
||||
arg = self.prep_line(line)
|
||||
arg = self.prep_line(line, format)
|
||||
if format=='D': format = str(len(arg))+'s'
|
||||
value = self.prop_set_value(prop_id, arg, format)
|
||||
|
||||
if (value == None):
|
||||
@@ -2257,7 +2279,7 @@ class SpinelCliCmd(Cmd, SpinelCodec):
|
||||
> masterkey 00112233445566778899aabbccddeeff
|
||||
Done
|
||||
"""
|
||||
pass
|
||||
self.handle_property(line, SPINEL_PROP_NET_MASTER_KEY, 'D')
|
||||
|
||||
def do_mode(self, line):
|
||||
"""
|
||||
@@ -2639,6 +2661,26 @@ class SpinelCliCmd(Cmd, SpinelCodec):
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
def do_routerselectionjitter(self, line):
|
||||
"""
|
||||
routerselectionjitter
|
||||
|
||||
Get the ROUTER_SELECTION_JITTER value.
|
||||
|
||||
> routerselectionjitter
|
||||
120
|
||||
Done
|
||||
|
||||
routerselectionjitter <threshold>
|
||||
|
||||
Set the ROUTER_SELECTION_JITTER value.
|
||||
|
||||
> routerselectionjitter 120
|
||||
Done
|
||||
"""
|
||||
self.handle_property(line, SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER)
|
||||
|
||||
def do_routerupgradethreshold(self, line):
|
||||
"""
|
||||
routerupgradethreshold
|
||||
@@ -2658,6 +2700,25 @@ class SpinelCliCmd(Cmd, SpinelCodec):
|
||||
"""
|
||||
self.handle_property(line, SPINEL_PROP_THREAD_ROUTER_UPGRADE_THRESHOLD)
|
||||
|
||||
def do_routerdowngradethreshold(self, line):
|
||||
"""
|
||||
routerdowngradethreshold
|
||||
|
||||
Get the ROUTER_DOWNGRADE_THRESHOLD value.
|
||||
|
||||
> routerdowngradethreshold
|
||||
16
|
||||
Done
|
||||
|
||||
routerdowngradethreshold <threshold>
|
||||
|
||||
Set the ROUTER_DOWNGRADE_THRESHOLD value.
|
||||
|
||||
> routerdowngradethreshold 16
|
||||
Done
|
||||
"""
|
||||
self.handle_property(line, SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD)
|
||||
|
||||
def do_scan(self, line):
|
||||
"""
|
||||
scan [channel]
|
||||
|
||||
Reference in New Issue
Block a user