diff options
author | Andrew Cady <d@jerkface.net> | 2017-02-10 23:19:10 +0000 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2017-02-10 23:19:10 +0000 |
commit | 6b735adbead93403c46de690f4c225d0d347f452 (patch) | |
tree | 78c6f11597937fdea1f66f56f5dcd0382c24eab0 /dexcom_reader | |
parent | aed1997320c94a8acb7ad051e6297fdd112322b7 (diff) |
throw a specific exception for serial port errors
Diffstat (limited to 'dexcom_reader')
-rw-r--r-- | dexcom_reader/constants.py | 2 | ||||
-rwxr-xr-x | dexcom_reader/dexcom_dumper.py | 9 | ||||
-rw-r--r-- | dexcom_reader/readdata.py | 32 |
3 files changed, 31 insertions, 12 deletions
diff --git a/dexcom_reader/constants.py b/dexcom_reader/constants.py index 628d325..08c62ec 100644 --- a/dexcom_reader/constants.py +++ b/dexcom_reader/constants.py | |||
@@ -8,6 +8,8 @@ class Error(Exception): | |||
8 | class CrcError(Error): | 8 | class CrcError(Error): |
9 | """Failed to CRC properly.""" | 9 | """Failed to CRC properly.""" |
10 | 10 | ||
11 | class SerialPortError(Error): | ||
12 | """Error communicating with Dexcom receiver.""" | ||
11 | 13 | ||
12 | DEXCOM_G4_USB_VENDOR = 0x22a3 | 14 | DEXCOM_G4_USB_VENDOR = 0x22a3 |
13 | DEXCOM_G4_USB_PRODUCT = 0x0047 | 15 | DEXCOM_G4_USB_PRODUCT = 0x0047 |
diff --git a/dexcom_reader/dexcom_dumper.py b/dexcom_reader/dexcom_dumper.py index 0a2d8ee..18724ac 100755 --- a/dexcom_reader/dexcom_dumper.py +++ b/dexcom_reader/dexcom_dumper.py | |||
@@ -166,12 +166,9 @@ def poll(): | |||
166 | try: | 166 | try: |
167 | poll_remote() if HOST else poll_stdout() | 167 | poll_remote() if HOST else poll_stdout() |
168 | 168 | ||
169 | except ValueError as v: | 169 | except constants.SerialPortError: |
170 | if (v.args[0] == 'Attempting to use a port that is not open'): | 170 | connected(False) |
171 | connected(False) | 171 | dexcom_reconnect() |
172 | dexcom_reconnect() | ||
173 | else: | ||
174 | print_verbose('Caught error: %s' % v.args[0]) | ||
175 | sleep_verbose(10) | 172 | sleep_verbose(10) |
176 | except KeyboardInterrupt: | 173 | except KeyboardInterrupt: |
177 | print_verbose('Exiting.') | 174 | print_verbose('Exiting.') |
diff --git a/dexcom_reader/readdata.py b/dexcom_reader/readdata.py index e589b1a..84c2356 100644 --- a/dexcom_reader/readdata.py +++ b/dexcom_reader/readdata.py | |||
@@ -11,7 +11,7 @@ import re | |||
11 | import util | 11 | import util |
12 | import xml.etree.ElementTree as ET | 12 | import xml.etree.ElementTree as ET |
13 | import platform | 13 | import platform |
14 | 14 | import termios | |
15 | 15 | ||
16 | class ReadPacket(object): | 16 | class ReadPacket(object): |
17 | def __init__(self, command, data): | 17 | def __init__(self, command, data): |
@@ -74,10 +74,20 @@ class Dexcom(object): | |||
74 | return self._port | 74 | return self._port |
75 | 75 | ||
76 | def write(self, *args, **kwargs): | 76 | def write(self, *args, **kwargs): |
77 | return self.port.write(*args, **kwargs) | 77 | try: |
78 | return self.port.write(*args, **kwargs) | ||
79 | except ValueError: | ||
80 | raise constants.SerialPortError | ||
81 | except termios.error: | ||
82 | raise constants.SerialPortError | ||
78 | 83 | ||
79 | def read(self, *args, **kwargs): | 84 | def read(self, *args, **kwargs): |
80 | return self.port.read(*args, **kwargs) | 85 | try: |
86 | return self.port.read(*args, **kwargs) | ||
87 | except ValueError: | ||
88 | raise constants.SerialPortError | ||
89 | except termios.error: | ||
90 | raise constants.SerialPortError | ||
81 | 91 | ||
82 | def readpacket(self, timeout=None): | 92 | def readpacket(self, timeout=None): |
83 | total_read = 4 | 93 | total_read = 4 |
@@ -218,11 +228,21 @@ class Dexcom(object): | |||
218 | return ET.fromstring(data) | 228 | return ET.fromstring(data) |
219 | 229 | ||
220 | def flush(self): | 230 | def flush(self): |
221 | self.port.flush() | 231 | try: |
232 | self.port.flush() | ||
233 | except ValueError: | ||
234 | raise constants.SerialPortError | ||
235 | except termios.error: | ||
236 | raise constants.SerialPortError | ||
222 | 237 | ||
223 | def clear(self): | 238 | def clear(self): |
224 | self.port.flushInput() | 239 | try: |
225 | self.port.flushOutput() | 240 | self.port.flushInput() |
241 | self.port.flushOutput() | ||
242 | except ValueError: | ||
243 | raise constants.SerialPortError | ||
244 | except termios.error: | ||
245 | raise constants.SerialPortError | ||
226 | 246 | ||
227 | def GetFirmwareHeader(self): | 247 | def GetFirmwareHeader(self): |
228 | i = self.GenericReadCommand(constants.READ_FIRMWARE_HEADER) | 248 | i = self.GenericReadCommand(constants.READ_FIRMWARE_HEADER) |