48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
#include "vxBoot/terminal.h"
|
|
|
|
#include <gint/display.h>
|
|
#include <gint/timer.h>
|
|
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
/* internal symbols */
|
|
struct terminal terminal;
|
|
|
|
/* terminal_open(): Initialize and open the terminal */
|
|
int terminal_open(void)
|
|
{
|
|
if (terminal.private.watermark == TERM_PRIVATE_WATERMARK)
|
|
terminal_close();
|
|
memset(&terminal, 0x00, sizeof(struct terminal));
|
|
terminal.private.timer.id = -1;
|
|
terminal.winsize.ws_xpixel = DWIDTH;
|
|
terminal.winsize.ws_ypixel = DHEIGHT;
|
|
terminal.winsize.ft_xpixel = FWIDTH + 1;
|
|
terminal.winsize.ft_ypixel = FHEIGHT + 1;
|
|
terminal.winsize.ws_col = DWIDTH / terminal.winsize.ft_xpixel;
|
|
terminal.winsize.ws_row = DHEIGHT / terminal.winsize.ft_ypixel;
|
|
terminal.buffer.size = terminal.winsize.ws_row
|
|
* terminal.winsize.ws_col
|
|
* TERM_RDBUFFER_NBLINE
|
|
* sizeof(uint8_t);
|
|
terminal.buffer.data = calloc(1, terminal.buffer.size);
|
|
if (terminal.buffer.data == NULL) {
|
|
terminal_close();
|
|
return (-1);
|
|
}
|
|
terminal.private.timer.id = timer_configure(
|
|
TIMER_ANY,
|
|
250000,
|
|
GINT_CALL(terminal_cursor_handler)
|
|
);
|
|
if (terminal.private.timer.id < 0) {
|
|
terminal_close();
|
|
return (-1);
|
|
}
|
|
terminal.private.color.bg = C_BLACK;
|
|
terminal.private.color.fg = C_WHITE;
|
|
terminal.private.watermark = TERM_PRIVATE_WATERMARK;
|
|
return (0);
|
|
}
|