Changes in uspace/srv/hid/input/generic/input.c [99ac5cf:5da7199] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/input/generic/input.c
r99ac5cf r5da7199 47 47 #include <stdio.h> 48 48 #include <ns.h> 49 #include <ns_obsolete.h>50 49 #include <async.h> 51 #include <async_obsolete.h>52 50 #include <errno.h> 53 51 #include <adt/fifo.h> … … 63 61 #include <mouse.h> 64 62 65 // FIXME: remove this header66 #include <abi/ipc/methods.h>67 68 63 #define NUM_LAYOUTS 3 69 64 … … 77 72 static void kbd_devs_reclaim(void); 78 73 79 int client_phone = -1;74 async_sess_t *client_sess = NULL; 80 75 81 76 /** List of keyboard devices */ … … 86 81 87 82 bool irc_service = false; 88 int irc_phone = -1;83 async_sess_t *irc_sess = NULL; 89 84 90 85 void kbd_push_data(kbd_dev_t *kdev, sysarg_t data) … … 170 165 171 166 ev.c = layout_parse_ev(kdev->active_layout, &ev); 172 async_obsolete_msg_4(client_phone, INPUT_EVENT_KEY, ev.type, ev.key, 173 ev.mods, ev.c); 167 168 async_exch_t *exch = async_exchange_begin(client_sess); 169 async_msg_4(exch, INPUT_EVENT_KEY, ev.type, ev.key, ev.mods, ev.c); 170 async_exchange_end(exch); 174 171 } 175 172 … … 177 174 void mouse_push_event_move(mouse_dev_t *mdev, int dx, int dy) 178 175 { 179 async_obsolete_msg_2(client_phone, INPUT_EVENT_MOVE, dx, dy); 176 async_exch_t *exch = async_exchange_begin(client_sess); 177 async_msg_2(exch, INPUT_EVENT_MOVE, dx, dy); 178 async_exchange_end(exch); 180 179 } 181 180 … … 183 182 void mouse_push_event_button(mouse_dev_t *mdev, int bnum, int press) 184 183 { 185 async_obsolete_msg_2(client_phone, INPUT_EVENT_BUTTON, bnum, press); 184 async_exch_t *exch = async_exchange_begin(client_sess); 185 async_msg_2(exch, INPUT_EVENT_BUTTON, bnum, press); 186 async_exchange_end(exch); 186 187 } 187 188 188 189 static void client_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg) 189 190 { 190 ipc_callid_t callid;191 ipc_call_t call;192 int retval;193 194 191 async_answer_0(iid, EOK); 195 192 196 193 while (true) { 197 callid = async_get_call(&call); 194 ipc_call_t call; 195 ipc_callid_t callid = async_get_call(&call); 198 196 199 197 if (!IPC_GET_IMETHOD(call)) { 200 if (client_ phone != -1) {201 async_ obsolete_hangup(client_phone);202 client_ phone = -1;198 if (client_sess != NULL) { 199 async_hangup(client_sess); 200 client_sess = NULL; 203 201 } 204 202 … … 207 205 } 208 206 209 switch (IPC_GET_IMETHOD(call)) { 210 case IPC_M_CONNECT_TO_ME: 211 if (client_phone != -1) { 212 retval = ELIMIT; 207 async_sess_t *sess = 208 async_callback_receive_start(EXCHANGE_SERIALIZE, &call); 209 if (sess != NULL) { 210 if (client_sess == NULL) { 211 client_sess = sess; 212 async_answer_0(callid, EOK); 213 } else 214 async_answer_0(callid, ELIMIT); 215 } else { 216 switch (IPC_GET_IMETHOD(call)) { 217 case INPUT_YIELD: 218 kbd_devs_yield(); 219 async_answer_0(callid, EOK); 213 220 break; 221 case INPUT_RECLAIM: 222 kbd_devs_reclaim(); 223 async_answer_0(callid, EOK); 224 break; 225 default: 226 async_answer_0(callid, EINVAL); 214 227 } 215 client_phone = IPC_GET_ARG5(call);216 retval = 0;217 break;218 case INPUT_YIELD:219 kbd_devs_yield();220 retval = 0;221 break;222 case INPUT_RECLAIM:223 kbd_devs_reclaim();224 retval = 0;225 break;226 default:227 retval = EINVAL;228 228 } 229 230 async_answer_0(callid, retval);231 229 } 232 230 } … … 648 646 649 647 if (irc_service) { 650 while (irc_phone < 0) 651 irc_phone = service_obsolete_connect_blocking(SERVICE_IRC, 0, 0); 648 while (irc_sess == NULL) 649 irc_sess = service_connect_blocking(EXCHANGE_SERIALIZE, 650 SERVICE_IRC, 0, 0); 652 651 } 653 652
Note:
See TracChangeset
for help on using the changeset viewer.