Convert Spi and GFX to C++.
This commit is contained in:
59
src/drivers/St7789.h
Normal file
59
src/drivers/St7789.h
Normal file
@@ -0,0 +1,59 @@
|
||||
#pragma once
|
||||
#include <cstddef>
|
||||
|
||||
namespace Pinetime {
|
||||
namespace Drivers {
|
||||
class SpiMaster;
|
||||
class St7789 {
|
||||
public:
|
||||
explicit St7789(SpiMaster& spiMaster, uint8_t pinDataCommand);
|
||||
void Init();
|
||||
void Uninit();
|
||||
void DrawPixel(uint16_t x, uint16_t y, uint32_t color);
|
||||
void FillRectangle(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color);
|
||||
|
||||
|
||||
private:
|
||||
SpiMaster& spi;
|
||||
uint8_t pinDataCommand;
|
||||
|
||||
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();
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user