diff --git a/src/Watchy.cpp b/src/Watchy.cpp index 98e94e3..40f6b1e 100644 --- a/src/Watchy.cpp +++ b/src/Watchy.cpp @@ -839,6 +839,7 @@ void Watchy::showUpdateFW() { } void Watchy::updateFWBegin() { + int connectionTimeOutSeconds = BLE_WAIT_FOR_CONNECTION_TIMEOUT; display.setFullWindow(); display.fillScreen(GxEPD_BLACK); display.setFont(&FreeMonoBold9pt7b); @@ -850,16 +851,33 @@ void Watchy::updateFWBegin() { display.println(" "); display.println("Waiting for"); display.println("connection..."); + display.println(String(connectionTimeOutSeconds) + " seconds timeout"); display.display(false); // full refresh BLE BT; BT.begin("Watchy BLE OTA"); int prevStatus = -1; int currentStatus; + bool checkTimeout = true; + bool proceed = true; + long startTime = millis(); + int lastTimeSeconds = 0; - while (1) { + while (proceed) { currentStatus = BT.updateStatus(); + int seconds = (millis() - startTime)/1000; + if(seconds > lastTimeSeconds) { + lastTimeSeconds = seconds; + display.print("."); + display.display(true); + } + + if (checkTimeout && lastTimeSeconds > connectionTimeOutSeconds) { + proceed = false; + } + if (prevStatus != currentStatus || prevStatus == 1) { + checkTimeout = false; if (currentStatus == 0) { display.setFullWindow(); display.fillScreen(GxEPD_BLACK); diff --git a/src/config.h b/src/config.h index f5ff21f..2ec350e 100644 --- a/src/config.h +++ b/src/config.h @@ -65,6 +65,7 @@ #define HOUR_12_24 24 // BLE OTA #define BLE_DEVICE_NAME "Watchy BLE OTA" +#define BLE_WAIT_FOR_CONNECTION_TIMEOUT 60 #define WATCHFACE_NAME "Watchy 7 Segment" #define SOFTWARE_VERSION_MAJOR 1 #define SOFTWARE_VERSION_MINOR 0