From 8789077bb873ff1b51f5112dcdfc2267b2031f10 Mon Sep 17 00:00:00 2001 From: yellows8 Date: Mon, 10 Aug 2020 20:27:08 -0400 Subject: [PATCH] btm: Added the aruid cmds. --- nx/include/switch/services/btm.h | 22 +++++++++++++++++++++ nx/source/services/btm.c | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/nx/include/switch/services/btm.h b/nx/include/switch/services/btm.h index bdb1c563..f8fc4757 100644 --- a/nx/include/switch/services/btm.h +++ b/nx/include/switch/services/btm.h @@ -515,3 +515,25 @@ Result btmRegisterBleGattDataPath(const BtmBleDataPath *path); */ Result btmUnregisterBleGattDataPath(const BtmBleDataPath *path); +/** + * @brief RegisterAppletResourceUserId + * @note Only available on [5.0.0+]. + * @param[in] AppletResourceUserId AppletResourceUserId + * @param[in] unk Unknown + */ +Result btmRegisterAppletResourceUserId(u64 AppletResourceUserId, u32 unk); + +/** + * @brief UnregisterAppletResourceUserId + * @note Only available on [5.0.0+]. + * @param[in] AppletResourceUserId AppletResourceUserId + */ +Result btmUnregisterAppletResourceUserId(u64 AppletResourceUserId); + +/** + * @brief SetAppletResourceUserId + * @note Only available on [5.0.0+]. + * @param[in] AppletResourceUserId AppletResourceUserId + */ +Result btmSetAppletResourceUserId(u64 AppletResourceUserId); + diff --git a/nx/source/services/btm.c b/nx/source/services/btm.c index db609593..0430eb96 100644 --- a/nx/source/services/btm.c +++ b/nx/source/services/btm.c @@ -58,6 +58,10 @@ static Result _btmCmdInU32NoOut(u32 inval, u32 cmd_id) { return serviceDispatchIn(&g_btmSrv, cmd_id, inval); } +static Result _btmCmdInU64NoOut(u64 inval, u32 cmd_id) { + return serviceDispatchIn(&g_btmSrv, cmd_id, inval); +} + static Result _btmCmdNoInOutU8(u8 *out, u32 cmd_id) { return serviceDispatchOut(&g_btmSrv, cmd_id, *out); } @@ -559,3 +563,32 @@ Result btmUnregisterBleGattDataPath(const BtmBleDataPath *path) { return _btmRegisterBleGattDataPath(path, cmd_id); } +Result btmRegisterAppletResourceUserId(u64 AppletResourceUserId, u32 unk) { + if (hosversionBefore(5,0,0)) + return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + u32 cmd_id = hosversionBefore(5,1,0) ? 40 : 57; + + const struct { + u32 unk; + u64 AppletResourceUserId; + } in = { unk, AppletResourceUserId }; + + return serviceDispatchIn(&g_btmSrv, cmd_id, in); +} + +Result btmUnregisterAppletResourceUserId(u64 AppletResourceUserId) { + if (hosversionBefore(5,0,0)) + return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + u32 cmd_id = hosversionBefore(5,1,0) ? 41 : 58; + + return _btmCmdInU64NoOut(AppletResourceUserId, cmd_id); +} + +Result btmSetAppletResourceUserId(u64 AppletResourceUserId) { + if (hosversionBefore(5,0,0)) + return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + u32 cmd_id = hosversionBefore(5,1,0) ? 42 : 59; + + return _btmCmdInU64NoOut(AppletResourceUserId, cmd_id); +} +