26 lines
998 B
C
26 lines
998 B
C
#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
|