Closed H1rono closed 3 weeks ago
main.c
int main(void) { struct Machine machine = init_machine(); init(); while (true) { // enumかも struct Signal signal = next_signal(); machine_handle_signal(&machine, &signal); } return 0; }
signal.cpp
// Signal待機列 // UartInputは同時に1つしか存在しない前提で capacity=1 std::array<struct Signal, 1> pending_signals; extern "C" { enum SignalKind { None, UartInput, }; struct Signal { enum SignalKind kind; // kindによってデータの種類を変える // sealed interfaceにしてもいいかも void* payload; }; // pending_signalsからpop struct Signal next_signal(void) { ... } // pending_signalsにpush // Tは何もなければchar void signal_uart_input(T data) { ... } }
machine.cpp
extern "C" { struct Machine { // TODO }; struct Machine init_machine(void) { ... } void machine_handle_signal(struct Machine* machine, struct Signal* signal) { ... } }
Watchdogが予想より制限されてた
main.c
signal.cpp
machine.cpp