From 2f697eb803f523380f95cd18d8f1fef85afa73ef Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Sun, 19 May 2019 19:47:28 +0100 Subject: fsprecisionneo: Scale ketone readings to mmol/l The FreeStyle Optimum Neo reports ketones in using the same unit as FreeStyle Libre. Move the conversion function from fslibre.py to freestyle.py to facilitate sharing and do the right conversion in fsprecisionneo.py. --- glucometerutils/drivers/fslibre.py | 14 +------------- glucometerutils/drivers/fsprecisionneo.py | 8 +++++++- 2 files changed, 8 insertions(+), 14 deletions(-) (limited to 'glucometerutils/drivers') diff --git a/glucometerutils/drivers/fslibre.py b/glucometerutils/drivers/fslibre.py index 5031a04..85bfdab 100644 --- a/glucometerutils/drivers/fslibre.py +++ b/glucometerutils/drivers/fslibre.py @@ -101,18 +101,6 @@ def _extract_timestamp(parsed_record, prefix=''): parsed_record[prefix + 'second']) -def _convert_ketone_unit(raw_value): - """Convert raw ketone value as read in the device to its value in mmol/L. - - As per - https://flameeyes.github.io/glucometer-protocols/abbott/freestyle-libre.html - this is actually not using any mg/dL→mmol/L conversion, but rather the same - as the meter uses for blood glucose. - - """ - return raw_value // 18 - - def _parse_arresult(record): """Takes an array of string fields as input and parses it into a Reading.""" @@ -160,7 +148,7 @@ def _parse_arresult(record): measure_method = common.MeasurementMethod.BLOOD_SAMPLE cls = common.KetoneReading # automatically convert the raw value in mmol/L - value = _convert_ketone_unit(parsed_record['value']) + value = freestyle.convert_ketone_unit(parsed_record['value']) else: # unknown reading return None diff --git a/glucometerutils/drivers/fsprecisionneo.py b/glucometerutils/drivers/fsprecisionneo.py index b818f8f..15be65c 100644 --- a/glucometerutils/drivers/fsprecisionneo.py +++ b/glucometerutils/drivers/fsprecisionneo.py @@ -89,4 +89,10 @@ class Device(freestyle.FreeStyleHidDevice): raw_reading.year + 2000, raw_reading.month, raw_reading.day, raw_reading.hour, raw_reading.minute) - yield cls(timestamp, raw_reading.value) + if record and record[0] == _TYPE_KETONE_READING: + value = freestyle.convert_ketone_unit(raw_reading.value) + else: + value = raw_reading.value + + yield cls(timestamp, value) + -- cgit v1.2.3