Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/input/port/adb.c

    r854eddd6 r15f3c3f  
    3737#include <ipc/adb.h>
    3838#include <async.h>
    39 #include <async_obsolete.h>
    4039#include <input.h>
    4140#include <kbd_port.h>
     
    4443#include <fcntl.h>
    4544#include <errno.h>
    46 #include <devmap.h>
    47 #include <devmap_obsolete.h>
     45#include <loc.h>
    4846
    4947static void kbd_port_events(ipc_callid_t iid, ipc_call_t *icall, void *arg);
     
    6361
    6462static kbd_dev_t *kbd_dev;
    65 static int dev_phone;
     63static async_sess_t *dev_sess;
    6664
    6765static int adb_port_init(kbd_dev_t *kdev)
    6866{
    6967        const char *dev = "adb/kbd";
    70         devmap_handle_t handle;
    71 
     68        service_id_t service_id;
     69        async_exch_t *exch;
     70        int rc;
     71       
    7272        kbd_dev = kdev;
    7373       
    74         int rc = devmap_device_get_handle(dev, &handle, 0);
    75         if (rc == EOK) {
    76                 dev_phone = devmap_obsolete_device_connect(handle, 0);
    77                 if (dev_phone < 0) {
    78                         printf("%s: Failed to connect to device\n", NAME);
    79                         return dev_phone;
    80                 }
    81         } else
     74        rc = loc_service_get_id(dev, &service_id, 0);
     75        if (rc != EOK)
    8276                return rc;
    8377       
     78        dev_sess = loc_service_connect(EXCHANGE_ATOMIC, service_id, 0);
     79        if (dev_sess == NULL) {
     80                printf("%s: Failed to connect to device\n", NAME);
     81                return ENOENT;
     82        }
     83       
     84        exch = async_exchange_begin(dev_sess);
     85        if (exch == NULL) {
     86                printf("%s: Failed starting exchange with device\n", NAME);
     87                async_hangup(dev_sess);
     88                return ENOMEM;
     89        }
     90       
    8491        /* NB: The callback connection is slotted for removal */
    85         rc = async_obsolete_connect_to_me(dev_phone, 0, 0, 0, kbd_port_events,
    86             NULL);
     92        rc = async_connect_to_me(exch, 0, 0, 0, kbd_port_events, NULL);
     93        async_exchange_end(exch);
    8794        if (rc != EOK) {
    88                 printf(NAME ": Failed to create callback from device\n");
     95                printf("%s: Failed to create callback from device\n", NAME);
     96                async_hangup(dev_sess);
    8997                return rc;
    9098        }
     
    134142static void adb_kbd_reg0_data(uint16_t data)
    135143{
    136         uint8_t b0, b1;
    137 
    138         b0 = (data >> 8) & 0xff;
    139         b1 = data & 0xff;
    140 
     144        uint8_t b0 = (data >> 8) & 0xff;
     145        uint8_t b1 = data & 0xff;
     146       
    141147        if (b0 != 0xff)
    142                 kbd_push_scancode(kbd_dev, b0);
     148                kbd_push_data(kbd_dev, b0);
     149       
    143150        if (b1 != 0xff)
    144                 kbd_push_scancode(kbd_dev, b1);
     151                kbd_push_data(kbd_dev, b1);
    145152}
    146153
Note: See TracChangeset for help on using the changeset viewer.