From 1d0bd573265bd72f311a44b22d364238b274cb54 Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Fri, 23 May 2025 20:33:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B7=D0=B0=D0=BF=D1=83=D1=81?= =?UTF-8?q?=D0=BA=20ble=20=D0=BF=D1=80=D0=B8=20=D0=BE=D1=82=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D0=B8,=20=D1=87=D1=82=D0=BE?= =?UTF-8?q?=D0=B1=D1=8B=20=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=20=D0=B1=D1=8B?= =?UTF-8?q?=D0=BB=D0=BE=20=D0=BF=D0=BE=D0=B2=D1=82=D0=BE=D1=80=D0=BD=D0=BE?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E=D1=87=D0=B8=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=BA=20=D0=BC=D1=8B=D1=88=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit добаволено моргание как при подключении, так и при отключении --- mouse/mouse.ino | 58 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/mouse/mouse.ino b/mouse/mouse.ino index 10ca762..ad067f7 100644 --- a/mouse/mouse.ino +++ b/mouse/mouse.ino @@ -75,17 +75,7 @@ void setup() { #ifdef RGB_LED ledControl.forceColor(255, 0, 0); // Красный #endif//RGB_LED - // Запуск BLE мыши (HID) - bleMouse.init(); -#ifdef RGB_LED -#ifndef DISABLE_RGB_UUID - // Создаём BLE-сервис для подстветки - ledControl.setupBLEService(bleMouse.server); -#endif//DISABLE_RGB_UUID -#endif//RGB_LED - // Запуск BLE мыши (HID) - bleMouse.begin(); - // BLE готов — красный + ble_init(); //---------Инициализация USB — синий------------ #ifdef RGB_LED @@ -102,7 +92,7 @@ void setup() { } void loop() { - handleBleConnectionBlink(); + handleBleConnection(); #ifndef DISABLE_USB // чтение мыши usbHost.task(); @@ -130,28 +120,60 @@ void loop() { } } #endif + + + // --- повторный запуск BLE, если отключение --- + static bool wasConnected = false; + bool currentlyConnected = bleMouse.isConnected(); + if (wasConnected && !currentlyConnected) { + Serial.println("BLE disconnected, restarting advertising..."); + bleMouse.begin(); // запускаем advertising снова + } + wasConnected = currentlyConnected; +} + + +void ble_init() +{ + // Запуск BLE мыши (HID) + bleMouse.init(); +#ifdef RGB_LED +#ifndef DISABLE_RGB_UUID + // Создаём BLE-сервис для подстветки + ledControl.setupBLEService(bleMouse.server); +#endif//DISABLE_RGB_UUID +#endif//RGB_LED + // Запуск BLE мыши (HID) + bleMouse.begin(); } bool lastBleStatus = false; bool blinkInProgress = false; unsigned long blinkStartTime = 0; const unsigned long blinkDuration = 250; // длительность моргания (мс) -void handleBleConnectionBlink() { +void handleBleConnection() { bool currentStatus = bleMouse.isConnected(); - // Обнаружили подключение - if (currentStatus && !lastBleStatus) { + // --- обработка изменения статуса подключения --- + if (currentStatus != lastBleStatus) { + // Визуальная вспышка blinkInProgress = true; blinkStartTime = millis(); ledControl.forceBrightness(100); // максимальная яркость - ledControl.forceColor(255, 255, 255); // белая вспышка + ledControl.forceColor(255, 255, 255); // белый + + // перезапуск ble если мышка отключена + if (!currentStatus) { + BLEDevice::deinit(true); // true — полное удаление и перезапуск + ble_init(); + } } // Завершаем вспышку if (blinkInProgress && (millis() - blinkStartTime > blinkDuration)) { blinkInProgress = false; - ledControl.applyColor(); // восстанавливаем предыдущий цвет + ledControl.applyColor(); // восстановить предыдущий цвет } lastBleStatus = currentStatus; -} +} \ No newline at end of file