Index: dialin/hd/battery.py =================================================================== diff -u -re06884d51e6508a6cafc47673a1a9908459d6b6d -r557df227e82c2e06a8130385f1c22b604ce91a62 --- dialin/hd/battery.py (.../battery.py) (revision e06884d51e6508a6cafc47673a1a9908459d6b6d) +++ dialin/hd/battery.py (.../battery.py) (revision 557df227e82c2e06a8130385f1c22b604ce91a62) @@ -23,13 +23,14 @@ from ..utils.checks import check_broadcast_interval_override_ms from ..utils.conversions import integer_to_bytearray, float_to_bytearray -BATTERY_MAH_2_MWH_FACTOR = 14.7 #< Conversion factor for mAh to mWh. class HDBattery(AbstractSubSystem): """ Hemodialysis Delivery (HD) Dialin API sub-class for battery subsystem. """ + _BATTERY_MAH_2_MWH_FACTOR = 14.7 # < Conversion factor for mAh to mWh. + def __init__(self, can_interface, logger: Logger): """ HDBattery constructor @@ -46,12 +47,12 @@ msg_id = MsgIds.MSG_ID_HD_BATTERY_STATUS_DATA.value self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_battery_status_sync) - #values from battery status message + # values from battery status message self.RemainingCapacity = 0 self.BatteryStatus = 0 self.BatteryChargerStatus = 0 - #values from battery manager message + # values from battery manager message self.RemainingCapacityAlarm = 0 self.RemainingTimeAlarm = 0 self.BatteryMode = 0 @@ -117,10 +118,6 @@ [self.ManufacturerName, "ManufacturerName", "string", None], [self.DeviceName, "DeviceName", "string", None], [self.DeviceChemistry, "DeviceChemistry", "string", None]] - - """@publish([ - ]) - """ def get_battery_status_values(self): """ @@ -131,6 +128,11 @@ return self.status_values def get_battery_remaining_capacity(self): + """ + Gets the remaining capacity + + @return: battery remaining capacity + """ return self.status_values[0][0] def get_battery_manager_values(self): @@ -141,7 +143,7 @@ """ return self.manager_values - + @publish(['RemainingCapacity', 'BatteryStatus', 'BatteryChargerStatus']) def _handler_battery_status_sync(self, message): """ Handles published battery data messages. Battery data are captured @@ -150,14 +152,14 @@ @param message: published battery data message @return: none """ - #first unpack all of the values into byte arrays + # first unpack all of the values into byte arrays index = 6 - field_size = 4 #32 bit unsigned integers + field_size = 4 # 32 bit unsigned integers for value in self.status_values: value[0] = bytearray(message['message'][index:index+field_size]) index += field_size - #parse according to type of data + # parse according to type of data for value in self.status_values: if value[2] == "int": value[0] = struct.unpack('HH', value[0])[0] @@ -175,17 +177,16 @@ if temp > 0: value[0] = "True" elif value[2] == "bits": - #convert integer to string representing bits + # convert integer to string representing bits temp = struct.unpack('HH', value[0])[0] value[0] = format(temp, 'b') - #print out the converted values - # for value in self.status_values: - # units = value[3] - # if not units: - # units = "" - # print (value[1], value[0], units) - + @publish(['RemainingCapacityAlarm', 'RemainingTimeAlarm', 'BatteryMode', 'AtRate', 'AtRateTimeToFull', + 'AtRateTimeToEmpty', 'AtRateOK', 'Temperature', 'Voltage', 'Current', 'AverageCurrent', 'MaxError', + 'RelativeStateOfCharge', 'AbsoluteStateOfCharge', 'FullChargeCapacity', 'RunTimeToEmpty', + 'AverageTimeToEmpty', 'AverageTimeToFull', 'ChargingCurrent', 'ChargingVoltage', 'CycleCount', + 'DesignCapacity', 'DesignVoltage', 'SpecificationInfo', 'ManufactureDate', 'SerialNumber', + 'ManufacturerName', 'DeviceName', 'DeviceChemistry']) def _handler_battery_manager_sync(self, message): """ Handles published battery data messages. Battery data are captured @@ -194,21 +195,20 @@ @param message: published battery data message @return: none """ - #first unpack all of the values into byte arrays + # first unpack all of the values into byte arrays index = 6 - #print(message) - field_size = 4 #32 bit unsigned integers + field_size = 4 # 32 bit unsigned integers for value in self.manager_values: value[0] = bytearray(message['message'][index:index+field_size]) index += field_size - #parse according to type of data + # parse according to type of data for value in self.manager_values: if value[2] == "int": value[0] = struct.unpack('HH', value[0])[0] if value[2] == "mah": temp = struct.unpack('HH', value[0])[0] - value[0] = temp * BATTERY_MAH_2_MWH_FACTOR + value[0] = temp * self._BATTERY_MAH_2_MWH_FACTOR elif value[2] == "string": value[0] = struct.unpack('s', value[0]) elif value[2] == "temperature": @@ -220,17 +220,10 @@ if temp > 0: value[0] = "True" elif value[2] == "bits": - #convert integer to string representing bits + # convert integer to string representing bits temp = struct.unpack('HH', value[0])[0] value[0] = format(temp, 'b') - #print out the converted values - # for value in self.manager_values: - # units = value[3] - # if not units: - # units = "" - # print (value[1], value[0], units) - def cmd_battery_remaining_capacity_override(self, mWh: float, reset: int = NO_RESET) -> int: """ Constructs and sends the battery remaining capacity (in mWh) override \n