Index: dialin/dg/chemical_disinfect.py =================================================================== diff -u -r3a70bfb451b74106348c064c34f19934aadd9119 -r1bf1193409e2c8b723e52a2eabc6c532e0e64215 --- dialin/dg/chemical_disinfect.py (.../chemical_disinfect.py) (revision 3a70bfb451b74106348c064c34f19934aadd9119) +++ dialin/dg/chemical_disinfect.py (.../chemical_disinfect.py) (revision 1bf1193409e2c8b723e52a2eabc6c532e0e64215) @@ -13,15 +13,14 @@ # @date (original) 02-May-2021 # ############################################################################ -import struct from enum import unique from logging import Logger -from ..common.msg_defs import MsgIds, MsgFieldPositions -from ..protocols.CAN import DenaliChannels +from ..common.msg_defs import MsgIds +from ..protocols.CAN import DenaliChannels, DenaliMessage from ..utils.base import AbstractSubSystem, publish, DialinEnum +from ..utils.conversions import * - @unique class ChemCancellationModes(DialinEnum): CANCELLATION_MODE_NONE = 0 @@ -45,7 +44,7 @@ self.overall_elapsed_time = 0 self.state_elapsed_time = 0 self.chemical_disinfect_target_time = 0 - self.chemical_disinfect_elapsed_time = 0 + self.chemical_disinfect_count_down_time = 0 self.cancellation_mode = 0 self.r1_level = 0 self.r2_level = 0 @@ -64,21 +63,22 @@ self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_chemical_disinfect_to_ui_sync) - @publish(["chemical_disinfect_elapsed_time"]) + @publish(["chemical_disinfect_count_down_time", "chemical_disinfect_elapsed_time"]) def _handler_chemical_disinfect_to_ui_sync(self, message): """ - Handles published chemical disinfect message + Handles published chemical disinfect message - @param message: published chemical disinfect to UI data message - @returns none - """ - disinfect_target_time = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - disinfect_elapsed_time = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] + @param message: published chemical disinfect to UI data message + @returns none + """ + payload = message['message'] + index = DenaliMessage.PAYLOAD_START_INDEX + disinfect_target_time, index = bytearray_to_integer(payload, index, False) + disinfect_elapsed_time, index = bytearray_to_integer(payload, index, False) + self.chemical_disinfect_target_time = int(disinfect_target_time / 1000) - self.chemical_disinfect_target_time = int(disinfect_elapsed_time / 1000) + self.chemical_disinfect_count_down_time = int(disinfect_elapsed_time / 1000) @publish(["chemical_disinfect_state", "overall_elapsed_time", "state_elapsed_time", "cancellation_mode", "r1_level", "r2_level", "target_post_rinse_count", "current_post_rinse_count", @@ -90,25 +90,19 @@ @param message: published chemical disinfect data message @returns none """ - state = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - elapsed_time = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - state_elapsed_time = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - cancellation_mode = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - r1 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - r2 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - target_post_rinse_cnt = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - current_post_rinse_cnt = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] - chem_ui_state = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] + payload = message['message'] + index = DenaliMessage.PAYLOAD_START_INDEX + state, index = bytearray_to_integer(payload, index, False) + elapsed_time, index = bytearray_to_integer(payload, index, False) + state_elapsed_time, index = bytearray_to_integer(payload, index, False) + cancellation_mode, index = bytearray_to_integer(payload, index, False) + r1, index = bytearray_to_float(payload, index, False) + r2, index = bytearray_to_float(payload, index, False) + target_post_rinse_cnt, index = bytearray_to_integer(payload, index, False) + current_post_rinse_cnt, index = bytearray_to_integer(payload, index, False) + chem_ui_state, index = bytearray_to_integer(payload, index, False) + self.chemical_disinfect_state = state self.overall_elapsed_time = int(elapsed_time / 1000) self.state_elapsed_time = int(state_elapsed_time / 1000) @@ -118,3 +112,91 @@ self.target_post_rinse_count = target_post_rinse_cnt self.current_post_rinse_count = current_post_rinse_cnt self.chemical_disinfect_ui_state = chem_ui_state + + def get_chem_disinfect_target_time(self) -> int: + """ + Get Chemical Disinfection target time + + @return: (int) + """ + return self.chemical_disinfect_target_time + + def get_chem_disinfect_elapsed_time(self) -> int: + """ + Get Chemical Disinfection elapsed time + + @return: (int) + """ + return self.chemical_disinfect_elapsed_time + + def get_chem_disinfect_state(self) -> int: + """ + Gets Chemical Disinfection state + + @return: (int) + """ + return self.chemical_disinfect_state + + def get_chem_disinfect_overall_elapsed_time(self) -> int: + """ + Gets Chemical Disinfection overall elapsed time + + @return: (int) + """ + return self.overall_elapsed_time + + def get_chem_disinfect_state_elapsed_time(self) -> int: + """ + Gets Chemical Disinfection state elapsed time + + @return: (int) + """ + return self.state_elapsed_time + + def get_chem_disinfect_cancellation_mode(self) -> int: + """ + Gets Chemical Disinfection cancellation mode + + @return: (int) + """ + return self.cancellation_mode + + def get_chem_disinfect_r1_level(self) -> int: + """ + Gets Chemical Disinfection r1 level + + @return: (int) + """ + return self.r1_level + + def get_chem_disinfect_r2_level(self) -> int: + """ + Gets Chemical Disinfection r2 level + + @return: (int) + """ + return self.r2_level + + def get_chem_disinfect_target_post_rinse_count(self) -> int: + """ + Gets Chemical Disinfection target post rinse count + + @return: (int) + """ + return self.target_post_rinse_count + + def get_chem_disinfect_current_post_rinse_count(self) -> int: + """ + Gets Chemical Disinfection current post rinse count + + @return: (int) + """ + return self.current_post_rinse_count + + def get_chem_disinfect_chemical_disinfect_ui_state(self) -> int: + """ + Gets Chemical Disinfection UI state + + @return: (int) + """ + return self.chemical_disinfect_ui_state Index: dialin/dg/heat_disinfect.py =================================================================== diff -u -r3a70bfb451b74106348c064c34f19934aadd9119 -r1bf1193409e2c8b723e52a2eabc6c532e0e64215 --- dialin/dg/heat_disinfect.py (.../heat_disinfect.py) (revision 3a70bfb451b74106348c064c34f19934aadd9119) +++ dialin/dg/heat_disinfect.py (.../heat_disinfect.py) (revision 1bf1193409e2c8b723e52a2eabc6c532e0e64215) @@ -13,13 +13,14 @@ # @date (original) 27-Feb-2021 # ############################################################################ -import struct + from enum import unique from logging import Logger -from ..common.msg_defs import MsgIds, MsgFieldPositions -from ..protocols.CAN import DenaliChannels +from ..common.msg_defs import MsgIds +from ..protocols.CAN import DenaliChannels, DenaliMessage from ..utils.base import AbstractSubSystem, publish, DialinEnum +from ..utils.conversions import * @unique @@ -97,11 +98,12 @@ @param message: published heat disinfect UI data message @returns none """ - disinfect_target_time = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - disinfect_count_down_time = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] + payload = message['message'] + index = DenaliMessage.PAYLOAD_START_INDEX + disinfect_target_time, index = bytearray_to_integer(payload, index, False) + disinfect_count_down_time, index = bytearray_to_integer(payload, index, False) + self.heat_disinfect_target_time = int(disinfect_target_time / 1000) self.heat_disinfect_count_down_time = disinfect_count_down_time @@ -114,25 +116,93 @@ @param message: published heat disinfect data message @returns none """ - state = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - elapsed_time = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - state_elapsed_time = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - cancellation_mode = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - r1 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - r2 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - ui = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] + payload = message['message'] + index = DenaliMessage.PAYLOAD_START_INDEX + state, index = bytearray_to_integer(payload, index, False) + elapsed_time, index = bytearray_to_integer(payload, index, False) + state_elapsed_time, index = bytearray_to_integer(payload, index, False) + cancellation_mode, index = bytearray_to_integer(payload, index, False) + r1, index = bytearray_to_float(payload, index, False) + r2, index = bytearray_to_float(payload, index, False) + ui_state, index = bytearray_to_integer(payload, index, False) + self.heat_disinfect_state = state self.overall_elapsed_time = int(elapsed_time / 1000) self.state_elapsed_time = int(state_elapsed_time / 1000) self.cancellation_mode = cancellation_mode self.r1_level = r1 self.r2_level = r2 - self.heat_disinfect_ui_state = ui + self.heat_disinfect_ui_state = ui_state + + def get_heat_disinfect_state(self) -> int: + """ + Gets Heat Disinfection State + + @return: (int) + """ + return self.heat_disinfect_state + + def get_heat_disinfect_heat_disinfect_target_time(self) -> int: + """ + Gets Heat Disinfection target time + + @return: (int) + """ + return self.heat_disinfect_target_time + + def get_heat_disinfect_heat_disinfect_count_down_time(self) -> int: + """ + Gets Heat Disinfection count down time + + @return: (int) + """ + return self.heat_disinfect_count_down_time + + def get_heat_disinfect_overall_elapsed_time(self) -> int: + """ + Gets Heat Disinfection overall elapsed time + + @return: (int) + """ + return self.overall_elapsed_time + + def get_heat_disinfect_state_elapsed_time(self) -> int: + """ + Gets Heat Disinfection state elapsed time + + @return: (int) + """ + return self.heat_disinfect_target_time + + def get_heat_disinfect_cancellation_mode(self) -> int: + """ + Gets Heat Disinfection cancellation mode + + @return: (int) + """ + return self.cancellation_mode + + def get_heat_disinfect_r1_level(self) -> int: + """ + Gets Heat Disinfection r1 level + + @return: (int) + """ + return self.r1_level + + def get_heat_disinfect_r2_level(self) -> int: + """ + Gets Heat Disinfection r2 level + + @return: (int) + """ + return self.r2_level + + def get_heat_disinfect_heat_disinfect_ui_state(self) -> int: + """ + Gets Heat Disinfection UI state + + @return: (int) + """ + return self.heat_disinfect_state Index: dialin/ui/dg_simulator.py =================================================================== diff -u -r8c1ae1a592e02562ad9bded9ea2bd199fa80f4bf -r1bf1193409e2c8b723e52a2eabc6c532e0e64215 --- dialin/ui/dg_simulator.py (.../dg_simulator.py) (revision 8c1ae1a592e02562ad9bded9ea2bd199fa80f4bf) +++ dialin/ui/dg_simulator.py (.../dg_simulator.py) (revision 1bf1193409e2c8b723e52a2eabc6c532e0e64215) @@ -615,9 +615,9 @@ self.can_interface.send(message, 0) - def cmd_send_sg_general_progress_data(self, message_id: int, total: int, countdown: int) -> None: + def cmd_send_dg_general_progress_data(self, message_id: int, total: int, countdown: int) -> None: """ - a general method t send any standard progress data message, by it's id + a general method t send any standard progress data message, by id @param message_id: the id of the message @param total: the total value of the progress data @param countdown: the remaining or countdown value