Changeset 22ded10 in mainline


Ignore:
Timestamp:
2011-05-06T10:26:33Z (13 years ago)
Author:
Matej Klonfar <maklf@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
04c1524, 674cf89
Parents:
3b5d5b9d (diff), 310c4df (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:

Usage path fix in HID parser

Location:
uspace
Files:
4 edited

Legend:

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

    r3b5d5b9d r22ded10  
    10461046                free((*kbd_dev)->led_data);
    10471047        }
    1048         if ((*kbd_dev)->output_buffer != NULL) {
    1049                 free((*kbd_dev)->output_buffer);
    1050         }
    10511048        if ((*kbd_dev)->led_path != NULL) {
    10521049                usb_hid_report_path_free((*kbd_dev)->led_path);
  • uspace/lib/usb/include/usb/classes/hidpath.h

    r3b5d5b9d r22ded10  
    4343 * Description of path of usage pages and usages in report descriptor
    4444 */
     45/** Wanted usage path must be exactly the same as the searched one */
    4546#define USB_HID_PATH_COMPARE_STRICT                             0
    46 #define USB_HID_PATH_COMPARE_END                                1
     47/** Wanted usage path must be the suffix in the searched one */
     48#define USB_HID_PATH_COMPARE_END                        1
     49/** */
    4750#define USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY    4
    4851#define USB_HID_PATH_COMPARE_COLLECTION_ONLY    2 /* porovnava jenom cestu z Kolekci */
     52/** Searched usage page must be prefix of the other one */
     53#define USB_HID_PATH_COMPARE_BEGIN              8
     54/** Searched couple of usage page and usage can be anywhere in usage path */
     55#define USB_HID_PATH_COMPARE_WHERE              16
     56/**
     57 * TODO
     58 *  * porovnani zacatek - neni to to samy jako COLLECTION ONLY?? -- TEST
     59 *  * porovnani kdekoliv (jenom s delkou 1 at si to moc nekomplikujem)
     60 */
    4961
    5062
  • uspace/lib/usb/include/usb/classes/hidtypes.h

    r3b5d5b9d r22ded10  
    165165        /** */ 
    166166        link_t link;
     167
     168        int in_delimiter;
    167169} usb_hid_report_item_t;
    168170
  • uspace/lib/usb/src/hiddescriptor.c

    r3b5d5b9d r22ded10  
    4141#include <assert.h>
    4242
     43
     44#define OUTSIDE_DELIMITER_SET   0
     45#define START_DELIMITER_SET     1
     46#define INSIDE_DELIMITER_SET    2
     47       
    4348/** The new report item flag. Used to determine when the item is completly
    4449 * configured and should be added to the report structure
     
    267272                return ENOMEM;
    268273        }
     274        usb_hid_report_path_append_item(usage_path, 0, 0);     
    269275       
    270276        while(i<size){ 
     
    442448                       
    443449                case USB_HID_REPORT_TAG_COLLECTION:
    444                         // TODO usage_path->flags = *data;
    445                         usb_hid_report_path_append_item(usage_path, report_item->usage_page, report_item->usages[report_item->usages_count-1]);                                         
     450                        //TODO: usage_path->flags = *data;
     451                       
     452                        usb_log_debug("APPENDED ITEM TO USAGE PATH (PAGE %d, USAGE %d\n", report_item->usage_page, report_item->usages[report_item->usages_count-1]);
     453                        usb_hid_print_usage_path(usage_path);
     454
     455                        // set last item
     456                        usb_hid_report_set_last_item(usage_path, USB_HID_TAG_CLASS_GLOBAL, report_item->usage_page);
     457                        usb_hid_report_set_last_item(usage_path, USB_HID_TAG_CLASS_LOCAL, report_item->usages[report_item->usages_count-1]);
     458                        // append the new one which will be set by common
     459                        // usage/usage page
     460                        usb_hid_report_path_append_item(usage_path, report_item->usage_page, report_item->usages[report_item->usages_count-1]);
     461                        usb_hid_print_usage_path(usage_path);
     462
    446463                        usb_hid_report_reset_local_items (report_item);
    447464                        return USB_HID_NO_ACTION;
     
    579596                        break;                 
    580597                case USB_HID_REPORT_TAG_DELIMITER:
    581                         //report_item->delimiter = usb_hid_report_tag_data_uint32(data,item_size);
    582                         //TODO:
    583                         //      DELIMITER STUFF
     598                        if (report_item->in_delimiter == OUTSIDE_DELIMITER_SET) {
     599                                report_item->in_delimiter = START_DELIMITER_SET;
     600                        }
     601                        else {
     602                                report_item->in_delimiter = OUTSIDE_DELIMITER_SET;
     603                        }
     604                       
    584605                        break;
    585606               
Note: See TracChangeset for help on using the changeset viewer.