Rev 1459 | Rev 1466 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1459 | Rev 1465 | ||
---|---|---|---|
Line 97... | Line 97... | ||
97 | ipc_answer_fast(callid,0,0,0); |
97 | ipc_answer_fast(callid,0,0,0); |
98 | /* TODO: Handle hangup */ |
98 | /* TODO: Handle hangup */ |
99 | return; |
99 | return; |
100 | case KBD_PUSHCHAR: |
100 | case KBD_PUSHCHAR: |
101 | /* got key from keyboard driver */ |
101 | /* got key from keyboard driver */ |
- | 102 | ||
102 | /* find active console */ |
103 | /* find active console */ |
- | 104 | ||
103 | /* if client is awaiting key, send it */ |
105 | /* if client is awaiting key, send it */ |
- | 106 | ||
104 | /*FIXME: else store key to its buffer */ |
107 | /*FIXME: else store key to its buffer */ |
105 | retval = 0; |
108 | retval = 0; |
106 | i = IPC_GET_ARG1(call) & 0xff; |
109 | i = IPC_GET_ARG1(call) & 0xff; |
107 | /* switch to another virtual console */ |
110 | /* switch to another virtual console */ |
108 | if ((i >= KBD_KEY_F1) && (i < KBD_KEY_F1 + CONSOLE_COUNT)) { |
111 | if ((i >= KBD_KEY_F1) && (i < KBD_KEY_F1 + CONSOLE_COUNT)) { |
Line 110... | Line 113... | ||
110 | break; |
113 | break; |
111 | } |
114 | } |
112 | keybuffer_push(&(connections[active_client].keybuffer), i); |
115 | keybuffer_push(&(connections[active_client].keybuffer), i); |
113 | /* Send it to first FB, DEBUG */ |
116 | /* Send it to first FB, DEBUG */ |
114 | // ipc_call_async_2(connections[0].vfb_phone, FB_PUTCHAR, 0, IPC_GET_ARG1(call),NULL,NULL); |
117 | // ipc_call_async_2(connections[0].vfb_phone, FB_PUTCHAR, 0, IPC_GET_ARG1(call),NULL,NULL); |
115 | ipc_call_sync_2(connections[0].vfb_phone, FB_PUTCHAR, 0, IPC_GET_ARG1(call),NULL,NULL); |
118 | // ipc_call_sync_2(connections[0].vfb_phone, FB_PUTCHAR, 0, IPC_GET_ARG1(call),NULL,NULL); |
116 | 119 | ||
117 | break; |
120 | break; |
118 | default: |
121 | default: |
119 | retval = ENOENT; |
122 | retval = ENOENT; |
120 | } |
123 | } |
Line 146... | Line 149... | ||
146 | case IPC_M_PHONE_HUNGUP: |
149 | case IPC_M_PHONE_HUNGUP: |
147 | /* TODO */ |
150 | /* TODO */ |
148 | ipc_answer_fast(callid, 0,0,0); |
151 | ipc_answer_fast(callid, 0,0,0); |
149 | return; |
152 | return; |
150 | case CONSOLE_PUTCHAR: |
153 | case CONSOLE_PUTCHAR: |
151 | /* TODO: send message to fb */ |
154 | /* Send message to fb */ |
152 | ipc_call_async_2(connections[consnum].vfb_phone, FB_PUTCHAR, IPC_GET_ARG1(call), IPC_GET_ARG2(call), NULL, NULL); |
155 | ipc_call_async_2(connections[consnum].vfb_phone, FB_PUTCHAR, IPC_GET_ARG1(call), IPC_GET_ARG2(call), NULL, NULL); |
153 | break; |
156 | break; |
154 | case CONSOLE_GETCHAR: |
157 | case CONSOLE_GETCHAR: |
- | 158 | /* FIXME: Only temporary solution until request storage will be created */ |
|
155 | /* FIXME: */ |
159 | |
156 | if (!keybuffer_pop(&(connections[active_client].keybuffer), (char *)&arg1)) { |
160 | while (!keybuffer_pop(&(connections[active_client].keybuffer), (char *)&arg1)) { |
157 | /* FIXME: buffer empty -> store request */ |
161 | /* FIXME: buffer empty -> store request */ |
158 | arg1 = 'X'; /* Only temporary */ |
162 | usleep(10000); |
159 | }; |
163 | }; |
160 | //ipc_call_async_2(connections[active_client].vfb_phone, FB_PUTCHAR, ' ', arg1, NULL, (void *)NULL); |
- | |
- | 164 | ||
161 | break; |
165 | break; |
162 | } |
166 | } |
163 | ipc_answer_fast(callid, 0,0,0); |
167 | ipc_answer_fast(callid, 0, arg1, 0); |
164 | } |
168 | } |
165 | } |
169 | } |
166 | 170 | ||
167 | int main(int argc, char *argv[]) |
171 | int main(int argc, char *argv[]) |
168 | { |
172 | { |
Line 187... | Line 191... | ||
187 | for (i = 0; i < CONSOLE_COUNT; i++) { |
191 | for (i = 0; i < CONSOLE_COUNT; i++) { |
188 | connections[i].used = 0; |
192 | connections[i].used = 0; |
189 | keybuffer_init(&(connections[i].keybuffer)); |
193 | keybuffer_init(&(connections[i].keybuffer)); |
190 | /* TODO: init key_buffer */ |
194 | /* TODO: init key_buffer */ |
191 | while ((connections[i].vfb_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VIDEO, 0)) < 0) { |
195 | while ((connections[i].vfb_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VIDEO, 0)) < 0) { |
192 | 196 | usleep(10000); |
|
193 | ipc_call_async_2(connections[i].vfb_phone, FB_PUTCHAR, 'a', 'b', NULL, (void *)NULL); |
197 | //ipc_call_async_2(connections[i].vfb_phone, FB_PUTCHAR, 'a', 'b', NULL, (void *)NULL); |
194 | } |
198 | } |
195 | } |
199 | } |
196 | 200 | ||
197 | if (ipc_connect_to_me(PHONE_NS, SERVICE_CONSOLE, 0, &phonehash) != 0) { |
201 | if (ipc_connect_to_me(PHONE_NS, SERVICE_CONSOLE, 0, &phonehash) != 0) { |
198 | return -1; |
202 | return -1; |