Changes in uspace/lib/usbhid/src/hiddescriptor.c [0dd3e49:1432fcf3] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbhid/src/hiddescriptor.c
r0dd3e49 r1432fcf3 187 187 188 188 field = malloc(sizeof(usb_hid_report_field_t)); 189 if(field == NULL) {190 return ENOMEM;191 }192 193 189 memset(field, 0, sizeof(usb_hid_report_field_t)); 194 190 list_initialize(&field->link); … … 220 216 } 221 217 else { 222 usage = 218 usage = report_item->usages[ 223 219 report_item->usages_count- 1]; 224 220 } … … 245 241 246 242 field->size = report_item->size; 247 248 if(report_item->type == USB_HID_REPORT_TYPE_INPUT) { 249 int offset = report_item->offset + report_item->size * i; 250 int field_offset = (offset/8)*8 + (offset/8 + 1) * 8 - 251 offset - report_item->size; 252 if(field_offset < 0) { 253 field->offset = 0; 254 } 255 else { 256 field->offset = field_offset; 257 } 258 } 259 else { 260 field->offset = report_item->offset + (i * report_item->size); 261 } 262 263 264 if(report->use_report_ids != 0) { 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) { 265 252 field->offset += 8; 266 253 report->use_report_ids = 1; 267 254 } 268 269 255 field->item_flags = report_item->item_flags; 270 256 … … 329 315 usb_hid_report_type_t type) { 330 316 331 if(report == NULL) {332 return NULL;333 }334 335 317 link_t *report_it = report->reports.next; 336 318 usb_hid_report_description_t *report_des = NULL; … … 340 322 usb_hid_report_description_t, link); 341 323 342 // if report id not set, return the first of the type 343 if(((report_des->report_id == report_id) || (report_id == 0)) && 324 if((report_des->report_id == report_id) && 344 325 (report_des->type == type)) { 345 326 return report_des;
Note:
See TracChangeset
for help on using the changeset viewer.