summaryrefslogtreecommitdiff
path: root/src/drivers/st7789.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/st7789.h')
-rw-r--r--src/drivers/st7789.h58
1 files changed, 50 insertions, 8 deletions
diff --git a/src/drivers/st7789.h b/src/drivers/st7789.h
index dc3f0833..6f744a1e 100644
--- a/src/drivers/st7789.h
+++ b/src/drivers/st7789.h
@@ -1,14 +1,56 @@
-//
-// Created by jf on 12/2/19.
-//
+#pragma once
-#ifndef PINETIME_ST7789_H
-#define PINETIME_ST7789_H
+namespace Pinetime {
+ namespace Drivers {
+ class st7789 {
+ public:
+ ret_code_t Init();
+ void Uninit();
+ void DrawPixel(uint16_t x, uint16_t y, uint32_t color);
+ void DrawRectangle(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint32_t color);
+ void FillRectangle(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color);
+ private:
+ ret_code_t InitHw() const;
+ void InitCommands();
-class st7789 {
+ void SoftwareReset();
+ void SleepOut();
+ void ColMod();
+ void MemoryDataAccessControl();
+ void DisplayInversionOn();
+ void NormalModeOn();
+ void WriteToRam();
+ void DisplayOn();
+ void DisplayOff();
-};
+ void SetAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1);
+
+ void WriteCommand(uint8_t cmd);
+ void WriteSpi(const uint8_t* data, size_t size);
+
+ enum class Commands : uint8_t {
+ SoftwareReset = 0x01,
+ SleepOut = 0x11,
+ NormalModeOn = 0x13,
+ DisplayInversionOn = 0x21,
+ DisplayOff = 0x28,
+ DisplayOn = 0x29,
+ ColumnAddressSet = 0x2a,
+ RowAddressSet = 0x2b,
+ WriteToRam = 0x2c,
+ MemoryDataAccessControl = 036,
+ ColMod = 0x3a,
+ };
+ void WriteData(uint8_t data);
+ void ColumnAddressSet();
+
+ static constexpr uint16_t Width = 240;
+ static constexpr uint16_t Height = 240;
+ void RowAddressSet();
+
+ };
+ }
+}
-#endif //PINETIME_ST7789_H