2424 * either License.
2525 */
2626
27- #include <assert.h>
2827#include <stdio.h>
2928#include <stdlib.h>
3029#include <string.h>
3736 # define sleep (x ) Sleep((x)*1000)
3837#endif
3938
39+
4040FN_INTERNAL int fnusb_num_devices (freenect_context * ctx )
4141{
4242 libusb_device * * devs ; // pointer to pointer of device, used to retrieve a list of devices
@@ -78,59 +78,16 @@ FN_INTERNAL int fnusb_is_pid_k4w_audio(int pid)
7878 return (pid == PID_K4W_AUDIO || pid == PID_K4W_AUDIO_ALT_1 || pid == PID_K4W_AUDIO_ALT_2 );
7979}
8080
81- FN_INTERNAL libusb_device * fnusb_find_orphan_audio (libusb_device * camera , libusb_device * * deviceList , int count )
81+ FN_INTERNAL libusb_device * fnusb_find_connected_audio_device (libusb_device * camera , libusb_device * * deviceList , int cnt )
8282{
83- if (count <= 0 ) return NULL ;
83+ if (cnt <= 0 ) return NULL ;
8484
85- const int cameraBusNo = libusb_get_bus_number (camera );
86- if (cameraBusNo < 0 ) return NULL ;
87-
88- #define max_busses 4096
89- assert (cameraBusNo <= max_busses );
90- int numAudioByBus [max_busses ] = { 0 };
91- libusb_device * devicesByBus_Unique [max_busses ] = { NULL };
92-
93- int i = 0 ;
94- for (i = 0 ; i < count ; i ++ )
95- {
96- struct libusb_device_descriptor desc ;
97- int res = libusb_get_device_descriptor (deviceList [i ], & desc );
98- if (res < 0 )
99- {
100- continue ;
101- }
102-
103- if (desc .idVendor == VID_MICROSOFT )
104- {
105- // make sure its some type of Kinect audio device
106- if ((desc .idProduct == PID_NUI_AUDIO || fnusb_is_pid_k4w_audio (desc .idProduct )))
107- {
108- const int audioBusNo = libusb_get_bus_number (deviceList [i ]);
109- if (audioBusNo == cameraBusNo )
110- {
111- if (++ (numAudioByBus [cameraBusNo ]) == 1 ) {
112- devicesByBus_Unique [cameraBusNo ] = deviceList [i ];
113- } else {
114- devicesByBus_Unique [cameraBusNo ] = NULL ; // no duplicates!
115- }
116- }
117- }
118- }
119- }
120-
121- return devicesByBus_Unique [cameraBusNo ];
122- }
123-
124- FN_INTERNAL libusb_device * fnusb_find_connected_audio_device (libusb_device * camera , libusb_device * * deviceList , int count )
125- {
126- if (count <= 0 ) return NULL ;
127-
128- const int cameraBusNo = libusb_get_bus_number (camera );
85+ int cameraBusNo = libusb_get_bus_number (camera );
12986 if (cameraBusNo < 0 ) return NULL ;
13087 libusb_device * cameraParent = libusb_get_parent (camera );
13188
13289 int i = 0 ;
133- for (i = 0 ; i < count ; i ++ )
90+ for (i = 0 ; i < cnt ; i ++ )
13491 {
13592 struct libusb_device_descriptor desc ;
13693 int res = libusb_get_device_descriptor (deviceList [i ], & desc );
@@ -144,12 +101,12 @@ FN_INTERNAL libusb_device * fnusb_find_connected_audio_device(libusb_device * ca
144101 // make sure its some type of Kinect audio device
145102 if ((desc .idProduct == PID_NUI_AUDIO || fnusb_is_pid_k4w_audio (desc .idProduct )))
146103 {
147- const int audioBusNo = libusb_get_bus_number (deviceList [i ]);
104+ int audioBusNo = libusb_get_bus_number (deviceList [i ]);
148105 if (audioBusNo == cameraBusNo )
149106 {
150107 // we have a match!
151108 // let's double check
152- const libusb_device * audioParent = libusb_get_parent (deviceList [i ]);
109+ libusb_device * audioParent = libusb_get_parent (deviceList [i ]);
153110 if (cameraParent == audioParent )
154111 {
155112 return deviceList [i ];
@@ -159,7 +116,7 @@ FN_INTERNAL libusb_device * fnusb_find_connected_audio_device(libusb_device * ca
159116 }
160117 }
161118
162- return fnusb_find_orphan_audio ( camera , deviceList , count ) ;
119+ return NULL ;
163120}
164121
165122FN_INTERNAL int fnusb_list_device_attributes (freenect_context * ctx , struct freenect_device_attributes * * attribute_list )
0 commit comments