Changeset 70a71e5 in mainline


Ignore:
Timestamp:
2011-04-01T13:18:42Z (14 years ago)
Author:
Matej Klonfar <maklf@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7787dd81, bda06a3
Parents:
ad7bb42
Message:

Output API fix

Location:
uspace
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/usbkbd/kbddev.c

    rad7bb42 r70a71e5  
    276276//              leds |= USB_HID_LED_NUM_LOCK;
    277277        }
     278        else {
     279            kbd_dev->led_data[i++] = 0;
     280        }
    278281       
    279282        if ((kbd_dev->mods & KM_CAPS_LOCK) && (i < kbd_dev->led_output_size)) {
    280283                kbd_dev->led_data[i++] = USB_HID_LED_CAPS_LOCK;
    281284//              leds |= USB_HID_LED_CAPS_LOCK;
     285        }
     286        else {
     287            kbd_dev->led_data[i++] = 0;
    282288        }
    283289       
     
    286292                kbd_dev->led_data[i++] = USB_HID_LED_SCROLL_LOCK;
    287293//              leds |= USB_HID_LED_SCROLL_LOCK;
     294        }
     295        else {
     296            kbd_dev->led_data[i++] = 0;
    288297        }
    289298       
  • uspace/lib/usb/src/hidparser.c

    rad7bb42 r70a71e5  
    12001200        }
    12011201
     1202        usb_log_debug("OUTPUT BUFFER: %s\n", usb_debug_str_buffer(buffer,size, 0));
     1203        usb_log_debug("OUTPUT DATA[0]: %d, DATA[1]: %d, DATA[2]: %d\n", data[0], data[1], data[2]);
     1204
    12021205        item = parser->output.next;     
    12031206        while(item != &parser->output) {
     
    12081211                        if(idx >= data_size) {
    12091212                                break;
    1210                         }
    1211 
    1212                         // translate data
    1213                         if(USB_HID_ITEM_FLAG_CONSTANT(report_item->item_flags)) {
    1214                                 value = report_item->logical_minimum;
    1215                         }
    1216                         else {
    1217                                 //variable item
    1218                                 value = usb_hid_translate_data_reverse(report_item, data[idx]);
    1219                                 idx++;
    12201213                        }
    12211214
     
    12241217                                       
    12251218//                              // variable item
     1219                                value = usb_hid_translate_data_reverse(report_item, data[idx++]);
    12261220                                offset = report_item->offset + (i * report_item->size);
    12271221                                length = report_item->size;
     
    12291223                        else {
    12301224                                //bitmap
     1225                                value += usb_hid_translate_data_reverse(report_item, data[idx++]);
    12311226                                offset = report_item->offset;
    12321227                                length = report_item->size * report_item->count;
     
    12431238                                value = value << shift;                                                 
    12441239                                value = value & (((1 << length)-1) << shift);
    1245                                 buffer[offset/8] = buffer[offset/8] | value;
     1240                               
     1241                                uint8_t mask = 0;
     1242                                mask = 0xff - (((1 << length) - 1) << shift);
     1243                                buffer[offset/8] = (buffer[offset/8] & mask) | value;
    12461244                        }
    12471245                        else {
     
    12531251                                tmp_value = tmp_value << (offset%8);
    12541252
    1255                                 buffer[offset/8] = buffer[offset/8] | tmp_value;
     1253                                uint8_t mask = 0;
     1254                                mask = ~(((1 << (8-(offset%8)))-1) << (offset%8));
     1255                                buffer[offset/8] = (buffer[offset/8] & mask) | tmp_value;
    12561256
    12571257                                // a ted druhej -- hornich length-x bitu
     
    12591259                                value = value & ((1 << (length - (8 - (offset % 8)))) - 1);
    12601260                               
    1261                                 buffer[(offset+length-1)/8] = buffer[(offset+length-1)/8] | value;
     1261                                mask = ((1 << (length - (8 - (offset % 8)))) - 1);
     1262                                buffer[(offset+length-1)/8] = (buffer[(offset+length-1)/8] & mask) | value;
    12621263                        }
    12631264
     
    12671268        }
    12681269
     1270        usb_log_debug("OUTPUT BUFFER: %s\n", usb_debug_str_buffer(buffer,size, 0));
    12691271
    12701272        return EOK;
     
    12811283        int ret=0;
    12821284        int resolution;
     1285
     1286        if(USB_HID_ITEM_FLAG_CONSTANT(item->item_flags)) {
     1287                ret = item->logical_minimum;
     1288        }
    12831289
    12841290        if((USB_HID_ITEM_FLAG_VARIABLE(item->item_flags) == 0)) {
Note: See TracChangeset for help on using the changeset viewer.