Changeset d7c72db in mainline for uspace/drv/usbhid/generic/hiddev.c


Ignore:
Timestamp:
2011-05-24T21:01:02Z (13 years ago)
Author:
Lubos Slovak <lubos.slovak@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a28b41d
Parents:
4e78236
Message:

A lot of changes to mkbd and HID interface.

  • mkbd Report parser initialization (getting report descriptor, parsing).
  • Getting report descriptor and its length from HID device added to HID interface (client and server stubs not implemented).
  • Fixed event type to uint8_t *.
  • Implemented these functions in generic HID driver.
  • Moved mapping from Consumer page usages to string descriptions moved to libusbhid.
  • Removed some temporary debug output.
File:
1 edited

Legend:

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

    r4e78236 rd7c72db  
    6262static size_t usb_generic_hid_get_event_length(ddf_fun_t *fun);
    6363
    64 static int usb_generic_hid_get_event(ddf_fun_t *fun, int32_t *buffer,
     64static int usb_generic_hid_get_event(ddf_fun_t *fun, uint8_t *buffer,
    6565    size_t size, size_t *act_size, unsigned int flags);
    6666
    6767static int usb_generic_hid_client_connected(ddf_fun_t *fun);
     68
     69static size_t usb_generic_get_report_descriptor_length(ddf_fun_t *fun);
     70
     71static int usb_generic_get_report_descriptor(ddf_fun_t *fun, uint8_t *desc,
     72    size_t size, size_t *actual_size);
    6873
    6974/*----------------------------------------------------------------------------*/
     
    7176static usbhid_iface_t usb_generic_iface = {
    7277        .get_event = usb_generic_hid_get_event,
    73         .get_event_length = usb_generic_hid_get_event_length
     78        .get_event_length = usb_generic_hid_get_event_length,
     79        .get_report_descriptor_length = usb_generic_get_report_descriptor_length,
     80        .get_report_descriptor = usb_generic_get_report_descriptor
    7481};
    7582
     
    100107/*----------------------------------------------------------------------------*/
    101108
    102 static int usb_generic_hid_get_event(ddf_fun_t *fun, int32_t *buffer,
     109static int usb_generic_hid_get_event(ddf_fun_t *fun, uint8_t *buffer,
    103110    size_t size, size_t *act_size, unsigned int flags)
    104111{
     
    129136        // note that we already received this report
    130137//      report_received = true;
     138       
     139        return EOK;
     140}
     141
     142/*----------------------------------------------------------------------------*/
     143
     144static size_t usb_generic_get_report_descriptor_length(ddf_fun_t *fun)
     145{
     146        usb_log_debug("Generic HID: Get report descriptor length.\n");
     147       
     148        if (fun == NULL || fun->driver_data == NULL) {
     149                usb_log_debug("No function");
     150                return EINVAL;
     151        }
     152       
     153        usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)fun->driver_data;
     154       
     155        return hid_dev->report_desc_size;
     156}
     157
     158/*----------------------------------------------------------------------------*/
     159
     160static int usb_generic_get_report_descriptor(ddf_fun_t *fun, uint8_t *desc,
     161    size_t size, size_t *actual_size)
     162{
     163        usb_log_debug("Generic HID: Get report descriptor.\n");
     164       
     165        if (fun == NULL || fun->driver_data == NULL) {
     166                usb_log_debug("No function");
     167                return EINVAL;
     168        }
     169       
     170        usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)fun->driver_data;
     171       
     172        if (hid_dev->report_desc_size > size) {
     173                return EINVAL;  // TODO: other error code
     174        }
     175       
     176        memcpy(desc, hid_dev->report_desc, hid_dev->report_desc_size);
     177        *actual_size = hid_dev->report_desc_size;
    131178       
    132179        return EOK;
Note: See TracChangeset for help on using the changeset viewer.