forked from forks/qmk_firmware
ST7565 invert (#13237)
This commit is contained in:
parent
0311c8036d
commit
37fba09021
|
@ -262,6 +262,10 @@ void st7565_task(void);
|
||||||
// Called at the start of st7565_task, weak function overridable by the user
|
// Called at the start of st7565_task, weak function overridable by the user
|
||||||
void st7565_task_user(void);
|
void st7565_task_user(void);
|
||||||
|
|
||||||
|
// Inverts the display
|
||||||
|
// Returns true if the screen was or is inverted
|
||||||
|
bool st7565_invert(bool invert);
|
||||||
|
|
||||||
// Returns the maximum number of characters that will fit on a line
|
// Returns the maximum number of characters that will fit on a line
|
||||||
uint8_t st7565_max_chars(void);
|
uint8_t st7565_max_chars(void);
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define DISPLAY_ALL_ON 0xA5
|
#define DISPLAY_ALL_ON 0xA5
|
||||||
#define DISPLAY_ALL_ON_RESUME 0xA4
|
#define DISPLAY_ALL_ON_RESUME 0xA4
|
||||||
#define NORMAL_DISPLAY 0xA6
|
#define NORMAL_DISPLAY 0xA6
|
||||||
|
#define INVERT_DISPLAY 0xA7
|
||||||
#define DISPLAY_ON 0xAF
|
#define DISPLAY_ON 0xAF
|
||||||
#define DISPLAY_OFF 0xAE
|
#define DISPLAY_OFF 0xAE
|
||||||
#define NOP 0xE3
|
#define NOP 0xE3
|
||||||
|
@ -72,6 +73,7 @@ uint8_t * st7565_cursor;
|
||||||
ST7565_BLOCK_TYPE st7565_dirty = 0;
|
ST7565_BLOCK_TYPE st7565_dirty = 0;
|
||||||
bool st7565_initialized = false;
|
bool st7565_initialized = false;
|
||||||
bool st7565_active = false;
|
bool st7565_active = false;
|
||||||
|
bool st7565_inverted = false;
|
||||||
display_rotation_t st7565_rotation = DISPLAY_ROTATION_0;
|
display_rotation_t st7565_rotation = DISPLAY_ROTATION_0;
|
||||||
#if ST7565_TIMEOUT > 0
|
#if ST7565_TIMEOUT > 0
|
||||||
uint32_t st7565_timeout;
|
uint32_t st7565_timeout;
|
||||||
|
@ -429,6 +431,20 @@ __attribute__((weak)) void st7565_off_user(void) {}
|
||||||
|
|
||||||
bool st7565_is_on(void) { return st7565_active; }
|
bool st7565_is_on(void) { return st7565_active; }
|
||||||
|
|
||||||
|
bool st7565_invert(bool invert) {
|
||||||
|
if (!st7565_initialized) {
|
||||||
|
return st7565_inverted;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (invert != st7565_inverted) {
|
||||||
|
spi_start(ST7565_SS_PIN, false, 0, ST7565_SPI_CLK_DIVISOR);
|
||||||
|
st7565_send_cmd(invert ? INVERT_DISPLAY : NORMAL_DISPLAY);
|
||||||
|
spi_stop();
|
||||||
|
st7565_inverted = invert;
|
||||||
|
}
|
||||||
|
return st7565_inverted;
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t st7565_max_chars(void) { return ST7565_DISPLAY_WIDTH / ST7565_FONT_WIDTH; }
|
uint8_t st7565_max_chars(void) { return ST7565_DISPLAY_WIDTH / ST7565_FONT_WIDTH; }
|
||||||
|
|
||||||
uint8_t st7565_max_lines(void) { return ST7565_DISPLAY_HEIGHT / ST7565_FONT_HEIGHT; }
|
uint8_t st7565_max_lines(void) { return ST7565_DISPLAY_HEIGHT / ST7565_FONT_HEIGHT; }
|
||||||
|
|
|
@ -202,6 +202,10 @@ void st7565_task(void);
|
||||||
// Called at the start of st7565_task, weak function overridable by the user
|
// Called at the start of st7565_task, weak function overridable by the user
|
||||||
void st7565_task_user(void);
|
void st7565_task_user(void);
|
||||||
|
|
||||||
|
// Inverts the display
|
||||||
|
// Returns true if the screen was or is inverted
|
||||||
|
bool st7565_invert(bool invert);
|
||||||
|
|
||||||
// Returns the maximum number of characters that will fit on a line
|
// Returns the maximum number of characters that will fit on a line
|
||||||
uint8_t st7565_max_chars(void);
|
uint8_t st7565_max_chars(void);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue