Exemplo n.º 1
0
    def run(self):
        """run when our device driver thread is started"""

        self.apply_settings()

        addr = SettingsBase.get_setting(self, 'extended_address')
        xbee_manager = SettingsBase.get_setting(self, 'xbee_device_manager')
        dm = self.__core.get_service("device_driver_manager")
        xbee_manager = dm.instance_get(xbee_manager)
        self.__autotap = AutoTapStreamer(xbee_manager, addr)

        while 1:
            if self.__stopevent.isSet():
                self.__stopevent.clear()
                break

            if self.property_get("ready_for_communication").value == 0:
                if self.__autotap.readyForCommunication():
                    vin = self.__autotap.getVIN()
                    supported_parameters = []
                    for pid in self.__autotap.getSupportedParameters():
                        supported_parameters.append(
                            AutoTapStreamer.PID_NAME_MAP[pid])

                    self.property_set("ready_for_communication", Sample(0, 1))
                    self.property_set("vin", Sample(0, vin))
                    self.property_set("supported_parameters",
                                      Sample(0, str(supported_parameters)))

            if self.property_get("ready_for_communication").value == 1:
                for pid in self.__autotap.getSupportedParameters():
                    val = self.__autotap.getParameterValues([pid])
                    pidValue = self.__autotap.\
                               convertValueToReadableFormat(pid, val[pid])
                    self.property_set(PID_NAME_MAP[pid],
                                  Sample(0, PID_TYPE_MAP[pid](pidValue)))

            time.sleep(SettingsBase.get_setting(self, "update_rate"))