YAHAL
Yet Another Hardware Abstraction Library
Loading...
Searching...
No Matches
ssd2119_drv.h
1// ---------------------------------------------
2// This file is part of
3// _ _ __ _ _ __ __
4// ( \/ ) /__\ ( )_( ) /__\ ( )
5// \ / /(__)\ ) _ ( /(__)\ )(__
6// (__)(__)(__)(_) (_)(__)(__)(____)
7//
8// Yet Another HW Abstraction Library
9// Copyright (C) Andreas Terstegge
10// BSD Licensed (see file LICENSE)
11//
12// ---------------------------------------------
13//
14// Driver for SSD2119-based LCD displays
15
16#ifndef _SSD2119_H_
17#define _SSD2119_H_
18
19#include "spi_interface.h"
20#include "gpio_interface.h"
21#include "lcd_interface.h"
22#include "mutex_interface.h"
23
24const int BUF_LEN = 650;
25
26class ssd2119_drv : public lcd_interface {
27public:
28 // Structure to define the HW details of the display
30 struct config {
31 config(uint16_t sX, uint16_t sY) : sizeX(sX), sizeY(sY) { }
32 uint16_t sizeX;
33 uint16_t sizeY;
34 };
35 // Display configurations
36 static config Kentec_K350QVG;
37
38public:
39 // User interface
42 gpio_interface & rst_pin,
43 gpio_interface & dc_pin,
44 config & lcd,
45 mutex_interface * mutex = nullptr);
46
47 ~ssd2119_drv() override;
48
49 uint16_t getSizeX() override;
50 uint16_t getSizeY() override;
51
52 // x and y range from 0 to get[X/Y]Size() - 1
53 void drawPixel(uint16_t x, uint16_t y, color_t color) override;
54 void drawHLine(uint16_t xs, uint16_t ys, uint16_t xe, color_t c) override;
55 void drawVLine(uint16_t xs, uint16_t ys, uint16_t ye, color_t c) override;
56
57 void drawArea (uint16_t xs, uint16_t ys, uint16_t xe, uint16_t ye,
58 pixel_stream & ps) override;
59
60 void fillArea (uint16_t xs, uint16_t ys, uint16_t xe, uint16_t ye,
61 color_t c) override;
62
63 // Specific methods for SSD2119
64 void clearScreen(color_t c);
65
66private:
67 void setCursorLtoR(uint16_t x, uint16_t y);
68 void setCursorTtoB(uint16_t x, uint16_t y);
69// void setCursorFrame(uint16_t xs, uint16_t ys, uint16_t xe, uint16_t ye);
70
71 void writeDataBuffer(int len);
72 void writeCommand(uint8_t cmd);
73 void writeCmdData(uint8_t cmd, uint16_t data);
74
75 uint8_t _tx_buffer[BUF_LEN];
76 spi_interface & _spi;
77 gpio_interface & _rst_pin;
78 gpio_interface & _dc_pin;
79 config & _lcd;
80 mutex_interface * _mutex;
81};
82
83#endif // _SSD2119_H_
Definition mutex.h:27