Lines Matching refs:self

60     def __init__(self, **kwargs):  argument
67 self.UIStatusMsg = ''
68 self.mac = kwargs.get('EUI')
69 self.handle = None
70 self.AutoDUTEnable = False
71 self._is_net = False # whether device is through ser2net
72self.logStatus = {'stop': 'stop', 'running': 'running', 'pauseReq': 'pauseReq', 'paused': 'paused'}
73 self.logThreadStatus = self.logStatus['stop']
75self.connectType = (kwargs.get('Param5')).strip().lower() if kwargs.get('Param5') is not None else…
77 (self.prompt, self.wpan_cmd_prefix,
78 self.wpan_interface) = (kwargs.get('Param8').strip().split(',')
80 self.wpan_cmd_prefix += ' '
82 self.precmd = (kwargs.get('Param9')).strip().split(',') if kwargs.get('Param9') else []
83 if self.connectType == 'ip':
84 self.dutIpv4 = kwargs.get('TelnetIP')
85 self.dutPort = kwargs.get('TelnetPort')
86 self.port = self.dutIpv4 + ':' + self.dutPort
88 self.username = kwargs.get('Param6').strip() if kwargs.get('Param6') else None
90 self.password = kwargs.get('Param7').strip() if kwargs.get('Param7') else None
92 self.port = kwargs.get('SerialPort')
93 self.intialize()
97 def __del__(self): argument
100 self.closeConnection()
101 self.deviceConnected = False
105 def _expect(self, expected, times=50): argument
112 print('[%s] Expecting [%s]' % (self.port, expected))
116 line = self._readline()
117 print('[%s] Got line [%s]' % (self.port, line))
120 print('[%s] Expected [%s]' % (self.port, expected))
131 def _read(self, size=512): argument
132 logging.info('%s: reading', self.port)
133 if self._is_net:
134 return self.handle.recv(size)
136 return self.handle.read(size)
138 def _write(self, data): argument
139 logging.info('%s: writing', self.port)
140 if self._is_net:
141 self.handle.sendall(data)
143 self.handle.write(data)
145 def _readline(self): argument
151 logging.info('%s: reading line', self.port)
152 if len(self._lines) > 1:
153 return self._lines.pop(0)
156 if len(self._lines):
157 tail = self._lines.pop()
160 tail += self._read()
162 logging.exception('%s: No new data', self.port)
165 self._lines += LINESEPX.split(tail)
166 if len(self._lines) > 1:
167 return self._lines.pop(0)
169 def _sendline(self, line): argument
175 logging.info('%s: sending line', self.port)
177 self._lines = []
179 self._read()
181 logging.debug('%s: Nothing cleared', self.port)
184 self._write(line + '\r\n')
185 self._lines = []
189 def __sendCommand(self, cmd): argument
200 logging.info('%s: sendCommand[%s]', self.port, cmd)
201 if self.logThreadStatus == self.logStatus['running']:
202 self.logThreadStatus = self.logStatus['pauseReq']
203 while self.logThreadStatus not in (self.logStatus['paused'], self.logStatus['stop']):
215 if self._is_net:
216 ssh_stdin, ssh_stdout, ssh_stderr = self.handle.exec_command(cmd)
218 self._sendline(cmd)
219 self._expect(cmd)
221 logging.exception('%s: failed to send command[%s]: %s', self.port, cmd, str(e))
232 if self._is_net:
241 logging.info('%s: the read line is[%s]', self.port, stderr_line)
245 logging.info('%s: the read line is[%s]', self.port, stdout_line)
250 logging.info('%s: send command[%s] done!', self.port, cmd)
252 response.append(self.prompt)
256 line = self._readline()
258 logging.info('%s: the read line is[%s]', self.port, line)
261 if re.match(self.prompt, line):
271 raise Exception('%s: failed to find end of response' % self.port)
272 logging.info('%s: send command[%s] done!', self.port, cmd)
278 def __stripValue(self, value): argument
292 def __padIp6Addr(self, ip6Addr): argument
306 def __setDeviceMode(self, mode): argument
323 cmd = self.wpan_cmd_prefix + 'setprop Thread:DeviceMode %d' % mode
324 return self.__sendCommand(cmd)[0] != 'Fail'
328 def __setRouterUpgradeThreshold(self, iThreshold): argument
341 … cmd = self.wpan_cmd_prefix + 'setprop Thread:RouterUpgradeThreshold %s' % str(iThreshold)
342 return self.__sendCommand(cmd)[0] != 'Fail'
346 def __setRouterDowngradeThreshold(self, iThreshold): argument
360 … cmd = self.wpan_cmd_prefix + 'setprop Thread:RouterDowngradeThreshold %s' % str(iThreshold)
361 return self.__sendCommand(cmd)[0] != 'Fail'
365 def __setRouterSelectionJitter(self, iRouterJitter): argument
377 … cmd = self.wpan_cmd_prefix + 'setprop Thread:RouterSelectionJitter %s' % str(iRouterJitter)
378 return self.__sendCommand(cmd) != 'Fail'
382 def __setAddressfilterMode(self, mode): argument
392 cmd = self.wpan_cmd_prefix + 'setprop MAC:' + mode.capitalize() + ':Enabled 1'
394 if self._addressfilterMode != 'disable':
395 … assert self._addressfilterMode in ('allowlist', 'denylist'), self._addressfilterMode
396 … cmd = self.wpan_cmd_prefix + 'setprop MAC:' + self._addressfilterMode.capitalize() + ':Enabled 0'
402 if self.__sendCommand(cmd)[0] != 'Fail':
403 self._addressfilterMode = mode
409 def __startOpenThreadWpan(self): argument
421 if self.isPowerDown:
422 if self._addressfilterMode == 'allowlist':
423 if self.__setAddressfilterMode('allowlist'):
424 for addr in self._addressfilterSet:
425 self.addAllowMAC(addr)
426 elif self._addressfilterMode == 'denylist':
427 if self.__setAddressfilterMode('denylist'):
428 for addr in self._addressfilterSet:
429 self.addBlockedMAC(addr)
432 self.channel = ModuleHelper.Default_Channel
435 if self.deviceRole == Thread_Device_Role.Leader:
438 elif self.deviceRole == Thread_Device_Role.Router:
440 elif self.deviceRole == Thread_Device_Role.SED:
442 elif self.deviceRole == Thread_Device_Role.EndDevice:
444 elif self.deviceRole == Thread_Device_Role.REED:
446 elif self.deviceRole == Thread_Device_Role.EndDevice_FED:
448 elif self.deviceRole == Thread_Device_Role.EndDevice_MED:
453 …if self.deviceRole in [Thread_Device_Role.Leader, Thread_Device_Role.Router, Thread_Device_Role.RE…
454 self.__setRouterSelectionJitter(1)
457 startCmd = self.wpan_cmd_prefix + '%s "%s" -c %s -T %s ' % (
459 self.networkName,
460 str(self.channel),
464 startCmd = self.wpan_cmd_prefix + '%s "%s" -p %s -c %s -T %s ' % (
466 self.networkName,
467 str(hex(self.panId)),
468 str(self.channel),
471 if self.__sendCommand(startCmd)[0] != 'Fail':
472 if self.__isOpenThreadWpanRunning():
473 self.isPowerDown = False
474 if self.hasActiveDatasetToCommit:
475 … if self.__sendCommand(self.wpan_cmd_prefix + 'setprop Dataset:Command SetActive')[0] == 'Fail':
478 self.hasActiveDatasetToCommit = False
486 def __stopOpenThreadWpan(self): argument
495 if (self.__sendCommand(self.wpan_cmd_prefix + 'leave')[0] != 'Fail' and
496 self.__sendCommand(self.wpan_cmd_prefix + 'dataset erase')[0] != 'Fail'):
503 def __isOpenThreadWpanRunning(self): argument
511 …if self.__stripValue(self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v NCP:State')[0]) == 'ass…
520 def __convertRlocToRouterId(self, xRloc16): argument
530 routerList = self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v Thread:RouterTable')
537 if re.match(self.prompt, line, re.M | re.I):
540 router = self.__stripValue(line).split(',')
563 def __convertIp6PrefixStringToIp6Address(self, strIp6Prefix): argument
575 prefix2 = self.__lstrip0x(prefix1)
583 def __convertLongToHex(self, iValue, fillZeros=None): argument
600 def __convertChannelMask(self, channelsArray): argument
617 def __ChannelMaskListToStr(self, channelList): argument
637 def __setChannelMask(self, channelMask): argument
640 cmd = self.wpan_cmd_prefix + 'setprop NCP:ChannelMask %s' % channelMask
641 datasetCmd = self.wpan_cmd_prefix + 'setprop Dataset:ChannelMaskPage0 %s' % channelMask
642 self.hasActiveDatasetToCommit = True
643 … return self.__sendCommand(cmd)[0] != 'Fail' and self.__sendCommand(datasetCmd)[0] != 'Fail'
647 def __setSecurityPolicy(self, securityPolicySecs, securityPolicyFlags): argument
650 … cmd1 = self.wpan_cmd_prefix + 'setprop Dataset:SecPolicy:KeyRotation %s' % str(securityPolicySecs)
652 cmd2 = self.wpan_cmd_prefix + 'setprop Dataset:SecPolicy:Flags 0xf7'
656 self.hasActiveDatasetToCommit = True
657 return self.__sendCommand(cmd1) != 'Fail' and self.__sendCommand(cmd2) != 'Fail'
661 def __setKeySwitchGuardTime(self, iKeySwitchGuardTime): argument
671 print('%s call setKeySwitchGuardTime' % self.port)
674 … cmd = self.wpan_cmd_prefix + 'setprop Network:KeySwitchGuardTime %s' % str(iKeySwitchGuardTime)
675 if self.__sendCommand(cmd)[0] != 'Fail':
683 def __getCommissionerSessionId(self): argument
685 print('%s call getCommissionerSessionId' % self.port)
686 return self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v Commissioner:SessionId')[0]
688 def __getJoinerState(self): argument
693 …joinerState = self.__stripValue(self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v NCP:State')[…
703 def _connect(self): argument
704 if self.connectType == 'usb':
705 print('My port is %s' % self.port)
707 self.handle = serial.Serial(self.port, 115200, timeout=0.2)
720 input_data = self.handle.read(self.handle.inWaiting())
724 self.handle.write('\n')
729 self.handle.write(self.username + '\n')
737 self.handle.write(self.password + '\n')
740 elif self.prompt in input_data:
743 self.deviceConnected = True
744 for precmd in self.precmd:
745 self.handle.write(precmd + '\n')
749 if not self.deviceConnected:
752 self._is_net = False
756 elif self.connectType == 'ip':
757 print('My IP: %s Port: %s' % (self.dutIpv4, self.dutPort))
761 if not self.password:
762 transport = paramiko.Transport((self.dutIpv4, int(self.dutPort)))
764 transport.auth_none(self.username)
765 self.handle = paramiko.SSHClient()
766 self.handle.set_missing_host_key_policy(paramiko.AutoAddPolicy())
767 self.handle._transport = transport
769 self.handle = paramiko.SSHClient()
770 self.handle.set_missing_host_key_policy(paramiko.AutoAddPolicy())
771 self.handle.connect(self.dutIpv4,
772 port=int(self.dutPort),
773 username=self.username,
774 password=self.password)
776 self.deviceConnected = True
777 for precmd in self.precmd:
778 self.handle.exec_command(precmd + '\n')
780 self._is_net = True
787 def closeConnection(self): argument
789 print('%s call closeConnection' % self.port)
791 if self.handle:
792 self.handle.close()
793 self.handle = None
797 def intialize(self): argument
799 print('%s call intialize' % self.port)
802 self.deviceConnected = False
803 self._connect()
805 if self.deviceConnected:
806 self.UIStatusMsg = self.getVersionNumber()
807 if self.firmwarePrefix not in self.UIStatusMsg:
808 self.deviceConnected = False
809self.UIStatusMsg = ('Firmware Not Matching Expecting ' + self.firmwarePrefix + ' Now is ' +
810 self.UIStatusMsg)
812 self.__sendCommand(self.wpan_cmd_prefix + 'leave')
813 self.__sendCommand(self.wpan_cmd_prefix + 'dataset erase')
820 def setNetworkName(self, networkName='GRL'): argument
830 print('%s call setNetworkName' % self.port)
834 cmd = self.wpan_cmd_prefix + 'setprop -s Network:Name "%s"' % networkName
835 datasetCmd = self.wpan_cmd_prefix + 'setprop Dataset:NetworkName "%s"' % networkName
836 self.hasActiveDatasetToCommit = True
837 … return self.__sendCommand(cmd)[0] != 'Fail' and self.__sendCommand(datasetCmd)[0] != 'Fail'
841 def setChannel(self, channel=15): argument
854 print('%s call setChannel' % self.port)
857 cmd = self.wpan_cmd_prefix + 'setprop NCP:Channel %s' % channel
858 datasetCmd = self.wpan_cmd_prefix + 'setprop Dataset:Channel %s' % channel
859 self.hasActiveDatasetToCommit = True
860 … return self.__sendCommand(cmd)[0] != 'Fail' and self.__sendCommand(datasetCmd)[0] != 'Fail'
864 def getChannel(self): argument
866 print('%s call getChannel' % self.port)
867 return self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v NCP:Channel')[0]
869 def setMAC(self, xEUI): argument
879 print('%s call setMAC' % self.port)
884 address64 = self.__convertLongToHex(xEUI, 16)
888 cmd = self.wpan_cmd_prefix + 'setprop NCP:MACAddress %s' % address64
890 if self.__sendCommand(cmd)[0] != 'Fail':
891 self.mac = address64
898 def getMAC(self, bType=MacType.RandomMac): argument
908 print('%s call getMAC' % self.port)
911 if self.isPowerDown:
912 macAddr64 = self.mac
915 macAddr64 = self.__stripValue(
916 self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v NCP:HardwareAddress')[0])
918 macAddr64 = self.__stripValue(
919 self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v NCP:MACAddress')[0])
921 macAddr64 = self.__stripValue(
922 self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v NCP:ExtendedAddress')[0])
926 def getLL64(self): argument
928 print('%s call getLL64' % self.port)
929 …return self.__stripValue(self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v IPv6:LinkLocalAddre…
931 def getMLEID(self): argument
933 print('%s call getMLEID' % self.port)
934 …return self.__stripValue(self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v IPv6:MeshLocalAddre…
936 def getRloc16(self): argument
938 print('%s call getRloc16' % self.port)
939 rloc16 = self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v Thread:RLOC16')[0]
942 def getRloc(self): argument
944 print('%s call getRloc' % self.port)
945 …prefix = self.__stripValue(self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v IPv6:MeshLocalPre…
947 … rloc16 = self.__lstrip0x(self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v Thread:RLOC16')[0])
953 rloc = self.__padIp6Addr(mlprefix + '00ff:fe00:' + rloc16)
957 def getGlobal(self): argument
961 print('%s call getGlobal' % self.port)
964 …mleid = self.__stripValue(self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v IPv6:MeshLocalAddr…
968 addrs = self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v IPv6:AllAddresses')
975 if re.match(self.prompt, ip6AddrItem, re.M | re.I):
978 ip6Addr = self.__stripValue(ip6AddrItem).split(' ')[0]
995 def setNetworkKey(self, key): argument
1006 print('%s call setNetworkKey' % self.port)
1010 networkKey = self.__convertLongToHex(key, 32)
1011 cmd = self.wpan_cmd_prefix + 'setprop Network:Key %s' % networkKey
1012 datasetCmd = self.wpan_cmd_prefix + 'setprop Dataset:NetworkKey %s' % networkKey
1015 cmd = self.wpan_cmd_prefix + 'setprop Network:Key %s' % networkKey
1016 datasetCmd = self.wpan_cmd_prefix + 'setprop Dataset:NetworkKey %s' % networkKey
1018 self.networkKey = networkKey
1019 self.hasActiveDatasetToCommit = True
1020 … return self.__sendCommand(cmd)[0] != 'Fail' and self.__sendCommand(datasetCmd)[0] != 'Fail'
1024 def addBlockedMAC(self, xEUI): argument
1034 print('%s call addBlockedMAC' % self.port)
1039 macAddr = self.__convertLongToHex(xEUI)
1043 if macAddr == self.mac:
1047 if self._addressfilterMode != 'denylist':
1048 self.__setAddressfilterMode('denylist')
1050 cmd = self.wpan_cmd_prefix + 'insert MAC:Denylist:Entries %s' % macAddr
1051 ret = self.__sendCommand(cmd)[0] != 'Fail'
1053 self._addressfilterSet.add(macAddr)
1055 for addr in self._addressfilterSet:
1062 def addAllowMAC(self, xEUI): argument
1072 print('%s call addAllowMAC' % self.port)
1077 macAddr = self.__convertLongToHex(xEUI)
1080 if self._addressfilterMode != 'allowlist':
1081 self.__setAddressfilterMode('allowlist')
1083 cmd = self.wpan_cmd_prefix + 'insert MAC:Allowlist:Entries %s' % macAddr
1084 ret = self.__sendCommand(cmd)[0] != 'Fail'
1086 self._addressfilterSet.add(macAddr)
1088 for addr in self._addressfilterSet:
1095 def clearBlockList(self): argument
1102 print('%s call clearBlockList' % self.port)
1107 for addr in self._addressfilterSet:
1111 if self.__setAddressfilterMode('disable'):
1113 for addr in self._addressfilterSet:
1114 cmd = self.wpan_cmd_prefix + 'remove MAC:Denylist:Entries ' + addr
1115 self.__sendCommand(cmd)
1117 self._addressfilterSet.clear()
1124 def clearAllowList(self): argument
1131 print('%s call clearAllowList' % self.port)
1136 for addr in self._addressfilterSet:
1140 if self.__setAddressfilterMode('disable'):
1142 for addr in self._addressfilterSet:
1143 cmd = self.wpan_cmd_prefix + 'remove MAC:Allowlist:Entries ' + addr
1144 self.__sendCommand(cmd)
1146 self._addressfilterSet.clear()
1153 def getDeviceRole(self): argument
1155 print('%s call getDeviceRole' % self.port)
1156 …return self.__stripValue(self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v Network:NodeType')[…
1158 def joinNetwork(self, eRoleId): argument
1167 print('%s call joinNetwork' % self.port)
1170 self.deviceRole = eRoleId
1174 self.channel = ModuleHelper.Default_Channel
1182 if self.AutoDUTEnable is False:
1184 self.__setRouterDowngradeThreshold(33)
1189 if self.AutoDUTEnable is False:
1191 self.__setRouterDowngradeThreshold(33)
1196 self.__setPollPeriod(self.__sedPollPeriod)
1206 self.__setRouterUpgradeThreshold(0)
1213 self.__setRouterUpgradeThreshold(0)
1222 self.__setDeviceMode(mode)
1225 self.__startOpenThreadWpan()
1231 def getNetworkFragmentID(self): argument
1237 print('%s call getNetworkFragmentID' % self.port)
1238 if not self.____isOpenThreadWpanRunning():
1242 return self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v Network:PartitionId')[0]
1244 def getParentAddress(self): argument
1250 print('%s call getParentAddress' % self.port)
1252 parentInfo = self.__stripValue(self.__sendCommand(self.wpan_cmd_prefix +
1257 def powerDown(self): argument
1259 print('%s call powerDown' % self.port)
1260 …if self.__sendCommand(self.wpan_cmd_prefix + 'setprop Daemon:AutoAssociateAfterReset false')[0] !=…
1262 if self.__sendCommand(self.wpan_cmd_prefix + 'reset')[0] != 'Fail':
1263 self.isPowerDown = True
1270 def powerUp(self): argument
1272 print('%s call powerUp' % self.port)
1273 if not self.handle:
1274 self._connect()
1276 self.isPowerDown = False
1277 if self.__sendCommand(self.wpan_cmd_prefix + 'attach')[0] != 'Fail':
1282 …if self.__sendCommand(self.wpan_cmd_prefix + 'setprop Daemon:AutoAssociateAfterReset true')[0] == …
1285 …if self.__stripValue(self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v NCP:State')[0]) != 'ass…
1291 def reboot(self): argument
1298 print('%s call reboot' % self.port)
1300 self._sendline(self.wpan_cmd_prefix + 'reset')
1301 self.isPowerDown = True
1303 if self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v NCP:State')[0] != 'associated':
1311 def ping(self, destination, length=20): argument
1319 print('%s call ping' % self.port)
1322 cmd = 'ping %s -c 1 -s %s -I %s' % (destination, str(length), self.wpan_interface)
1323 if self._is_net:
1324 self.handle.exec_command(cmd)
1326 self._sendline(cmd)
1327 self._expect(cmd)
1333 def multicast_Ping(self, destination, length=20): argument
1341 print('%s call multicast_Ping' % self.port)
1344 cmd = 'ping %s -c 1 -s %s -I %s' % (destination, str(length), self.wpan_interface)
1345 if self._is_net:
1346 self.handle.exec_command(cmd)
1348 self._sendline(cmd)
1349 self._expect(cmd)
1355 def getVersionNumber(self): argument
1357 print('%s call getVersionNumber' % self.port)
1358 versionStr = self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v NCP:Version')[0]
1360 return self.__stripValue(versionStr)
1362 def setPANID(self, xPAN): argument
1372 print('%s call setPANID' % self.port)
1380 cmd = self.wpan_cmd_prefix + 'setprop -s Network:PANID %s' % panid
1381 datasetCmd = self.wpan_cmd_prefix + 'setprop Dataset:PanId %s' % panid
1382 self.hasActiveDatasetToCommit = True
1383 … return self.__sendCommand(cmd)[0] != 'Fail' and self.__sendCommand(datasetCmd)[0] != 'Fail'
1387 def reset(self): argument
1389 print('%s call reset' % self.port)
1391 if self._is_net:
1392 self.__sendCommand(self.wpan_cmd_prefix + 'leave')
1394 self._sendline(self.wpan_cmd_prefix + 'leave')
1396 self.__sendCommand(self.wpan_cmd_prefix + 'dataset erase')
1398 if not self._is_net:
1399 self._read()
1403 def removeRouter(self, xRouterId): argument
1413 print('%s call removeRouter' % self.port)
1416 routerId = self.__convertRlocToRouterId(xRouterId)
1425 return self.__sendCommand(cmd)[0] != 'Fail'
1429 def setDefaultValues(self): argument
1431 print('%s call setDefaultValues' % self.port)
1434 self.networkName = ModuleHelper.Default_NwkName
1435 assert '"' not in self.networkName
1436 self.networkKey = ModuleHelper.Default_NwkKey
1437 self.channel = ModuleHelper.Default_Channel
1438 self.channelMask = '0x7fff800' # (0xffff << 11)
1439 self.panId = ModuleHelper.Default_PanId
1440 self.xpanId = ModuleHelper.Default_XpanId
1441 self.meshLocalPrefix = ModuleHelper.Default_MLPrefix
1443 self.pskc = '00000000000000000000000000000000'
1444 self.securityPolicySecs = ModuleHelper.Default_SecurityPolicy
1445 self.securityPolicyFlags = 'onrc'
1446 self.activetimestamp = ModuleHelper.Default_ActiveTimestamp
1448 self.__sedPollPeriod = 3 * 1000 # in milliseconds
1449 self.deviceRole = None
1450 self.provisioningUrl = ''
1451 self.hasActiveDatasetToCommit = False
1452 self.logThread = Queue()
1453 self.logThreadStatus = self.logStatus['stop']
1455 self.networkDataRequirement = ''
1457 self.isPowerDown = False
1459 self._addressfilterMode = 'disable'
1460 self._addressfilterSet = set() # cache filter entries
1462 self.isActiveCommissioner = False
1463 self._lines = None # buffered lines read from device
1467 self.setMAC(self.mac)
1468 self.__setChannelMask(self.channelMask)
1469 self.__setSecurityPolicy(self.securityPolicySecs, self.securityPolicyFlags)
1470 self.setChannel(self.channel)
1471 self.setPANID(self.panId)
1472 self.setXpanId(self.xpanId)
1473 self.setNetworkName(self.networkName)
1474 self.setNetworkKey(self.networkKey)
1475 self.setMLPrefix(self.meshLocalPrefix)
1476 self.setPSKc(self.pskc)
1477 self.setActiveTimestamp(self.activetimestamp)
1481 def getDeviceConncetionStatus(self): argument
1483 print('%s call getDeviceConnectionStatus' % self.port)
1484 return self.deviceConnected
1486 def setPollingRate(self, iPollingRate): argument
1496 print('%s call setPollingRate' % self.port)
1501 if self.__sedPollPeriod != iPollingRate:
1502 self.__sedPollPeriod = iPollingRate
1505 if self.__isOpenThreadWpanRunning():
1506 return self.__setPollPeriod(self.__sedPollPeriod)
1510 def __setPollPeriod(self, iPollPeriod): argument
1521 cmd = self.wpan_cmd_prefix + 'setprop NCP:SleepyPollInterval %s' % str(iPollPeriod)
1523 return self.__sendCommand(cmd)[0] != 'Fail'
1527 def setLinkQuality(self, EUIadr, LinkQuality): argument
1546 def setOutBoundLinkQuality(self, LinkQuality): argument
1564 def removeRouterPrefix(self, prefixEntry): argument
1577 def resetAndRejoin(self, timeout): argument
1587 print('%s call resetAndRejoin' % self.port)
1590 …if self.__sendCommand(self.wpan_cmd_prefix + 'setprop Daemon:AutoAssociateAfterReset false')[0] !=…
1592 if self.__sendCommand(self.wpan_cmd_prefix + 'reset')[0] != 'Fail':
1593 self.isPowerDown = True
1600 if self.deviceRole == Thread_Device_Role.SED:
1601 self.__setPollPeriod(self.__sedPollPeriod)
1603 if self.__sendCommand(self.wpan_cmd_prefix + 'attach')[0] != 'Fail':
1608 …if self.__sendCommand(self.wpan_cmd_prefix + 'setprop Daemon:AutoAssociateAfterReset true')[0] == …
1611 …if self.__stripValue(self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v NCP:State')[0]) != 'ass…
1618 def configBorderRouter(self, argument
1643 print('%s call configBorderRouter' % self.port)
1644 prefix = self.__convertIp6PrefixStringToIp6Address(str(P_Prefix))
1664 … cmd = self.wpan_cmd_prefix + 'add-prefix %s %s -P %d' % (prefix, parameter, P_preference)
1667 if self.__sendCommand(cmd)[0] != 'Fail':
1674 def setNetworkIDTimeout(self, iNwkIDTimeOut): argument
1687 def setKeepAliveTimeOut(self, iTimeOut): argument
1698 print('%s call setKeepAliveTimeOut' % self.port)
1701 cmd = self.wpan_cmd_prefix + 'setprop NCP:SleepyPollInterval %s' % str(iTimeOut * 1000)
1703 return self.__sendCommand(cmd)[0] != 'Fail'
1707 def setKeySequenceCounter(self, iKeySequenceValue): argument
1717 print('%s call setKeySequenceCounter' % self.port)
1721 self.__setKeySwitchGuardTime(0)
1723 cmd = self.wpan_cmd_prefix + 'setprop Network:KeyIndex %s' % str(iKeySequenceValue)
1724 if self.__sendCommand(cmd)[0] != 'Fail':
1732 def getKeySequenceCounter(self): argument
1734 print('%s call getKeySequenceCounter' % self.port)
1736 keySequence = self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v Network:KeyIndex')[0]
1739 def incrementKeySequenceCounter(self, iIncrementValue=1): argument
1749 print('%s call incrementKeySequenceCounter' % self.port)
1754 self.__setKeySwitchGuardTime(0)
1756 currentKeySeq = self.getKeySequenceCounter()
1759 return self.setKeySequenceCounter(keySequence)
1763 def setNetworkDataRequirement(self, eDataRequirement): argument
1773 print('%s call setNetworkDataRequirement' % self.port)
1777 self.networkDataRequirement = 'n'
1780 def configExternalRouter(self, P_Prefix, P_stable, R_Preference=0): argument
1795 print('%s call configExternalRouter' % self.port)
1797 prefix = self.__convertIp6PrefixStringToIp6Address(str(P_Prefix))
1800 cmd = self.wpan_cmd_prefix + 'add-route %s -l 64 -p %d' % (prefix, R_Preference)
1802 cmd = self.wpan_cmd_prefix + 'add-route %s -l 64 -p %d -n' % (prefix, R_Preference)
1805 if self.__sendCommand(cmd)[0] != 'Fail':
1812 def getNeighbouringRouters(self): argument
1821 def getChildrenInfo(self): argument
1830 def setXpanId(self, xPanId): argument
1841 print('%s call setXpanId' % self.port)
1845 xpanid = self.__convertLongToHex(xPanId, 16)
1847 cmd = self.wpan_cmd_prefix + 'setprop Network:XPANID %s' % xpanid
1848 datasetCmd = self.wpan_cmd_prefix + 'setprop Dataset:ExtendedPanId %s' % xpanid
1851 cmd = self.wpan_cmd_prefix + 'setprop Network:XPANID %s' % xpanid
1852 datasetCmd = self.wpan_cmd_prefix + 'setprop Dataset:ExtendedPanId %s' % xpanid
1854 self.xpanId = xpanid
1855 self.hasActiveDatasetToCommit = True
1856 … return self.__sendCommand(cmd)[0] != 'Fail' and self.__sendCommand(datasetCmd)[0] != 'Fail'
1860 def getNeighbouringDevices(self): argument
1868 print('%s call getNeighbouringDevices' % self.port)
1872 parentAddr = self.getParentAddress()
1877 childNeighbours = self.getChildrenInfo()
1883 routerNeighbours = self.getNeighbouringRouters()
1891 def setPartationId(self, partationId): argument
1901 print('%s call setPartationId' % self.port)
1904 …cmd = self.wpan_cmd_prefix + 'setprop Network:PartitionId %s' % (str(hex(partationId)).rstrip('L'))
1906 return self.__sendCommand(cmd)[0] != 'Fail'
1908 def getGUA(self, filterByPrefix=None): argument
1920 print('%s call getGUA' % self.port)
1925 globalAddrs = self.getGlobal()
1928 return self.globalAddrs[0]
1940 def getShortAddress(self): argument
1942 print('%s call getShortAddress' % self.port)
1943 return self.getRloc16()
1945 def getULA64(self): argument
1947 print('%s call getULA64' % self.port)
1948 return self.getMLEID()
1950 def setMLPrefix(self, sMeshLocalPrefix): argument
1952 print('%s call setMLPrefix' % self.port)
1954 cmd = self.wpan_cmd_prefix + 'setprop IPv6:MeshLocalPrefix %s' % sMeshLocalPrefix
1955 … datasetCmd = self.wpan_cmd_prefix + 'setprop Dataset:MeshLocalPrefix %s' % sMeshLocalPrefix
1956 self.hasActiveDatasetToCommit = True
1957 … return self.__sendCommand(cmd)[0] != 'Fail' and self.__sendCommand(datasetCmd)[0] != 'Fail'
1961 def getML16(self): argument
1963 print('%s call getML16' % self.port)
1964 return self.getRloc()
1966 def downgradeToDevice(self): argument
1969 def upgradeToRouter(self): argument
1972 def forceSetSlaac(self, slaacAddress): argument
1975 def setSleepyNodePollTime(self): argument
1978 def enableAutoDUTObjectFlag(self): argument
1980 print('%s call enableAutoDUTObjectFlag' % self.port)
1981 self.AutoDUTEnable = True
1983 def getChildTimeoutValue(self): argument
1985 print('%s call getChildTimeoutValue' % self.port)
1986 … childTimeout = self.__sendCommand(self.wpan_cmd_prefix + 'getprop -v Thread:ChildTimeout')[0]
1989 def diagnosticGet(self, strDestinationAddr, listTLV_ids=[]): argument
1992 def diagnosticQuery(self, strDestinationAddr, listTLV_ids=[]): argument
1994 self.diagnosticGet(strDestinationAddr, listTLV_ids)
1996 def diagnosticReset(self, strDestinationAddr, listTLV_ids=[]): argument
1999 def startNativeCommissioner(self, strPSKc='GRLPASSPHRASE'): argument
2003 print('%s call startNativeCommissioner' % self.port)
2004 cmd = self.wpan_cmd_prefix + 'joiner --start %s' % (strPSKc)
2006 if self.__sendCommand(cmd)[0] != 'Fail':
2011 def startCollapsedCommissioner(self): argument
2018 print('%s call startCollapsedCommissioner' % self.port)
2019 …startCmd = self.wpan_cmd_prefix + 'form "%s" -c %s -T router' % (self.networkName, str(self.channe…
2020 if self.__sendCommand(startCmd) != 'Fail':
2022 cmd = self.wpan_cmd_prefix + 'commissioner start'
2024 if self.__sendCommand(cmd)[0] != 'Fail':
2025 self.isActiveCommissioner = True
2030 def setJoinKey(self, strPSKc): argument
2033 def scanJoiner(self, xEUI='*', strPSKd='THREADJPAKETEST'): argument
2044 print('%s call scanJoiner' % self.port)
2046 eui64 = self.__convertLongToHex(xEUI, 16)
2053 … cmd = self.wpan_cmd_prefix + 'commissioner joiner-add "%s" %s %s' % (eui64, str(timeout), strPSKd)
2055 if not self.isActiveCommissioner:
2056 self.startCollapsedCommissioner()
2057 if self.__sendCommand(cmd)[0] != 'Fail':
2062 def setProvisioningUrl(self, strURL='grl.com'): argument
2072 print('%s call setProvisioningUrl' % self.port)
2073 self.provisioningUrl = strURL
2074 if self.deviceRole == Thread_Device_Role.Commissioner:
2075 cmd = self.wpan_cmd_prefix + 'setprop Commissioner:ProvisioningUrl %s' % (strURL)
2077 return self.__sendCommand(cmd)[0] != 'Fail'
2080 def allowCommission(self): argument
2087 print('%s call allowCommission' % self.port)
2089 cmd = self.wpan_cmd_prefix + 'commissioner start'
2091 if self.isActiveCommissioner:
2093 if self.__sendCommand(cmd)[0] != 'Fail':
2094 self.isActiveCommissioner = True
2102 def joinCommissioned(self, strPSKd='THREADJPAKETEST', waitTime=20): argument
2112 print('%s call joinCommissioned' % self.port)
2113 cmd = self.wpan_cmd_prefix + 'joiner --start %s %s' % (strPSKd, self.provisioningUrl)
2115 if self.__sendCommand(cmd)[0] != 'Fail':
2116 if self.__getJoinerState():
2117 self.__sendCommand(self.wpan_cmd_prefix + 'joiner --attach')
2125 def getCommissioningLogs(self): argument
2131 rawLogs = self.logThread.get()
2177 …def MGMT_ED_SCAN(self, sAddr, xCommissionerSessionId, listChannelMask, xCount, xPeriod, xScanDurat… argument
2192 print('%s call MGMT_ED_SCAN' % self.port)
2194 channelMask = self.__ChannelMaskListToStr(listChannelMask)
2196 cmd = self.wpan_cmd_prefix + 'commissioner energy-scan %s %s %s %s %s' % (
2204 return self.__sendCommand(cmd) != 'Fail'
2208 def MGMT_PANID_QUERY(self, sAddr, xCommissionerSessionId, listChannelMask, xPanId): argument
2218 print('%s call MGMT_PANID_QUERY' % self.port)
2221 channelMask = self.__ChannelMaskListToStr(listChannelMask)
2227 … cmd = self.wpan_cmd_prefix + 'commissioner pan-id-query %s %s %s' % (panid, channelMask, sAddr)
2229 return self.__sendCommand(cmd) != 'Fail'
2233 def MGMT_ANNOUNCE_BEGIN(self, sAddr, xCommissionerSessionId, listChannelMask, xCount, xPeriod): argument
2240 print('%s call MGMT_ANNOUNCE_BEGIN' % self.port)
2242 channelMask = self.__ChannelMaskListToStr(listChannelMask)
2244 cmd = self.wpan_cmd_prefix + 'commissioner announce-begin %s %s %s %s' % (
2251 return self.__sendCommand(cmd) != 'Fail'
2255 def MGMT_ACTIVE_GET(self, Addr='', TLVs=[]): argument
2262 print('%s call MGMT_ACTIVE_GET' % self.port)
2265 cmd = self.wpan_cmd_prefix + 'dataset mgmt-get-active'
2269 setTLVCmd = self.wpan_cmd_prefix + 'setprop Dataset:RawTlvs ' + tlvs
2270 if self.__sendCommand(setTLVCmd)[0] == 'Fail':
2273 if self.__sendCommand(self.wpan_cmd_prefix + 'dataset erase')[0] == 'Fail':
2277 setAddressCmd = self.wpan_cmd_prefix + 'setprop Dataset:DestIpAddress ' + Addr
2278 if self.__sendCommand(setAddressCmd)[0] == 'Fail':
2283 return self.__sendCommand(cmd)[0] != 'Fail'
2289 self, argument
2314 print('%s call MGMT_ACTIVE_SET' % self.port)
2316 cmd = self.wpan_cmd_prefix + 'dataset mgmt-set-active'
2318 if self.__sendCommand(self.wpan_cmd_prefix + 'dataset erase')[0] == 'Fail':
2323 … setActiveTimeCmd = self.wpan_cmd_prefix + 'setprop Dataset:ActiveTimestamp ' + sActiveTimestamp
2324 if self.__sendCommand(setActiveTimeCmd)[0] == 'Fail':
2328 xpanid = self.__convertLongToHex(xExtendedPanId, 16)
2329 … setExtendedPanIdCmd = self.wpan_cmd_prefix + 'setprop Dataset:ExtendedPanId ' + xpanid
2330 if self.__sendCommand(setExtendedPanIdCmd)[0] == 'Fail':
2334 … setNetworkNameCmd = self.wpan_cmd_prefix + 'setprop Dataset:NetworkName ' + str(sNetworkName)
2335 if self.__sendCommand(setNetworkNameCmd)[0] == 'Fail':
2339 setChannelCmd = self.wpan_cmd_prefix + 'setprop Dataset:Channel ' + str(xChannel)
2340 if self.__sendCommand(setChannelCmd)[0] == 'Fail':
2344 … setMLPrefixCmd = self.wpan_cmd_prefix + 'setprop Dataset:MeshLocalPrefix ' + str(sMeshLocalPrefix)
2345 if self.__sendCommand(setMLPrefixCmd)[0] == 'Fail':
2349 key = self.__convertLongToHex(xMasterKey, 32)
2350 setNetworkKeyCmd = self.wpan_cmd_prefix + 'setprop Dataset:NetworkKey ' + key
2351 if self.__sendCommand(setNetworkKeyCmd)[0] == 'Fail':
2355 setPanIdCmd = self.wpan_cmd_prefix + 'setprop Dataset:PanId ' + str(xPanId)
2356 if self.__sendCommand(setPanIdCmd)[0] == 'Fail':
2360 … setChannelMaskCmd = (self.wpan_cmd_prefix + 'setprop Dataset:ChannelMaskPage0 ' + '0x' +
2361self.__convertLongToHex(self.__convertChannelMask(listChannelMask)))
2362 if self.__sendCommand(setChannelMaskCmd)[0] == 'Fail':
2368 setRawTLVCmd = self.wpan_cmd_prefix + 'setprop Dataset:RawTlvs '
2437 steeringData = self.__convertLongToHex(xSteeringData)
2447 if self.__sendCommand(setRawTLVCmd)[0] == 'Fail':
2450 return self.__sendCommand(cmd)[0] != 'Fail'
2455 def MGMT_PENDING_GET(self, Addr='', TLVs=[]): argument
2462 print('%s call MGMT_PENDING_GET' % self.port)
2464 cmd = self.wpan_cmd_prefix + 'dataset mgmt-get-pending'
2468 setTLVCmd = self.wpan_cmd_prefix + 'setprop Dataset:RawTlvs ' + tlvs
2469 if self.__sendCommand(setTLVCmd)[0] == 'Fail':
2472 if self.__sendCommand(self.wpan_cmd_prefix + 'dataset erase')[0] == 'Fail':
2476 setAddressCmd = self.wpan_cmd_prefix + 'setprop Dataset:DestIpAddress ' + Addr
2477 if self.__sendCommand(setAddressCmd)[0] == 'Fail':
2482 return self.__sendCommand(cmd)[0] != 'Fail'
2488 self, argument
2506 print('%s call MGMT_PENDING_SET' % self.port)
2508 cmd = self.wpan_cmd_prefix + 'dataset mgmt-set-pending'
2509 if self.__sendCommand(self.wpan_cmd_prefix + 'dataset erase')[0] == 'Fail':
2514 … setPendingTimeCmd = self.wpan_cmd_prefix + 'setprop Dataset:PendingTimestamp ' + sActiveTimestamp
2515 if self.__sendCommand(setPendingTimeCmd)[0] == 'Fail':
2520 … setActiveTimeCmd = self.wpan_cmd_prefix + 'setprop Dataset:ActiveTimestamp ' + sActiveTimestamp
2521 if self.__sendCommand(setActiveTimeCmd)[0] == 'Fail':
2525 … setDelayTimerCmd = self.wpan_cmd_prefix + 'setprop Dataset:Delay ' + str(xDelayTimer)
2526 if self.__sendCommand(setDelayTimerCmd)[0] == 'Fail':
2530 … setNetworkNameCmd = self.wpan_cmd_prefix + 'setprop Dataset:NetworkName ' + str(sNetworkName)
2531 if self.__sendCommand(setNetworkNameCmd)[0] == 'Fail':
2535 setChannelCmd = self.wpan_cmd_prefix + 'setprop Dataset:Channel ' + str(xChannel)
2536 if self.__sendCommand(setChannelCmd)[0] == 'Fail':
2540 … setMLPrefixCmd = self.wpan_cmd_prefix + 'setprop Dataset:MeshLocalPrefix ' + str(sMeshLocalPrefix)
2541 if self.__sendCommand(setMLPrefixCmd)[0] == 'Fail':
2545 key = self.__convertLongToHex(xMasterKey, 32)
2546 setNetworkKeyCmd = self.wpan_cmd_prefix + 'setprop Dataset:NetworkKey ' + key
2547 if self.__sendCommand(setNetworkKeyCmd)[0] == 'Fail':
2551 setPanIdCmd = self.wpan_cmd_prefix + 'setprop Dataset:PanId ' + str(xPanId)
2552 if self.__sendCommand(setPanIdCmd)[0] == 'Fail':
2560 return self.__sendCommand(cmd)[0] != 'Fail'
2565 def MGMT_COMM_GET(self, Addr='ff02::1', TLVs=[]): argument
2572 print('%s call MGMT_COMM_GET' % self.port)
2574 cmd = self.wpan_cmd_prefix + 'commissioner mgmt-get '
2584 return self.__sendCommand(cmd)[0] != 'Fail'
2590 self, argument
2604 print('%s call MGMT_COMM_SET' % self.port)
2606 cmd = self.wpan_cmd_prefix + 'commissioner mgmt-set '
2621 if self.isActiveCommissioner is True:
2622 cmd += '0b02' + self.__lstrip0x(self.__getCommissionerSessionId())
2637 return self.__sendCommand(cmd)[0] != 'Fail'
2642 def setActiveDataset(self, listActiveDataset=[]): argument
2643 print('%s call setActiveDataset' % self.port)
2645 def setCommisionerMode(self): argument
2646 print('%s call setCommissionerMode' % self.port)
2648 def setPSKc(self, strPSKc): argument
2649 print('%s call setPSKc' % self.port)
2651 cmd = self.wpan_cmd_prefix + 'setprop Network:PSKc %s' % strPSKc
2652 datasetCmd = self.wpan_cmd_prefix + 'setprop Dataset:PSKc %s' % strPSKc
2653 self.hasActiveDatasetToCommit = True
2654 … return self.__sendCommand(cmd)[0] != 'Fail' and self.__sendCommand(datasetCmd)[0] != 'Fail'
2658 def setActiveTimestamp(self, xActiveTimestamp): argument
2659 print('%s call setActiveTimestamp' % self.port)
2664 self.activetimestamp = sActiveTimestamp
2665 cmd = self.wpan_cmd_prefix + 'setprop Dataset:ActiveTimestamp %s' % sActiveTimestamp
2666 self.hasActiveDatasetToCommit = True
2667 return self.__sendCommand(cmd)[0] != 'Fail'
2671 def setUdpJoinerPort(self, portNumber): argument
2684 def commissionerUnregister(self): argument
2691 print('%s call commissionerUnregister' % self.port)
2692 cmd = self.wpan_cmd_prefix + 'commissioner stop'
2694 if self.__sendCommand(cmd)[0] != 'Fail':
2695 self.isActiveCommissioner = False
2700 def sendBeacons(self, sAddr, xCommissionerSessionId, listChannelMask, xPanId): argument
2701 print('%s call sendBeacons' % self.port)
2702 self._sendline(self.wpan_cmd_prefix + 'scan')
2705 def updateRouterStatus(self): argument
2710 def setRouterThresholdValues(self, upgradeThreshold, downgradeThreshold): argument
2711 print('%s call setRouterThresholdValues' % self.port)
2712 self.__setRouterUpgradeThreshold(upgradeThreshold)
2713 self.__setRouterDowngradeThreshold(downgradeThreshold)
2715 def setMinDelayTimer(self, iSeconds): argument
2718 def ValidateDeviceFirmware(self): argument
2719 print('%s call ValidateDeviceFirmware' % self.port)
2720 if 'OPENTHREAD' in self.UIStatusMsg: