Changeset 8b97256 in mainline for uspace/srv/fb/msim.c
- Timestamp:
- 2008-12-18T12:23:39Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d99b3f2
- Parents:
- 8231246
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fb/msim.c
r8231246 r8b97256 37 37 38 38 #include <async.h> 39 #include <ipc/fb.h>40 #include <ipc/ipc.h>41 39 #include <libc.h> 42 #include <errno.h>43 #include <string.h>44 #include <libc.h>45 #include <stdio.h>46 #include <ipc/fb.h>47 40 #include <sysinfo.h> 48 41 #include <as.h> 49 #include <align.h>50 42 #include <ddi.h> 51 43 … … 56 48 #define HEIGHT 25 57 49 58 #define MAX_CONTROL 2059 60 /* Allow only 1 connection */61 static int client_connected = 0;62 63 50 static char *virt_addr; 64 51 … … 66 53 { 67 54 *virt_addr = c; 68 }69 70 static void msim_client_connection(ipc_callid_t iid, ipc_call_t *icall)71 {72 int retval;73 ipc_callid_t callid;74 ipc_call_t call;75 char c;76 int lastcol = 0;77 int lastrow = 0;78 int newcol;79 int newrow;80 int fgcolor;81 int bgcolor;82 int i;83 84 if (client_connected) {85 ipc_answer_0(iid, ELIMIT);86 return;87 }88 89 client_connected = 1;90 ipc_answer_0(iid, EOK);91 92 /* Clear the terminal, set scrolling region93 to 0 - 25 lines */94 serial_clrscr();95 serial_goto(0, 0);96 serial_puts("\033[0;25r");97 98 while (true) {99 callid = async_get_call(&call);100 switch (IPC_GET_METHOD(call)) {101 case IPC_M_PHONE_HUNGUP:102 client_connected = 0;103 ipc_answer_0(callid, EOK);104 return;105 case FB_PUTCHAR:106 c = IPC_GET_ARG1(call);107 newrow = IPC_GET_ARG2(call);108 newcol = IPC_GET_ARG3(call);109 if ((lastcol != newcol) || (lastrow != newrow))110 serial_goto(newrow, newcol);111 lastcol = newcol + 1;112 lastrow = newrow;113 msim_putc(c);114 retval = 0;115 break;116 case FB_CURSOR_GOTO:117 newrow = IPC_GET_ARG1(call);118 newcol = IPC_GET_ARG2(call);119 serial_goto(newrow, newcol);120 lastrow = newrow;121 lastcol = newcol;122 retval = 0;123 break;124 case FB_GET_CSIZE:125 ipc_answer_2(callid, EOK, HEIGHT, WIDTH);126 continue;127 case FB_CLEAR:128 serial_clrscr();129 retval = 0;130 break;131 case FB_SET_STYLE:132 fgcolor = IPC_GET_ARG1(call);133 bgcolor = IPC_GET_ARG2(call);134 if (fgcolor < bgcolor)135 serial_set_style(0);136 else137 serial_set_style(7);138 retval = 0;139 break;140 case FB_SCROLL:141 i = IPC_GET_ARG1(call);142 if ((i > HEIGHT) || (i < -HEIGHT)) {143 retval = EINVAL;144 break;145 }146 serial_scroll(i);147 serial_goto(lastrow, lastcol);148 retval = 0;149 break;150 case FB_CURSOR_VISIBILITY:151 if(IPC_GET_ARG1(call))152 serial_cursor_enable();153 else154 serial_cursor_disable();155 retval = 0;156 break;157 default:158 retval = ENOENT;159 }160 ipc_answer_0(callid, retval);161 }162 55 } 163 56 … … 171 64 serial_console_init(msim_putc, WIDTH, HEIGHT); 172 65 173 async_set_client_connection( msim_client_connection);66 async_set_client_connection(serial_client_connection); 174 67 return 0; 175 68 }
Note:
See TracChangeset
for help on using the changeset viewer.