24
24
* either License.
25
25
*/
26
26
27
- #include <assert.h>
28
27
#include <stdio.h>
29
28
#include <stdlib.h>
30
29
#include <string.h>
37
36
# define sleep (x ) Sleep((x)*1000)
38
37
#endif
39
38
39
+
40
40
FN_INTERNAL int fnusb_num_devices (freenect_context * ctx )
41
41
{
42
42
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)
78
78
return (pid == PID_K4W_AUDIO || pid == PID_K4W_AUDIO_ALT_1 || pid == PID_K4W_AUDIO_ALT_2 );
79
79
}
80
80
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 )
82
82
{
83
- if (count <= 0 ) return NULL ;
83
+ if (cnt <= 0 ) return NULL ;
84
84
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 );
129
86
if (cameraBusNo < 0 ) return NULL ;
130
87
libusb_device * cameraParent = libusb_get_parent (camera );
131
88
132
89
int i = 0 ;
133
- for (i = 0 ; i < count ; i ++ )
90
+ for (i = 0 ; i < cnt ; i ++ )
134
91
{
135
92
struct libusb_device_descriptor desc ;
136
93
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
144
101
// make sure its some type of Kinect audio device
145
102
if ((desc .idProduct == PID_NUI_AUDIO || fnusb_is_pid_k4w_audio (desc .idProduct )))
146
103
{
147
- const int audioBusNo = libusb_get_bus_number (deviceList [i ]);
104
+ int audioBusNo = libusb_get_bus_number (deviceList [i ]);
148
105
if (audioBusNo == cameraBusNo )
149
106
{
150
107
// we have a match!
151
108
// let's double check
152
- const libusb_device * audioParent = libusb_get_parent (deviceList [i ]);
109
+ libusb_device * audioParent = libusb_get_parent (deviceList [i ]);
153
110
if (cameraParent == audioParent )
154
111
{
155
112
return deviceList [i ];
@@ -159,7 +116,7 @@ FN_INTERNAL libusb_device * fnusb_find_connected_audio_device(libusb_device * ca
159
116
}
160
117
}
161
118
162
- return fnusb_find_orphan_audio ( camera , deviceList , count ) ;
119
+ return NULL ;
163
120
}
164
121
165
122
FN_INTERNAL int fnusb_list_device_attributes (freenect_context * ctx , struct freenect_device_attributes * * attribute_list )
0 commit comments