mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #7036 from maciejbocianski/hal_ticker_feature_merging
tests-mbed_hal-sleep fixpull/7231/head
commit
d66dfcb13a
|
@ -14,7 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if 1 || !DEVICE_SLEEP
|
#if !DEVICE_SLEEP
|
||||||
#error [NOT_SUPPORTED] sleep not supported for this target
|
#error [NOT_SUPPORTED] sleep not supported for this target
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -37,7 +37,12 @@ using namespace utest::v1;
|
||||||
|
|
||||||
/* Used for regular sleep mode, a target should be awake within 10 us. Define us delta value as follows:
|
/* Used for regular sleep mode, a target should be awake within 10 us. Define us delta value as follows:
|
||||||
* delta = default 10 us + worst ticker resolution + extra time for code execution */
|
* delta = default 10 us + worst ticker resolution + extra time for code execution */
|
||||||
|
#if defined(MBED_CPU_STATS_ENABLED)
|
||||||
|
/* extra 25us for stats computation (for more details see MBED_CPU_STATS_ENABLED) */
|
||||||
|
static const uint32_t sleep_mode_delta_us = (10 + 4 + 5 + 25);
|
||||||
|
#else
|
||||||
static const uint32_t sleep_mode_delta_us = (10 + 4 + 5);
|
static const uint32_t sleep_mode_delta_us = (10 + 4 + 5);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Used for deep-sleep mode, a target should be awake within 10 ms. Define us delta value as follows:
|
/* Used for deep-sleep mode, a target should be awake within 10 ms. Define us delta value as follows:
|
||||||
* delta = default 10 ms + worst ticker resolution + extra time for code execution */
|
* delta = default 10 ms + worst ticker resolution + extra time for code execution */
|
||||||
|
@ -98,13 +103,23 @@ void lp_ticker_isr(const ticker_data_t *const ticker_data)
|
||||||
* high frequency ticker interrupt can wake-up target from sleep. */
|
* high frequency ticker interrupt can wake-up target from sleep. */
|
||||||
void sleep_usticker_test()
|
void sleep_usticker_test()
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
const ticker_data_t * ticker = get_us_ticker_data();
|
const ticker_data_t * ticker = get_us_ticker_data();
|
||||||
const unsigned int ticker_freq = ticker->interface->get_info()->frequency;
|
const unsigned int ticker_freq = ticker->interface->get_info()->frequency;
|
||||||
const unsigned int ticker_width = ticker->interface->get_info()->bits;
|
const unsigned int ticker_width = ticker->interface->get_info()->bits;
|
||||||
|
|
||||||
const ticker_irq_handler_type us_ticker_irq_handler_org = set_us_ticker_irq_handler(us_ticker_isr);
|
const ticker_irq_handler_type us_ticker_irq_handler_org = set_us_ticker_irq_handler(us_ticker_isr);
|
||||||
|
|
||||||
|
// call ticker_read_us to initialize ticker upper layer
|
||||||
|
// prevents subsequent scheduling of max_delta interrupt during ticker initialization while test execution
|
||||||
|
// (e.g when ticker_read_us is called)
|
||||||
|
ticker_read_us(ticker);
|
||||||
|
#ifdef DEVICE_LPTICKER
|
||||||
|
// call ticker_read_us to initialize lp_ticker
|
||||||
|
// prevents scheduling interrupt during ticker initialization (in lp_ticker_init) while test execution
|
||||||
|
// (e.g when ticker_read_us is called for lp_ticker, see MBED_CPU_STATS_ENABLED)
|
||||||
|
ticker_read_us(get_lp_ticker_data());
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Test only sleep functionality. */
|
/* Test only sleep functionality. */
|
||||||
sleep_manager_lock_deep_sleep();
|
sleep_manager_lock_deep_sleep();
|
||||||
TEST_ASSERT_FALSE_MESSAGE(sleep_manager_can_deep_sleep(), "deep sleep should be locked");
|
TEST_ASSERT_FALSE_MESSAGE(sleep_manager_can_deep_sleep(), "deep sleep should be locked");
|
||||||
|
@ -130,7 +145,6 @@ void sleep_usticker_test()
|
||||||
|
|
||||||
sleep_manager_unlock_deep_sleep();
|
sleep_manager_unlock_deep_sleep();
|
||||||
TEST_ASSERT_TRUE(sleep_manager_can_deep_sleep());
|
TEST_ASSERT_TRUE(sleep_manager_can_deep_sleep());
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEVICE_LPTICKER
|
#ifdef DEVICE_LPTICKER
|
||||||
|
@ -143,6 +157,11 @@ void deepsleep_lpticker_test()
|
||||||
const unsigned int ticker_freq = ticker->interface->get_info()->frequency;
|
const unsigned int ticker_freq = ticker->interface->get_info()->frequency;
|
||||||
const unsigned int ticker_width = ticker->interface->get_info()->bits;
|
const unsigned int ticker_width = ticker->interface->get_info()->bits;
|
||||||
|
|
||||||
|
// call ticker_read_us to initialize ticker upper layer
|
||||||
|
// prevents subsequent scheduling of max_delta interrupt during ticker initialization while test execution
|
||||||
|
// (e.g when ticker_read_us is called)
|
||||||
|
ticker_read_us(ticker);
|
||||||
|
|
||||||
const ticker_irq_handler_type lp_ticker_irq_handler_org = set_lp_ticker_irq_handler(lp_ticker_isr);
|
const ticker_irq_handler_type lp_ticker_irq_handler_org = set_lp_ticker_irq_handler(lp_ticker_isr);
|
||||||
|
|
||||||
/* Give some time Green Tea to finish UART transmission before entering
|
/* Give some time Green Tea to finish UART transmission before entering
|
||||||
|
|
Loading…
Reference in New Issue