This commit is contained in:
2025-06-26 22:51:55 +01:00
parent 2ee6960223
commit 8b5ad2c038
8 changed files with 716 additions and 0 deletions

56
include/drivers/display.h Normal file
View File

@ -0,0 +1,56 @@
//display.h - Raw control over I2C display hardware
#ifndef DISPLAY_H_
#define DISPLAY_H_
#include <stdint.h>
#include <stdbool.h>
#define DISP_LINES 4
#define DISP_COLS 20
#define DISP_SIZE (DISP_COLS * DISP_LINES)
#define DISP_I2C0 0
#define DISP_I2C1 1
#define DISP_CHAR_ARROWR '\x7e'
#define DISP_CHAR_ARROWL '\x7f'
#define DISP_CHAR_DOT_HIGH '\xa5'
#define DISP_CHAR_BOX '\xdb'
#define DISP_CHAR_DEGREE '\xdf'
#define DISP_CHAR_ALPHA '\xe0'
#define DISP_CHAR_BETA '\xe2'
#define DISP_CHAR_EPSILON '\xe3'
#define DISP_CHAR_MU '\xe4'
#define DISP_CHAR_SQRT '\xe9'
#define DISP_CHAR_OMEGA '\xf4'
#define DISP_CHAR_SUM '\xf7'
#define DISP_CHAR_PI '\xf8'
#define DISP_CHAR_DOT_DIV '\xfd'
#define DISP_CHAR_BLACK '\xff'
//TODO: Set custom chars
#define DISP_CHAR_NOTE '\x01'
#define DISP_CHAR_LIST '\x02'
#define DISP_CHAR_SEARCH '\x03'
typedef struct display_t display_t;
display_t *display_init(int bus, uint8_t addr);
void display_destroy(display_t *display);
void display_set_backlight(display_t *display, bool backlight);
void display_set_cursor(display_t *display, int lin, int col);
void display_clear(display_t *display);
void display_write_ch(display_t *display, char ch);
void display_write_str(display_t *display, char *str);
void display_write_str_at(display_t *display, char *str, int lin, int col);
void display_set_display_on(display_t *display, bool on);
void display_set_cursor_show(display_t *display, bool show);
void display_set_cursor_blink(display_t *display, bool blink);
void display_set_custom_char(display_t *display, uint8_t char_idx, uint64_t data);
#endif

View File

@ -0,0 +1,21 @@
//lcd_writer.h - Defines interface for buffered, async LCD display writting
#ifndef DISPLAY_WRITER_H_
#define DISPLAY_WRITER_H_
#include <stdbool.h>
#include <drivers/display.h>
typedef struct lcd_writer_t lcd_writer_t;
lcd_writer_t *lcd_writer_init(display_t *display, bool bypass);
void lcd_writer_destroy(lcd_writer_t *lcdw);
void lcd_writer_clr(lcd_writer_t *lcdw);
void lcd_writer_clr_line(lcd_writer_t *lcdw, int lin);
void lcd_writer_chr(lcd_writer_t *lcdw, char ch, int lin, int col);
void lcd_writer_str(lcd_writer_t *lcdw, char *str, int lin, int col);
void lcd_writer_flush(lcd_writer_t *lcdw);
#endif

7
include/systems/pager.h Normal file
View File

@ -0,0 +1,7 @@
#pragma once
void pager_init();
void pager_destroy();
//void pager_add_page(page_t *page);
//void pager_draw(display_t *disp);