Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/input/generic/input.c

    r5da7199 r99ac5cf  
    4747#include <stdio.h>
    4848#include <ns.h>
     49#include <ns_obsolete.h>
    4950#include <async.h>
     51#include <async_obsolete.h>
    5052#include <errno.h>
    5153#include <adt/fifo.h>
     
    6163#include <mouse.h>
    6264
     65// FIXME: remove this header
     66#include <abi/ipc/methods.h>
     67
    6368#define NUM_LAYOUTS  3
    6469
     
    7277static void kbd_devs_reclaim(void);
    7378
    74 async_sess_t *client_sess = NULL;
     79int client_phone = -1;
    7580
    7681/** List of keyboard devices */
     
    8186
    8287bool irc_service = false;
    83 async_sess_t *irc_sess = NULL;
     88int irc_phone = -1;
    8489
    8590void kbd_push_data(kbd_dev_t *kdev, sysarg_t data)
     
    165170       
    166171        ev.c = layout_parse_ev(kdev->active_layout, &ev);
    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);
     172        async_obsolete_msg_4(client_phone, INPUT_EVENT_KEY, ev.type, ev.key,
     173            ev.mods, ev.c);
    171174}
    172175
     
    174177void mouse_push_event_move(mouse_dev_t *mdev, int dx, int dy)
    175178{
    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);
     179        async_obsolete_msg_2(client_phone, INPUT_EVENT_MOVE, dx, dy);
    179180}
    180181
     
    182183void mouse_push_event_button(mouse_dev_t *mdev, int bnum, int press)
    183184{
    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);
     185        async_obsolete_msg_2(client_phone, INPUT_EVENT_BUTTON, bnum, press);
    187186}
    188187
    189188static void client_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    190189{
     190        ipc_callid_t callid;
     191        ipc_call_t call;
     192        int retval;
     193       
    191194        async_answer_0(iid, EOK);
    192195       
    193196        while (true) {
    194                 ipc_call_t call;
    195                 ipc_callid_t callid = async_get_call(&call);
     197                callid = async_get_call(&call);
    196198               
    197199                if (!IPC_GET_IMETHOD(call)) {
    198                         if (client_sess != NULL) {
    199                                 async_hangup(client_sess);
    200                                 client_sess = NULL;
     200                        if (client_phone != -1) {
     201                                async_obsolete_hangup(client_phone);
     202                                client_phone = -1;
    201203                        }
    202204                       
     
    205207                }
    206208               
    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);
     209                switch (IPC_GET_IMETHOD(call)) {
     210                case IPC_M_CONNECT_TO_ME:
     211                        if (client_phone != -1) {
     212                                retval = ELIMIT;
    220213                                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);
    227214                        }
     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;
    228228                }
     229               
     230                async_answer_0(callid, retval);
    229231        }
    230232}
     
    646648       
    647649        if (irc_service) {
    648                 while (irc_sess == NULL)
    649                         irc_sess = service_connect_blocking(EXCHANGE_SERIALIZE,
    650                             SERVICE_IRC, 0, 0);
     650                while (irc_phone < 0)
     651                        irc_phone = service_obsolete_connect_blocking(SERVICE_IRC, 0, 0);
    651652        }
    652653       
Note: See TracChangeset for help on using the changeset viewer.