Index: dialin/dg/dialysate_generator.py =================================================================== diff -u -r9d116c25f6482d61d324558b8a1f745468030740 -r179cd697f39a80fa34e7293a5f8a8700898ba4ce --- dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) +++ dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision 179cd697f39a80fa34e7293a5f8a8700898ba4ce) @@ -44,6 +44,7 @@ from ..protocols.CAN import (DenaliCanMessenger, DenaliMessage, DenaliChannels) from ..common.msg_defs import MsgIds, MsgFieldPositions from .flush import FlushMode +from .rtc import DGRTC class DG(_AbstractSubSystem): @@ -167,6 +168,7 @@ self.scheduled_runs_record = DGScheduledRunsNVRecord(self.can_interface, self.logger) self.valves = DGValves(self.can_interface, self.logger) self.flush = FlushMode(self.can_interface, self.logger) + self.rtc = DGRTC(self.can_interface, self.logger) def get_version(self): """ Index: dialin/dg/rtc.py =================================================================== diff -u --- dialin/dg/rtc.py (revision 0) +++ dialin/dg/rtc.py (revision 179cd697f39a80fa34e7293a5f8a8700898ba4ce) @@ -0,0 +1,82 @@ +########################################################################### +# +# Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. +# +# THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +# WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +# +# @file rtc.py +# +# @author (last) Quang Nguyen +# @date (last) 13-May-2021 +# @author (original) Quang Nguyen +# @date (original) 13-May-2021 +# +############################################################################ +import ctypes +from ..protocols.CAN import (DenaliMessage, DenaliChannels) +from ..utils.conversions import integer_to_bytearray +from ..utils.base import _AbstractSubSystem, _publish +from ..common.msg_defs import MsgIds +from logging import Logger + + +class DGRTC(_AbstractSubSystem): + """ + + Dialysate Generator (DG) Dialin API sub-class for rtc commands. + + """ + + def __init__(self, can_interface, logger: Logger): + """ + + @param can_interface: Denali Can Messenger object + """ + + super().__init__() + self.can_interface = can_interface + self.logger = logger + + def cmd_set_rtc_time_and_date(self, second: int, minute: int, hour: int, day: int, month: int, year: int) -> int: + """ + Sets the RTC time and date from the provided + + @param second: (int) Second + @param minute: (int) Minute + @param hour: (int) Hour + @param day: (int) Day + @param month: (int) Month + @param year: (int) Year + @return: 1 if Successful, False otherwise + """ + sec = bytes([second]) + mint = bytes([minute]) + hour = bytes([hour]) + day = bytes([day]) + month = bytes([month]) + year = integer_to_bytearray(year) + payload = sec + mint + hour + day + month + year + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=MsgIds.MSG_ID_DG_SET_RTC_DATE_TIME.value, + payload=payload) + + self.logger.debug("Setting time and date to rtc") + + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + + self.logger.debug(received_message) + # str_res = str(flow) + self.logger.debug("Time and Date in rtc set to seconds: " + str(sec) + " minutes: " + str(min) + " hours: " + + str(hour) + " days: " + str(day) + " months: " + str(month) + " years: " + str(year) + + str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False Index: tests/peter/set_RTCs.py =================================================================== diff -u -r5e7404aa3f3a630e3d831643a4c7e91769d387ea -r179cd697f39a80fa34e7293a5f8a8700898ba4ce --- tests/peter/set_RTCs.py (.../set_RTCs.py) (revision 5e7404aa3f3a630e3d831643a4c7e91769d387ea) +++ tests/peter/set_RTCs.py (.../set_RTCs.py) (revision 179cd697f39a80fa34e7293a5f8a8700898ba4ce) @@ -24,17 +24,26 @@ if __name__ == "__main__": # create an HD object called hd hd = HD(log_level="DEBUG") + dg = DG(log_level="DEBUG") - if hd.cmd_log_in_to_hd(): - current_time_stamp = time() - current_time = localtime(current_time_stamp) - print(current_time) + current_time_stamp = time() + current_time = localtime(current_time_stamp) + print(current_time) + if hd.cmd_log_in_to_hd(): hd.rtc.cmd_set_rtc_time_and_date(current_time.tm_sec, current_time.tm_min, current_time.tm_hour, current_time.tm_mday, current_time.tm_mon, current_time.tm_year) print("Successfully set HD rtc") - #TODO - set DG clock when supported + + if dg.cmd_log_in_to_dg(): + dg.rtc.cmd_set_rtc_time_and_date(current_time.tm_sec, + current_time.tm_min, + current_time.tm_hour, + current_time.tm_mday, + current_time.tm_mon, + current_time.tm_year) + print("Successfully set DG rtc")