interface console extends service { /* Read characters from console */ ipcarg_t read(out_copy stream data); /* Write characters to console */ ipcarg_t write(in_copy stream data); /* Get last event from event queue */ ipcarg_t get_event(out ipcarg_t type, out ipcarg_t key, out ipcarg_t mods, out ipcarg_t char); /* Flush output buffer */ ipcarg_t sync(void); /* Clear console */ ipcarg_t clear(void); /* Move cursor to given position */ ipcarg_t goto(in ipcarg_t col, in ipcarg_t row); /* Get console dimensions (in character cells) */ ipcarg_t get_size(out ipcarg_t cols, in ipcarg_t rows); /* Get color capabilities */ ipcarg_t get_color_cap(void); /* Set abstract text style */ ipcarg_t set_style(in ipcarg_t style); /* Set EGA-based text color */ ipcarg_t set_color(in ipcarg_t fb_color, in ipcarg_t bg_color, in ipcarg_t attr); /* Set RGB-based text color */ ipcarg_t set_rgb_color(in ipcarg_t fb_color, in ipcarg_t bg_color); /* Set cursor visibility */ ipcarg_t cursor_visibility(in ipcarg_t visible); /* Switch to kernel debugging console (if available) */ ipcarg_t kcon_enable(void); protocol: [console.bp] }; frame ui_dispatcher { provides: console console; event event; requires: [/uspace/lib/libc/requires] kbd kbd; fb fb; ns ns; protocol: [/uspace/lib/libc/protocol] | [console_server.bp] }; architecture console { inst ui_dispatcher ui_dispatcher; inst kbd kbd; inst fb fb; bind ui_dispatcher:kbd to kbd:kbd; bind ui_dispatcher:fb to fb:fb; bind kbd:event to ui_dispatcher:event; delegate console to ui_dispatcher:console; [/uspace/lib/libc/subsume%ui_dispatcher] [/uspace/lib/libc/subsume%kbd] [/uspace/lib/libc/subsume%fb] subsume ui_dispatcher:ns to ns; subsume kbd:ns to ns; subsume fb:ns to ns; };