def describe_possible_modes(self): mode_info = self.hub.send(MsgPortInfoRequest(self.port, MsgPortInfoRequest.INFO_MODE_INFO)) assert isinstance(mode_info, MsgPortInfo) info = { "mode_count": mode_info.total_modes, "input_modes": [], "output_modes": [], "capabilities": { "logically_combinable": mode_info.is_combinable(), "synchronizable": mode_info.is_synchronizable(), "can_output": mode_info.is_output(), "can_input": mode_info.is_input(), } } if mode_info.is_combinable(): mode_combinations = self.hub.send(MsgPortInfoRequest(self.port, MsgPortInfoRequest.INFO_MODE_COMBINATIONS)) assert isinstance(mode_combinations, MsgPortInfo) info['possible_mode_combinations'] = mode_combinations.possible_mode_combinations info['modes'] = [] for mode in range(256): info['modes'].append(self._describe_mode(mode)) for mode in mode_info.output_modes: info['output_modes'].append(self._describe_mode(mode)) for mode in mode_info.input_modes: info['input_modes'].append(self._describe_mode(mode)) log.debug("Port info for 0x%x: %s", self.port, info) return info
def get_sensor_data(self, mode): self.set_port_mode(mode) msg = MsgPortInfoRequest(self.port, MsgPortInfoRequest.INFO_PORT_VALUE) resp = self.hub.send(msg) return self._decode_port_data(resp)