Changeset 4fe3b6d in mainline for uspace/drv/usbhid/kbd/kbddev.c


Ignore:
Timestamp:
2011-05-20T11:07:00Z (13 years ago)
Author:
Matus Dekanek <smekideki@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8bb61e6
Parents:
3476be8 (diff), 7941bd6 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

merge with development

File:
1 edited

Legend:

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

    r3476be8 r4fe3b6d  
    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_hid_dev_t *hid_dev = (usb_hid_dev_t *)fun->driver_data;
    255        
    256         if (hid_dev == NULL || hid_dev->data == NULL) {
     254        usb_kbd_t *kbd_dev = (usb_kbd_t *)fun->driver_data;
     255        if (kbd_dev == NULL) {
    257256                usb_log_debug("default_connection_handler: "
    258257                    "Missing parameter.\n");
     
    260259                return;
    261260        }
    262        
    263         assert(hid_dev != NULL);
    264         assert(hid_dev->data != NULL);
    265         usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;
    266261
    267262        if (method == IPC_M_CONNECT_TO_ME) {
     
    313308        usb_hid_report_field_t *field = usb_hid_report_get_sibling(
    314309            hid_dev->report, NULL, kbd_dev->led_path,
    315             USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY | USB_HID_PATH_COMPARE_END,
     310            USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
    316311            USB_HID_REPORT_TYPE_OUTPUT);
    317312       
    318         while (field != NULL) {
    319 
     313        while (field != NULL) {         
     314               
    320315                if ((field->usage == USB_HID_LED_NUM_LOCK)
    321316                    && (kbd_dev->mods & KM_NUM_LOCK)){
     
    334329               
    335330                field = usb_hid_report_get_sibling(hid_dev->report, field,
    336                     kbd_dev->led_path, USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY
    337                     | USB_HID_PATH_COMPARE_END, USB_HID_REPORT_TYPE_OUTPUT);
     331                    kbd_dev->led_path, 
     332                USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
     333                        USB_HID_REPORT_TYPE_OUTPUT);
    338334        }
    339335       
     
    662658 *     usb_hid_parse_report().
    663659 */
    664 static void usb_kbd_process_data(usb_hid_dev_t *hid_dev,
     660static void usb_kbd_process_data(usb_hid_dev_t *hid_dev, usb_kbd_t *kbd_dev,
    665661                                 uint8_t *buffer, size_t actual_size)
    666662{
    667663        assert(hid_dev->report != NULL);
    668664        assert(hid_dev != NULL);
    669         assert(hid_dev->data != NULL);
    670        
    671         usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;
     665        assert(kbd_dev != NULL);
    672666
    673667        usb_log_debug("Calling usb_hid_parse_report() with "
     
    774768/*----------------------------------------------------------------------------*/
    775769
    776 static int usb_kbd_create_function(usb_hid_dev_t *hid_dev)
     770static int usb_kbd_create_function(usb_hid_dev_t *hid_dev, usb_kbd_t *kbd_dev)
    777771{
    778772        assert(hid_dev != NULL);
    779773        assert(hid_dev->usb_dev != NULL);
     774        assert(kbd_dev != NULL);
    780775       
    781776        /* Create the function exposed under /dev/devices. */
     
    792787         * to the DDF function.
    793788         */
    794         fun->ops = &hid_dev->ops;
    795         fun->driver_data = hid_dev;   // TODO: maybe change to hid_dev->data
     789        fun->ops = &kbd_dev->ops;
     790        fun->driver_data = kbd_dev;
    796791
    797792        int rc = ddf_fun_bind(fun);
     
    840835 * @return Other value inherited from function usbhid_dev_init().
    841836 */
    842 int usb_kbd_init(usb_hid_dev_t *hid_dev)
     837int usb_kbd_init(usb_hid_dev_t *hid_dev, void **data)
    843838{
    844839        usb_log_debug("Initializing HID/KBD structure...\n");
     
    865860        usb_hid_report_path_set_report_id(path, 0);
    866861       
    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);
     862        kbd_dev->key_count = usb_hid_report_size(
     863            hid_dev->report, 0, USB_HID_REPORT_TYPE_INPUT);
    870864        usb_hid_report_path_free(path);
    871865       
     
    908902            kbd_dev->led_path, USB_HIDUT_PAGE_LED, 0);
    909903       
    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);
     904        kbd_dev->led_output_size = usb_hid_report_size(hid_dev->report,
     905            0, USB_HID_REPORT_TYPE_OUTPUT);
    913906       
    914907        usb_log_debug("Output report size (in items): %zu\n",
     
    955948       
    956949        // save the KBD device structure into the HID device structure
    957         hid_dev->data = kbd_dev;
     950        //hid_dev->data = kbd_dev;
     951        *data = kbd_dev;
    958952       
    959953        // set handler for incoming calls
    960         hid_dev->ops.default_handler = default_connection_handler;
     954        kbd_dev->ops.default_handler = default_connection_handler;
    961955       
    962956        /*
     
    983977       
    984978        usb_log_debug("Creating KBD function...\n");
    985         int rc = usb_kbd_create_function(hid_dev);
     979        int rc = usb_kbd_create_function(hid_dev, kbd_dev);
    986980        if (rc != EOK) {
    987981                usb_kbd_free(&kbd_dev);
     
    994988/*----------------------------------------------------------------------------*/
    995989
    996 bool 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) {
     990bool 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) {
    1000994                // do not continue polling (???)
    1001995                return false;
    1002996        }
    1003997       
     998        usb_kbd_t *kbd_dev = (usb_kbd_t *)data;
     999        assert(kbd_dev != NULL);
     1000       
    10041001        // TODO: add return value from this function
    1005         usb_kbd_process_data(hid_dev, buffer, buffer_size);
     1002        usb_kbd_process_data(hid_dev, kbd_dev, buffer, buffer_size);
    10061003       
    10071004        return true;
     
    10661063/*----------------------------------------------------------------------------*/
    10671064
    1068 void usb_kbd_deinit(usb_hid_dev_t *hid_dev)
     1065void usb_kbd_deinit(usb_hid_dev_t *hid_dev, void *data)
    10691066{
    10701067        if (hid_dev == NULL) {
     
    10721069        }
    10731070       
    1074         if (hid_dev->data != NULL) {
    1075                 usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;
     1071        if (data != NULL) {
     1072                usb_kbd_t *kbd_dev = (usb_kbd_t *)data;
    10761073                if (usb_kbd_is_initialized(kbd_dev)) {
    10771074                        usb_kbd_mark_unusable(kbd_dev);
    10781075                } else {
    10791076                        usb_kbd_free(&kbd_dev);
    1080                         hid_dev->data = NULL;
    10811077                }
    10821078        }
Note: See TracChangeset for help on using the changeset viewer.