MOS Source Code
Loading...
Searching...
No Matches
serial_console.cpp
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-3.0-or-later
2
4
5#include "ansi_colors.h"
7
9#include <mos_stdio.hpp>
10#include <mos_string.hpp>
11
12bool serial_console_irq_handler(u32 irq, void *data)
13{
14 MOS_UNUSED(irq);
15
16 Console *const console = (class Console *) data;
17 SerialConsole *const serial_con = static_cast<SerialConsole *>(console);
18 serial_con->handle_irq();
19
20 return true;
21}
23{
25 this->caps |= CONSOLE_CAP_COLOR;
26 this->caps |= CONSOLE_CAP_CLEAR;
27 return device->setup();
28}
29
30size_t SerialConsole::do_write(const char *data, size_t size)
31{
32 return device->write_data(data, size);
33}
34
36{
37 this->fg = fg;
38 this->bg = bg;
39 char buf[64] = { 0 };
41 device->write_data(ANSI_COLOR_RESET, sizeof(ANSI_COLOR_RESET) - 1);
42 device->write_data(buf, strlen(buf));
43 return true;
44}
45
47{
48 device->write_data("\033[2J", 4);
49 return true;
50}
51
52bool SerialConsole::get_size(u32 *width, u32 *height)
53{
54 *width = 80;
55 *height = 25;
56 return true;
57}
58
60{
61 while (device->get_data_ready())
62 {
63 char c = device->read_byte();
64 if (c == '\r')
65 c = '\n';
66 device->write_byte(c);
67 this->putc(c);
68 }
69};
ISerialDevice * device
bool extra_setup() override
bool set_color(standard_color_t fg, standard_color_t bg) override
size_t do_write(const char *data, size_t size) override
bool get_size(u32 *width, u32 *height) override
bool clear() override
@ CONSOLE_CAP_COLOR
Definition console.hpp:16
@ CONSOLE_CAP_CLEAR
Definition console.hpp:17
should_inline void get_ansi_color(char *buf, standard_color_t fg, standard_color_t bg)
Definition ansi_colors.h:80
#define ANSI_COLOR_RESET
Definition ansi_colors.h:49
standard_color_t
Definition ansi_colors.h:18
MOSAPI void linked_list_init(list_node_t *head_node)
Initialise a circular double linked list.
Definition list.cpp:15
#define list_node(element)
Get the ‘list_node’ of a list element. This is exactly the reverse of ‘list_entry’ above.
Definition list.hpp:74
#define MOS_UNUSED(x)
Definition mos_global.h:65
static size_t strlen(const char *s)
Definition pb_syshdr.h:80
bool serial_console_irq_handler(u32 irq, void *data)
standard_color_t fg
Definition console.hpp:65
console_caps caps
Definition console.hpp:38
standard_color_t bg
Definition console.hpp:65
size_t size
Definition console.hpp:57
void putc(u8 c)
Definition console.cpp:21
u8 * buf
Definition console.hpp:56
unsigned int u32
Definition types.h:17