1:
struct usbd_usb_deviceinfo * Usbh_Api_EnumDevice(
struct usbd_usb_deviceinfo * pParent,
struct usbd_usb_deviceinfo * pChild )
2: {
3:
int i = 0;
4:
struct usbd_usb_deviceinfo * dev = NULL;
5:
6:
if ( pParent == NULL) {
7: CORE_REPORT_ERROR(
USBC_INVALID_PARAMETER );
8:
return NULL;
9: }
10:
11:
if ( pChild == NULL ) {
12:
13:
for ( i=1; i<USB_ENUMDEV_MAXDEV; i++ ) {
14:
if ( pParent->usbdev_LowerHub[i] != NULL ) {
15: dev = pParent->usbdev_LowerHub[i];
16:
break;
17: }
18: }
19: }
else {
20: 21:
for ( i=1; i<USB_ENUMDEV_MAXDEV; i++ ) {
22:
if ( pParent->usbdev_LowerHub[i] == pChild ) {
23:
break;
24: }
25: }
26:
if ( i >= USB_ENUMDEV_MAXDEV ) {
27: 28: dev = NULL;
29: }
else {
30: 31:
for ( i++; i<USB_ENUMDEV_MAXDEV; i++ ) {
32:
if ( pParent->usbdev_LowerHub[i] != NULL ) {
33: dev = pParent->usbdev_LowerHub[i];
34: }
35: }
36: }
37: }
38:
39:
return dev;
40: }