16#ifndef SIMICS_SYSTEMC_SIMICS2TLM_SPI_SLAVE_GASKET_ADAPTER_H
17#define SIMICS_SYSTEMC_SIMICS2TLM_SPI_SLAVE_GASKET_ADAPTER_H
37 ConnectBase *spi_master)
38 : spi_slave_(spi_slave), simulation_(simulation),
39 spi_master_(spi_master) {
42 virtual void spi_request(
int first,
int last,
const uint8 *data_ptr,
45 spi_slave_->spi_request(first, last, data_ptr, data_length);
48 serial_peripheral_interface_flags_t
flags) {
49 auto *prev_master = spi_master_->get().object();
52 "disconnected from master %s",
53 SIM_object_name(prev_master));
56 ConfObjectRef obj {master};
58 obj.set_port_name(port);
60 spi_master_->set(obj);
62 "connected to master %s", obj.name().c_str());
67 if (spi_master_->get().object() != master) {
69 "can not be disconnected from master device %s",
70 SIM_object_name(master));
72 spi_master_->set(
nullptr);
75 "disconnected from master %s",
76 SIM_object_name(master));
86 if (spi_master_->get().object() ==
nullptr) {
93 SpiSlaveInterface *spi_slave_;
95 ConnectBase *spi_master_;
Utility class that handles the context switching, using RAII methodology.
Definition: context.h:33
Interface to the SystemC simulation.
Definition: simulation_interface.h:27
virtual ConfObjectRef simics_object() const =0
Simics serial_peripheral_interface_slave interface.
Definition: spi_slave_interface.h:29
Definition: gasket_adapter.h:45
Base class, responsible for handling a gasket.
Definition: gasket_owner.h:32
Adapter for SpiSlave gasket.
Definition: spi_slave_gasket_adapter.h:33
virtual void connect_master(conf_object_t *master, const char *port, serial_peripheral_interface_flags_t flags)
Definition: spi_slave_gasket_adapter.h:47
virtual void disconnect_master(conf_object_t *master)
Definition: spi_slave_gasket_adapter.h:66
simics2tlm::GasketOwner * gasket_owner() const override
Definition: spi_slave_gasket_adapter.h:79
int flags()
Return the flags used when connecting the master in integer, returns -1 for invalid value.
Definition: spi_slave_gasket_adapter.h:85
SpiSlaveGasketAdapter(SpiSlaveInterface *spi_slave, iface::SimulationInterface *simulation, ConnectBase *spi_master)
Definition: spi_slave_gasket_adapter.h:35
virtual void spi_request(int first, int last, const uint8 *data_ptr, size_t data_length)
Definition: spi_slave_gasket_adapter.h:42