Skip to content

Commit

Permalink
Merge branch 'ci/fix_test_switch_ota' into 'master'
Browse files Browse the repository at this point in the history
fix(app_update): Fix CI test_switch_ota by increasing deepsleep

See merge request espressif/esp-idf!24801
  • Loading branch information
mahavirj committed Aug 1, 2023
2 parents 6f5f7fd + f07fcbe commit 53ff7d4
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 14 deletions.
6 changes: 3 additions & 3 deletions components/app_update/test_apps/main/test_switch_ota.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
Expand Down Expand Up @@ -185,8 +185,8 @@ static void erase_ota_data(void)
static void reboot_as_deep_sleep(void)
{
ESP_LOGI(TAG, "reboot as deep sleep");
esp_sleep_enable_timer_wakeup(2000);
esp_deep_sleep_start();
esp_deep_sleep(20000);
TEST_FAIL_MESSAGE("Should never be reachable except when sleep is rejected, abort");
}

/* @brief Copies a current app to next partition (OTA0-15), after that ESP is rebooting and run this (the next) OTAx.
Expand Down
14 changes: 11 additions & 3 deletions components/esp_hw_support/include/esp_sleep.h
Original file line number Diff line number Diff line change
Expand Up @@ -426,9 +426,12 @@ esp_err_t esp_sleep_pd_config(esp_sleep_pd_domain_t domain,
/**
* @brief Enter deep sleep with the configured wakeup options
*
* This function does not return.
* @note In general, the function does not return, but if the sleep is rejected,
* then it returns from it.
*
* The reason for the rejection can be such as a short sleep time.
*/
void esp_deep_sleep_start(void) __attribute__((__noreturn__));
void esp_deep_sleep_start(void);

/**
* @brief Enter light sleep with the configured wakeup options
Expand All @@ -452,9 +455,14 @@ esp_err_t esp_light_sleep_start(void);
* Call to this function is equivalent to a call to esp_deep_sleep_enable_timer_wakeup
* followed by a call to esp_deep_sleep_start.
*
* @note In general, the function does not return, but if the sleep is rejected,
* then it returns from it.
*
* The reason for the rejection can be such as a short sleep time.
*
* @param time_in_us deep-sleep time, unit: microsecond
*/
void esp_deep_sleep(uint64_t time_in_us) __attribute__((__noreturn__));
void esp_deep_sleep(uint64_t time_in_us);


/**
Expand Down
16 changes: 8 additions & 8 deletions components/esp_hw_support/sleep_modes.c
Original file line number Diff line number Diff line change
Expand Up @@ -884,15 +884,15 @@ void IRAM_ATTR esp_deep_sleep_start(void)

// Enter sleep
if (esp_sleep_start(force_pd_flags | pd_flags, ESP_SLEEP_MODE_DEEP_SLEEP) == ESP_ERR_SLEEP_REJECT) {
ESP_EARLY_LOGW(TAG, "Deep sleep request is rejected");
}

// Because RTC is in a slower clock domain than the CPU, it
// can take several CPU cycles for the sleep mode to start.
while (1) {
;
ESP_EARLY_LOGE(TAG, "Deep sleep request is rejected");
} else {
// Because RTC is in a slower clock domain than the CPU, it
// can take several CPU cycles for the sleep mode to start.
while (1) {
;
}
}
// Never returns here
// Never returns here, except that the sleep is rejected.
esp_ipc_isr_release_other_cpu();
portEXIT_CRITICAL(&spinlock_rtc_deep_sleep);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,7 @@ static int deep_sleep(int argc, char **argv)
rtc_gpio_isolate(GPIO_NUM_12);
#endif
esp_deep_sleep_start();
return 1;
}

static void register_deep_sleep(void)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ static int deep_sleep(int argc, char **argv)
#endif //CONFIG_IDF_TARGET_ESP32

esp_deep_sleep_start();
return 1;
}

static void register_deep_sleep(void)
Expand Down

0 comments on commit 53ff7d4

Please sign in to comment.