Changeset feeac0d in mainline for uspace/lib/usbhid/src/hidparser.c


Ignore:
Timestamp:
2013-09-10T16:32:35Z (12 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4982d87
Parents:
e8d6ce2
Message:

Simplify use of list_foreach.

File:
1 edited

Legend:

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

    re8d6ce2 rfeeac0d  
    130130    size_t size, uint8_t *report_id)
    131131{
    132         usb_hid_report_field_t *item;
    133 
    134132        usb_hid_report_description_t *report_des;
    135133        usb_hid_report_type_t type = USB_HID_REPORT_TYPE_INPUT;
    136        
     134
    137135        if (report == NULL) {
    138136                return EINVAL;
     
    153151
    154152        /* read data */
    155         list_foreach(report_des->report_items, list_item) {
    156                 item = list_get_instance(list_item, usb_hid_report_field_t,
    157                     ritems_link);
     153        list_foreach(report_des->report_items, ritems_link,
     154            usb_hid_report_field_t, item) {
    158155
    159156                if (USB_HID_ITEM_FLAG_CONSTANT(item->item_flags) == 0) {
    160                        
     157
    161158                        if (USB_HID_ITEM_FLAG_VARIABLE(item->item_flags) == 0) {
    162159                                /* array */
    163160                                item->value =
    164161                                        usb_hid_translate_data(item, data);
    165                
     162
    166163                                item->usage = USB_HID_EXTENDED_USAGE(
    167164                                    item->usages[item->value -
     
    184181                                /* variable item */
    185182                                item->value = usb_hid_translate_data(item,
    186                                     data);                             
    187                         }                       
     183                                    data);
     184                        }
    188185                }
    189186        }
    190        
     187
    191188        return EOK;
    192189}
     
    295292        usb_hid_report_description_t *report_des = NULL;
    296293
    297         list_foreach(report->reports, report_it) {
    298                 report_des = list_get_instance(report_it,
    299                     usb_hid_report_description_t, reports_link);
    300                
     294        list_foreach(report->reports, reports_link,
     295            usb_hid_report_description_t, report_des) {
    301296                if ((report_des->report_id == report_id) &&
    302297                    (report_des->type == USB_HID_REPORT_TYPE_OUTPUT)) {
     
    345340        int length;
    346341        int32_t tmp_value;
    347        
     342
    348343        if (report == NULL) {
    349344                return EINVAL;
     
    351346
    352347        if (report->use_report_ids != 0) {
    353                 buffer[0] = report_id;         
     348                buffer[0] = report_id;
    354349        }
    355350
     
    357352        report_des = usb_hid_report_find_description(report, report_id,
    358353            USB_HID_REPORT_TYPE_OUTPUT);
    359        
     354
    360355        if (report_des == NULL) {
    361356                return EINVAL;
    362357        }
    363358
    364         usb_hid_report_field_t *report_item;
    365 
    366         list_foreach(report_des->report_items, item) {
    367                 report_item = list_get_instance(item, usb_hid_report_field_t,
    368                     ritems_link);
    369 
     359        list_foreach(report_des->report_items, ritems_link,
     360            usb_hid_report_field_t, report_item) {
    370361                value = usb_hid_translate_data_reverse(report_item,
    371362                    report_item->value);
     
    373364                offset = report_des->bit_length - report_item->offset - 1;
    374365                length = report_item->size;
    375                
     366
    376367                usb_log_debug("\ttranslated value: %x\n", value);
    377368
     
    382373                        }
    383374                        size_t shift = 8 - offset % 8 - length;
    384                         value = value << shift;                                                 
     375                        value = value << shift;
    385376                        value = value & (((1 << length) - 1) << shift);
    386                                
     377
    387378                        uint8_t mask = 0;
    388379                        mask = 0xff - (((1 << length) - 1) << shift);
     
    400391
    401392                                        tmp_value = tmp_value << (offset % 8);
    402        
     393
    403394                                        mask = ~(((1 << (8 - (offset % 8))) - 1)
    404395                                            << (offset % 8));
     
    407398                                            tmp_value;
    408399                                } else if (i == ((offset + length - 1) / 8)) {
    409                                        
     400
    410401                                        value = value >> (length -
    411402                                            ((offset + length) % 8));
     
    413404                                        value = value & ((1 << (length -
    414405                                            ((offset + length) % 8))) - 1);
    415                                
     406
    416407                                        mask = (1 << (length -
    417408                                            ((offset + length) % 8))) - 1;
     
    427418                report_item->value = 0;
    428419        }
    429        
     420
    430421        return EOK;
    431422}
Note: See TracChangeset for help on using the changeset viewer.