Browse Source

Added SDL_hid_ble_scan() for pairing Steam Controllers on iOS and tvOS

Sam Lantinga 3 years ago
parent
commit
9c3bcf8e8a

+ 9 - 0
include/SDL_hidapi.h

@@ -431,6 +431,15 @@ extern DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev
  */
 extern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen);
 
+/**
+ * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers
+ *
+ * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan
+ *
+ * \since This function is available since SDL 2.0.18.
+ */
+extern DECLSPEC void SDLCALL SDL_hid_ble_scan(SDL_bool active);
+
 /* Ends C function definitions when using C++ */
 #ifdef __cplusplus
 }

+ 1 - 0
src/dynapi/SDL_dynapi_overrides.h

@@ -853,3 +853,4 @@
 #define SDL_JoystickHasRumbleTriggers SDL_JoystickHasRumbleTriggers_REAL
 #define SDL_GameControllerHasRumble SDL_GameControllerHasRumble_REAL
 #define SDL_GameControllerHasRumbleTriggers SDL_GameControllerHasRumbleTriggers_REAL
+#define SDL_hid_ble_scan SDL_hid_ble_scan_REAL

+ 1 - 0
src/dynapi/SDL_dynapi_procs.h

@@ -922,3 +922,4 @@ SDL_DYNAPI_PROC(SDL_bool,SDL_JoystickHasRumble,(SDL_Joystick *a),(a),return)
 SDL_DYNAPI_PROC(SDL_bool,SDL_JoystickHasRumbleTriggers,(SDL_Joystick *a),(a),return)
 SDL_DYNAPI_PROC(SDL_bool,SDL_GameControllerHasRumble,(SDL_GameController *a),(a),return)
 SDL_DYNAPI_PROC(SDL_bool,SDL_GameControllerHasRumbleTriggers,(SDL_GameController *a),(a),return)
+SDL_DYNAPI_PROC(void,SDL_hid_ble_scan,(SDL_bool a),(a),)

+ 7 - 0
src/hidapi/SDL_hidapi.c

@@ -1492,6 +1492,13 @@ int SDL_hid_get_indexed_string(SDL_hid_device *device, int string_index, wchar_t
     return result;
 }
 
+void SDL_hid_ble_scan(SDL_bool active)
+{
+#if __IPHONEOS__ || __TVOS__
+    hid_ble_scan(active);
+#endif
+}
+
 #ifdef HAVE_ENABLE_GAMECUBE_ADAPTORS
 /* This is needed to enable input for Nyko and EVORETRO GameCube adaptors */
 void SDL_EnableGameCubeAdaptors(void)

+ 4 - 0
src/hidapi/hidapi/hidapi.h

@@ -406,6 +406,10 @@ namespace NAMESPACE {
 		*/
 		HID_API_EXPORT const wchar_t* HID_API_CALL hid_error(hid_device *dev);
 
+#if __IPHONEOS__ || __TVOS__
+		HID_API_EXPORT void HID_API_CALL hid_ble_scan(int active);
+#endif
+
 #if defined(__cplusplus) && !defined(NAMESPACE)
 }
 #endif

+ 1 - 1
src/hidapi/ios/hid.m

@@ -743,7 +743,7 @@ int HID_API_EXPORT HID_API_CALL hid_exit(void)
 	return 0;
 }
 
-void HID_API_EXPORT HID_API_CALL hid_ble_scan( bool bStart )
+void HID_API_EXPORT HID_API_CALL hid_ble_scan( int bStart )
 {
 	HIDBLEManager *bleManager = HIDBLEManager.sharedInstance;
 	if ( bStart )