Add shared emulator services, waveform generation and STM32 USB boot ports
This commit is contained in:
48
c/set-protocol/include/set_emu_server.h
Normal file
48
c/set-protocol/include/set_emu_server.h
Normal file
@@ -0,0 +1,48 @@
|
||||
/* Reference service composition for emulator boards; use set_regmap directly
|
||||
* for a different map, subset, or multiple instances of any module. */
|
||||
#ifndef SET_EMU_SERVER_H
|
||||
#define SET_EMU_SERVER_H
|
||||
#include "set_emu_ump.h"
|
||||
#include "set_emu_tms.h"
|
||||
#include "set_emu_igbt.h"
|
||||
#include "set_wavegen.h"
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#define SET_EMU_CONTROL_BASE 0x1200u
|
||||
#define SET_EMU_IGBT_BASE 0x1400u
|
||||
#define SET_EMU_TMS_BASE 0x1500u
|
||||
#define SET_EMU_INDEXED_BASE 0x2000u
|
||||
enum { SET_EMU_KIND_UMP=1,SET_EMU_KIND_CONTROL=2,SET_EMU_KIND_WAVE=3,
|
||||
SET_EMU_KIND_IGBT=4,SET_EMU_KIND_TMS=5,SET_EMU_KIND_UMP_DATA=6,
|
||||
SET_EMU_KIND_WAVE_DATA=7 };
|
||||
typedef struct {
|
||||
set_regmap map;
|
||||
set_reg_region regions[7];
|
||||
set_ump_emu ump;
|
||||
set_tms_emu tms;
|
||||
set_igbt_emu igbt;
|
||||
set_wave_state *wave;
|
||||
/* config[3]: 0=UMP, 1=TMS2812, 2=IGBT, 3=DAC. Configuration version 3. */
|
||||
uint16_t config[4],staged[4],apply_delay;
|
||||
} set_emu_server;
|
||||
/* bank_capacity in records, each bank has capacity*40 words.
|
||||
* Wave may be NULL. UART rate index 0..4. No pins, heap or global instances.
|
||||
* Init is for a quiescent instance: caller stops hardware before reinitializing. */
|
||||
PCAN_ABI_API unsigned set_emu_server_init(set_emu_server *,uint16_t *bank0,
|
||||
uint16_t *bank1,uint16_t bank_capacity,set_wave_state *,unsigned address,
|
||||
unsigned tms_address,unsigned baud_index,unsigned can_mode,unsigned enabled);
|
||||
PCAN_ABI_API void set_emu_server_tick(set_emu_server *,uint8_t igbt_pins);
|
||||
PCAN_ABI_API uint32_t set_emu_server_baud(const set_emu_server *);
|
||||
PCAN_ABI_API size_t set_emu_server_rtu(set_emu_server *,const uint8_t *,size_t,uint8_t *,size_t);
|
||||
PCAN_ABI_API size_t set_emu_server_can(set_emu_server *,const uint8_t *,size_t,
|
||||
uint16_t *,size_t,unsigned *,unsigned *);
|
||||
/* Stream adapter for FC03/06 (8 octets) and TMS CMD_STD (18 octets). One
|
||||
* context per connection. Transport passes monotonic milliseconds. */
|
||||
typedef struct { uint8_t data[18],used;uint32_t last_byte; } set_emu_stream;
|
||||
PCAN_ABI_API size_t set_emu_stream_feed(set_emu_stream *,set_emu_server *,
|
||||
uint8_t byte,uint32_t now_ms,uint8_t *reply,size_t capacity);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
Reference in New Issue
Block a user