rogy-AquaLab / 2024_umiusi_nucleo_cube

umiusiの足 with STM32Cube
MIT License
0 stars 0 forks source link

概略 #9

Closed H1rono closed 3 weeks ago

H1rono commented 1 month 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) { ... }

}
H1rono commented 1 month ago

Watchdogが予想より制限されてた