summaryrefslogtreecommitdiff
path: root/src/drivers/SpiMaster.h
diff options
context:
space:
mode:
authorJF <jf@codingfield.com>2019-12-07 16:11:50 (GMT)
committerJF <jf@codingfield.com>2019-12-07 16:11:50 (GMT)
commit6fbb6c8f70b2103fd88d8d9da3ce884a283b1bfd (patch)
tree000f0851f3517b9b8a40c16d4c6bf34fd834b24c /src/drivers/SpiMaster.h
parent0db16bd8279826878e9d2d5ba63e21c4e15c35bf (diff)
Convert Spi and GFX to C++.
Diffstat (limited to 'src/drivers/SpiMaster.h')
-rw-r--r--src/drivers/SpiMaster.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/drivers/SpiMaster.h b/src/drivers/SpiMaster.h
new file mode 100644
index 0000000..10cab12
--- /dev/null
+++ b/src/drivers/SpiMaster.h
@@ -0,0 +1,32 @@
+#pragma once
+#include <cstdint>
+#include <cstddef>
+#include <array>
+
+namespace Pinetime {
+ namespace Drivers {
+ class SpiMaster {
+ public:;
+ enum class SpiModule : uint8_t {SPI0, SPI1};
+ enum class BitOrder : uint8_t {Msb_Lsb, Lsb_Msb};
+ enum class Modes : uint8_t {Mode0, Mode1, Mode2, Mode3};
+ enum class Frequencies : uint8_t {Freq8Mhz};
+ struct Parameters {
+ BitOrder bitOrder;
+ Modes mode;
+ Frequencies Frequency;
+ uint8_t pinSCK;
+ uint8_t pinMOSI;
+ uint8_t pinMISO;
+ uint8_t pinCSN;
+ };
+ bool Init(const SpiModule spi, const Parameters& params);
+
+ bool Write(const uint8_t* data, size_t size);
+
+ private:
+ NRF_SPI_Type * spiBaseAddress;
+ uint8_t pinCsn;
+ };
+ }
+}