summaryrefslogtreecommitdiffstats
path: root/glucometerutils/support/contourusb.py
diff options
context:
space:
mode:
Diffstat (limited to 'glucometerutils/support/contourusb.py')
-rw-r--r--glucometerutils/support/contourusb.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/glucometerutils/support/contourusb.py b/glucometerutils/support/contourusb.py
index 9afb79d..6cd9442 100644
--- a/glucometerutils/support/contourusb.py
+++ b/glucometerutils/support/contourusb.py
@@ -15,13 +15,13 @@ import csv
import datetime
import logging
import re
-from typing import Dict, Iterator, List, Text
+from typing import Dict, Iterator, List, Optional, Text, Tuple
import construct
from glucometerutils import exceptions
from glucometerutils.exceptions import InvalidResponse
-from glucometerutils.support import hiddevice
+from glucometerutils.support import driver_base, hiddevice
# regexr.com/4k6jb
_HEADER_RECORD_RE = re.compile(
@@ -64,7 +64,7 @@ class FrameError(Exception):
pass
-class ContourHidDevice(hiddevice.HidDevice):
+class ContourHidDevice(driver_base.GlucometerDriver):
"""Base class implementing the ContourUSB HID common protocol.
"""
@@ -77,11 +77,16 @@ class ContourHidDevice(hiddevice.HidDevice):
mode_command = object()
state = None
+ def __init__(self, usb_ids, device_path):
+ # type: (Tuple[int, int], Optional[Text]) -> None
+ super().__init__(device_path)
+ self._hid_session = hiddevice.HidSession(usb_ids, device_path)
+
def read(self, r_size=blocksize):
result = []
while True:
- data = self._read()
+ data = self._hid_session.read()
dstr = data
result.append(dstr[4 : data[3] + 4])
if data[3] != self.blocksize - 4:
@@ -94,7 +99,7 @@ class ContourHidDevice(hiddevice.HidDevice):
pad_length = self.blocksize - len(data)
data += pad_length * b"\x00"
- self._write(data)
+ self._hid_session.write(data)
USB_VENDOR_ID = 0x1A79 # type: int # Bayer Health Care LLC Contour
USB_PRODUCT_ID = 0x6002 # type: int