Files
linuxcncWebWASM/wasm-core/include/sim_event.h

46 lines
1.2 KiB
C

#ifndef LINUXCNC_WEB_WASM_SIM_EVENT_H
#define LINUXCNC_WEB_WASM_SIM_EVENT_H
#include <stdint.h>
#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