Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ supported.
| Abbott | FreeStyle Optium Neo | `fsprecisionneo` | [freestyle-hid] [hidapi]‡ |
| Abbott | FreeStyle Optium Neo H | `fsprecisionneo` | [freestyle-hid] [hidapi]‡ |
| Roche | Accu-Chek Mobile | `accuchek_reports` | |
| Roche | Accu-Chek Guide / Relion Platinum | `accuchek_guide` | [pyusb] |
| SD Biosensor | SD CodeFree | `sdcodefree` | [construct] [pyserial] |
| TaiDoc | TD-4277 | `td42xx` | [construct] [pyserial]² [hidapi] |
| TaiDoc | TD-4235B | `td42xx` | [construct] [pyserial]² [hidapi] |
Expand Down
55 changes: 55 additions & 0 deletions glucometerutils/drivers/accuchek_guide.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
#
# SPDX-FileCopyrightText: © 2026 The glucometerutils Authors
# SPDX-License-Identifier: MIT
"""Driver for Accu-Chek Guide and compatible USB devices.

Supported features:
- get readings (blood glucose);
- get basic device info (model, serial if available).

Expected device path: optional; if provided, use vid:pid (hex or decimal).
"""

import datetime
from collections.abc import Generator
from typing import NoReturn, Optional

from glucometerutils import common, driver
from glucometerutils.support import accuchek_guide


class Device(driver.GlucometerDevice):
def __init__(self, device: Optional[str]) -> None:
self._session = accuchek_guide.AccuChekGuideSession(device)

def connect(self) -> None:
self._session.open()

def disconnect(self) -> None:
self._session.close()

def get_meter_info(self) -> common.MeterInfo:
return common.MeterInfo(
self._session.get_model_name(),
serial_number=self._session.get_serial_number(),
native_unit=self.get_glucose_unit(),
)

def get_serial_number(self) -> str:
return self._session.get_serial_number()

def get_glucose_unit(self) -> common.Unit:
return common.Unit.MG_DL

def get_datetime(self) -> NoReturn: # pylint: disable=no-self-use
raise NotImplementedError

def _set_device_datetime(self, date: datetime.datetime) -> NoReturn:
raise NotImplementedError

def zero_log(self) -> NoReturn: # pylint: disable=no-self-use
raise NotImplementedError

def get_readings(self) -> Generator[common.AnyReading, None, None]:
yield from self._session.download_readings()
Loading