mirror of
https://github.com/espressif/openthread.git
synced 2026-09-01 23:09:53 +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
@@ -66,5 +66,3 @@ matrix:
|
||||
- env: BUILD_TARGET="posix-ncp" VERBOSE=1
|
||||
compiler: gcc
|
||||
os: linux
|
||||
allow_failures:
|
||||
- env: BUILD_TARGET="posix-ncp" VERBOSE=1
|
||||
|
||||
@@ -172,3 +172,14 @@ Default value is `false`.
|
||||
Allow the HOST to indicate whether or not the router role is enabled.
|
||||
If current role is a router, setting this property to `false` starts
|
||||
a re-attach process as an end-device.
|
||||
|
||||
### PROP 5384: PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD
|
||||
* Type: Read-Write
|
||||
* Packed-Encoding: `C`
|
||||
|
||||
### PROP 5385: PROP_THREAD_ROUTER_SELECTION_JITTER
|
||||
* Type: Read-Write
|
||||
* Packed-Encoding: `C`
|
||||
|
||||
Specifies the self imposed random delay in seconds a REED waits before
|
||||
registering to become an Active Router.
|
||||
@@ -1543,7 +1543,7 @@ void otPlatformReset(otInstance *aInstance);
|
||||
*
|
||||
* @sa otSetRouterDowngradeThreshold
|
||||
*/
|
||||
uint8_t otGetRouterDowngradeThreshold(void);
|
||||
uint8_t otGetRouterDowngradeThreshold(otInstance *aInstance);
|
||||
|
||||
/**
|
||||
* Set the ROUTER_DOWNGRADE_THRESHOLD parameter used in the Leader role.
|
||||
@@ -1552,7 +1552,7 @@ uint8_t otGetRouterDowngradeThreshold(void);
|
||||
*
|
||||
* @sa otGetRouterDowngradeThreshold
|
||||
*/
|
||||
void otSetRouterDowngradeThreshold(uint8_t aThreshold);
|
||||
void otSetRouterDowngradeThreshold(otInstance *aInstance, uint8_t aThreshold);
|
||||
|
||||
/**
|
||||
* Get the ROUTER_SELECTION_JITTER parameter used in the REED/Router role.
|
||||
@@ -1561,7 +1561,7 @@ void otSetRouterDowngradeThreshold(uint8_t aThreshold);
|
||||
*
|
||||
* @sa otSetRouterSelectionJitter
|
||||
*/
|
||||
uint8_t otGetRouterSelectionJitter(void);
|
||||
uint8_t otGetRouterSelectionJitter(otInstance *aInstance);
|
||||
|
||||
/**
|
||||
* Set the ROUTER_SELECTION_JITTER parameter used in the REED/Router role.
|
||||
@@ -1570,7 +1570,7 @@ uint8_t otGetRouterSelectionJitter(void);
|
||||
*
|
||||
* @sa otGetRouterSelectionJitter
|
||||
*/
|
||||
void otSetRouterSelectionJitter(uint8_t aRouterJitter);
|
||||
void otSetRouterSelectionJitter(otInstance *aInstance, uint8_t aRouterJitter);
|
||||
|
||||
/**
|
||||
* @}
|
||||
|
||||
+4
-4
@@ -1743,12 +1743,12 @@ void Interpreter::ProcessRouterDowngradeThreshold(int argc, char *argv[])
|
||||
|
||||
if (argc == 0)
|
||||
{
|
||||
sServer->OutputFormat("%d\r\n", otGetRouterDowngradeThreshold());
|
||||
sServer->OutputFormat("%d\r\n", otGetRouterDowngradeThreshold(mInstance));
|
||||
}
|
||||
else
|
||||
{
|
||||
SuccessOrExit(error = ParseLong(argv[0], value));
|
||||
otSetRouterDowngradeThreshold(static_cast<uint8_t>(value));
|
||||
otSetRouterDowngradeThreshold(mInstance, static_cast<uint8_t>(value));
|
||||
}
|
||||
|
||||
exit:
|
||||
@@ -1794,12 +1794,12 @@ void Interpreter::ProcessRouterSelectionJitter(int argc, char *argv[])
|
||||
|
||||
if (argc == 0)
|
||||
{
|
||||
sServer->OutputFormat("%d\r\n", otGetRouterSelectionJitter());
|
||||
sServer->OutputFormat("%d\r\n", otGetRouterSelectionJitter(mInstance));
|
||||
}
|
||||
else
|
||||
{
|
||||
SuccessOrExit(error = ParseLong(argv[0], value));
|
||||
otSetRouterSelectionJitter(static_cast<uint8_t>(value));
|
||||
otSetRouterSelectionJitter(mInstance, static_cast<uint8_t>(value));
|
||||
}
|
||||
|
||||
exit:
|
||||
|
||||
@@ -684,22 +684,22 @@ void otPlatformReset(otInstance *aInstance)
|
||||
otPlatReset(aInstance);
|
||||
}
|
||||
|
||||
uint8_t otGetRouterDowngradeThreshold(void)
|
||||
uint8_t otGetRouterDowngradeThreshold(otInstance *)
|
||||
{
|
||||
return sThreadNetif->GetMle().GetRouterDowngradeThreshold();
|
||||
}
|
||||
|
||||
void otSetRouterDowngradeThreshold(uint8_t aThreshold)
|
||||
void otSetRouterDowngradeThreshold(otInstance *, uint8_t aThreshold)
|
||||
{
|
||||
sThreadNetif->GetMle().SetRouterDowngradeThreshold(aThreshold);
|
||||
}
|
||||
|
||||
uint8_t otGetRouterSelectionJitter(void)
|
||||
uint8_t otGetRouterSelectionJitter(otInstance *)
|
||||
{
|
||||
return sThreadNetif->GetMle().GetRouterSelectionJitter();
|
||||
}
|
||||
|
||||
void otSetRouterSelectionJitter(uint8_t aRouterJitter)
|
||||
void otSetRouterSelectionJitter(otInstance *, uint8_t aRouterJitter)
|
||||
{
|
||||
sThreadNetif->GetMle().SetRouterSelectionJitter(aRouterJitter);
|
||||
}
|
||||
|
||||
@@ -134,10 +134,12 @@ const NcpBase::GetPropertyHandlerEntry NcpBase::mGetPropertyHandlerTable[] =
|
||||
{ SPINEL_PROP_THREAD_CHILD_TIMEOUT, &NcpBase::GetPropertyHandler_THREAD_CHILD_TIMEOUT },
|
||||
{ SPINEL_PROP_THREAD_RLOC16, &NcpBase::GetPropertyHandler_THREAD_RLOC16 },
|
||||
{ SPINEL_PROP_THREAD_ROUTER_UPGRADE_THRESHOLD, &NcpBase::GetPropertyHandler_THREAD_ROUTER_UPGRADE_THRESHOLD },
|
||||
{ SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD, &NcpBase::GetPropertyHandler_THREAD_ROUTER_DOWNGRADE_THRESHOLD },
|
||||
{ SPINEL_PROP_THREAD_CONTEXT_REUSE_DELAY, &NcpBase::GetPropertyHandler_THREAD_CONTEXT_REUSE_DELAY },
|
||||
{ SPINEL_PROP_THREAD_NETWORK_ID_TIMEOUT, &NcpBase::GetPropertyHandler_THREAD_NETWORK_ID_TIMEOUT },
|
||||
{ SPINEL_PROP_THREAD_ON_MESH_NETS, &NcpBase::NcpBase::GetPropertyHandler_THREAD_ON_MESH_NETS },
|
||||
{ SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING, &NcpBase::GetPropertyHandler_NET_REQUIRE_JOIN_EXISTING },
|
||||
{ SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER, &NcpBase::GetPropertyHandler_THREAD_ROUTER_SELECTION_JITTER },
|
||||
|
||||
{ SPINEL_PROP_IPV6_ML_PREFIX, &NcpBase::GetPropertyHandler_IPV6_ML_PREFIX },
|
||||
{ SPINEL_PROP_IPV6_ML_ADDR, &NcpBase::GetPropertyHandler_IPV6_ML_ADDR },
|
||||
@@ -227,8 +229,10 @@ const NcpBase::SetPropertyHandlerEntry NcpBase::mSetPropertyHandlerTable[] =
|
||||
{ SPINEL_PROP_THREAD_MODE, &NcpBase::SetPropertyHandler_THREAD_MODE },
|
||||
{ SPINEL_PROP_THREAD_CHILD_TIMEOUT, &NcpBase::SetPropertyHandler_THREAD_CHILD_TIMEOUT },
|
||||
{ SPINEL_PROP_THREAD_ROUTER_UPGRADE_THRESHOLD, &NcpBase::SetPropertyHandler_THREAD_ROUTER_UPGRADE_THRESHOLD },
|
||||
{ SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD, &NcpBase::SetPropertyHandler_THREAD_ROUTER_DOWNGRADE_THRESHOLD },
|
||||
{ SPINEL_PROP_THREAD_CONTEXT_REUSE_DELAY, &NcpBase::SetPropertyHandler_THREAD_CONTEXT_REUSE_DELAY },
|
||||
{ SPINEL_PROP_NET_REQUIRE_JOIN_EXISTING, &NcpBase::SetPropertyHandler_NET_REQUIRE_JOIN_EXISTING },
|
||||
{ SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER, &NcpBase::SetPropertyHandler_THREAD_ROUTER_SELECTION_JITTER },
|
||||
|
||||
#if OPENTHREAD_ENABLE_DIAG
|
||||
{ SPINEL_PROP_NEST_STREAM_MFG, &NcpBase::SetPropertyHandler_NEST_STREAM_MFG },
|
||||
@@ -2560,6 +2564,28 @@ ThreadError NcpBase::GetPropertyHandler_THREAD_ROUTER_UPGRADE_THRESHOLD(uint8_t
|
||||
);
|
||||
}
|
||||
|
||||
ThreadError NcpBase::GetPropertyHandler_THREAD_ROUTER_DOWNGRADE_THRESHOLD(uint8_t header, spinel_prop_key_t key)
|
||||
{
|
||||
return SendPropertyUpdate(
|
||||
header,
|
||||
SPINEL_CMD_PROP_VALUE_IS,
|
||||
key,
|
||||
SPINEL_DATATYPE_UINT8_S,
|
||||
otGetRouterDowngradeThreshold(mInstance)
|
||||
);
|
||||
}
|
||||
|
||||
ThreadError NcpBase::GetPropertyHandler_THREAD_ROUTER_SELECTION_JITTER(uint8_t header, spinel_prop_key_t key)
|
||||
{
|
||||
return SendPropertyUpdate(
|
||||
header,
|
||||
SPINEL_CMD_PROP_VALUE_IS,
|
||||
key,
|
||||
SPINEL_DATATYPE_UINT8_S,
|
||||
otGetRouterSelectionJitter(mInstance)
|
||||
);
|
||||
}
|
||||
|
||||
ThreadError NcpBase::GetPropertyHandler_THREAD_CONTEXT_REUSE_DELAY(uint8_t header, spinel_prop_key_t key)
|
||||
{
|
||||
return SendPropertyUpdate(
|
||||
@@ -3893,6 +3919,60 @@ ThreadError NcpBase::SetPropertyHandler_THREAD_ROUTER_UPGRADE_THRESHOLD(uint8_t
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
ThreadError NcpBase::SetPropertyHandler_THREAD_ROUTER_DOWNGRADE_THRESHOLD(uint8_t header, spinel_prop_key_t key, const uint8_t *value_ptr, uint16_t value_len)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
spinel_ssize_t parsedLength;
|
||||
ThreadError errorCode = kThreadError_None;
|
||||
|
||||
parsedLength = spinel_datatype_unpack(
|
||||
value_ptr,
|
||||
value_len,
|
||||
SPINEL_DATATYPE_UINT8_S,
|
||||
&i
|
||||
);
|
||||
|
||||
if (parsedLength > 0)
|
||||
{
|
||||
otSetRouterDowngradeThreshold(mInstance, i);
|
||||
|
||||
errorCode = HandleCommandPropertyGet(header, key);
|
||||
}
|
||||
else
|
||||
{
|
||||
errorCode = SendLastStatus(header, SPINEL_STATUS_PARSE_ERROR);
|
||||
}
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
ThreadError NcpBase::SetPropertyHandler_THREAD_ROUTER_SELECTION_JITTER(uint8_t header, spinel_prop_key_t key, const uint8_t *value_ptr, uint16_t value_len)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
spinel_ssize_t parsedLength;
|
||||
ThreadError errorCode = kThreadError_None;
|
||||
|
||||
parsedLength = spinel_datatype_unpack(
|
||||
value_ptr,
|
||||
value_len,
|
||||
SPINEL_DATATYPE_UINT8_S,
|
||||
&i
|
||||
);
|
||||
|
||||
if (parsedLength > 0)
|
||||
{
|
||||
otSetRouterSelectionJitter(mInstance, i);
|
||||
|
||||
errorCode = HandleCommandPropertyGet(header, key);
|
||||
}
|
||||
else
|
||||
{
|
||||
errorCode = SendLastStatus(header, SPINEL_STATUS_PARSE_ERROR);
|
||||
}
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
ThreadError NcpBase::SetPropertyHandler_THREAD_CONTEXT_REUSE_DELAY(uint8_t header, spinel_prop_key_t key, const uint8_t *value_ptr, uint16_t value_len)
|
||||
{
|
||||
uint32_t i = 0;
|
||||
|
||||
@@ -334,6 +334,8 @@ private:
|
||||
ThreadError GetPropertyHandler_THREAD_CHILD_TIMEOUT(uint8_t header, spinel_prop_key_t key);
|
||||
ThreadError GetPropertyHandler_THREAD_RLOC16(uint8_t header, spinel_prop_key_t key);
|
||||
ThreadError GetPropertyHandler_THREAD_ROUTER_UPGRADE_THRESHOLD(uint8_t header, spinel_prop_key_t key);
|
||||
ThreadError GetPropertyHandler_THREAD_ROUTER_DOWNGRADE_THRESHOLD(uint8_t header, spinel_prop_key_t key);
|
||||
ThreadError GetPropertyHandler_THREAD_ROUTER_SELECTION_JITTER(uint8_t header, spinel_prop_key_t key);
|
||||
ThreadError GetPropertyHandler_THREAD_CONTEXT_REUSE_DELAY(uint8_t header, spinel_prop_key_t key);
|
||||
ThreadError GetPropertyHandler_THREAD_NETWORK_ID_TIMEOUT(uint8_t header, spinel_prop_key_t key);
|
||||
ThreadError GetPropertyHandler_THREAD_ON_MESH_NETS(uint8_t header, spinel_prop_key_t key);
|
||||
@@ -391,6 +393,8 @@ private:
|
||||
ThreadError SetPropertyHandler_THREAD_MODE(uint8_t header, spinel_prop_key_t key, const uint8_t *value_ptr, uint16_t value_len);
|
||||
ThreadError SetPropertyHandler_THREAD_CHILD_TIMEOUT(uint8_t header, spinel_prop_key_t key, const uint8_t *value_ptr, uint16_t value_len);
|
||||
ThreadError SetPropertyHandler_THREAD_ROUTER_UPGRADE_THRESHOLD(uint8_t header, spinel_prop_key_t key, const uint8_t *value_ptr, uint16_t value_len);
|
||||
ThreadError SetPropertyHandler_THREAD_ROUTER_DOWNGRADE_THRESHOLD(uint8_t header, spinel_prop_key_t key, const uint8_t *value_ptr, uint16_t value_len);
|
||||
ThreadError SetPropertyHandler_THREAD_ROUTER_SELECTION_JITTER(uint8_t header, spinel_prop_key_t key, const uint8_t *value_ptr, uint16_t value_len);
|
||||
ThreadError SetPropertyHandler_THREAD_CONTEXT_REUSE_DELAY(uint8_t header, spinel_prop_key_t key, const uint8_t *value_ptr, uint16_t value_len);
|
||||
ThreadError SetPropertyHandler_THREAD_NETWORK_ID_TIMEOUT(uint8_t header, spinel_prop_key_t key, const uint8_t *value_ptr, uint16_t value_len);
|
||||
|
||||
|
||||
@@ -1140,6 +1140,14 @@ spinel_prop_key_to_cstr(spinel_prop_key_t prop_key)
|
||||
ret = "PROP_THREAD_ROUTER_UPGRADE_THRESHOLD";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD:
|
||||
ret = "PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER:
|
||||
ret = "PROP_THREAD_ROUTER_SELECTION_JITTER";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_THREAD_CONTEXT_REUSE_DELAY:
|
||||
ret = "PROP_THREAD_CONTEXT_REUSE_DELAY";
|
||||
break;
|
||||
|
||||
@@ -508,6 +508,18 @@ typedef enum
|
||||
SPINEL_PROP_THREAD_ROUTER_ROLE_ENABLED
|
||||
= SPINEL_PROP_THREAD_EXT__BEGIN + 7,
|
||||
|
||||
/// Thread Router Downgrade Threshold
|
||||
/** Format: `C`
|
||||
*/
|
||||
SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD
|
||||
= SPINEL_PROP_THREAD_EXT__BEGIN + 8,
|
||||
|
||||
/// Thread Router Selection Jitter
|
||||
/** Format: `C`
|
||||
*/
|
||||
SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER
|
||||
= SPINEL_PROP_THREAD_EXT__BEGIN + 9,
|
||||
|
||||
SPINEL_PROP_THREAD_EXT__END = 0x1600,
|
||||
|
||||
SPINEL_PROP_IPV6__BEGIN = 0x60,
|
||||
|
||||
@@ -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