diff --git a/platform/windows/hci_transport_h2_winusb.c b/platform/windows/hci_transport_h2_winusb.c index 4fb2413fa..6560d8f25 100644 --- a/platform/windows/hci_transport_h2_winusb.c +++ b/platform/windows/hci_transport_h2_winusb.c @@ -764,6 +764,8 @@ exit_on_error: return 0; } +#ifdef ENABLE_SCO_OVER_HCI + #define WinUSB_Lookup(fn) do { fn = (fn##_t) GetProcAddress(h, #fn); log_info("%-30s %p", #fn, fn); if (!fn) return; } while(0) static void usb_lookup_symbols(void){ @@ -778,14 +780,17 @@ static void usb_lookup_symbols(void){ WinUSB_Lookup(WinUsb_WriteIsochPipeAsap); WinUSB_Lookup(WinUsb_UnregisterIsochBuffer); } +#endif // returns 0 on success, -1 otherwise static int usb_open(void){ - usb_lookup_symbols(); - int r = -1; +#ifdef ENABLE_SCO_OVER_HCI + usb_lookup_symbols(); +#endif + HDEVINFO hDevInfo; SP_DEVICE_INTERFACE_DATA DevIntfData; PSP_DEVICE_INTERFACE_DETAIL_DATA DevIntfDetailData; @@ -904,9 +909,40 @@ static int usb_open(void){ } static int usb_close(void){ - int r = -1; + + // remove data sources + btstack_run_loop_remove_data_source(&usb_data_source_command_out); + btstack_run_loop_remove_data_source(&usb_data_source_event_in); + btstack_run_loop_remove_data_source(&usb_data_source_acl_in); + btstack_run_loop_remove_data_source(&usb_data_source_acl_out); + +#ifdef ENABLE_SCO_OVER_HCI + int i; + for (i=0;i