read wake reason at boot
This commit is contained in:
parent
ddf47aa134
commit
2da1f623ff
@ -38,12 +38,16 @@ bool axp192_found = false;
|
|||||||
|
|
||||||
#if defined(PAYLOAD_USE_FULL)
|
#if defined(PAYLOAD_USE_FULL)
|
||||||
// includes number of satellites and accuracy
|
// includes number of satellites and accuracy
|
||||||
uint8_t txBuffer[10];
|
static uint8_t txBuffer[10];
|
||||||
#elif defined(PAYLOAD_USE_CAYENNE)
|
#elif defined(PAYLOAD_USE_CAYENNE)
|
||||||
// CAYENNE DF
|
// CAYENNE DF
|
||||||
static uint8_t txBuffer[11] = {0x03, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
static uint8_t txBuffer[11] = {0x03, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// deep sleep support
|
||||||
|
RTC_DATA_ATTR int bootCount = 0;
|
||||||
|
esp_sleep_source_t wakeCause; // the reason we booted this time
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Application
|
// Application
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
@ -240,9 +244,12 @@ void doDeepSleep()
|
|||||||
// esp_wifi_stop();
|
// esp_wifi_stop();
|
||||||
|
|
||||||
screen_off(); // datasheet says this will draw only 10ua
|
screen_off(); // datasheet says this will draw only 10ua
|
||||||
|
LMIC_shutdown(); // cleanly shutdown the radio
|
||||||
|
|
||||||
if(axp192_found) {
|
if(axp192_found) {
|
||||||
axp.setPowerOutPut(AXP192_LDO2, AXP202_OFF); // LORA radio
|
// turn on after initial testing with real hardware
|
||||||
axp.setPowerOutPut(AXP192_LDO3, AXP202_OFF); // GPS main power
|
// axp.setPowerOutPut(AXP192_LDO2, AXP202_OFF); // LORA radio
|
||||||
|
// axp.setPowerOutPut(AXP192_LDO3, AXP202_OFF); // GPS main power
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME - use an external 10k pulldown so we can leave the RTC peripherals powered off
|
// FIXME - use an external 10k pulldown so we can leave the RTC peripherals powered off
|
||||||
@ -258,17 +265,33 @@ void doDeepSleep()
|
|||||||
esp_sleep_enable_ext1_wakeup(gpioMask, ESP_EXT1_WAKEUP_ALL_LOW);
|
esp_sleep_enable_ext1_wakeup(gpioMask, ESP_EXT1_WAKEUP_ALL_LOW);
|
||||||
|
|
||||||
esp_sleep_enable_timer_wakeup(msecToWake * 1000ULL); // call expects usecs
|
esp_sleep_enable_timer_wakeup(msecToWake * 1000ULL); // call expects usecs
|
||||||
esp_deep_sleep_start(); // 0.25 mA sleep current (battery)
|
esp_deep_sleep_start(); // TBD mA sleep current (battery)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Perform power on init that we do on each wake from deep sleep
|
||||||
|
void initDeepSleep() {
|
||||||
|
bootCount++;
|
||||||
|
wakeCause = esp_sleep_get_wakeup_cause();
|
||||||
|
/*
|
||||||
|
Not using yet because we are using wake on all buttons being low
|
||||||
|
|
||||||
|
wakeButtons = esp_sleep_get_ext1_wakeup_status(); // If one of these buttons is set it was the reason we woke
|
||||||
|
if (wakeCause == ESP_SLEEP_WAKEUP_EXT1 && !wakeButtons) // we must have been using the 'all buttons rule for waking' to support busted boards, assume button one was pressed
|
||||||
|
wakeButtons = ((uint64_t)1) << buttons.gpios[0];
|
||||||
|
*/
|
||||||
|
|
||||||
|
Serial.printf("booted, wake cause %d (boot count %d)\n", wakeCause, bootCount);
|
||||||
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
// Debug
|
// Debug
|
||||||
#ifdef DEBUG_PORT
|
#ifdef DEBUG_PORT
|
||||||
DEBUG_PORT.begin(SERIAL_BAUD);
|
DEBUG_PORT.begin(SERIAL_BAUD);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
delay(1000);
|
initDeepSleep();
|
||||||
|
// delay(1000); FIXME - remove
|
||||||
|
|
||||||
#ifdef T_BEAM_V10
|
#ifdef T_BEAM_V10
|
||||||
Wire.begin(I2C_SDA, I2C_SCL);
|
Wire.begin(I2C_SDA, I2C_SCL);
|
||||||
@ -293,7 +316,7 @@ void setup() {
|
|||||||
gps_setup();
|
gps_setup();
|
||||||
|
|
||||||
// Show logo on first boot after removing battery
|
// Show logo on first boot after removing battery
|
||||||
if (ttn_get_count() == 0) {
|
if (bootCount == 0) {
|
||||||
screen_print(APP_NAME " " APP_VERSION, 0, 0);
|
screen_print(APP_NAME " " APP_VERSION, 0, 0);
|
||||||
screen_show_logo();
|
screen_show_logo();
|
||||||
screen_update();
|
screen_update();
|
||||||
|
Loading…
Reference in New Issue
Block a user