14#ifndef SIMICS_SYSTEMC_IFACE_I3C_SLAVE_SIMICS_ADAPTER_H
15#define SIMICS_SYSTEMC_IFACE_I3C_SLAVE_SIMICS_ADAPTER_H
17#include <simics/devs/i3c.h>
29template<
typename TBase,
typename TInterface = I3cSlaveInterface>
35 I3C_SLAVE_INTERFACE, init_iface()) {
39 static void start(conf_object_t *obj, uint8_t address) {
40 adapter<TBase, TInterface>(obj)->start(address);
42 static void write(conf_object_t *obj, uint8_t value) {
43 adapter<TBase, TInterface>(obj)->write(value);
45 static void sdr_write(conf_object_t *obj, ::bytes_t data) {
47 bytes.
data = data.data;
49 adapter<TBase, TInterface>(obj)->sdr_write(bytes);
51 static void read(conf_object_t *obj) {
52 adapter<TBase, TInterface>(obj)->read();
55 adapter<TBase, TInterface>(obj)->daa_read();
57 static void stop(conf_object_t *obj) {
58 adapter<TBase, TInterface>(obj)->stop();
61 adapter<TBase, TInterface>(obj)->ibi_start();
64 adapter<TBase, TInterface>(obj)->ibi_acknowledge(
69 std::vector<std::string> description(conf_object_t *obj,
71 return descriptionBase<TBase, TInterface>(obj, type);
73 i3c_slave_interface_t init_iface() {
74 i3c_slave_interface_t iface = {};
Definition: i3c_slave_simics_adapter.h:31
static void start(conf_object_t *obj, uint8_t address)
Definition: i3c_slave_simics_adapter.h:39
I3cSlaveSimicsAdapter()
Definition: i3c_slave_simics_adapter.h:33
static void read(conf_object_t *obj)
Definition: i3c_slave_simics_adapter.h:51
static void write(conf_object_t *obj, uint8_t value)
Definition: i3c_slave_simics_adapter.h:42
static void ibi_start(conf_object_t *obj)
Definition: i3c_slave_simics_adapter.h:60
static void ibi_acknowledge(conf_object_t *obj, ::i3c_ack_t ack)
Definition: i3c_slave_simics_adapter.h:63
static void sdr_write(conf_object_t *obj, ::bytes_t data)
Definition: i3c_slave_simics_adapter.h:45
static void daa_read(conf_object_t *obj)
Definition: i3c_slave_simics_adapter.h:54
static void stop(conf_object_t *obj)
Definition: i3c_slave_simics_adapter.h:57
Base class for mapping Simics interface to a C++ interface.
Definition: simics_adapter.h:45
DescriptionType
Definition: description_interface.h:23
@ I3C_ack
Definition: i3c_ack.h:21
@ I3C_noack
Definition: i3c_ack.h:22
const uint8_t * data
Definition: bytes.h:27
size_t len
Definition: bytes.h:28