#ifndef LINUXCNC_WEB_WASM_SIM_EVENT_H #define LINUXCNC_WEB_WASM_SIM_EVENT_H #include #ifdef __cplusplus extern "C" { #endif #define SIM_EVENT_KIND_CAPACITY 32U #define SIM_EVENT_CAPACITY 16384U enum sim_event_result { SIM_EVENT_OK = 0, SIM_EVENT_ERR_SEQUENCE = -200, SIM_EVENT_ERR_TICK = -201, SIM_EVENT_ERR_ARGUMENT = -202, SIM_EVENT_ERR_FULL = -203, SIM_EVENT_ERR_BUFFER = -204, }; typedef struct sim_event_record { uint32_t seq; uint32_t tick; uint64_t payload_hash; char kind[SIM_EVENT_KIND_CAPACITY]; } sim_event_record; void sim_event_reset(void); uint32_t sim_event_checkpoint_size(void); int32_t sim_event_checkpoint_export(uint8_t *output, uint32_t capacity); int32_t sim_event_checkpoint_restore(const uint8_t *input, uint32_t length); int32_t sim_event_append(uint32_t seq, uint32_t tick, const char *kind, const uint8_t *payload, uint32_t payload_len); uint32_t sim_event_count(void); uint32_t sim_event_cursor(void); uint32_t sim_event_read(uint32_t index, uint8_t *out, uint32_t capacity); uint32_t sim_event_export(uint8_t *out, uint32_t capacity); int32_t sim_event_import(const uint8_t *data, uint32_t len); #ifdef __cplusplus } #endif #endif