diff options
author | JF <jf@codingfield.com> | 2020-01-22 19:45:53 +0100 |
---|---|---|
committer | JF <jf@codingfield.com> | 2020-01-22 19:45:53 +0100 |
commit | aa3e5c0c6f6f7bb9df02ae5d333dc6c4a6d2e744 (patch) | |
tree | 58bc64ef06dd6f0199aff19321713cff4b43dd0f /src/drivers/SpiMaster.h | |
parent | b4bd41cd562f89bcd320ac0985e9b33c766babe1 (diff) |
[WIP] Use IRQ in SPI driver to improve performances
Diffstat (limited to 'src/drivers/SpiMaster.h')
-rw-r--r-- | src/drivers/SpiMaster.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/drivers/SpiMaster.h b/src/drivers/SpiMaster.h index 5376ac8e..dff63e94 100644 --- a/src/drivers/SpiMaster.h +++ b/src/drivers/SpiMaster.h @@ -2,7 +2,7 @@ #include <cstdint> #include <cstddef> #include <array> - +#include <atomic> namespace Pinetime { namespace Drivers { class SpiMaster { @@ -24,7 +24,7 @@ namespace Pinetime { SpiMaster(const SpiModule spi, const Parameters& params); bool Init(); bool Write(const uint8_t* data, size_t size); - bool WriteFast(const uint8_t* data, size_t size); + bool WriteRepeat(const uint8_t *data, size_t size, int repeat); void setup_workaround_for_ftpan_58(NRF_SPIM_Type *spim, uint32_t ppi_channel, uint32_t gpiote_channel); void Sleep(); @@ -33,12 +33,20 @@ namespace Pinetime { bool GetStatusEnd(); bool GetStatusStarted(); + void irq(); + private: NRF_SPIM_Type * spiBaseAddress; uint8_t pinCsn; SpiMaster::SpiModule spi; SpiMaster::Parameters params; + + std::atomic<bool> busy {false}; + + uint32_t bufferAddr = 0; + + size_t bufferSize = 0; }; } } |