def load(self, prov_db):
        """Loads the keys from the provisioning datase and sets the local unicast address.

            prov_db : Mesh database.
        """
        self.prov_db = prov_db

        self.__next_free_address = (
            self.prov_db.provisioners[0].allocated_unicast_range[0].low_address)

        for node in self.prov_db.nodes:
            self.__next_free_address = max(self.__next_free_address,
                                           node.unicast_address + len(node.elements))

        self.iaci.send(cmd.AddrLocalUnicastSet(self.__address, 1))

        for key in self.prov_db.net_keys:
            self.iaci.send(cmd.SubnetAdd(key.index,
                                         key.key))
        for key in self.prov_db.app_keys:
            self.iaci.send(cmd.AppkeyAdd(key.index, key.bound_net_key, key.key))
 def quick_setup(self):
     self.send(cmd.SubnetAdd(0, bytearray(self.DEFAULT_SUBNET_KEY)))
     self.send(cmd.AppkeyAdd(0, 0, bytearray(self.DEFAULT_APP_KEY)))
     self.send(
         cmd.AddrLocalUnicastSet(self.local_unicast_address_start,
                                 self.CONFIG.ACCESS_ELEMENT_COUNT))