#ifndef SET_EMU_UMP_H #define SET_EMU_UMP_H #include "set_regmap.h" #ifdef __cplusplus extern "C" { #endif #define SET_UMP_WORDS 40u typedef struct { uint16_t (*banks[2])[SET_UMP_WORDS]; uint16_t capacity,can_mode; uint8_t enabled; uint16_t state,used,next,bank,archive_bank,archive_count,archive_next,period,divider,cursor,source,generation,post,dropped,prev_command,prev_input,prev_output; uint32_t elapsed,sequence,scenario; } set_ump_emu; /* Two distinct caller-owned arrays, capacity*40 words EACH. No heap/MCU layout. */ PCAN_ABI_API unsigned set_ump_init(set_ump_emu *,uint16_t *,uint16_t *,uint16_t capacity, uint16_t can_mode,uint8_t enabled); PCAN_ABI_API void set_ump_tick(set_ump_emu *); /* one millisecond */ PCAN_ABI_API unsigned set_ump_read(void *,uint16_t,uint16_t,uint16_t *); PCAN_ABI_API unsigned set_ump_indexed_read(void *,uint16_t,uint16_t,uint16_t *); PCAN_ABI_API unsigned set_ump_write(void *,uint16_t,uint16_t); #ifdef __cplusplus } #endif #endif