diff --git a/libctru/include/3ds/services/ac.h b/libctru/include/3ds/services/ac.h index 8940c5c..dbc0d00 100644 --- a/libctru/include/3ds/services/ac.h +++ b/libctru/include/3ds/services/ac.h @@ -97,6 +97,13 @@ Result ACU_GetLastDetailErrorCode(u32* errorCode); */ Result ACU_CreateDefaultConfig(u8* config); +/** + * @brief Sets something that makes the connection reliable. + * @param config Pointer to a buffer of size at least 0x200 used with ACU_CreateDefaultConfig previously. + * @param area Always 2 ? + */ +Result ACU_SetNetworkArea(u8* config, u8 area); + /** * @brief Sets the slot to use when connecting. * @param config Pointer to a buffer of size at least 0x200 used with ACU_CreateDefaultConfig previously. @@ -104,6 +111,12 @@ Result ACU_CreateDefaultConfig(u8* config); */ Result ACU_SetAllowApType(u8* config, u8 type); +/** + * @brief Sets something that makes the connection reliable. + * @param config Pointer to a buffer of size at least 0x200 used with ACU_CreateDefaultConfig previously. + */ +Result ACU_SetRequestEulaVersion(u8* config); + /** * @brief Starts the connection procedure. * @param config Pointer to a buffer of size at least 0x200 used with ACU_CreateDefaultConfig previously. diff --git a/libctru/source/services/ac.c b/libctru/source/services/ac.c index 4974628..5d91e41 100644 --- a/libctru/source/services/ac.c +++ b/libctru/source/services/ac.c @@ -213,6 +213,24 @@ Result ACU_CreateDefaultConfig(u8* config) return (Result)cmdbuf[1]; } +Result ACU_SetNetworkArea(u8* config, u8 area) +{ + Result ret=0; + u32 *cmdbuf = getThreadCommandBuffer(); + u32 *staticbufs = getThreadStaticBuffers(); + + cmdbuf[0] = IPC_MakeHeader(0x25,1,2); // 0x250042 + cmdbuf[1] = area; + cmdbuf[2] = IPC_Desc_StaticBuffer(0x200, 0); + cmdbuf[3] = (u32)config; + staticbufs[0] = IPC_Desc_StaticBuffer(0x200, 0); + staticbufs[1] = (u32)config; + + if(R_FAILED(ret = svcSendSyncRequest(acHandle))) return ret; + + return (Result)cmdbuf[1]; +} + Result ACU_SetAllowApType(u8* config, u8 type) { Result ret=0; @@ -231,6 +249,25 @@ Result ACU_SetAllowApType(u8* config, u8 type) return (Result)cmdbuf[1]; } +Result ACU_SetRequestEulaVersion(u8* config) +{ + Result ret=0; + u32 *cmdbuf = getThreadCommandBuffer(); + u32 *staticbufs = getThreadStaticBuffers(); + + cmdbuf[0] = IPC_MakeHeader(0x2D,2,2); // 0x2D0082 + cmdbuf[1] = 0; + cmdbuf[2] = 0; + cmdbuf[3] = IPC_Desc_StaticBuffer(0x200, 0); + cmdbuf[4] = (u32)config; + staticbufs[0] = IPC_Desc_StaticBuffer(0x200, 0); + staticbufs[1] = (u32)config; + + if(R_FAILED(ret = svcSendSyncRequest(acHandle))) return ret; + + return (Result)cmdbuf[1]; +} + Result ACU_ConnectAsync(u8* config, Handle connectionHandle) { Result ret=0;