Changeset 5da7199 in mainline for uspace/srv/hid
- Timestamp:
- 2011-09-09T17:18:06Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3781092, b7c33b0
- Parents:
- c69646f8
- Location:
- uspace/srv/hid
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/input/generic/input.c
rc69646f8 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 -
uspace/srv/hid/input/include/input.h
rc69646f8 r5da7199 40 40 41 41 #include <bool.h> 42 #include <async.h> 42 43 43 44 #define NAME "input" … … 45 46 46 47 extern bool irc_service; 47 extern int irc_phone;48 extern async_sess_t *irc_sess; 48 49 49 50 #endif -
uspace/srv/hid/input/port/ns16550.c
rc69646f8 r5da7199 38 38 #include <ipc/irc.h> 39 39 #include <async.h> 40 #include <async_obsolete.h>41 40 #include <sysinfo.h> 42 41 #include <input.h> … … 158 157 kbd_push_data(kbd_dev, IPC_GET_ARG2(*call)); 159 158 160 if (irc_service) 161 async_obsolete_msg_1(irc_phone, IRC_CLEAR_INTERRUPT, 162 IPC_GET_IMETHOD(*call)); 159 if (irc_service) { 160 async_exch_t *exch = async_exchange_begin(irc_sess); 161 async_msg_1(exch, IRC_CLEAR_INTERRUPT, IPC_GET_IMETHOD(*call)); 162 async_exchange_end(exch); 163 } 163 164 } 164 165 -
uspace/srv/hid/s3c24xx_ts/s3c24xx_ts.c
rc69646f8 r5da7199 44 44 #include <ipc/mouseev.h> 45 45 #include <async.h> 46 #include <async_obsolete.h>47 46 #include <unistd.h> 48 47 #include <stdio.h> … … 53 52 #include "s3c24xx_ts.h" 54 53 55 // FIXME: remove this header 56 #include <abi/ipc/methods.h> 57 58 #define NAME "s3c24ser" 59 #define NAMESPACE "hid" 54 #define NAME "s3c24ser" 55 #define NAMESPACE "hid" 60 56 61 57 static irq_cmd_t ts_irq_cmds[] = { … … 134 130 135 131 ts->io = vaddr; 136 ts->client_ phone = -1;132 ts->client_sess = NULL; 137 133 ts->state = ts_wait_pendown; 138 134 ts->last_x = 0; … … 284 280 button = 1; 285 281 press = 0; 286 async_obsolete_msg_2(ts->client_phone, MOUSEEV_BUTTON_EVENT, button, press); 282 283 async_exch_t *exch = async_exchange_begin(ts->client_sess); 284 async_msg_2(exch, MOUSEEV_BUTTON_EVENT, button, press); 285 async_exchange_end(exch); 287 286 288 287 s3c24xx_ts_wait_for_int_mode(ts, updn_down); … … 325 324 326 325 /* Send notifications to client. */ 327 async_obsolete_msg_2(ts->client_phone, MOUSEEV_MOVE_EVENT, dx, dy); 328 async_obsolete_msg_2(ts->client_phone, MOUSEEV_BUTTON_EVENT, button, press); 326 async_exch_t *exch = async_exchange_begin(ts->client_sess); 327 async_msg_2(exch, MOUSEEV_MOVE_EVENT, dx, dy); 328 async_msg_2(exch, MOUSEEV_BUTTON_EVENT, button, press); 329 async_exchange_end(exch); 329 330 330 331 ts->last_x = x_pos; … … 377 378 void *arg) 378 379 { 379 ipc_callid_t callid;380 ipc_call_t call;381 int retval;382 383 380 async_answer_0(iid, EOK); 384 385 while (1) { 386 callid = async_get_call(&call); 381 382 while (true) { 383 ipc_call_t call; 384 ipc_callid_t callid = async_get_call(&call); 387 385 388 386 if (!IPC_GET_IMETHOD(call)) { 389 if (ts->client_ phone != -1) {390 async_ obsolete_hangup(ts->client_phone);391 ts->client_ phone = -1;387 if (ts->client_sess != NULL) { 388 async_hangup(ts->client_sess); 389 ts->client_sess = NULL; 392 390 } 393 391 394 392 async_answer_0(callid, EOK); 395 393 return; 396 394 } 397 395 398 switch (IPC_GET_IMETHOD(call)) { 399 case IPC_M_CONNECT_TO_ME: 400 if (ts->client_phone != -1) { 401 retval = ELIMIT; 402 break; 403 } 404 ts->client_phone = IPC_GET_ARG5(call); 405 retval = 0; 406 break; 407 default: 408 retval = EINVAL; 409 } 410 async_answer_0(callid, retval); 396 async_sess_t *sess = 397 async_callback_receive_start(EXCHANGE_SERIALIZE, &call); 398 if (sess != NULL) { 399 if (ts->client_sess == NULL) { 400 ts->client_sess = sess; 401 async_answer_0(callid, EOK); 402 } else 403 async_answer_0(callid, ELIMIT); 404 } else 405 async_answer_0(callid, EINVAL); 411 406 } 412 407 } -
uspace/srv/hid/s3c24xx_ts/s3c24xx_ts.h
rc69646f8 r5da7199 39 39 40 40 #include <sys/types.h> 41 #include <async.h> 41 42 42 43 /** S3C24xx ADC and touch-screen I/O */ … … 121 122 s3c24xx_adc_io_t *io; 122 123 123 /** Callback phoneto the client */124 int client_phone;124 /** Callback session to the client */ 125 async_sess_t *client_sess; 125 126 126 127 /** Service ID */
Note:
See TracChangeset
for help on using the changeset viewer.