Files | |
| file | console.c |
| file | console.h |
| file | gcons.c |
| file | gcons.h |
| file | screenbuffer.c |
| file | screenbuffer.h |
Data Structures | |
| struct | attr_idx_t |
| struct | attr_rgb_t |
| struct | attr_style_t |
| union | attr_val_t |
| struct | attrs_t |
| struct | console_t |
| struct | hid_class_info |
| struct | keyfield_t |
| One field on screen. More... | |
| struct | screenbuffer_t |
| Structure for buffering state of one virtual console. More... | |
Defines | |
| #define | COLOR_BACKGROUND 0xffffff |
| #define | COLOR_FOREGROUND 0x202020 |
| #define | COLOR_MAIN 0xffffff |
| #define | CONSOLE_COUNT 12 |
| #define | CONSOLE_MARGIN 6 |
| #define | CONSOLE_TOP 66 |
| #define | HOTPLUG_WATCH_INTERVAL (1000 * 250) |
| Interval for checking for new keyboard (1/4s). | |
| #define | KERNEL_CONSOLE 11 |
| #define | MAX_IPC_OUTGOING_PHONES 128 |
| #define | NAME "console" |
| #define | NAMESPACE "term" |
| #define | STATUS_HEIGHT 48 |
| #define | STATUS_SPACE 4 |
| #define | STATUS_START 110 |
| #define | STATUS_TOP 8 |
| #define | STATUS_WIDTH 48 |
Enumerations | |
| enum | attr_type_t |
| enum | butstate |
Functions | |
| static int | async_connect_to_me_hack (int phone, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, async_client_conn_t client_receiver, ipc_callid_t *hash) |
| static bool | attrs_same (attrs_t a1, attrs_t a2) |
| Compares two sets of attributes. | |
| static int | ccap_fb_to_con (sysarg_t ccap_fb, sysarg_t *ccap_con) |
| static void | cell_mark_changed (sysarg_t col, sysarg_t row) |
| Mark a character cell as changed. | |
| static void | change_console (console_t *cons) |
| Switch to new console. | |
| static int | check_new_device_fibril (void *arg) |
| Periodically check for new keyboards in /dev/class/. | |
| static void | check_new_devices_in_background (int(*connection_func)(const char *), const char *classname) |
| Start a fibril monitoring hot-plugged keyboards. | |
| static void | clear (void) |
| static void | client_connection (ipc_callid_t iid, ipc_call_t *icall) |
| Default thread for new connections. | |
| static void | close_driver_phone (ipc_callid_t hash) |
| static int | connect_keyboard (const char *path) |
| static int | connect_keyboard_or_mouse (const char *devname, async_client_conn_t handler, const char *path) |
| static int | connect_mouse (const char *path) |
| static void | cons_get_event (console_t *cons, ipc_callid_t rid, ipc_call_t *request) |
| static void | cons_read (console_t *cons, ipc_callid_t rid, ipc_call_t *request) |
| static void | cons_write (console_t *cons, ipc_callid_t rid, ipc_call_t *request) |
| static bool | console_init (char *input) |
| static void | curs_goto (sysarg_t x, sysarg_t y) |
| static void | curs_hide_sync (void) |
| static void | curs_visibility (bool visible) |
| static void | draw_pixmap (char *logo, size_t size, sysarg_t x, sysarg_t y) |
| Draw a PPM pixmap to framebuffer. | |
| static void | fb_pending_flush (void) |
| Flush pending cells to FB. | |
| static void | fb_putchar (wchar_t c, sysarg_t col, sysarg_t row) |
| Print a character to the active VC with buffering. | |
| static void | fb_update_area (console_t *cons, sysarg_t x0, sysarg_t y0, sysarg_t width, sysarg_t height) |
| Send an area of screenbuffer to the FB driver. | |
| void | gcons_change_console (size_t index) |
| Notification run on changing console (except kernel console). | |
| static int | gcons_find_conbut (sysarg_t x, sysarg_t y) |
| void | gcons_in_kernel (void) |
| Change to kernel console. | |
| void | gcons_init (int phone) |
| Initialize nice graphical console environment. | |
| int | gcons_mouse_btn (bool state) |
| Handle mouse click. | |
| void | gcons_mouse_move (ssize_t dx, ssize_t dy) |
| Handle mouse move. | |
| void | gcons_notify_char (size_t index) |
| Notification function that gets called on new output to virtual console. | |
| void | gcons_notify_connect (size_t index) |
| Notification function called on console connect. | |
| void | gcons_notify_disconnect (size_t index) |
| Notification function called on service disconnect from console. | |
| void | gcons_redraw_console (void) |
| Redraws console graphics. | |
| static keyfield_t * | get_field_at (screenbuffer_t *scr, sysarg_t x, sysarg_t y) |
| Returns keyfield for position on screen. | |
| static void | interrupt_received (ipc_callid_t callid, ipc_call_t *call) |
| static void | kbd_reclaim (void) |
| static void | kbd_yield (void) |
| static void | keyboard_events (ipc_callid_t iid, ipc_call_t *icall) |
| Handler for keyboard. | |
| static ssize_t | limit (ssize_t a, ssize_t left, ssize_t right) |
| Return x, where left <= x <= right && |a-x| == min(|a-x|) is smallest. | |
| int | main (int argc, char *argv[]) |
| Main entry point. | |
| static void | make_anim (void) |
| static int | make_pixmap (char *data, size_t size) |
| Creates a pixmap on framebuffer. | |
| static void | mouse_events (ipc_callid_t iid, ipc_call_t *icall) |
| Handler for mouse events. | |
| static void | redraw_state (size_t index) |
| Redraw the button showing state of a given console. | |
| static void | screen_clear (void) |
| static void | screen_reclaim (void) |
| static void | screen_yield (void) |
| void | screenbuffer_clear (screenbuffer_t *scr) |
| Clear screenbuffer. | |
| void | screenbuffer_clear_line (screenbuffer_t *scr, sysarg_t line) |
| Clear one buffer line. | |
| void | screenbuffer_copy_buffer (screenbuffer_t *scr, keyfield_t *dest) |
| Copy content buffer from screenbuffer to given memory. | |
| void | screenbuffer_goto (screenbuffer_t *scr, sysarg_t x, sysarg_t y) |
| Set new cursor position in screenbuffer. | |
| screenbuffer_t * | screenbuffer_init (screenbuffer_t *scr, sysarg_t size_x, sysarg_t size_y) |
| Initilize screenbuffer. | |
| void | screenbuffer_putchar (screenbuffer_t *scr, wchar_t ch) |
| Store one character to screenbuffer. | |
| void | screenbuffer_set_color (screenbuffer_t *scr, uint8_t fg_color, uint8_t bg_color, uint8_t flags) |
| Set new color. | |
| void | screenbuffer_set_rgb_color (screenbuffer_t *scr, uint32_t fg_color, uint32_t bg_color) |
| Set new RGB color. | |
| void | screenbuffer_set_style (screenbuffer_t *scr, uint8_t style) |
| Set new style. | |
| static void | set_attrs (attrs_t *attrs) |
| static void | set_color (uint8_t fgcolor, uint8_t bgcolor, uint8_t flags) |
| static void | set_rgb_color (uint32_t fgcolor, uint32_t bgcolor) |
| static void | set_style (uint8_t style) |
| static void | tran_putch (wchar_t ch, sysarg_t col, sysarg_t row) |
| Transparent putchar. | |
| static void | usage (void) |
| static int | vp_create (sysarg_t x, sysarg_t y, sysarg_t width, sysarg_t height) |
| Create view port. | |
| static void | vp_switch (int vp) |
| static void | write_char (console_t *cons, wchar_t ch) |
| Process a character from the client (TTY emulation). | |
Variables | |
| static size_t | active_console = 0 |
| static console_t * | active_console = &consoles[0] |
| static int | animation = -1 |
| static bool | btn_pressed = false |
| static sysarg_t | btn_x = 0 |
| static sysarg_t | btn_y = 0 |
| static enum butstate | console_state [CONSOLE_COUNT] |
| static int | console_vp |
| static console_t | consoles [CONSOLE_COUNT] |
| Array of data for virtual consoles. | |
| static int | cstatus_vp [CONSOLE_COUNT] |
| static ipc_callid_t | driver_phones [MAX_IPC_OUTGOING_PHONES] = { 0 } |
| To allow proper phone closing. | |
| struct { | |
| sysarg_t color_cap | |
| Color capabilities (FB_CCAP_xxx). | |
| sysarg_t cols | |
| Framebuffer columns. | |
| int phone | |
| Framebuffer phone. | |
| sysarg_t rows | |
| Framebuffer rows. | |
| } | fb_info |
| Information about framebuffer. | |
| struct { | |
| sysarg_t cnt | |
| Width of the span. | |
| sysarg_t col | |
| Leftmost column of the span. | |
| sysarg_t row | |
| Row where the span lies. | |
| } | fb_pending |
| Information on row-span yet unsent to FB driver. | |
| static int | fbphone |
| static int | ic_pixmaps [CONS_LAST] = {-1, -1, -1, -1, -1, -1} |
| List of pixmaps identifying these icons. | |
| static keyfield_t * | interbuffer = NULL |
| Pointer to memory shared with framebufer used for faster virtual console switching. | |
| static int | kbd_phone |
| Phone to the keyboard driver. | |
| static console_t * | kernel_console = &consoles[KERNEL_CONSOLE] |
| static int | mouse_phone |
| Phone to the mouse driver. | |
| static sysarg_t | mouse_x = 0 |
| static sysarg_t | mouse_y = 0 |
| static console_t * | prev_console = &consoles[0] |
| static bool | use_gcons = false |
| static sysarg_t | xres |
| static sysarg_t | yres |
Compares two sets of attributes.
| s1 | First style | |
| s2 | Second style |
Definition at line 123 of file screenbuffer.h.
| static int check_new_device_fibril | ( | void * | arg | ) | [static] |
| int gcons_mouse_btn | ( | bool | state | ) |
| static keyfield_t* get_field_at | ( | screenbuffer_t * | scr, | |
| sysarg_t | x, | |||
| sysarg_t | y | |||
| ) | [inline, static] |
Returns keyfield for position on screen.
Screenbuffer->buffer is cyclic buffer so we must couted in index of the topmost line.
| scr | Screenbuffer | |
| x | Position on screen | |
| y | Position on screen |
Definition at line 110 of file screenbuffer.h.
| int main | ( | int | argc, | |
| char * | argv[] | |||
| ) |
| static int make_pixmap | ( | char * | data, | |
| size_t | size | |||
| ) | [static] |
| void screenbuffer_clear | ( | screenbuffer_t * | scr | ) |
| void screenbuffer_clear_line | ( | screenbuffer_t * | scr, | |
| sysarg_t | line | |||
| ) |
Clear one buffer line.
| scr | ||
| line | One buffer line (not a screen line!) |
Definition at line 112 of file screenbuffer.c.
| void screenbuffer_copy_buffer | ( | screenbuffer_t * | scr, | |
| keyfield_t * | dest | |||
| ) |
Copy content buffer from screenbuffer to given memory.
| scr | Source screenbuffer | |
| dest | Destination |
Definition at line 128 of file screenbuffer.c.
| void screenbuffer_goto | ( | screenbuffer_t * | scr, | |
| sysarg_t | x, | |||
| sysarg_t | y | |||
| ) |
Set new cursor position in screenbuffer.
| scr | ||
| x | ||
| y |
Definition at line 143 of file screenbuffer.c.
| screenbuffer_t * screenbuffer_init | ( | screenbuffer_t * | scr, | |
| sysarg_t | size_x, | |||
| sysarg_t | size_y | |||
| ) |
Initilize screenbuffer.
Allocate space for screen content in accordance to given size.
| scr | Initialized screenbuffer | |
| size_x | Width in characters | |
| size_y | Height in characters |
Definition at line 69 of file screenbuffer.c.
| void screenbuffer_putchar | ( | screenbuffer_t * | scr, | |
| wchar_t | ch | |||
| ) |
Store one character to screenbuffer.
Its position is determined by scr->position_x and scr->position_y.
| scr | Screenbuffer | |
| c | Stored character |
Definition at line 49 of file screenbuffer.c.
| void screenbuffer_set_color | ( | screenbuffer_t * | scr, | |
| uint8_t | fg_color, | |||
| uint8_t | bg_color, | |||
| uint8_t | flags | |||
| ) |
| void screenbuffer_set_rgb_color | ( | screenbuffer_t * | scr, | |
| uint32_t | fg_color, | |||
| uint32_t | bg_color | |||
| ) |
| void screenbuffer_set_style | ( | screenbuffer_t * | scr, | |
| uint8_t | style | |||
| ) |
1.4.7