добавлен перезапуск ble при отключении, чтобы можно было повторно подключится к мышке
добаволено моргание как при подключении, так и при отключении
This commit is contained in:
parent
7dffb83d05
commit
1d0bd57326
@ -75,17 +75,7 @@ void setup() {
|
|||||||
#ifdef RGB_LED
|
#ifdef RGB_LED
|
||||||
ledControl.forceColor(255, 0, 0); // Красный
|
ledControl.forceColor(255, 0, 0); // Красный
|
||||||
#endif//RGB_LED
|
#endif//RGB_LED
|
||||||
// Запуск BLE мыши (HID)
|
ble_init();
|
||||||
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 готов — красный
|
|
||||||
|
|
||||||
//---------Инициализация USB — синий------------
|
//---------Инициализация USB — синий------------
|
||||||
#ifdef RGB_LED
|
#ifdef RGB_LED
|
||||||
@ -102,7 +92,7 @@ void setup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
handleBleConnectionBlink();
|
handleBleConnection();
|
||||||
#ifndef DISABLE_USB
|
#ifndef DISABLE_USB
|
||||||
// чтение мыши
|
// чтение мыши
|
||||||
usbHost.task();
|
usbHost.task();
|
||||||
@ -130,28 +120,60 @@ void loop() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#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 lastBleStatus = false;
|
||||||
bool blinkInProgress = false;
|
bool blinkInProgress = false;
|
||||||
unsigned long blinkStartTime = 0;
|
unsigned long blinkStartTime = 0;
|
||||||
const unsigned long blinkDuration = 250; // длительность моргания (мс)
|
const unsigned long blinkDuration = 250; // длительность моргания (мс)
|
||||||
void handleBleConnectionBlink() {
|
void handleBleConnection() {
|
||||||
bool currentStatus = bleMouse.isConnected();
|
bool currentStatus = bleMouse.isConnected();
|
||||||
|
|
||||||
// Обнаружили подключение
|
// --- обработка изменения статуса подключения ---
|
||||||
if (currentStatus && !lastBleStatus) {
|
if (currentStatus != lastBleStatus) {
|
||||||
|
// Визуальная вспышка
|
||||||
blinkInProgress = true;
|
blinkInProgress = true;
|
||||||
blinkStartTime = millis();
|
blinkStartTime = millis();
|
||||||
ledControl.forceBrightness(100); // максимальная яркость
|
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)) {
|
if (blinkInProgress && (millis() - blinkStartTime > blinkDuration)) {
|
||||||
blinkInProgress = false;
|
blinkInProgress = false;
|
||||||
ledControl.applyColor(); // восстанавливаем предыдущий цвет
|
ledControl.applyColor(); // восстановить предыдущий цвет
|
||||||
}
|
}
|
||||||
|
|
||||||
lastBleStatus = currentStatus;
|
lastBleStatus = currentStatus;
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user