Changeset 574f276 in mainline
- Timestamp:
- 2011-05-27T17:37:21Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4967c1e
- Parents:
- 0c904a3
- Location:
- uspace/lib/usbhid/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbhid/src/hiddescriptor.c
r0c904a3 r574f276 187 187 188 188 field = malloc(sizeof(usb_hid_report_field_t)); 189 if(field == NULL) { 190 return ENOMEM; 191 } 192 189 193 memset(field, 0, sizeof(usb_hid_report_field_t)); 190 194 list_initialize(&field->link); … … 241 245 242 246 field->size = report_item->size; 243 244 size_t offset_byte = (report_item->offset + (i * 245 report_item->size)) / 8; 246 247 size_t offset_bit = 8 - ((report_item->offset + (i * 248 report_item->size)) % 8) - report_item->size; 249 250 field->offset = 8 * offset_byte + offset_bit; 251 if(report_item->id != 0) { 247 248 if(report_item->type == USB_HID_REPORT_TYPE_INPUT) { 249 field->offset = report_item->offset + 250 ((report_item->count - (i + 1)) * 251 report_item->size); 252 } 253 else { 254 field->offset = report_item->offset + (i * report_item->size); 255 } 256 257 if(report->use_report_ids != 0) { 252 258 field->offset += 8; 253 259 report->use_report_ids = 1; -
uspace/lib/usbhid/src/hidparser.c
r0c904a3 r574f276 258 258 foo = data + i; 259 259 mask = ((1 << (item->size-part_size))-1); 260 value = (*foo & mask) << part_size;260 value = (*foo & mask); 261 261 } 262 262 else if(i == ((offset+item->size-1)/8)){ 263 263 // the lower one 264 264 foo = data + i; 265 mask = ((1 << part_size)-1) << (8-part_size); 266 value += ((*foo & mask) >> (8-part_size)); 265 mask = ((1 << (item->size - part_size)) - 1) 266 << (8 - (item->size - part_size)); 267 268 value = (((*foo & mask) >> (8 - 269 (item->size - part_size))) << part_size ) 270 + value; 267 271 } 268 272 else { 269 value = value << 8; 270 value += *(data + 1); 273 value = (*(data + 1) << (part_size + 8)) + value; 271 274 part_size += 8; 272 275 } … … 386 389 report_item = list_get_instance(item, usb_hid_report_field_t, link); 387 390 388 if(USB_HID_ITEM_FLAG_VARIABLE(report_item->item_flags) == 0) { 389 390 // array 391 value = usb_hid_translate_data_reverse(report_item, 392 report_item->value); 393 394 offset = report_item->offset; 395 length = report_item->size; 396 } 397 else { 398 // variable item 399 value = usb_hid_translate_data_reverse(report_item, 400 report_item->value); 401 402 offset = report_item->offset; 403 length = report_item->size; 404 } 405 391 value = usb_hid_translate_data_reverse(report_item, 392 report_item->value); 393 394 offset = report_des->bit_length - report_item->offset - 1; 395 length = report_item->size; 396 406 397 usb_log_debug("\ttranslated value: %x\n", value); 407 398
Note:
See TracChangeset
for help on using the changeset viewer.