14#ifndef SIMICS_SYSTEMC_SIMICS2TLM_SPI_SLAVE_GASKET_ADAPTER_H
15#define SIMICS_SYSTEMC_SIMICS2TLM_SPI_SLAVE_GASKET_ADAPTER_H
35 ConnectBase *spi_master)
36 : spi_slave_(spi_slave), simulation_(simulation),
37 spi_master_(spi_master) {
42 size_t data_length)
override {
44 spi_slave_->spi_request(first, last, data_ptr, data_length);
47 serial_peripheral_interface_flags_t
flags)
override {
48 auto *prev_master = spi_master_->get().object();
51 "disconnected from master %s",
52 SIM_object_name(prev_master));
55 ConfObjectRef obj {master};
57 obj.set_port_name(port);
59 spi_master_->set(obj);
61 "connected to master %s", obj.name().c_str());
66 if (spi_master_->get().object() != master) {
68 "can not be disconnected from master device %s",
69 SIM_object_name(master));
71 spi_master_->set(
nullptr);
74 "disconnected from master %s",
75 SIM_object_name(master));
85 if (spi_master_->get().object() ==
nullptr) {
92 SpiSlaveInterface *spi_slave_;
94 ConnectBase *spi_master_;
Utility class that handles the context switching, using RAII methodology.
Definition: context.h:31
Interface to the SystemC simulation.
Definition: simulation_interface.h:25
virtual ConfObjectRef simics_object() const =0
Simics serial_peripheral_interface_slave interface.
Definition: spi_slave_interface.h:27
Definition: gasket_adapter.h:43
Base class, responsible for handling a gasket.
Definition: gasket_owner.h:30
Adapter for SpiSlave gasket.
Definition: spi_slave_gasket_adapter.h:31
void spi_request(int first, int last, const uint8 *data_ptr, size_t data_length) override
Definition: spi_slave_gasket_adapter.h:41
void disconnect_master(conf_object_t *master) override
Definition: spi_slave_gasket_adapter.h:65
simics2tlm::GasketOwner * gasket_owner() const override
Definition: spi_slave_gasket_adapter.h:78
int flags()
Return the flags used when connecting the master in integer, returns -1 for invalid value.
Definition: spi_slave_gasket_adapter.h:84
SpiSlaveGasketAdapter(SpiSlaveInterface *spi_slave, iface::SimulationInterface *simulation, ConnectBase *spi_master)
Definition: spi_slave_gasket_adapter.h:33
void connect_master(conf_object_t *master, const char *port, serial_peripheral_interface_flags_t flags) override
Definition: spi_slave_gasket_adapter.h:46