Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/usbhid/usbhid.c

    rfaa44e58 r78bfae9  
    3737#include <usb/debug.h>
    3838#include <usb/classes/classes.h>
    39 #include <usb/hid/hid.h>
    40 #include <usb/hid/hidparser.h>
    41 #include <usb/hid/hidreport.h>
    42 #include <usb/hid/request.h>
     39#include <usb/classes/hid.h>
     40#include <usb/classes/hidparser.h>
     41#include <usb/classes/hidreport.h>
     42#include <usb/classes/hidreq.h>
    4343#include <errno.h>
    4444#include <str_error.h>
     
    203203       
    204204        usb_log_debug("Compare flags: %d\n", mapping->compare);
    205         size_t size = usb_hid_report_input_length(hid_dev->report, usage_path,
    206             mapping->compare);
     205//      size_t size = usb_hid_report_size(hid_dev->report, 0,
     206//          USB_HID_REPORT_TYPE_INPUT);
     207        size_t size = 0;
     208        usb_hid_report_field_t *field = usb_hid_report_get_sibling (hid_dev->report,
     209                NULL, usage_path, mapping->compare, USB_HID_REPORT_TYPE_INPUT);
     210        while(field != NULL) {
     211                size++;
     212                field = usb_hid_report_get_sibling (hid_dev->report,
     213                                        field, usage_path, mapping->compare,
     214                            USB_HID_REPORT_TYPE_INPUT);
     215        }
     216       
    207217        usb_log_debug("Size of the input report: %zuB\n", size);
    208        
    209218        usb_hid_report_path_free(usage_path);
    210219       
     
    225234        }
    226235       
    227         hid_dev->subdrivers = (usb_hid_subdriver_t *)malloc(count *
     236        // add one generic HID subdriver per device
     237       
     238        hid_dev->subdrivers = (usb_hid_subdriver_t *)malloc((count + 1) *
    228239            sizeof(usb_hid_subdriver_t));
    229240        if (hid_dev->subdrivers == NULL) {
     
    238249        }
    239250       
    240         hid_dev->subdriver_count = count;
     251        hid_dev->subdrivers[count].init = usb_generic_hid_init;
     252        hid_dev->subdrivers[count].poll = usb_generic_hid_polling_callback;
     253        hid_dev->subdrivers[count].deinit = NULL;
     254        hid_dev->subdrivers[count].poll_end = NULL;
     255       
     256        hid_dev->subdriver_count = count + 1;
    241257       
    242258        return EOK;
     
    457473                        if (hid_dev->subdrivers[i].init != NULL) {
    458474                                usb_log_debug("Initializing subdriver %d.\n",i);
    459                                 rc = hid_dev->subdrivers[i].init(hid_dev);
     475                                rc = hid_dev->subdrivers[i].init(hid_dev,
     476                                    &hid_dev->subdrivers[i].data);
    460477                                if (rc != EOK) {
    461478                                        usb_log_warning("Failed to initialize"
     
    522539        for (i = 0; i < hid_dev->subdriver_count; ++i) {
    523540                if (hid_dev->subdrivers[i].poll != NULL
    524                     && hid_dev->subdrivers[i].poll(hid_dev, buffer,
    525                     buffer_size)) {
     541                    && hid_dev->subdrivers[i].poll(hid_dev,
     542                        hid_dev->subdrivers[i].data, buffer, buffer_size)) {
    526543                        cont = true;
    527544                }
     
    546563        for (i = 0; i < hid_dev->subdriver_count; ++i) {
    547564                if (hid_dev->subdrivers[i].poll_end != NULL) {
    548                         hid_dev->subdrivers[i].poll_end(hid_dev, reason);
     565                        hid_dev->subdrivers[i].poll_end(hid_dev,
     566                            hid_dev->subdrivers[i].data, reason);
    549567                }
    550568        }
     
    627645        for (i = 0; i < (*hid_dev)->subdriver_count; ++i) {
    628646                if ((*hid_dev)->subdrivers[i].deinit != NULL) {
    629                         (*hid_dev)->subdrivers[i].deinit(*hid_dev);
     647                        (*hid_dev)->subdrivers[i].deinit(*hid_dev,
     648                            (*hid_dev)->subdrivers[i].data);
    630649                }
    631650        }
Note: See TracChangeset for help on using the changeset viewer.