summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen West <bewest@gmail.com>2014-11-24 17:59:47 -0800
committerBen West <bewest@gmail.com>2014-11-24 17:59:47 -0800
commit66f1115c8ef3dfb8cb7605d6cf60bb5f468ff37d (patch)
tree44efc0111104f3b5cf137fe14355e8769676d3ef
parent233f3e5ed307df775f53ccc66e5823dd0d46b75f (diff)
export sensor records
-rw-r--r--dexcom_reader/database_records.py34
-rw-r--r--dexcom_reader/readdata.py1
2 files changed, 35 insertions, 0 deletions
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
2import constants 2import constants
3import struct 3import struct
4import util 4import util
5import binascii
5 6
6 7
7class BaseDatabaseRecord(object): 8class BaseDatabaseRecord(object):
@@ -96,6 +97,14 @@ class InsertionRecord(GenericTimestampedRecord):
96 return '%s: state=%s' % (self.display_time, self.session_state) 97 return '%s: state=%s' % (self.display_time, self.session_state)
97 98
98 99
100class Calibration(GenericTimestampedRecord):
101 @property
102 def raw(self):
103 return binascii.hexlify(bytearray(self.data))
104
105 def __repr__(self):
106 return '%s: CAL SET:%s' % (self.display_time, self.raw)
107
99class MeterRecord(GenericTimestampedRecord): 108class MeterRecord(GenericTimestampedRecord):
100 FORMAT = '<2IHIH' 109 FORMAT = '<2IHIH'
101 110
@@ -145,6 +154,31 @@ class EventRecord(GenericTimestampedRecord):
145 return '%s: event_type=%s sub_type=%s value=%s' % (self.display_time, self.event_type, 154 return '%s: event_type=%s sub_type=%s value=%s' % (self.display_time, self.event_type,
146 self.event_sub_type, self.event_value) 155 self.event_sub_type, self.event_value)
147 156
157class SensorRecord(GenericTimestampedRecord):
158 # uint, uint, uint, uint, ushort
159 # (system_seconds, display_seconds, unfiltered, filtered, rssi, crc)
160 FORMAT = '<2IIIHH'
161 # (unfiltered, filtered, rssi)
162 @property
163 def unfiltered(self):
164 return self.data[2]
165
166 @property
167 def filtered(self):
168 return self.data[3]
169
170 @property
171 def rssi(self):
172 return self.data[3]
173
174 def to_dict (self):
175 return dict(display_time=self.display_time
176 , system_time=self.system_time
177 , unfiltered=self.unfiltered
178 , filtered=self.filtered
179 , rssi=self.rssi
180 )
181
148 182
149class EGVRecord(GenericTimestampedRecord): 183class EGVRecord(GenericTimestampedRecord):
150 # uint, uint, ushort, byte, ushort 184 # 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):
235 'METER_DATA': database_records.MeterRecord, 235 'METER_DATA': database_records.MeterRecord,
236 'INSERTION_TIME': database_records.InsertionRecord, 236 'INSERTION_TIME': database_records.InsertionRecord,
237 'EGV_DATA': database_records.EGVRecord, 237 'EGV_DATA': database_records.EGVRecord,
238 'SENSOR_DATA': database_records.SensorRecord,
238 } 239 }
239 xml_parsed = ['PC_SOFTWARE_PARAMETER', 'MANUFACTURING_DATA'] 240 xml_parsed = ['PC_SOFTWARE_PARAMETER', 'MANUFACTURING_DATA']
240 if record_type in generic_parser_map: 241 if record_type in generic_parser_map: