fix sleep mode oddities

This commit is contained in:
cyberman54 2022-11-13 22:27:06 +01:00
parent 73c02dea56
commit fa1d29c627
7 changed files with 8 additions and 9 deletions

View File

@ -518,7 +518,7 @@ Send for example `83` `86` as Downlink on Port 2 to get battery status and time/
0x19 set sleep cycle
bytes 1..2 = device sleep cycle in seconds/10 (MSB), 1 ... 255
e.g. {0x04, 0xB0} -> device sleeps 20 minutes after each send cycle [default = 0]
e.g. {0x04, 0xB0} -> device sleeps 200 minutes after each send cycle [default = 0]
0x20 load device configuration

View File

@ -25,7 +25,7 @@ extern char lmic_event_msg[LMIC_EVENTMSG_LEN]; // display buffer
esp_err_t lmic_init(void);
void lora_setupForNetwork(bool preJoin);
void SaveLMICToRTC(int deepsleep_sec);
void SaveLMICToRTC(uint32_t deepsleep_sec);
void LoadLMICFromRTC();
void lmictask(void *pvParameters);
void gen_lora_deveui(uint8_t *pdeveui);

View File

@ -14,8 +14,7 @@
void reset_rtc_vars(void);
void do_reset(bool warmstart);
void do_after_reset(void);
void enter_deepsleep(const uint64_t wakeup_sec = 60,
const gpio_num_t wakeup_gpio = GPIO_NUM_MAX);
void enter_deepsleep(const uint32_t wakeup_sec, const gpio_num_t wakeup_gpio);
unsigned long long uptime(void);
enum runmode_t {

View File

@ -76,9 +76,9 @@ void irqHandler(void *pvParameters) {
// goto sleep if we have a sleep cycle
if (cfg.sleepcycle)
#ifdef HAS_BUTTON
enter_deepsleep(cfg.sleepcycle * 10, (gpio_num_t)HAS_BUTTON);
enter_deepsleep(cfg.sleepcycle * 10UL, (gpio_num_t)HAS_BUTTON);
#else
enter_deepsleep(cfg.sleepcycle * 10);
enter_deepsleep(cfg.sleepcycle * 10UL, GPIO_NUM_MAX);
#endif
}
} // for

View File

@ -501,7 +501,7 @@ bool ttn_rtc_restore() {
// following code includes snippets taken from
// https://github.com/JackGruber/ESP32-LMIC-DeepSleep-example/blob/master/src/main.cpp
void SaveLMICToRTC(int deepsleep_sec) {
void SaveLMICToRTC(uint32_t deepsleep_sec) {
// ESP32 can't track millis during DeepSleep and no option to advance
// millis after DeepSleep. Therefore reset DutyCyles before saving LMIC struct

View File

@ -57,7 +57,7 @@ void AXP192_powerevent_IRQ(void) {
#ifdef HAS_BUTTON
// short press -> esp32 deep sleep mode, must be exited by user button
if (pmu.isPekeyShortPressIrq())
enter_deepsleep(0, HAS_BUTTON);
enter_deepsleep(0UL, HAS_BUTTON);
#endif
pmu.clearIrqStatus();

View File

@ -84,7 +84,7 @@ void do_after_reset(void) {
}
}
void enter_deepsleep(const uint64_t wakeup_sec, gpio_num_t wakeup_gpio) {
void enter_deepsleep(const uint32_t wakeup_sec, gpio_num_t wakeup_gpio) {
ESP_LOGI(TAG, "Preparing to sleep...");
RTC_runmode = RUNMODE_SLEEP;