16#ifndef SIMICS_SYSTEMC_IFACE_SPI_MASTER_SIMICS_ADAPTER_H
17#define SIMICS_SYSTEMC_IFACE_SPI_MASTER_SIMICS_ADAPTER_H
19#include <simics/devs/serial-peripheral-interface.h>
23#include <simics/base/types.h>
24#include <simics/util/dbuffer.h>
34template<
typename TBase,
typename TInterface = SpiMasterInterface>
36 :
public SimicsAdapter<serial_peripheral_interface_master_interface_t> {
39 :
SimicsAdapter<serial_peripheral_interface_master_interface_t>(
40 SERIAL_PERIPHERAL_INTERFACE_MASTER_INTERFACE, init_iface()) {
44 static void spi_response(conf_object_t *obj,
int bits, dbuffer_t *payload) {
48 bytes_t data = dbuffer_bytes(payload);
49 if ((bits + 7) / 8 !=
static_cast<int>(data.len)) {
51 "Mismatch of the payload buffer size (%lu) %s (%d)",
52 data.len,
"with ceil(bits / 8)", (bits + 7) / 8);
54 adapter<TBase, TInterface>(obj)->spi_response(data.data, data.len);
58 std::vector<std::string> description(conf_object_t *obj,
60 return descriptionBase<TBase, TInterface>(obj, type);
62 serial_peripheral_interface_master_interface_t init_iface() {
63 serial_peripheral_interface_master_interface_t iface = {};
Base class for mapping Simics interface to a C++ interface.
Definition: simics_adapter.h:47
Adapter for Simics serial_peripheral_interface_master interface.
Definition: spi_master_simics_adapter.h:36
SpiMasterSimicsAdapter()
Definition: spi_master_simics_adapter.h:38
static void spi_response(conf_object_t *obj, int bits, dbuffer_t *payload)
Definition: spi_master_simics_adapter.h:44
DescriptionType
Definition: description_interface.h:25
Definition: pci_bus_interface.h:24