Changes in uspace/srv/hid/input/port/chardev.c [15f3c3f:854eddd6] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/input/port/chardev.c
r15f3c3f r854eddd6 37 37 #include <ipc/char.h> 38 38 #include <async.h> 39 #include <async_obsolete.h> 39 40 #include <input.h> 40 41 #include <kbd_port.h> 41 42 #include <kbd.h> 42 #include <loc.h> 43 #include <devmap.h> 44 #include <devmap_obsolete.h> 43 45 #include <errno.h> 44 46 #include <stdio.h> … … 59 61 60 62 static kbd_dev_t *kbd_dev; 61 static async_sess_t *dev_sess;63 static int dev_phone; 62 64 63 65 /** List of devices to try connecting to. */ … … 71 73 static int chardev_port_init(kbd_dev_t *kdev) 72 74 { 73 service_id_t service_id; 74 async_exch_t *exch; 75 devmap_handle_t handle; 75 76 unsigned int i; 76 77 int rc; … … 79 80 80 81 for (i = 0; i < num_devs; i++) { 81 rc = loc_service_get_id(in_devs[i], &service_id, 0);82 rc = devmap_device_get_handle(in_devs[i], &handle, 0); 82 83 if (rc == EOK) 83 84 break; … … 89 90 } 90 91 91 dev_sess = loc_service_connect(EXCHANGE_ATOMIC, service_id, 92 IPC_FLAG_BLOCKING); 93 if (dev_sess == NULL) { 92 dev_phone = devmap_obsolete_device_connect(handle, IPC_FLAG_BLOCKING); 93 if (dev_phone < 0) { 94 94 printf("%s: Failed connecting to device\n", NAME); 95 95 return ENOENT; 96 96 } 97 97 98 exch = async_exchange_begin(dev_sess);99 if (exch == NULL) {100 printf("%s: Failed starting exchange with device\n", NAME);101 async_hangup(dev_sess);102 return ENOMEM;103 }104 105 98 /* NB: The callback connection is slotted for removal */ 106 rc = async_connect_to_me(exch, 0, 0, 0, kbd_port_events, NULL); 107 async_exchange_end(exch); 108 109 if (rc != 0) { 110 printf("%s: Failed to create callback from device\n", NAME); 111 async_hangup(dev_sess); 99 if (async_obsolete_connect_to_me(dev_phone, 0, 0, 0, kbd_port_events, 100 NULL) != 0) { 101 printf(NAME ": Failed to create callback from device\n"); 112 102 return -1; 113 103 } 114 104 115 105 return 0; 116 106 } … … 126 116 static void chardev_port_write(uint8_t data) 127 117 { 128 async_exch_t *exch = async_exchange_begin(dev_sess); 129 if (exch == NULL) { 130 printf("%s: Failed starting exchange with device\n", NAME); 131 return; 132 } 133 134 async_msg_1(exch, CHAR_WRITE_BYTE, data); 135 async_exchange_end(exch); 118 async_obsolete_msg_1(dev_phone, CHAR_WRITE_BYTE, data); 136 119 } 137 120 … … 153 136 switch (IPC_GET_IMETHOD(call)) { 154 137 case CHAR_NOTIF_BYTE: 155 kbd_push_ data(kbd_dev, IPC_GET_ARG1(call));138 kbd_push_scancode(kbd_dev, IPC_GET_ARG1(call)); 156 139 break; 157 140 default:
Note:
See TracChangeset
for help on using the changeset viewer.