From feb3a7f9baafb21ab548477b2ff3c8ac1e8e80c4 Mon Sep 17 00:00:00 2001 From: Jelmer Date: Sun, 12 Feb 2023 19:44:17 +0100 Subject: [PATCH] long term sleep with mostly blank screen --- tag_fw/fw154.bin | Bin 52273 -> 52791 bytes tag_fw/fw29.bin | Bin 52721 -> 53245 bytes tag_fw/fw42.bin | Bin 51429 -> 51903 bytes tag_fw/main.c | 24 +++++++++++++++++++----- tag_fw/powermgt.c | 6 ++++++ tag_fw/powermgt.h | 12 +++++++----- tag_fw/userinterface.c | 21 +++++++++++++++++++-- tag_fw/userinterface.h | 1 + 8 files changed, 52 insertions(+), 12 deletions(-) diff --git a/tag_fw/fw154.bin b/tag_fw/fw154.bin index 087570fbd358c6787c00fc314c26dff952842888..d320a5e36323f6821cec1100ed68f7df11af33fc 100644 GIT binary patch delta 13991 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 a-LRU^&%~;0u6}ZwsVO|GQ`3*XF8UumhNEi$ diff --git a/tag_fw/fw42.bin b/tag_fw/fw42.bin index 30a13fba8460bc4cdce6188ff04f66692661f27c..b57cd1bae82cbf376af7f777d8a225554db0d180 100644 GIT binary patch delta 13423 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 J(;Z)w{0}0vSp@(9 diff --git a/tag_fw/main.c b/tag_fw/main.c index 6eef0fe3..fcc0623b 100644 --- a/tag_fw/main.c +++ b/tag_fw/main.c @@ -217,12 +217,16 @@ void mainProtocolLoop(void) { voltageCheckCounter++; // check if the battery level is below minimum, and force a redraw of the screen - if ((batteryVoltage < BATTERY_VOLTAGE_MINIMUM && !lowBatteryShown) || (noAPShown)) { + if ((lowBattery && !lowBatteryShown) || (noAPShown)) { + powerUp(INIT_EPD); // Check if we were already displaying an image if (curImgSlot != 0xFF) { + powerUp(INIT_EEPROM); drawImageFromEeprom(); + powerDown(INIT_EEPROM); } else { showAPFound(); + powerDown(INIT_EPD); } } @@ -280,18 +284,28 @@ void mainProtocolLoop(void) { } else { // not associated - powerUp(INIT_BASE | INIT_RADIO); // || INIT_GPIO | INIT_UART - + if (((scanAttempts != 0) && (scanAttempts % VOLTAGEREADING_DURING_SCAN_INTERVAL == 0)) || (scanAttempts > (INTERVAL_1_ATTEMPTS + INTERVAL_2_ATTEMPTS))) { + powerUp(INIT_BASE | INIT_EPD_VOLTREADING | INIT_RADIO); + } else { + powerUp(INIT_BASE | INIT_RADIO); // || INIT_GPIO | INIT_UART + } // try to find a working channel powerUp(INIT_RADIO); wdt30s(); currentChannel = channelSelect(); powerDown(INIT_RADIO); - if (!currentChannel && !noAPShown) { + if ((!currentChannel && !noAPShown) || (lowBattery && !lowBatteryShown) || (scanAttempts == (INTERVAL_1_ATTEMPTS + INTERVAL_2_ATTEMPTS-1))) { + powerUp(INIT_EPD); if (curImgSlot != 0xFF) { + powerUp(INIT_EEPROM); drawImageFromEeprom(); + powerDown(INIT_EEPROM); + } else if ((scanAttempts >= (INTERVAL_1_ATTEMPTS + INTERVAL_2_ATTEMPTS-1))) { + showLongTermSleep(); + powerDown(INIT_EPD); } else { - showAPFound(); + showNoAP(); + powerDown(INIT_EPD); } } diff --git a/tag_fw/powermgt.c b/tag_fw/powermgt.c index ab588160..37a8e9b1 100644 --- a/tag_fw/powermgt.c +++ b/tag_fw/powermgt.c @@ -34,6 +34,7 @@ uint8_t __xdata scanAttempts = 0; int8_t __xdata temperature = 0; uint16_t __xdata batteryVoltage = 0; +bool __xdata lowBattery = false; uint16_t __xdata longDataReqCounter = 0; uint16_t __xdata voltageCheckCounter = 0; @@ -70,6 +71,11 @@ void powerUp(uint8_t parts) { if (!(parts & INIT_GPIO)) boardInit(); batteryVoltage = epdGetBattery(); + if(batteryVoltage