def __init__(self, nodeid: int, testCommissioner: bool = False): self.chipStack = ChipStack('/tmp/repl_storage.json') self.fabricAdmin = chip.FabricAdmin.FabricAdmin(fabricId=1, fabricIndex=1) self.devCtrl = self.fabricAdmin.NewController(nodeid, testCommissioner) self.controllerNodeId = nodeid self.logger = logger
def __init__(self, nodeid: int, paaTrustStorePath: str, testCommissioner: bool = False): self.chipStack = ChipStack('/tmp/repl_storage.json') self.fabricAdmin = chip.FabricAdmin.FabricAdmin(fabricId=1, fabricIndex=1) self.devCtrl = self.fabricAdmin.NewController(nodeid, paaTrustStorePath, testCommissioner) self.controllerNodeId = nodeid self.logger = logger self.paaTrustStorePath = paaTrustStorePath logging.getLogger().setLevel(logging.DEBUG)
def _init_stack(self, already_initialized: bool, **kwargs): if already_initialized: self._chip_stack = builtins.chipStack self._logger.warn( "Re-using existing ChipStack object found in current interpreter: storage path %s will be ignored!" % (self._config.storage_path)) # TODO: Warn that storage will not follow what we set in config else: self._chip_stack = ChipStack(**kwargs) builtins.chipStack = self._chip_stack self._storage = self._chip_stack.GetStorageManager() self._certificate_authority_manager = chip.CertificateAuthority.CertificateAuthorityManager(chipStack=self._chip_stack) self._certificate_authority_manager.LoadAuthoritiesFromStorage() if (len(self._certificate_authority_manager.activeCaList) == 0): self._logger.warn( "Didn't find any CertificateAuthorities in storage -- creating a new CertificateAuthority + FabricAdmin...") ca = self._certificate_authority_manager.NewCertificateAuthority(caIndex=self._config.root_of_trust_index) ca.maximizeCertChains = self._config.maximize_cert_chains ca.NewFabricAdmin(vendorId=0xFFF1, fabricId=self._config.fabric_id) elif (len(self._certificate_authority_manager.activeCaList[0].adminList) == 0): self._logger.warn("Didn't find any FabricAdmins in storage -- creating a new one...") self._certificate_authority_manager.activeCaList[0].NewFabricAdmin(vendorId=0xFFF1, fabricId=self._config.fabric_id)
def __init__(self, rendezvousAddr=None, controllerNodeId=1, bluetoothAdapter=None): self.lastNetworkId = None self.replHint = None pretty.install(indent_guides=True, expand_all=True) coloredlogs.install(level='DEBUG') chip.logging.RedirectToPythonLogging() logging.getLogger().setLevel(logging.DEBUG) warnings.showwarning = ShowColoredWarnings Cmd.__init__(self) Cmd.identchars = string.ascii_letters + string.digits + "-" if sys.stdin.isatty(): self.prompt = "chip-device-ctrl > " else: self.use_rawinput = 0 self.prompt = "" DeviceMgrCmd.command_names.sort() self.bleMgr = None self.chipStack = ChipStack.ChipStack( bluetoothAdapter=bluetoothAdapter, persistentStoragePath='/tmp/chip-device-ctrl-storage.json') self.fabricAdmin = FabricAdmin.FabricAdmin(0xFFF1) self.devCtrl = self.fabricAdmin.NewController(nodeId=controllerNodeId, useTestCommissioner=True) self.commissionableNodeCtrl = ChipCommissionableNodeCtrl.ChipCommissionableNodeController( self.chipStack) # If we are on Linux and user selects non-default bluetooth adapter. if sys.platform.startswith("linux") and (bluetoothAdapter is not None): try: self.bleMgr = BleManager(self.devCtrl) self.bleMgr.ble_adapter_select( "hci{}".format(bluetoothAdapter)) except Exception as ex: traceback.print_exc() print( "Failed to initialize BLE, if you don't have BLE, run chip-device-ctrl with --no-ble" ) raise ex self.historyFileName = os.path.expanduser( "~/.chip-device-ctrl-history") try: import readline if "libedit" in readline.__doc__: readline.parse_and_bind("bind ^I rl_complete") readline.set_completer_delims(" ") try: readline.read_history_file(self.historyFileName) except IOError: pass except ImportError: pass
def mattersetdebug(enableDebugMode: bool = True): ''' Enables debug mode that is utilized by some Matter modules to better facilitate debugging of failures (e.g throwing exceptions instead of returning well-formatted results). ''' builtins.enableDebugMode = enableDebugMode console = Console() parser = argparse.ArgumentParser() parser.add_argument( "-p", "--storagepath", help= "Path to persistent storage configuration file (default: /tmp/repl-storage.json)", action="store", default="/tmp/repl-storage.json") args = parser.parse_args() ReplInit() chipStack = ChipStack(persistentStoragePath=args.storagepath) fabricAdmins = LoadFabricAdmins() devCtrl = CreateDefaultDeviceController() builtins.devCtrl = devCtrl console.print( '\n\n[blue]Default CHIP Device Controller has been initialized to manage [bold red]fabricAdmins[0][blue], and is available as [bold red]devCtrl' )
"-p", "--storagepath", help= "Path to persistent storage configuration file (default: /tmp/repl-storage.json)", action="store", default="/tmp/repl-storage.json") parser.add_argument("-d", "--debug", help="Set default logging level to debug.", action="store_true") args = parser.parse_args() chip.native.Init() ReplInit(args.debug) chipStack = ChipStack(persistentStoragePath=args.storagepath) certificateAuthorityManager = chip.CertificateAuthority.CertificateAuthorityManager( chipStack, chipStack.GetStorageManager()) certificateAuthorityManager.LoadAuthoritiesFromStorage() if (len(certificateAuthorityManager.activeCaList) == 0): ca = certificateAuthorityManager.NewCertificateAuthority() ca.NewFabricAdmin(vendorId=0xFFF1, fabricId=1) elif (len(certificateAuthorityManager.activeCaList[0].adminList) == 0): certificateAuthorityManager.activeCaList[0].NewFabricAdmin(vendorId=0xFFF1, fabricId=1) caList = certificateAuthorityManager.activeCaList devCtrl = caList[0].adminList[0].NewController()
class MatterStackState: def __init__(self, config: MatterTestConfig): self._logger = logger self._config = config if not hasattr(builtins, "chipStack"): chip.native.Init(bluetoothAdapter=config.ble_interface_id) if config.storage_path is None: raise ValueError("Must have configured a MatterTestConfig.storage_path") self._init_stack(already_initialized=False, persistentStoragePath=config.storage_path) self._we_initialized_the_stack = True else: self._init_stack(already_initialized=True) self._we_initialized_the_stack = False def _init_stack(self, already_initialized: bool, **kwargs): if already_initialized: self._chip_stack = builtins.chipStack self._logger.warn( "Re-using existing ChipStack object found in current interpreter: storage path %s will be ignored!" % (self._config.storage_path)) # TODO: Warn that storage will not follow what we set in config else: self._chip_stack = ChipStack(**kwargs) builtins.chipStack = self._chip_stack self._storage = self._chip_stack.GetStorageManager() self._certificate_authority_manager = chip.CertificateAuthority.CertificateAuthorityManager(chipStack=self._chip_stack) self._certificate_authority_manager.LoadAuthoritiesFromStorage() if (len(self._certificate_authority_manager.activeCaList) == 0): self._logger.warn( "Didn't find any CertificateAuthorities in storage -- creating a new CertificateAuthority + FabricAdmin...") ca = self._certificate_authority_manager.NewCertificateAuthority(caIndex=self._config.root_of_trust_index) ca.maximizeCertChains = self._config.maximize_cert_chains ca.NewFabricAdmin(vendorId=0xFFF1, fabricId=self._config.fabric_id) elif (len(self._certificate_authority_manager.activeCaList[0].adminList) == 0): self._logger.warn("Didn't find any FabricAdmins in storage -- creating a new one...") self._certificate_authority_manager.activeCaList[0].NewFabricAdmin(vendorId=0xFFF1, fabricId=self._config.fabric_id) # TODO: support getting access to chip-tool credentials issuer's data def Shutdown(self): if self._we_initialized_the_stack: # Unfortunately, all the below are singleton and possibly # managed elsewhere so we have to be careful not to touch unless # we initialized ourselves. self._certificate_authority_manager.Shutdown() global_chip_stack = builtins.chipStack global_chip_stack.Shutdown() @property def certificate_authorities(self): return self._certificate_authority_manager.activeCaList @property def certificate_authority_manager(self): return self._certificate_authority_manager @property def storage(self) -> PersistentStorage: return self._storage @property def stack(self) -> ChipStack: return builtins.chipStack