From aa3e5c0c6f6f7bb9df02ae5d333dc6c4a6d2e744 Mon Sep 17 00:00:00 2001 From: JF Date: Wed, 22 Jan 2020 19:45:53 +0100 Subject: [WIP] Use IRQ in SPI driver to improve performances --- src/drivers/SpiMaster.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/drivers/SpiMaster.h') 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 #include #include - +#include 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 busy {false}; + + uint32_t bufferAddr = 0; + + size_t bufferSize = 0; }; } } -- cgit v1.2.3