-
Notifications
You must be signed in to change notification settings - Fork 252
/
Copy pathst7789device.h
70 lines (61 loc) · 2.26 KB
/
st7789device.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//
// st7789device.h
//
// Circle - A C++ bare metal environment for Raspberry Pi
// Copyright (C) 2018-2024 R. Stange <[email protected]>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef _display_st7789device_h
#define _display_st7789device_h
#include <circle/device.h>
#include <circle/gpiopin.h>
#include <circle/spinlock.h>
#include <circle/types.h>
#include "chardevice.h"
#include "st7789display.h"
class CST7789Device : public CCharDevice /// LCD dot-matrix display driver (using ST7789 controller)
{
public:
/// \param pSPIMaster
/// \param pST7789Display
/// \param nColumns Display size in number of columns (max. 40)
/// \param nRows Display size in number of rows (max. 4)
/// \param bDoubleWidth Use thicker characters on screen
/// \param bDoubleHeight Use higher characters on screen
/// \param bBlockCursor Use blinking block cursor instead of underline cursor
CST7789Device (CSPIMaster *pSPIMaster, CST7789Display *pST7789Display,
unsigned nColumns, unsigned nRows, bool bDoubleWidth = TRUE, bool bDoubleHeight = TRUE,
boolean bBlockCursor = FALSE);
~CST7789Device (void);
/// \return Operation successful?
boolean Initialize (void);
private:
void DevClearCursor (void) override;
void DevSetCursor (unsigned nCursorX, unsigned nCursorY) override;
void DevSetCursorMode (boolean bVisible) override;
void DevSetChar (unsigned nPosX, unsigned nPosY, char chChar) override;
void DevUpdateDisplay (void) override;
private:
CSPIMaster *m_pSPIMaster;
CST7789Display *m_pST7789Display;
unsigned m_nColumns;
unsigned m_nRows;
unsigned m_nCharW;
unsigned m_nCharH;
bool m_bDoubleWidth;
bool m_bDoubleHeight;
boolean m_bBlockCursor;
};
#endif