Subversion Repositories HelenOS-historic

Rev

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;