Skip to content

SysTimer should be buildable without lp ticker #10597

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 22, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions TESTS/mbedmicro-rtos-mbed/systimer/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@
#error [NOT_SUPPORTED] Tickless mode not supported for this target.
#endif

#if !DEVICE_LPTICKER
#error [NOT_SUPPORTED] Current SysTimer implementation requires lp ticker support.
#endif

#include "mbed.h"
#include "greentea-client/test_env.h"
#include "unity.h"
Expand Down
14 changes: 11 additions & 3 deletions rtos/TARGET_CORTEX/SysTimer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@
*/
#include "rtos/TARGET_CORTEX/SysTimer.h"

#if DEVICE_LPTICKER
#if MBED_TICKLESS

#include "hal/us_ticker_api.h"
#include "hal/lp_ticker_api.h"
#include "mbed_critical.h"
#include "mbed_assert.h"
Expand Down Expand Up @@ -58,7 +59,12 @@ namespace rtos {
namespace internal {

SysTimer::SysTimer() :
TimerEvent(get_lp_ticker_data()), _time_us(0), _tick(0)
#if DEVICE_LPTICKER
TimerEvent(get_lp_ticker_data()),
#else
TimerEvent(get_us_ticker_data()),
#endif
_time_us(0), _tick(0)
{
_time_us = ticker_read_us(_ticker_data);
_suspend_time_passed = true;
Expand All @@ -69,6 +75,8 @@ SysTimer::SysTimer(const ticker_data_t *data) :
TimerEvent(data), _time_us(0), _tick(0)
{
_time_us = ticker_read_us(_ticker_data);
_suspend_time_passed = true;
_suspended = false;
}

void SysTimer::setup_irq()
Expand Down Expand Up @@ -194,4 +202,4 @@ void SysTimer::handler()
}
}

#endif
#endif // MBED_TICKLESS
2 changes: 1 addition & 1 deletion rtos/TARGET_CORTEX/SysTimer.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
#ifndef MBED_SYS_TIMER_H
#define MBED_SYS_TIMER_H

#if DEVICE_LPTICKER || defined(DOXYGEN_ONLY)
#if MBED_TICKLESS || defined(DOXYGEN_ONLY)

#include "platform/NonCopyable.h"
#include "drivers/TimerEvent.h"
Expand Down
15 changes: 9 additions & 6 deletions rtos/TARGET_CORTEX/mbed_rtx_idle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,13 @@ extern "C" {

#ifdef MBED_TICKLESS

MBED_STATIC_ASSERT(!MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER || DEVICE_USTICKER,
"Microsecond ticker required when MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER is true");
MBED_STATIC_ASSERT(MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER || DEVICE_LPTICKER,
"Low power ticker required when MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER is false");
#if MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER && !DEVICE_USTICKER
#error Microsecond ticker required when MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER is true
#endif

#if !MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER && !DEVICE_LPTICKER
#error Low power ticker required when MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER is false
#endif

#include "rtos/TARGET_CORTEX/SysTimer.h"

Expand Down Expand Up @@ -137,7 +140,7 @@ extern "C" {
}


#else
#else // MBED_TICKLESS

static void default_idle_hook(void)
{
Expand All @@ -149,7 +152,7 @@ extern "C" {
core_util_critical_section_exit();
}

#endif // (defined(MBED_TICKLESS) && DEVICE_LPTICKER)
#endif // MBED_TICKLESS

static void (*idle_hook_fptr)(void) = &default_idle_hook;

Expand Down