diff --git a/minimateplus/client.py b/minimateplus/client.py index 9941bee..de61826 100644 --- a/minimateplus/client.py +++ b/minimateplus/client.py @@ -121,9 +121,10 @@ class MiniMateClient: 2. SUB 15 — serial number 3. SUB 01 — full config block (firmware, model strings) 4. SUB 1A — compliance config (record time, trigger/alarm levels, project strings) + 5. SUB 08 — event index (stored event count) Returns: - Populated DeviceInfo with compliance_config cached. + Populated DeviceInfo with compliance_config and event_count cached. Raises: ProtocolError: on any communication failure. @@ -151,6 +152,14 @@ class MiniMateClient: except ProtocolError as exc: log.warning("connect: compliance config read failed: %s — continuing", exc) + log.info("connect: reading event index (SUB 08)") + try: + idx_raw = proto.read_event_index() + device_info.event_count = _decode_event_count(idx_raw) + log.info("connect: device has %d stored event(s)", device_info.event_count) + except ProtocolError as exc: + log.warning("connect: event index read failed: %s — continuing", exc) + log.info("connect: %s", device_info) return device_info diff --git a/minimateplus/models.py b/minimateplus/models.py index 036310a..182a424 100644 --- a/minimateplus/models.py +++ b/minimateplus/models.py @@ -183,6 +183,9 @@ class DeviceInfo: # ── From SUB 1A (COMPLIANCE_CONFIG_RESPONSE) ────────────────────────────── compliance_config: Optional["ComplianceConfig"] = None # E5 response, read in connect() + # ── From SUB 08 (EVENT_INDEX_RESPONSE) ──────────────────────────────────── + event_count: Optional[int] = None # stored event count from F7 response 🔶 + def __str__(self) -> str: fw = self.firmware_version or f"?.{self.firmware_minor}" mdl = self.model or "MiniMate Plus" diff --git a/sfm/server.py b/sfm/server.py index 47ab414..09a43d0 100644 --- a/sfm/server.py +++ b/sfm/server.py @@ -145,6 +145,7 @@ def _serialise_device_info(info: DeviceInfo) -> dict: "dsp_version": info.dsp_version, "manufacturer": info.manufacturer, "model": info.model, + "event_count": info.event_count, "compliance_config": _serialise_compliance_config(info.compliance_config), }