Skip to content

Commit d2d97ee

Browse files
authored
Improve support for ultra-low power scheduling, including hibernation via suspend/resume operations.
2 parents 0e77669 + 98236b3 commit d2d97ee

32 files changed

Lines changed: 5640 additions & 174 deletions

File tree

build/benchmark/eclipse/perf-stm32f407g-disc1-stk/src/main.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ extern "C" void SysTick_Handler()
3636
g_Kernel.GetPlatform()->ProcessTick();
3737
}
3838

39-
class BenchTask : public Task<_STK_BENCH_STACK_SIZE, ACCESS_PRIVILEGED>
39+
class BenchTask final : public Task<_STK_BENCH_STACK_SIZE, ACCESS_PRIVILEGED>
4040
{
4141
public:
4242
BenchTask() : m_id(~0), m_exited(false) {}
@@ -45,7 +45,7 @@ class BenchTask : public Task<_STK_BENCH_STACK_SIZE, ACCESS_PRIVILEGED>
4545
bool IsExited() const { return m_exited; }
4646

4747
private:
48-
void Run()
48+
void Run() override
4949
{
5050
uint32_t index = m_id;
5151

@@ -62,13 +62,12 @@ class BenchTask : public Task<_STK_BENCH_STACK_SIZE, ACCESS_PRIVILEGED>
6262
uint8_t m_id;
6363
volatile bool m_exited;
6464
};
65-
6665
static BenchTask g_Tasks[_STK_BENCH_TASK_MAX];
6766

68-
class ResultTask : public Task<_STK_BENCH_STACK_SIZE, ACCESS_PRIVILEGED>
67+
class ResultTask final : public Task<_STK_BENCH_STACK_SIZE, ACCESS_PRIVILEGED>
6968
{
7069
private:
71-
void Run()
70+
void Run() override
7271
{
7372
while (g_Ticks < _STK_BENCH_WINDOW + 2)
7473
{
@@ -85,7 +84,6 @@ class ResultTask : public Task<_STK_BENCH_STACK_SIZE, ACCESS_PRIVILEGED>
8584
Crc32Bench::ShowResults();
8685
}
8786
};
88-
8987
static ResultTask g_TaskResult;
9088

9189
int main(int argc, char **argv)

build/example/hrt/example.cpp

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ enum { TASK_STACK_SIZE = 256 };
3232
static stk::sync::PipeT<uint8_t, 1> g_LedPipe[LED_MAX];
3333

3434
template <stk::EAccessMode _AccessMode>
35-
class HwLedTask : public stk::Task<TASK_STACK_SIZE, _AccessMode>
35+
class HwLedTask final : public stk::Task<TASK_STACK_SIZE, _AccessMode>
3636
{
3737
uint8_t m_task_id;
3838

@@ -41,7 +41,7 @@ class HwLedTask : public stk::Task<TASK_STACK_SIZE, _AccessMode>
4141
{}
4242

4343
private:
44-
void Run()
44+
void Run() override
4545
{
4646
for (;;)
4747
{
@@ -69,10 +69,9 @@ class HwLedTask : public stk::Task<TASK_STACK_SIZE, _AccessMode>
6969
};
7070

7171
template <stk::EAccessMode _AccessMode>
72-
class CtrlTask : public stk::Task<TASK_STACK_SIZE, _AccessMode>
72+
class CtrlTask final : public stk::Task<TASK_STACK_SIZE, _AccessMode>
7373
{
74-
private:
75-
void Run()
74+
void Run() override
7675
{
7776
uint8_t led = 0;
7877
stk::time::PeriodicTrigger trigger(1000, true);
@@ -104,17 +103,9 @@ class CtrlTask : public stk::Task<TASK_STACK_SIZE, _AccessMode>
104103
};
105104

106105
// optional: you can override sleep and hard fault default behaviors
107-
class PlatformEventHandler : public stk::IPlatform::IEventOverrider
106+
class PlatformEventHandler final : public stk::IPlatform::IEventOverrider
108107
{
109-
private:
110-
bool OnSleep()
111-
{
112-
// if handled inside this function then return true, otherwise event will be handled by the driver
113-
// note: if returned false once this function will not be called again until Kernel is re-started
114-
return false;
115-
}
116-
117-
bool OnHardFault()
108+
bool OnHardFault() override
118109
{
119110
// switch on Red LED as indication of the error
120111
Led::SwitchOnExclusive(Led::RED);

0 commit comments

Comments
 (0)