52#include "qwiic_grbuffer.h"
54#include "res/qwiic_resdef.h"
65#define kDefaultPinConfig 0x12
66#define kDefaultPreCharge 0xF1
67#define kDefaultVCOMDeselect 0x40
68#define kDefaultContrast 0x8F
80typedef enum gr_op_funcs_
94#define SCROLL_VERTICAL 0x01
95#define SCROLL_RIGHT 0x02
96#define SCROLL_LEFT 0x04
97#define SCROLL_VERT_RIGHT SCROLL_VERTICAL | SCROLL_RIGHT
98#define SCROLL_VERT_LEFT SCROLL_VERTICAL | SCROLL_LEFT
100#define SCROLL_INTERVAL_5_FRAMES 0x00
101#define SCROLL_INTERVAL_64_FRAMES 0x01
102#define SCROLL_INTERVAL_128_FRAMES 0x02
103#define SCROLL_INTERVAL_256_FRAMES 0x03
104#define SCROLL_INTERVAL_3_FRAMES 0x04
105#define SCROLL_INTERVAL_4_FRAMES 0x05
106#define SCROLL_INTERVAL_25_FRAMES 0x06
107#define SCROLL_INTERVAL_2_FRAMES 0x07
147#define kMaxPageNumber 8
159class QwGrSSD1306 :
public QwGrBufferDevice
162 void setupDefaults(
void);
169 QwGrSSD1306(uint8_t width, uint8_t height) : QwGrSSD1306(0, 0, width, height){};
172 QwGrSSD1306(uint8_t x0, uint8_t y0, uint8_t width, uint8_t height) : QwGrBufferDevice(x0, y0, width, height)
182 virtual bool init(
void);
184 bool isInitialized(
void)
186 return m_isInitialized;
188 bool reset(
bool clearDisplay =
true);
191 void setCommBus(QwI2C &theBus, uint8_t id_bus);
194 void setColor(uint8_t color);
197 void setContrast(uint8_t);
200 uint8_t default_address;
202 void setRasterOp(grRasterOp_t rop)
207 grRasterOp_t rasterOp(
void)
217 void stopScroll(
void);
218 void scroll(uint16_t scroll_type, uint8_t start, uint8_t stop, uint8_t interval = SCROLL_INTERVAL_2_FRAMES);
220 void displayPower(
bool enable =
true);
225 void setBuffer(uint8_t *pBuffer);
232 void drawPixel(uint8_t x, uint8_t y, uint8_t clr);
235 void drawLineHorz(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t clr);
236 void drawLineVert(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t clr);
239 void drawRectFilled(uint8_t x0, uint8_t y0, uint8_t width, uint8_t height, uint8_t clr);
242 void drawBitmap(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t *pBitmap, uint8_t bmp_width,
247 void setCommPins(uint8_t);
248 void setPreCharge(uint8_t);
249 void setVcomDeselect(uint8_t);
253 bool setScreenBufferAddress(uint8_t page, uint8_t column);
254 void initBuffers(
void);
255 void clearScreenBuffer(
void);
256 void resendGraphics(
void);
257 void setupOLEDDevice(
bool clearDisplay =
true);
260 void sendDevCommand(uint8_t command);
261 void sendDevCommand(uint8_t command, uint8_t value);
262 void sendDevCommand(uint8_t *commands, uint8_t n);
263 void sendDevData(uint8_t *pData, uint8_t nData);
271 pageState_t m_pageState[kMaxPageNumber];
272 pageState_t m_pageErase[kMaxPageNumber];
281 uint8_t m_i2cAddress;
284 uint8_t m_initHWComPins;
285 uint8_t m_initPreCharge;
286 uint8_t m_initVCOMDeselect;
287 uint8_t m_initContrast;
289 bool m_isInitialized;