Fork us on GitHub Follow us on Facebook Follow us on Twitter

Ignore:
Timestamp:
2012-08-17T11:37:03Z (9 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master
Children:
1d5a540
Parents:
be2a38ad
Message:

Make ddf_dev_t and ddf_fun_t opaque. This further tighthens the DDF interface.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/usbhid/multimedia/multimedia.c

    rbe2a38ad r56fd7cf  
    8686{
    8787        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);
    9490
    9591        async_sess_t *sess =
     
    172168        }
    173169
    174         fun->ops = &multimedia_ops;
     170        ddf_fun_set_ops(fun, &multimedia_ops);
    175171
    176172        usb_multimedia_t *multim_dev =
     
    194190
    195191        usb_log_debug(NAME " function created (handle: %" PRIun ").\n",
    196             fun->handle);
     192            ddf_fun_get_handle(fun));
    197193
    198194        rc = ddf_fun_add_to_category(fun, "keyboard");
     
    203199                if (ddf_fun_unbind(fun) != EOK) {
    204200                        usb_log_error("Failed to unbind %s, won't destroy.\n",
    205                             fun->name);
     201                            ddf_fun_get_name(fun));
    206202                } else {
    207203                        ddf_fun_destroy(fun);
     
    220216{
    221217        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));
    236227        } else {
    237                 usb_log_error(
    238                     "Failed to deinit multimedia subdriver, data missing.\n");
     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);
    239232        }
    240233}
     
    244237        // TODO: checks
    245238        ddf_fun_t *fun = data;
    246         if (hid_dev == NULL || fun == NULL || fun->driver_data == NULL) {
     239        if (hid_dev == NULL) {
    247240                return false;
    248241        }
    249242
    250         usb_multimedia_t *multim_dev = fun->driver_data;
     243        usb_multimedia_t *multim_dev = ddf_fun_data_get(fun);
    251244
    252245        usb_hid_report_path_t *path = usb_hid_report_path();
Note: See TracChangeset for help on using the changeset viewer.