Here's the relevant code:
Code: Select all
extends client interface spi_master_async_if : {
uint8_t transfer8(client spi_master_async_if self, uint8_t data)
{
uint8_t data_in;
uint8_t * movable buffer_in = &data_in;
uint8_t * movable buffer_out = &data;
self.begin_transaction(DEVICE_ID, SPI_SPEED, SPI_MODE_1);
self.init_transfer_array_8(move(buffer_in), move(buffer_out), 1);
select {
case self.transfer_complete():
self.retrieve_transfer_buffers_8(buffer_in, buffer_out);
break;
}
self.end_transaction(SPI_DELAY);
return *buffer_in;
}
}