Changes in uspace/drv/bus/usb/usbhid/multimedia/multimedia.c [9d58539:56fd7cf] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/usbhid/multimedia/multimedia.c
r9d58539 r56fd7cf 54 54 #define NAME "multimedia-keys" 55 55 56 /*----------------------------------------------------------------------------*/ 56 57 57 /** 58 58 * Logitech UltraX device type. … … 70 70 71 71 72 /*----------------------------------------------------------------------------*/ 72 73 73 /** 74 74 * Default handler for IPC methods not handled by DDF. … … 86 86 { 87 87 usb_log_debug(NAME " default_connection_handler()\n"); 88 if (fun == NULL || fun->driver_data == NULL) { 89 async_answer_0(icallid, EINVAL); 90 return; 91 } 92 93 usb_multimedia_t *multim_dev = fun->driver_data; 88 89 usb_multimedia_t *multim_dev = ddf_fun_data_get(fun); 94 90 95 91 async_sess_t *sess = … … 106 102 async_answer_0(icallid, EINVAL); 107 103 } 108 /*----------------------------------------------------------------------------*/ 104 109 105 static ddf_dev_ops_t multimedia_ops = { 110 106 .default_handler = default_connection_handler 111 107 }; 112 /*----------------------------------------------------------------------------*/ 108 113 109 /** 114 110 * Processes key events. … … 155 151 } 156 152 } 157 /*----------------------------------------------------------------------------*/ 153 158 154 int usb_multimedia_init(struct usb_hid_dev *hid_dev, void **data) 159 155 { … … 172 168 } 173 169 174 fun->ops = &multimedia_ops;170 ddf_fun_set_ops(fun, &multimedia_ops); 175 171 176 172 usb_multimedia_t *multim_dev = … … 194 190 195 191 usb_log_debug(NAME " function created (handle: %" PRIun ").\n", 196 fun->handle);192 ddf_fun_get_handle(fun)); 197 193 198 194 rc = ddf_fun_add_to_category(fun, "keyboard"); … … 203 199 if (ddf_fun_unbind(fun) != EOK) { 204 200 usb_log_error("Failed to unbind %s, won't destroy.\n", 205 fun->name);201 ddf_fun_get_name(fun)); 206 202 } else { 207 203 ddf_fun_destroy(fun); … … 216 212 return EOK; 217 213 } 218 /*----------------------------------------------------------------------------*/ 214 219 215 void usb_multimedia_deinit(struct usb_hid_dev *hid_dev, void *data) 220 216 { 221 217 ddf_fun_t *fun = data; 222 if (fun != NULL && fun->driver_data != NULL) { 223 usb_multimedia_t *multim_dev = fun->driver_data; 224 /* Hangup session to the console */ 225 if (multim_dev->console_sess) 226 async_hangup(multim_dev->console_sess); 227 if (ddf_fun_unbind(fun) != EOK) { 228 usb_log_error("Failed to unbind %s, won't destroy.\n", 229 fun->name); 230 } else { 231 usb_log_debug2("%s unbound.\n", fun->name); 232 /* This frees multim_dev too as it was stored in 233 * fun->data */ 234 ddf_fun_destroy(fun); 235 } 218 219 usb_multimedia_t *multim_dev = ddf_fun_data_get(fun); 220 221 /* Hangup session to the console */ 222 if (multim_dev->console_sess) 223 async_hangup(multim_dev->console_sess); 224 if (ddf_fun_unbind(fun) != EOK) { 225 usb_log_error("Failed to unbind %s, won't destroy.\n", 226 ddf_fun_get_name(fun)); 236 227 } else { 237 usb_log_error( 238 "Failed to deinit multimedia subdriver, data missing.\n"); 239 } 240 } 241 /*----------------------------------------------------------------------------*/ 228 usb_log_debug2("%s unbound.\n", ddf_fun_get_name(fun)); 229 /* This frees multim_dev too as it was stored in 230 * fun->data */ 231 ddf_fun_destroy(fun); 232 } 233 } 234 242 235 bool usb_multimedia_polling_callback(struct usb_hid_dev *hid_dev, void *data) 243 236 { 244 237 // TODO: checks 245 238 ddf_fun_t *fun = data; 246 if (hid_dev == NULL || fun == NULL || fun->driver_data == NULL) {239 if (hid_dev == NULL) { 247 240 return false; 248 241 } 249 242 250 usb_multimedia_t *multim_dev = fun->driver_data;243 usb_multimedia_t *multim_dev = ddf_fun_data_get(fun); 251 244 252 245 usb_hid_report_path_t *path = usb_hid_report_path();
Note:
See TracChangeset
for help on using the changeset viewer.