Ignore:
File:
1 edited

Legend:

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

    r65b458c4 rfaa44e58  
    4646
    4747#include <usb/usb.h>
    48 #include <usb/dp.h>
    49 #include <usb/request.h>
    50 #include <usb/classes/hid.h>
    51 #include <usb/pipes.h>
     48#include <usb/dev/dp.h>
     49#include <usb/dev/request.h>
     50#include <usb/hid/hid.h>
     51#include <usb/dev/pipes.h>
    5252#include <usb/debug.h>
    53 #include <usb/classes/hidparser.h>
     53#include <usb/hid/hidparser.h>
    5454#include <usb/classes/classes.h>
    55 #include <usb/classes/hidut.h>
    56 #include <usb/classes/hidreq.h>
    57 #include <usb/classes/hidreport.h>
    58 #include <usb/classes/hid/utled.h>
    59 
    60 #include <usb/devdrv.h>
     55#include <usb/hid/usages/core.h>
     56#include <usb/hid/request.h>
     57#include <usb/hid/hidreport.h>
     58#include <usb/hid/usages/led.h>
     59
     60#include <usb/dev/driver.h>
    6161
    6262#include "kbddev.h"
     
    252252        sysarg_t method = IPC_GET_IMETHOD(*icall);
    253253       
    254         usb_kbd_t *kbd_dev = (usb_kbd_t *)fun->driver_data;
    255         if (kbd_dev == NULL) {
     254        usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)fun->driver_data;
     255       
     256        if (hid_dev == NULL || hid_dev->data == NULL) {
    256257                usb_log_debug("default_connection_handler: "
    257258                    "Missing parameter.\n");
     
    259260                return;
    260261        }
     262       
     263        assert(hid_dev != NULL);
     264        assert(hid_dev->data != NULL);
     265        usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;
    261266
    262267        if (method == IPC_M_CONNECT_TO_ME) {
     
    308313        usb_hid_report_field_t *field = usb_hid_report_get_sibling(
    309314            hid_dev->report, NULL, kbd_dev->led_path,
    310             USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
     315            USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY | USB_HID_PATH_COMPARE_END,
    311316            USB_HID_REPORT_TYPE_OUTPUT);
    312317       
    313         while (field != NULL) {         
    314                
     318        while (field != NULL) {
     319
    315320                if ((field->usage == USB_HID_LED_NUM_LOCK)
    316321                    && (kbd_dev->mods & KM_NUM_LOCK)){
     
    329334               
    330335                field = usb_hid_report_get_sibling(hid_dev->report, field,
    331                     kbd_dev->led_path, 
    332                 USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
    333                         USB_HID_REPORT_TYPE_OUTPUT);
     336                    kbd_dev->led_path, USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY
     337                    | USB_HID_PATH_COMPARE_END, USB_HID_REPORT_TYPE_OUTPUT);
    334338        }
    335339       
     
    658662 *     usb_hid_parse_report().
    659663 */
    660 static void usb_kbd_process_data(usb_hid_dev_t *hid_dev, usb_kbd_t *kbd_dev,
     664static void usb_kbd_process_data(usb_hid_dev_t *hid_dev,
    661665                                 uint8_t *buffer, size_t actual_size)
    662666{
    663667        assert(hid_dev->report != NULL);
    664668        assert(hid_dev != NULL);
    665         assert(kbd_dev != NULL);
     669        assert(hid_dev->data != NULL);
     670       
     671        usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;
    666672
    667673        usb_log_debug("Calling usb_hid_parse_report() with "
     
    768774/*----------------------------------------------------------------------------*/
    769775
    770 static int usb_kbd_create_function(usb_hid_dev_t *hid_dev, usb_kbd_t *kbd_dev)
     776static int usb_kbd_create_function(usb_hid_dev_t *hid_dev)
    771777{
    772778        assert(hid_dev != NULL);
    773779        assert(hid_dev->usb_dev != NULL);
    774         assert(kbd_dev != NULL);
    775780       
    776781        /* Create the function exposed under /dev/devices. */
     
    787792         * to the DDF function.
    788793         */
    789         fun->ops = &kbd_dev->ops;
    790         fun->driver_data = kbd_dev;
     794        fun->ops = &hid_dev->ops;
     795        fun->driver_data = hid_dev;   // TODO: maybe change to hid_dev->data
    791796
    792797        int rc = ddf_fun_bind(fun);
     
    835840 * @return Other value inherited from function usbhid_dev_init().
    836841 */
    837 int usb_kbd_init(usb_hid_dev_t *hid_dev, void **data)
     842int usb_kbd_init(usb_hid_dev_t *hid_dev)
    838843{
    839844        usb_log_debug("Initializing HID/KBD structure...\n");
     
    860865        usb_hid_report_path_set_report_id(path, 0);
    861866       
    862         kbd_dev->key_count = usb_hid_report_size(
    863             hid_dev->report, 0, USB_HID_REPORT_TYPE_INPUT);
     867        kbd_dev->key_count = usb_hid_report_input_length(
     868            hid_dev->report, path,
     869            USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY);
    864870        usb_hid_report_path_free(path);
    865871       
     
    902908            kbd_dev->led_path, USB_HIDUT_PAGE_LED, 0);
    903909       
    904         kbd_dev->led_output_size = usb_hid_report_size(hid_dev->report,
    905             0, USB_HID_REPORT_TYPE_OUTPUT);
     910        kbd_dev->led_output_size = usb_hid_report_output_size(hid_dev->report,
     911            kbd_dev->led_path,
     912            USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY);
    906913       
    907914        usb_log_debug("Output report size (in items): %zu\n",
     
    948955       
    949956        // save the KBD device structure into the HID device structure
    950         //hid_dev->data = kbd_dev;
    951         *data = kbd_dev;
     957        hid_dev->data = kbd_dev;
    952958       
    953959        // set handler for incoming calls
    954         kbd_dev->ops.default_handler = default_connection_handler;
     960        hid_dev->ops.default_handler = default_connection_handler;
    955961       
    956962        /*
     
    977983       
    978984        usb_log_debug("Creating KBD function...\n");
    979         int rc = usb_kbd_create_function(hid_dev, kbd_dev);
     985        int rc = usb_kbd_create_function(hid_dev);
    980986        if (rc != EOK) {
    981987                usb_kbd_free(&kbd_dev);
     
    988994/*----------------------------------------------------------------------------*/
    989995
    990 bool usb_kbd_polling_callback(usb_hid_dev_t *hid_dev, void *data,
    991      uint8_t *buffer, size_t buffer_size)
    992 {
    993         if (hid_dev == NULL || buffer == NULL || data == NULL) {
     996bool usb_kbd_polling_callback(usb_hid_dev_t *hid_dev, uint8_t *buffer,
     997     size_t buffer_size)
     998{
     999        if (hid_dev == NULL || buffer == NULL) {
    9941000                // do not continue polling (???)
    9951001                return false;
    9961002        }
    9971003       
    998         usb_kbd_t *kbd_dev = (usb_kbd_t *)data;
    999         assert(kbd_dev != NULL);
    1000        
    10011004        // TODO: add return value from this function
    1002         usb_kbd_process_data(hid_dev, kbd_dev, buffer, buffer_size);
     1005        usb_kbd_process_data(hid_dev, buffer, buffer_size);
    10031006       
    10041007        return true;
     
    10631066/*----------------------------------------------------------------------------*/
    10641067
    1065 void usb_kbd_deinit(usb_hid_dev_t *hid_dev, void *data)
     1068void usb_kbd_deinit(usb_hid_dev_t *hid_dev)
    10661069{
    10671070        if (hid_dev == NULL) {
     
    10691072        }
    10701073       
    1071         if (data != NULL) {
    1072                 usb_kbd_t *kbd_dev = (usb_kbd_t *)data;
     1074        if (hid_dev->data != NULL) {
     1075                usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;
    10731076                if (usb_kbd_is_initialized(kbd_dev)) {
    10741077                        usb_kbd_mark_unusable(kbd_dev);
    10751078                } else {
    10761079                        usb_kbd_free(&kbd_dev);
     1080                        hid_dev->data = NULL;
    10771081                }
    10781082        }
Note: See TracChangeset for help on using the changeset viewer.