Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbhid/src/hiddescriptor.c

    re0a5d4c rb7fd2a0  
    11/*
    22 * Copyright (c) 2011 Matej Klonfar
    3  * Copyright (c) 2018 Ondrej Hlavaty
    43 * All rights reserved.
    54 *
     
    177176
    178177        if(report_item->usages_count > 0){
    179                 usages = malloc(sizeof(uint32_t) * report_item->usages_count);
     178                usages = malloc(sizeof(int32_t) * report_item->usages_count);
    180179                memcpy(usages, report_item->usages, sizeof(int32_t) *
    181180                                report_item->usages_count);
     
    248247                field->size = report_item->size;
    249248
    250                 field->offset = report_item->offset + (i * report_item->size);
     249                if(report_item->type == USB_HID_REPORT_TYPE_INPUT) {
     250                        int offset = report_item->offset + report_item->size * i;
     251                        int field_offset = (offset/8)*8 + (offset/8 + 1) * 8 -
     252                                offset - report_item->size;
     253                        if(field_offset < 0) {
     254                                field->offset = 0;
     255                        }
     256                        else {
     257                                field->offset = field_offset;
     258                        }
     259                }
     260                else {
     261                        field->offset = report_item->offset + (i * report_item->size);
     262                }
     263
    251264
    252265                if(report->use_report_ids != 0) {
     
    883896{
    884897        if(list == NULL || list_empty(list)) {
    885             usb_log_debug("\tempty");
     898            usb_log_debug("\tempty\n");
    886899            return;
    887900        }
     
    889902        list_foreach(*list, ritems_link, usb_hid_report_field_t,
    890903            report_item) {
    891                 usb_log_debug("\t\tOFFSET: %u", report_item->offset);
    892                 usb_log_debug("\t\tSIZE: %zu", report_item->size);
    893                 usb_log_debug("\t\tLOGMIN: %d",
     904                usb_log_debug("\t\tOFFSET: %X\n", report_item->offset);
     905                usb_log_debug("\t\tSIZE: %zu\n", report_item->size);
     906                usb_log_debug("\t\tLOGMIN: %d\n",
    894907                        report_item->logical_minimum);
    895                 usb_log_debug("\t\tLOGMAX: %d",
     908                usb_log_debug("\t\tLOGMAX: %d\n",
    896909                        report_item->logical_maximum);
    897                 usb_log_debug("\t\tPHYMIN: %d",
     910                usb_log_debug("\t\tPHYMIN: %d\n",
    898911                        report_item->physical_minimum);
    899                 usb_log_debug("\t\tPHYMAX: %d",
     912                usb_log_debug("\t\tPHYMAX: %d\n",
    900913                        report_item->physical_maximum);
    901                 usb_log_debug("\t\ttUSAGEMIN: %X",
     914                usb_log_debug("\t\ttUSAGEMIN: %X\n",
    902915                        report_item->usage_minimum);
    903                 usb_log_debug("\t\tUSAGEMAX: %X",
     916                usb_log_debug("\t\tUSAGEMAX: %X\n",
    904917                               report_item->usage_maximum);
    905                 usb_log_debug("\t\tUSAGES COUNT: %zu",
     918                usb_log_debug("\t\tUSAGES COUNT: %zu\n",
    906919                        report_item->usages_count);
    907920
    908                 usb_log_debug("\t\tVALUE: %X", report_item->value);
    909                 usb_log_debug("\t\ttUSAGE: %X", report_item->usage);
    910                 usb_log_debug("\t\tUSAGE PAGE: %X", report_item->usage_page);
     921                usb_log_debug("\t\tVALUE: %X\n", report_item->value);
     922                usb_log_debug("\t\ttUSAGE: %X\n", report_item->usage);
     923                usb_log_debug("\t\tUSAGE PAGE: %X\n", report_item->usage_page);
    911924
    912925                usb_hid_print_usage_path(report_item->collection_path);
     926
     927                usb_log_debug("\n");
    913928        }
    914929}
     
    928943        list_foreach(report->reports, reports_link,
    929944            usb_hid_report_description_t, report_des) {
    930                 usb_log_debug("Report ID: %d", report_des->report_id);
    931                 usb_log_debug("\tType: %d", report_des->type);
    932                 usb_log_debug("\tLength: %zu", report_des->bit_length);
    933                 usb_log_debug("\tB Size: %zu",
     945                usb_log_debug("Report ID: %d\n", report_des->report_id);
     946                usb_log_debug("\tType: %d\n", report_des->type);
     947                usb_log_debug("\tLength: %zu\n", report_des->bit_length);
     948                usb_log_debug("\tB Size: %zu\n",
    934949                        usb_hid_report_byte_size(report,
    935950                                report_des->report_id,
    936951                                report_des->type));
    937                 usb_log_debug("\tItems: %zu", report_des->item_length);
     952                usb_log_debug("\tItems: %zu\n", report_des->item_length);
    938953
    939954                usb_hid_descriptor_print_list(&report_des->report_items);
Note: See TracChangeset for help on using the changeset viewer.