13 #include <sys/scheduler.h>
15 #include <io/status_loggers.h>
18 #include <io/rgb_image.h>
19 #include "lib/sprintf.h"
49 qemu_log(
"Starting task...");
51 qemu_log(
"Process at: %x", proc);
63 qemu_log(
"[tFC] Configurate...");
64 qemu_log(
"\t[TTY Configurator] Using default PSF fonts");
99 void set_cursor_enabled(
bool en) {
112 uint32_t tty_getcolor() {
132 uint8_t *addr = (uint8_t*)getFrameBufferAddr();
133 uint32_t pitch = getDisplayPitch();
135 uint8_t *read_ptr = addr + (row_pos_offset * pitch);
136 uint8_t *write_ptr = addr;
140 uint32_t num_bytes = (pitch * VESA_HEIGHT) - (pitch * row_pos_offset);
142 memcpy(write_ptr, read_ptr, num_bytes);
145 write_ptr = addr + num_bytes;
146 memset(write_ptr, 0, pitch * row_pos_offset);
177 void buffer_set_pixel4(uint8_t *buffer,
size_t width,
size_t height,
size_t x,
size_t y,
size_t color) {
178 if(x >= width || y >= height)
181 size_t pixpos = PIXIDX(width * 4, x * 4, y);
183 buffer[pixpos + 0] = (uint8_t)color;
184 buffer[pixpos + 1] = (uint8_t)(color >> 8);
185 buffer[pixpos + 2] = (uint8_t)(color >> 16);
203 }
else if (c ==
'\t') {
205 }
else if(c !=
'\n') {
216 void tty_putchar(
char c,
char c1) {
246 for (
size_t i = 0, len =
strlen(str); i < len; i++) {
263 vasprintf(&a, format, args);
270 void _tty_printf(
const char *text, ...) {
277 va_start(args, text);
291 qemu_log(
"animTextCursor Work...");
319 void clean_tty_screen_no_update() {
326 void clean_tty_screen() {
327 clean_tty_screen_no_update();
size_t strlen(const char *str)
Возращает длину строки
void * memset(void *ptr, char value, size_t num)
Заполнение массива указанными символами
void * memcpy(void *restrict destination, const void *restrict source, size_t n)
Копирование непересекающихся массивов используя SSE.
bool isUTF(char c)
Проверяет, является ли символ формата UTF-8.
void drawRect(uint32_t x, uint32_t y, uint32_t w, uint32_t h, uint32_t color)
Рисуем залитый прямоугольник
volatile process_t * get_current_proc(void)
Получить текущий обработчик процесса
void sleep_ms(uint32_t milliseconds)
Ожидание по миллисекундам
size_t tty_line_fill[1024]
....
void tty_taskInit()
Инициализация потоков
uint32_t getPosY()
Получение позиции по y.
void tty_fontConfigurate()
Инициализация системы для печати через шрифты
thread_t * threadTTY01
Поток с анимацией курсора
bool stateTTY
Статус, разрешен ли вывод текста через tty_printf.
uint32_t tty_off_pos_h
...
void tty_scroll(uint32_t num_rows)
Прокрутка экрана на num_rows строк
uint32_t getPosX()
Получение позиции по x.
uint32_t tty_bg_color
Текущий задний фон
volatile uint8_t tty_feedback
...
void setPosX(uint32_t x)
Изменяем позицию курсора по X.
void tty_changeState(bool state)
Меняет состояние печати через printf.
void tty_backspace()
Удаление последнего символа
void _tty_print(const char *format, va_list args)
Подфункция-обработчик для tty_printf.
void setPosY(uint32_t y)
Изменяем позицию курсора по Y.
void _tty_putchar(char c, char c1)
Вывод одного символа
void _tty_puts(const char str[])
Вывод строки
void tty_set_bgcolor(uint32_t color)
Изменение цвета заднего фона
void tty_setcolor(uint32_t color)
Изменение цвета текста
uint32_t tty_pos_y
Позиция на экране по Y.
void animTextCursor()
Анимация курсора (для tty)
uint32_t tty_text_color
Текущий цвет шрифта
void buffer_set_pixel4(uint8_t *buffer, size_t width, size_t height, size_t x, size_t y, size_t color)
Устновливает пиксель RGB в буфере в котором все пиксели представляют собой RGBA (альфа канал игнориру...
bool showAnimTextCursor
Отображать ли анимацию курсора
uint32_t tty_pos_x
Позиция на экране по X.