|
|
|
|
|
|
|
|
return; |
|
|
return; |
|
|
case 15: // control transfers for other stuff? |
|
|
case 15: // control transfers for other stuff? |
|
|
// TODO: handle other standard control: set/clear feature, etc |
|
|
// TODO: handle other standard control: set/clear feature, etc |
|
|
for (unsigned int i=0; i < 6; i++) { |
|
|
|
|
|
if (dev->driver[i] == NULL) break; // no more drivers |
|
|
|
|
|
if (dev->driver[i]->control_callback(transfer)) { |
|
|
|
|
|
|
|
|
for (USBHostDriver *d = dev->drivers; d != NULL; d = d->next) { |
|
|
|
|
|
if (d->control_callback(transfer)) { |
|
|
// this driver processed the control transfer reply |
|
|
// this driver processed the control transfer reply |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
available_drivers = driver->next; |
|
|
available_drivers = driver->next; |
|
|
} |
|
|
} |
|
|
driver->next = NULL; |
|
|
driver->next = NULL; |
|
|
dev->driver[0] = driver; |
|
|
|
|
|
|
|
|
dev->drivers = driver; |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
prev = driver; |
|
|
prev = driver; |