Index: leahi_dialin/dd/modules/records.py =================================================================== diff -u -r5d919ffa14be669314a6a1c233ea820e7302a44a -re3abbf537274789164f2b5cdf7bded82d3533e8f --- leahi_dialin/dd/modules/records.py (.../records.py) (revision 5d919ffa14be669314a6a1c233ea820e7302a44a) +++ leahi_dialin/dd/modules/records.py (.../records.py) (revision e3abbf537274789164f2b5cdf7bded82d3533e8f) @@ -377,8 +377,8 @@ def cmd_set_system_records(self, - part_number: chr[10], - serial_number: chr[20], + part_number: str, + serial_number: str, manufacturing_location: int, manufacturing_date: int) -> int: """ @@ -420,6 +420,47 @@ can_interface = self.can_interface) + def cmd_set_service_records(self, + service_loc: int, + last_service_date: int, + service_interval_sec: int, + last_reset_time: int) -> int: + """ + Constructs and sends a command for setting the Service Records. + Constraints: + Must be logged into DD. + Must be in Service mode. + + @return: 1 if successful, zero otherwise + """ + payload_count = 0 + for e in dd_enum_repository.ServiceRecordFields: + if e != dd_enum_repository.ServiceRecordFields.NUM_OF_SERVICE_RECORD_FIELDS: + payload_count += e.datatype().size() * e.multichar_length() + payload_base = integer_to_bytearray(1) # Current Page + payload_base += integer_to_bytearray(1) # All Page Count + payload_base += integer_to_bytearray(payload_count) # Payload count in bytes + + payload = b'' + payload += byte_to_bytearray(service_loc) + payload += integer_to_bytearray(last_service_date) + payload += integer_to_bytearray(service_interval_sec) + payload += integer_to_bytearray(last_reset_time) + crc = crc16_modbus(payload) + payload += integer_to_bytearray(crc) + total_payload = payload_base + payload + + return cmd_generic_override( + payload = total_payload, + reset = None, + channel_id = CanChannels.dialin_to_dd_ch_id, + msg_id = MsgIds.MSG_ID_DD_NVM_SET_SERVICE_RECORD, + entity_name = f'New DD Service Record', + override_text = 'being set', + logger = self.logger, + can_interface = self.can_interface) + + def cmd_set_calibration_records(self, calibration_records: dict) -> int: """ Constructs and sends a command for setting the Calibration Records.