diff options
Diffstat (limited to 'glucometerutils/drivers/fsprecisionneo.py')
-rw-r--r-- | glucometerutils/drivers/fsprecisionneo.py | 61 |
1 files changed, 35 insertions, 26 deletions
diff --git a/glucometerutils/drivers/fsprecisionneo.py b/glucometerutils/drivers/fsprecisionneo.py index 58564e5..909fed8 100644 --- a/glucometerutils/drivers/fsprecisionneo.py +++ b/glucometerutils/drivers/fsprecisionneo.py @@ -27,25 +27,30 @@ import datetime from glucometerutils import common from glucometerutils.support import freestyle - # The type is a string because it precedes the parsing of the object. -_TYPE_GLUCOSE_READING = '7' -_TYPE_KETONE_READING = '9' - -_NeoReading = collections.namedtuple('_NeoReading', ( - 'type', # 7 = blood glucose, 9 = blood ketone - 'id', - 'month', 'day', 'year', # year is two-digits - 'hour', 'minute', - 'unknown2', - 'value', - # Extra trailing and so-far-unused fields; so discard them: - # * for blood glucose: 10 unknown trailing fields - #'unknown3', 'unknown4', 'unknown5', 'unknown6', 'unknown7', - #'unknown8', 'unknown9', 'unknown10', 'unknown11', 'unknown12', - # * for blood ketone: 2 unknown trailing fields - #'unknown3', 'unknown4', -)) +_TYPE_GLUCOSE_READING = "7" +_TYPE_KETONE_READING = "9" + +_NeoReading = collections.namedtuple( + "_NeoReading", + ( + "type", # 7 = blood glucose, 9 = blood ketone + "id", + "month", + "day", + "year", # year is two-digits + "hour", + "minute", + "unknown2", + "value", + # Extra trailing and so-far-unused fields; so discard them: + # * for blood glucose: 10 unknown trailing fields + #'unknown3', 'unknown4', 'unknown5', 'unknown6', 'unknown7', + #'unknown8', 'unknown9', 'unknown10', 'unknown11', 'unknown12', + # * for blood ketone: 2 unknown trailing fields + #'unknown3', 'unknown4', + ), +) class Device(freestyle.FreeStyleHidDevice): @@ -56,12 +61,12 @@ class Device(freestyle.FreeStyleHidDevice): def get_meter_info(self): """Return the device information in structured form.""" return common.MeterInfo( - 'FreeStyle Precision Neo', + "FreeStyle Precision Neo", serial_number=self.get_serial_number(), - version_info=( - 'Software version: ' + self._get_version(),), + version_info=("Software version: " + self._get_version(),), native_unit=self.get_glucose_unit(), - patient_name=self.get_patient_name()) + patient_name=self.get_patient_name(), + ) def get_glucose_unit(self): # pylint: disable=no-self-use """Returns the glucose unit of the device.""" @@ -69,7 +74,7 @@ class Device(freestyle.FreeStyleHidDevice): def get_readings(self): """Iterate through the reading records in the device.""" - for record in self._get_multirecord(b'$result?'): + for record in self._get_multirecord(b"$result?"): cls = None if record and record[0] == _TYPE_GLUCOSE_READING: cls = common.GlucoseReading @@ -85,11 +90,15 @@ class Device(freestyle.FreeStyleHidDevice): if value == "HI": value = float("inf") values.append(int(value)) - raw_reading = _NeoReading._make(values[:len(_NeoReading._fields)]) + raw_reading = _NeoReading._make(values[: len(_NeoReading._fields)]) timestamp = datetime.datetime( - raw_reading.year + 2000, raw_reading.month, raw_reading.day, - raw_reading.hour, raw_reading.minute) + raw_reading.year + 2000, + raw_reading.month, + raw_reading.day, + raw_reading.hour, + raw_reading.minute, + ) if record and record[0] == _TYPE_KETONE_READING: value = freestyle.convert_ketone_unit(raw_reading.value) |