Add support for nwm::EXT::ControlWirelessEnabled.

This commit is contained in:
thedax 2016-09-17 03:48:46 -04:00 committed by fincs
parent 47d9585624
commit f744a85e5a
3 changed files with 52 additions and 0 deletions

View File

@ -46,6 +46,7 @@ extern "C" {
#include <3ds/services/httpc.h> #include <3ds/services/httpc.h>
#include <3ds/services/uds.h> #include <3ds/services/uds.h>
#include <3ds/services/ndm.h> #include <3ds/services/ndm.h>
#include <3ds/services/nwmext.h>
#include <3ds/services/ir.h> #include <3ds/services/ir.h>
#include <3ds/services/ns.h> #include <3ds/services/ns.h>
#include <3ds/services/pm.h> #include <3ds/services/pm.h>

View File

@ -0,0 +1,13 @@
#pragma once
// Initializes NWMEXT.
Result nwmExtInit(void);
// Exits NWMEXT.
void nwmExtExit(void);
/**
* @brief Turns wireless on or off.
* @param enableWifi True enables it, false disables it.
*/
Result NWMEXT_ControlWirelessEnabled(bool enableWifi);

View File

@ -0,0 +1,38 @@
#include <3ds/types.h>
#include <3ds/ipc.h>
#include <3ds/result.h>
#include <3ds/svc.h>
#include <3ds/srv.h>
#include <3ds/synchronization.h>
#include <3ds/services/nwmext.h>
Handle nwmExtHandle;
static int nwmExtRefCount;
Result nwmExtInit(void)
{
Result res=0;
if (AtomicPostIncrement(&nwmExtRefCount)) return 0;
res = srvGetServiceHandle(&nwmExtHandle, "nwm::EXT");
if (R_FAILED(res)) AtomicDecrement(&nwmExtRefCount);
return res;
}
void nwmExtExit(void)
{
if (AtomicDecrement(&nwmExtRefCount)) return;
svcCloseHandle(nwmExtHandle);
}
Result NWMEXT_ControlWirelessEnabled(bool enableWifi)
{
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = IPC_MakeHeader(0x8, 1, 0); // 0x00080040
cmdbuf[1] = enableWifi ? 0 : 1;
Result ret=0;
if (R_FAILED(ret = svcSendSyncRequest(nwmExtHandle))) return ret;
return cmdbuf[1];
}