You've already forked pico-launcher
mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2026-01-09 16:28:48 -08:00
39 lines
802 B
C++
39 lines
802 B
C++
#include "common.h"
|
|
#include "Task.h"
|
|
|
|
void TaskBase::Execute()
|
|
{
|
|
u32 irqs = rtos_disableIrqs();
|
|
if (_state == TaskState::NotStarted)
|
|
{
|
|
_state = TaskState::Running;
|
|
rtos_restoreIrqs(irqs);
|
|
TaskState finalState = ExecuteDirect();
|
|
SetFinalState(finalState);
|
|
}
|
|
else
|
|
rtos_restoreIrqs(irqs);
|
|
}
|
|
|
|
void TaskBase::SetFinalState(TaskState finalState)
|
|
{
|
|
u32 irqs = rtos_disableIrqs();
|
|
if (_state == TaskState::Running)
|
|
{
|
|
_state = finalState;
|
|
rtos_wakeupQueue(&_threadQueue);
|
|
}
|
|
rtos_restoreIrqs(irqs);
|
|
}
|
|
|
|
bool TaskBase::Wait()
|
|
{
|
|
u32 irq = rtos_disableIrqs();
|
|
|
|
if (!IsCompleted())
|
|
rtos_queueThread(rtos_getCurThread(), &_threadQueue);
|
|
|
|
rtos_restoreIrqs(irq);
|
|
|
|
return IsCompletedSuccessfully();
|
|
} |