| 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
 1.4.7