diff options
Diffstat (limited to 'dexcom_reader/readdata.py')
-rw-r--r-- | dexcom_reader/readdata.py | 47 |
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) |