diff --git a/libctru/include/3ds/services/ac.h b/libctru/include/3ds/services/ac.h index f07a512..7e2f573 100644 --- a/libctru/include/3ds/services/ac.h +++ b/libctru/include/3ds/services/ac.h @@ -18,3 +18,21 @@ Result acWaitInternetConnection(void); * @param out Pointer to output the current Wifi status to. (0 = not connected, 1 = O3DS Internet, 2 = N3DS Internet) */ Result ACU_GetWifiStatus(u32 *out); + +/** + * @brief Gets the current Wifi status. + * @param out Pointer to output the current Wifi status to. (1 = not connected, 3 = connected) + */ +Result ACU_GetStatus(u32 *out); + +/** + * @brief Gets the current Wifi security mode. + * @param out Pointer to output the current Wifi security mode to. (0 = Open Authentication, 1 = WEP 40-bit, 2 = WEP 104-bit, 3 = WEP 128-bit, 4 = WPA TKIP, 5 = WPA2 TKIP, 6 = WPA AES, 7 = WPA2 AES) + */ +Result ACU_GetSecurityMode(u32 *out); + +/** + * @brief Gets the current Wifi SSID length. + * @param out Pointer to output the current Wifi SSID length to. + */ +Result ACU_GetSSIDLength(u32 *out); diff --git a/libctru/source/services/ac.c b/libctru/source/services/ac.c index f088e7e..38d71cc 100644 --- a/libctru/source/services/ac.c +++ b/libctru/source/services/ac.c @@ -50,3 +50,45 @@ Result ACU_GetWifiStatus(u32 *out) return (Result)cmdbuf[1]; } + +Result ACU_GetStatus(u32 *out) +{ + Result ret=0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0xC,0,0); // 0x000C0000 + + if(R_FAILED(ret = svcSendSyncRequest(acHandle)))return ret; + + *out = cmdbuf[2]; + + return (Result)cmdbuf[1]; +} + +Result ACU_GetSecurityMode(u32 *out) +{ + Result ret=0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0x33,0,0); // 0x00330000 + + if(R_FAILED(ret = svcSendSyncRequest(acHandle)))return ret; + + *out = cmdbuf[2]; + + return (Result)cmdbuf[1]; +} + +Result ACU_GetSSIDLength(u32 *out) +{ + Result ret=0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0x35,0,0); // 0x00350000 + + if(R_FAILED(ret = svcSendSyncRequest(acHandle)))return ret; + + *out = cmdbuf[2]; + + return (Result)cmdbuf[1]; +}