diff options
Diffstat (limited to 'src/drivers/st7789.h')
-rw-r--r-- | src/drivers/st7789.h | 58 |
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 |