diff options
author | tomaszduda23 <[email protected]> | 2023-03-04 18:25:16 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2023-03-04 20:25:16 +0300 |
commit | 52ac8d93a18521f19dc45e9b4283417ed06f63d8 (patch) | |
tree | caf95bfe17db38067891d4ed958cdffe50ef4459 /hid/lib/drivers-avr/spi.cpp | |
parent | 1f9e826f2fa9e27c705146254cf3597f531f0599 (diff) |
adds abstraction for connection (#111)
Diffstat (limited to 'hid/lib/drivers-avr/spi.cpp')
-rw-r--r-- | hid/lib/drivers-avr/spi.cpp | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/hid/lib/drivers-avr/spi.cpp b/hid/lib/drivers-avr/spi.cpp index 66061692..ae54f545 100644 --- a/hid/lib/drivers-avr/spi.cpp +++ b/hid/lib/drivers-avr/spi.cpp @@ -21,7 +21,8 @@ #include "spi.h" - +#ifdef CMD_SPI +#include <SPI.h> static volatile uint8_t _spi_in[8] = {0}; static volatile uint8_t _spi_in_index = 0; @@ -29,28 +30,26 @@ static volatile uint8_t _spi_in_index = 0; static volatile uint8_t _spi_out[8] = {0}; static volatile uint8_t _spi_out_index = 0; +namespace DRIVERS { + void Spi::begin() { + pinMode(MISO, OUTPUT); + SPCR = (1 << SPE) | (1 << SPIE); // Slave, SPI En, IRQ En + } -void spiBegin() { - pinMode(MISO, OUTPUT); - SPCR = (1 << SPE) | (1 << SPIE); // Slave, SPI En, IRQ En -} - -bool spiReady() { - return (!_spi_out[0] && _spi_in_index == 8); -} - -const uint8_t *spiGet() { - return (const uint8_t *)_spi_in; -} + void Spi::periodic() { + if (!_spi_out[0] && _spi_in_index == 8) { + _data_cb((const uint8_t *)_spi_in, 8); + } + } -void spiWrite(const uint8_t *data) { - // Меджик в нулевом байте разрешает начать ответ - for (int index = 7; index >= 0; --index) { - _spi_out[index] = data[index]; + void Spi::write(const uint8_t *data, size_t size) { + // Меджик в нулевом байте разрешает начать ответ + for (int index = 7; index >= 0; --index) { + _spi_out[index] = data[index]; + } } } - ISR(SPI_STC_vect) { uint8_t in = SPDR; if (_spi_out[0] && _spi_out_index < 8) { @@ -78,3 +77,4 @@ ISR(SPI_STC_vect) { SPDR = 0; } } +#endif |