From 66f1115c8ef3dfb8cb7605d6cf60bb5f468ff37d Mon Sep 17 00:00:00 2001 From: Ben West Date: Mon, 24 Nov 2014 17:59:47 -0800 Subject: export sensor records --- dexcom_reader/database_records.py | 34 ++++++++++++++++++++++++++++++++++ dexcom_reader/readdata.py | 1 + 2 files changed, 35 insertions(+) (limited to 'dexcom_reader') diff --git a/dexcom_reader/database_records.py b/dexcom_reader/database_records.py index bde0c67..58ec2a8 100644 --- a/dexcom_reader/database_records.py +++ b/dexcom_reader/database_records.py @@ -2,6 +2,7 @@ import crc16 import constants import struct import util +import binascii class BaseDatabaseRecord(object): @@ -96,6 +97,14 @@ class InsertionRecord(GenericTimestampedRecord): return '%s: state=%s' % (self.display_time, self.session_state) +class Calibration(GenericTimestampedRecord): + @property + def raw(self): + return binascii.hexlify(bytearray(self.data)) + + def __repr__(self): + return '%s: CAL SET:%s' % (self.display_time, self.raw) + class MeterRecord(GenericTimestampedRecord): FORMAT = '<2IHIH' @@ -145,6 +154,31 @@ class EventRecord(GenericTimestampedRecord): return '%s: event_type=%s sub_type=%s value=%s' % (self.display_time, self.event_type, self.event_sub_type, self.event_value) +class SensorRecord(GenericTimestampedRecord): + # uint, uint, uint, uint, ushort + # (system_seconds, display_seconds, unfiltered, filtered, rssi, crc) + FORMAT = '<2IIIHH' + # (unfiltered, filtered, rssi) + @property + def unfiltered(self): + return self.data[2] + + @property + def filtered(self): + return self.data[3] + + @property + def rssi(self): + return self.data[3] + + def to_dict (self): + return dict(display_time=self.display_time + , system_time=self.system_time + , unfiltered=self.unfiltered + , filtered=self.filtered + , rssi=self.rssi + ) + class EGVRecord(GenericTimestampedRecord): # uint, uint, ushort, byte, ushort diff --git a/dexcom_reader/readdata.py b/dexcom_reader/readdata.py index f398407..b08e5fa 100644 --- a/dexcom_reader/readdata.py +++ b/dexcom_reader/readdata.py @@ -235,6 +235,7 @@ class Dexcom(object): 'METER_DATA': database_records.MeterRecord, 'INSERTION_TIME': database_records.InsertionRecord, 'EGV_DATA': database_records.EGVRecord, + 'SENSOR_DATA': database_records.SensorRecord, } xml_parsed = ['PC_SOFTWARE_PARAMETER', 'MANUFACTURING_DATA'] if record_type in generic_parser_map: -- cgit v1.2.3