Ignore:
File:
1 edited

Legend:

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

    rb72efe8 r0dd3e49  
    135135        size_t size, uint8_t *report_id)
    136136{
     137        link_t *list_item;
    137138        usb_hid_report_field_t *item;
    138139
     
    160161
    161162        /* read data */
    162         list_foreach(report_des->report_items, list_item) {
     163        list_item = report_des->report_items.next;         
     164        while(list_item != &(report_des->report_items)) {
     165
    163166                item = list_get_instance(list_item, usb_hid_report_field_t,
    164                                 ritems_link);
     167                                link);
    165168
    166169                if(USB_HID_ITEM_FLAG_CONSTANT(item->item_flags) == 0) {
     
    197200                        }                       
    198201                }
     202                list_item = list_item->next;
    199203        }
    200204       
     
    306310        }
    307311
     312        link_t *report_it = report->reports.next;
    308313        usb_hid_report_description_t *report_des = NULL;
    309 
    310         list_foreach(report->reports, report_it) {
    311                 report_des = list_get_instance(report_it,
    312                         usb_hid_report_description_t, reports_link);
     314        while(report_it != &report->reports) {
     315                report_des = list_get_instance(report_it,
     316                        usb_hid_report_description_t, link);
    313317               
    314                 if((report_des->report_id == report_id) &&
     318                if((report_des->report_id == report_id) && 
    315319                        (report_des->type == USB_HID_REPORT_TYPE_OUTPUT)){
    316320                        break;
    317321                }
     322
     323                report_it = report_it->next;
    318324        }
    319325
     
    356362        uint8_t report_id, uint8_t *buffer, size_t size)
    357363{
     364        link_t *item;   
    358365        int32_t value=0;
    359366        int offset;
     
    377384        }
    378385
    379         usb_hid_report_field_t *report_item;
    380 
    381         list_foreach(report_des->report_items, item) {
    382                 report_item = list_get_instance(item, usb_hid_report_field_t,
    383                     ritems_link);
     386        usb_hid_report_field_t *report_item;   
     387        item = report_des->report_items.next;   
     388        while(item != &report_des->report_items) {
     389                report_item = list_get_instance(item, usb_hid_report_field_t, link);
    384390
    385391                value = usb_hid_translate_data_reverse(report_item,
     
    443449                // reset value
    444450                report_item->value = 0;
     451               
     452                item = item->next;
    445453        }
    446454       
     
    542550
    543551        if(field == NULL){
    544                 field_it = report_des->report_items.head.next;
    545         }
    546         else {
    547                 field_it = field->ritems_link.next;
    548         }
    549 
    550         while(field_it != &report_des->report_items.head) {
     552                field_it = report_des->report_items.next;
     553        }
     554        else {
     555                field_it = field->link.next;
     556        }
     557
     558        while(field_it != &report_des->report_items) {
    551559                field = list_get_instance(field_it, usb_hid_report_field_t,
    552                         ritems_link);
     560                        link);
    553561
    554562                if(USB_HID_ITEM_FLAG_CONSTANT(field->item_flags) == 0) {
     
    603611                }
    604612                else {
    605                         report_it = report_des->reports_link.next;
     613                        report_it = report_des->link.next;
    606614                }       
    607615        }
    608616        else {
    609                 report_it = report->reports.head.next;
    610         }
    611 
    612         while(report_it != &report->reports.head) {
     617                report_it = report->reports.next;
     618        }
     619
     620        while(report_it != &report->reports) {
    613621                report_des = list_get_instance(report_it,
    614                         usb_hid_report_description_t, reports_link);
     622                        usb_hid_report_description_t, link);
    615623
    616624                if(report_des->type == type){
Note: See TracChangeset for help on using the changeset viewer.