platform: implement commands for task management
This commit is contained in:
parent
ef74dc2178
commit
d36de899fd
@ -255,6 +255,78 @@ Platform::restart() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
__attribute__((noreturn))
|
||||||
|
void
|
||||||
|
doReboot(Args& args, Print& out)
|
||||||
|
{
|
||||||
|
out.println("Rebooting");
|
||||||
|
Platform::restart();
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__((noreturn))
|
||||||
|
void
|
||||||
|
doSafeMode(Args& args, Print& out)
|
||||||
|
{
|
||||||
|
out.println("Rebooting into safe mode");
|
||||||
|
Platform::bootopts.forceSafeMode();
|
||||||
|
Platform::restart();
|
||||||
|
}
|
||||||
|
|
||||||
|
String s;
|
||||||
|
|
||||||
|
void
|
||||||
|
doTaskStart(Args& args, Print& out)
|
||||||
|
{
|
||||||
|
s = args[1];
|
||||||
|
MainLoop::instance()->dispatch(InputEvent{InputEvent::StartThing, s.c_str()});
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
doTaskStop(Args& args, Print& out)
|
||||||
|
{
|
||||||
|
s = args[1];
|
||||||
|
MainLoop::instance()->dispatch(InputEvent{InputEvent::StopThing, s.c_str()});
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
doTaskList(Args& args, Print& out)
|
||||||
|
{
|
||||||
|
auto sched = MainLoop::instance()->scheduler;
|
||||||
|
auto printer = Static<SerialInput>::instance()->printer();
|
||||||
|
out.println("Tasks:");
|
||||||
|
for(auto task : sched.tasks) {
|
||||||
|
bool isFigment = task->isFigment();
|
||||||
|
if (task->state == Task::Running) {
|
||||||
|
out.print("+");
|
||||||
|
} else {
|
||||||
|
out.print("-");
|
||||||
|
}
|
||||||
|
if (isFigment) {
|
||||||
|
out.print("F ");
|
||||||
|
} else {
|
||||||
|
out.print("T ");
|
||||||
|
}
|
||||||
|
out.println(task->name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const std::vector<Command> _commands = {
|
||||||
|
{"tasks", doTaskList},
|
||||||
|
{"safe-mode", doSafeMode},
|
||||||
|
{"reboot", doReboot},
|
||||||
|
{"stop", doTaskStop},
|
||||||
|
{"start", doTaskStart}
|
||||||
|
};
|
||||||
|
|
||||||
|
const std::vector<Command>&
|
||||||
|
Platform::commands() const
|
||||||
|
{
|
||||||
|
return _commands;
|
||||||
|
}
|
||||||
|
|
||||||
BootOptions
|
BootOptions
|
||||||
Platform::bootopts;
|
Platform::bootopts;
|
||||||
|
|
||||||
|
@ -105,4 +105,6 @@ class Platform : public Task {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void restart();
|
static void restart();
|
||||||
|
|
||||||
|
const std::vector<Command>& commands() const override;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user