From 8be21732f268416e2b4744bea2272a38dd96c992 Mon Sep 17 00:00:00 2001 From: Joel16 Date: Sat, 13 Jan 2018 11:33:37 -0600 Subject: [PATCH] Add ACU_GetLastErrorCode && ACU_GetLastDetailErrorCode --- libctru/include/3ds/services/ac.h | 12 ++++++++++++ libctru/source/services/ac.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/libctru/include/3ds/services/ac.h b/libctru/include/3ds/services/ac.h index 7e2f573..290cfaa 100644 --- a/libctru/include/3ds/services/ac.h +++ b/libctru/include/3ds/services/ac.h @@ -36,3 +36,15 @@ Result ACU_GetSecurityMode(u32 *out); * @param out Pointer to output the current Wifi SSID length to. */ Result ACU_GetSSIDLength(u32 *out); + +/** + * @brief Gets the last error to occur during a connection. + * @param errorCode Pointer to output the error code to. + */ +Result ACU_GetLastErrorCode(u32* errorCode); + +/** + * @brief Gets the last detailed error to occur during a connection. + * @param errorCode Pointer to output the error code to. + */ +Result ACU_GetLastDetailErrorCode(u32* errorCode); diff --git a/libctru/source/services/ac.c b/libctru/source/services/ac.c index 38d71cc..7cb63c6 100644 --- a/libctru/source/services/ac.c +++ b/libctru/source/services/ac.c @@ -92,3 +92,31 @@ Result ACU_GetSSIDLength(u32 *out) return (Result)cmdbuf[1]; } + +Result ACU_GetLastErrorCode(u32* errorCode) +{ + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0xA,0,0); // 0xA0000 + + if(R_FAILED(ret = svcSendSyncRequest(acHandle)))return ret; + + if(errorCode) *errorCode = cmdbuf[2]; + + return (Result)cmdbuf[1]; +} + +Result ACU_GetLastDetailErrorCode(u32* errorCode) +{ + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0xB,0,0); // 0xB0000 + + if(R_FAILED(ret = svcSendSyncRequest(acHandle)))return ret; + + if(errorCode) *errorCode = cmdbuf[2]; + + return (Result)cmdbuf[1]; +}