#pragma once struct spi_dev; struct spi_ops { int (* set_cs_level)(struct spi_dev *dev, int level); int (* tx_rx)(struct spi_dev *dev, void *rx_buf, size_t rx_len, const void *tx_buf, size_t tx_len); }; struct spi_dev { struct spi_ops *ops; uint32_t dev_id; }; struct spi_dev *spi_probe(void); void spi_release(struct spi_dev *dev); int spi_tx_rx(struct spi_dev *dev, void *rx_buf, size_t rx_len, const void *tx_buf, size_t tx_len);