From a0af9d4b393f50dd9631938f29e45419e9439fb6 Mon Sep 17 00:00:00 2001
From: schneider <schneider@blinkenlichts.net>
Date: Tue, 16 Nov 2021 23:17:12 +0100
Subject: [PATCH] ecg: handle error when writing to BLE fails

---
 preload/apps/ecg/__init__.py | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/preload/apps/ecg/__init__.py b/preload/apps/ecg/__init__.py
index 43eed2d6..b9bad34d 100644
--- a/preload/apps/ecg/__init__.py
+++ b/preload/apps/ecg/__init__.py
@@ -177,13 +177,18 @@ class ECG:
 
     def callback_ecg(self, datasets):
         if self.ble_streaming:
+            try:
+                self.b.gatts_notify(
+                    1,
+                    self.ecg_data_handle,
+                    struct.pack(">h", self.ble_sample_count & 0xFFFF)
+                    + struct.pack(">" + ("h" * len(datasets)), *datasets),
+                )
+            except OSError:
+                pass
+
+            # We count all samples, even if we failed to send them
             self.ble_sample_count += len(datasets)
-            self.b.gatts_notify(
-                1,
-                self.ecg_data_handle,
-                struct.pack(">h", self.ble_sample_count & 0xFFFF)
-                + struct.pack(">" + ("h" * len(datasets)), *datasets),
-            )
 
             # Don't update the screen if it should be off during a connection
             if not config.get_option("BLE Disp"):
-- 
GitLab