]> Chaos Git - corbenik/ctrulib.git/commitdiff
Add support for nwm::EXT::ControlWirelessEnabled.
authorthedax <daxtsu@gmail.com>
Sat, 17 Sep 2016 07:48:46 +0000 (03:48 -0400)
committerfincs <fincs.alt1@gmail.com>
Wed, 28 Dec 2016 16:41:51 +0000 (17:41 +0100)
libctru/include/3ds.h
libctru/include/3ds/services/nwmext.h [new file with mode: 0644]
libctru/source/services/nwmext.c [new file with mode: 0644]

index d4079d8f83b34bdbf035f4d8c91162d3c12363be..69b2ddf1fd015045beee1db690c41413e89c143a 100644 (file)
@@ -46,6 +46,7 @@ extern "C" {
 #include <3ds/services/httpc.h>
 #include <3ds/services/uds.h>
 #include <3ds/services/ndm.h>
+#include <3ds/services/nwmext.h>
 #include <3ds/services/ir.h>
 #include <3ds/services/ns.h>
 #include <3ds/services/pm.h>
diff --git a/libctru/include/3ds/services/nwmext.h b/libctru/include/3ds/services/nwmext.h
new file mode 100644 (file)
index 0000000..f6697c6
--- /dev/null
@@ -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);
diff --git a/libctru/source/services/nwmext.c b/libctru/source/services/nwmext.c
new file mode 100644 (file)
index 0000000..2ea1f5b
--- /dev/null
@@ -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];
+}