def deviceUnregister()

in leda_python/leda.py [0:0]


    def deviceUnregister(self, subDevice):
        ''' unregister device

			:param subDevice: device obj
			:return:
		'''

        if (False == isinstance(subDevice, LedaSubDevice)):
            raise exception.LedaParamsException('type of subDevice is invalid')

        with self.deviceServiceDictLock:

            pk_dn = subDevice.product_key + subDevice.device_name

            if (pk_dn not in self.device_service_dict):
                raise exception.LedaRPCMethodException("device(%s) is not exited" % subDevice.device_name)
            else:
                del self.device_service_dict[pk_dn]

            subDevice.offline()
            cloudId = subDevice.get_cloud_id()

            try:
                reply_cb = self._unregister_device_cb
                error_cb = self._unregister_device_errCb
                self.unregisterDeviceSync.clear()

                self.driverMbusHandle.unregisterDevice(cloudId, reply_cb, error_cb)
                syncMsg = self.unregisterDeviceSync.wait(mbusConfig.MERHOD_SYNC_TIMEOUT)
                if (None == syncMsg):
                    raise exception.LedaRPCMethodException("unregister device time out", exception.LEDA_ERROR_TIMEOUT)
                elif (False == syncMsg["state"]):
                    raise exception.LedaRPCMethodException("unregister device failed", exception.LEDA_ERROR_FAILED)

            except:
                s = '%s:%s' % (funcname(), linenum())
                _logger.exception("%s,Err", s)