summaryrefslogtreecommitdiff
path: root/src/drivers/Spi.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/Spi.h')
-rw-r--r--src/drivers/Spi.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/drivers/Spi.h b/src/drivers/Spi.h
new file mode 100644
index 00000000..bee39af2
--- /dev/null
+++ b/src/drivers/Spi.h
@@ -0,0 +1,34 @@
+#pragma once
+#include <FreeRTOS.h>
+#include <cstdint>
+#include <cstddef>
+#include <array>
+#include <atomic>
+#include <task.h>
+
+#include "BufferProvider.h"
+#include "SpiMaster.h"
+
+namespace Pinetime {
+ namespace Drivers {
+ class Spi {
+ public:
+ Spi(SpiMaster& spiMaster, uint8_t pinCsn);
+ Spi(const Spi&) = delete;
+ Spi& operator=(const Spi&) = delete;
+ Spi(Spi&&) = delete;
+ Spi& operator=(Spi&&) = delete;
+
+ bool Init();
+ bool Write(const uint8_t* data, size_t size);
+ bool Read(uint8_t* cmd, size_t cmdSize, uint8_t *data, size_t dataSize);
+ bool WriteCmdAndBuffer(uint8_t* cmd, size_t cmdSize, uint8_t *data, size_t dataSize);
+ void Sleep();
+ void Wakeup();
+
+ private:
+ SpiMaster& spiMaster;
+ uint8_t pinCsn;
+ };
+ }
+}