diff --git a/nx/include/switch/services/audctl.h b/nx/include/switch/services/audctl.h index 8c831f28..ee5bc146 100644 --- a/nx/include/switch/services/audctl.h +++ b/nx/include/switch/services/audctl.h @@ -17,6 +17,7 @@ typedef enum { AudioTarget_Headphone = 2, AudioTarget_Tv = 3, AudioTarget_UsbOutputDevice = 4, + AudioTarget_Bluetooth = 5, } AudioTarget; typedef enum { @@ -66,3 +67,4 @@ Result audctlGetAudioOutputTargetForPlayReport(AudioTarget* target_out); ///< [3 Result audctlNotifyHeadphoneVolumeWarningDisplayedEvent(void); ///< [3.0.0+] Result audctlSetSystemOutputMasterVolume(float volume); ///< [4.0.0+] Result audctlGetSystemOutputMasterVolume(float* volume_out); ///< [4.0.0+] +Result audctlGetActiveOutputTarget(AudioTarget* target); diff --git a/nx/source/services/audctl.c b/nx/source/services/audctl.c index e4f22f0d..4d7543bc 100644 --- a/nx/source/services/audctl.c +++ b/nx/source/services/audctl.c @@ -340,3 +340,19 @@ Result audctlGetSystemOutputMasterVolume(float* volume_out) { } return rc; } + +Result audctlGetActiveOutputTarget(AudioTarget* target) { + if (hosversionBefore(13,0,0)) + return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + + struct { + u32 target; + } out; + + Result rc = serviceDispatchOut(&g_audctlSrv, 32, out); + + if (R_SUCCEEDED(rc)) { + *target = out.target; + } + return rc; +}