Index: dialin/hd/blood_leak.py =================================================================== diff -u -rffe7108e083bf2d9c34818a126f8c97ec9a21c1d -r54b46a9ca8beeb910faad81df012a230dcf64a1e --- dialin/hd/blood_leak.py (.../blood_leak.py) (revision ffe7108e083bf2d9c34818a126f8c97ec9a21c1d) +++ dialin/hd/blood_leak.py (.../blood_leak.py) (revision 54b46a9ca8beeb910faad81df012a230dcf64a1e) @@ -43,6 +43,9 @@ @unique class BloodLeakStates(DialinEnum): + """ + HD blood leak embedded mode state machine + """ BLOOD_LEAK_WAIT_FOR_POST_STATE = 0 BLOOD_LEAK_CHECK_SET_POINT_STATE = 1 BLOOD_LEAK_INIT_STATE = 2 @@ -260,30 +263,33 @@ @return: non-zero integer if successful, False otherwise """ - command_bytes = byte_to_bytearray(command) - self.blood_leak_emb_mode_cmds[EmbModeCommands(command).name] = '' - data = 0 + if command < len(EmbModeCommands): + command_bytes = byte_to_bytearray(command) + self.blood_leak_emb_mode_cmds[EmbModeCommands(command).name] = '' + data = 0 - if msg_payload is not None: - data = msg_payload + if msg_payload is not None: + data = msg_payload - data = unsigned_short_to_bytearray(data) - payload = command_bytes + data - message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, - message_id=MsgIds.MSG_ID_HD_SET_BLOOD_LEAK_EMB_MODE_COMMAND.value, - payload=payload) + data = unsigned_short_to_bytearray(data) + payload = command_bytes + data + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, + message_id=MsgIds.MSG_ID_HD_SET_BLOOD_LEAK_EMB_MODE_COMMAND.value, + payload=payload) - self.logger.debug("Sending " + str(EmbModeCommands(command).name) + " to the blood leak sensor") + self.logger.debug("Sending " + str(EmbModeCommands(command).name) + " to the blood leak sensor") - received_message = self.can_interface.send(message) + received_message = self.can_interface.send(message) - # If there is content... - if received_message is not None: - # response payload is OK or not OK - return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + # If there is content... + if received_message is not None: + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False else: - self.logger.debug("Timeout!!!!") - return False + self.logger.debug("Invalid command!") @publish(['blood_leak_emb_mode_cmd_response']) def _handler_blood_leak_emb_mode_cmd_resp(self, message):