summaryrefslogtreecommitdiff
path: root/dexcom_reader/readdata.py
diff options
context:
space:
mode:
Diffstat (limited to 'dexcom_reader/readdata.py')
-rw-r--r--dexcom_reader/readdata.py47
1 files changed, 43 insertions, 4 deletions
diff --git a/dexcom_reader/readdata.py b/dexcom_reader/readdata.py
index 3009f37..cc02de3 100644
--- a/dexcom_reader/readdata.py
+++ b/dexcom_reader/readdata.py
@@ -151,12 +151,19 @@ class Dexcom(object):
151 return util.ReceiverTimeToTime(struct.unpack('I', rtc)[0]) 151 return util.ReceiverTimeToTime(struct.unpack('I', rtc)[0])
152 152
153 def ReadSystemTimeOffset(self): 153 def ReadSystemTimeOffset(self):
154 rtc = self.GenericReadCommand(constants.READ_SYSTEM_TIME_OFFSET).data 154 raw = self.GenericReadCommand(constants.READ_SYSTEM_TIME_OFFSET).data
155 return datetime.timedelta(seconds=struct.unpack('i', rtc)[0]) 155 return datetime.timedelta(seconds=struct.unpack('i', raw)[0])
156 156
157 def ReadDisplayTimeOffset(self): 157 def ReadDisplayTimeOffset(self):
158 rtc = self.GenericReadCommand(constants.READ_DISPLAY_TIME_OFFSET).data 158 raw = self.GenericReadCommand(constants.READ_DISPLAY_TIME_OFFSET).data
159 return datetime.timedelta(seconds=struct.unpack('i', rtc)[0]) 159 return datetime.timedelta(seconds=struct.unpack('i', raw)[0])
160
161 def WriteDisplayTimeOffset(self, offset=None):
162 payload = struct.pack('i', offset)
163 self.WriteCommand(constants.WRITE_DISPLAY_TIME_OFFSET, payload)
164 packet = self.readpacket()
165 return dict(ACK=ord(packet.command) == constants.ACK)
166
160 167
161 def ReadDisplayTime(self): 168 def ReadDisplayTime(self):
162 return self.ReadSystemTime() + self.ReadDisplayTimeOffset() 169 return self.ReadSystemTime() + self.ReadDisplayTimeOffset()
@@ -172,8 +179,40 @@ class Dexcom(object):
172 return CLOCK_MODE[ord(cm[0])] 179 return CLOCK_MODE[ord(cm[0])]
173 180
174 def ReadDeviceMode(self): 181 def ReadDeviceMode(self):
182 # ???
175 return self.GenericReadCommand(constants.READ_DEVICE_MODE).data 183 return self.GenericReadCommand(constants.READ_DEVICE_MODE).data
176 184
185 def ReadBlindedMode(self):
186 MODES = { 0: False }
187 raw = self.GenericReadCommand(constants.READ_BLINDED_MODE).data
188 mode = MODES.get(bytearray(raw)[0], True)
189 return mode
190
191 def ReadHardwareBoardId(self):
192 return self.GenericReadCommand(constants.READ_HARDWARE_BOARD_ID).data
193
194 def ReadEnableSetupWizardFlag (self):
195 # ???
196 return self.GenericReadCommand(constants.READ_ENABLE_SETUP_WIZARD_FLAG).data
197
198 def ReadSetupWizardState (self):
199 # ???
200 return self.GenericReadCommand(constants.READ_SETUP_WIZARD_STATE).data
201
202 def WriteChargerCurrentSetting (self, status):
203 MAP = ( 'Off', 'Power100mA', 'Power500mA', 'PowerMax', 'PowerSuspended' )
204 payload = str(bytearray([MAP.index(status)]))
205 self.WriteCommand(constants.WRITE_CHARGER_CURRENT_SETTING, payload)
206 packet = self.readpacket()
207 raw = bytearray(packet.data)
208 return dict(ACK=ord(packet.command) == constants.ACK, raw=list(raw))
209
210 def ReadChargerCurrentSetting (self):
211 MAP = ( 'Off', 'Power100mA', 'Power500mA', 'PowerMax', 'PowerSuspended' )
212 raw = bytearray(self.GenericReadCommand(constants.READ_CHARGER_CURRENT_SETTING).data)
213 return MAP[raw[0]]
214
215
177 def ReadManufacturingData(self): 216 def ReadManufacturingData(self):
178 data = self.ReadRecords('MANUFACTURING_DATA')[0].xmldata 217 data = self.ReadRecords('MANUFACTURING_DATA')[0].xmldata
179 return ET.fromstring(data) 218 return ET.fromstring(data)