41,6 → 41,7 |
#include <ipc/ipc.h> |
|
#include "err.h" |
#include "modules.h" |
|
/** @name External module functions. |
* This functions have to be implemented in every module. |
91,10 → 92,10 |
|
void client_connection( ipc_callid_t iid, ipc_call_t * icall ){ |
ipc_callid_t callid; |
ipc_call_t call; |
ipc_call_t answer; |
int count; |
int res; |
ipc_call_t call; |
ipc_call_t answer; |
int answer_count; |
int res; |
|
/* |
* Accept the connection |
103,34 → 104,12 |
ipc_answer_0( iid, EOK ); |
|
while( true ){ |
// refresh data |
count = 0; |
IPC_SET_RETVAL( answer, 0 ); |
// just to be precize |
IPC_SET_METHOD( answer, 0 ); |
IPC_SET_ARG1( answer, 0 ); |
IPC_SET_ARG2( answer, 0 ); |
IPC_SET_ARG3( answer, 0 ); |
IPC_SET_ARG4( answer, 0 ); |
IPC_SET_ARG5( answer, 0 ); |
refresh_answer( & answer, & answer_count ); |
|
callid = async_get_call( & call ); |
res = module_message( callid, & call, & answer, & count ); |
res = module_message( callid, & call, & answer, & answer_count ); |
|
switch( count ){ |
case 0: ipc_answer_0( callid, res ); |
continue; |
case 1: ipc_answer_1( callid, res, IPC_GET_ARG1( answer )); |
continue; |
case 2: ipc_answer_2( callid, res, IPC_GET_ARG1( answer ), IPC_GET_ARG2( answer )); |
continue; |
case 3: ipc_answer_3( callid, res, IPC_GET_ARG1( answer ), IPC_GET_ARG2( answer ), IPC_GET_ARG3( answer )); |
continue; |
case 4: ipc_answer_4( callid, res, IPC_GET_ARG1( answer ), IPC_GET_ARG2( answer ), IPC_GET_ARG3( answer ), IPC_GET_ARG4( answer )); |
continue; |
default: ipc_answer_5( callid, res, IPC_GET_ARG1( answer ), IPC_GET_ARG2( answer ), IPC_GET_ARG3( answer ), IPC_GET_ARG4( answer ), IPC_GET_ARG5( answer )); |
continue; |
} |
answer_call( callid, res, & answer, answer_count ); |
} |
} |
|