]> Chaos Git - corbenik/ctrulib.git/commitdiff
Add CSND_AcquireCapUnit/CSND_ReleaseCapUnit
authorfincs <fincs.alt1@gmail.com>
Mon, 5 Jan 2015 18:31:15 +0000 (19:31 +0100)
committerfincs <fincs.alt1@gmail.com>
Tue, 20 Jan 2015 16:55:25 +0000 (17:55 +0100)
libctru/include/3ds/services/csnd.h
libctru/source/services/csnd.c

index e0e24069283a95a083eb0ec29a4cd0a3fe0ee19e..786c09de6e73d11d266c665726d1ff15a286a49f 100644 (file)
@@ -72,6 +72,9 @@ extern vu32* csndSharedMem;
 extern u32 csndSharedMemSize;
 extern u32 csndChannels; // Bitmask of channels that are allowed for usage
 
+Result CSND_AcquireCapUnit(u32* capUnit);
+Result CSND_ReleaseCapUnit(u32 capUnit);
+
 Result csndInit(void);
 Result csndExit(void);
 
index e19a6176e40be2ca045efeb75fd332b3cb83c8f0..25b788f40a65856139adb1d2b712f4439b6466b0 100644 (file)
@@ -77,6 +77,33 @@ static Result CSND_ReleaseSoundChannels(void)
        return (Result)cmdbuf[1];
 }
 
+Result CSND_AcquireCapUnit(u32* capUnit)
+{
+       Result ret=0;
+       u32 *cmdbuf = getThreadCommandBuffer();
+
+       cmdbuf[0] = 0x00070000;
+
+       if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
+
+       *capUnit = cmdbuf[2];
+
+       return (Result)cmdbuf[1];
+}
+
+Result CSND_ReleaseCapUnit(u32 capUnit)
+{
+       Result ret=0;
+       u32 *cmdbuf = getThreadCommandBuffer();
+
+       cmdbuf[0] = 0x00080040;
+       cmdbuf[1] = capUnit;
+
+       if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
+
+       return (Result)cmdbuf[1];
+}
+
 Result csndInit(void)
 {
        Result ret=0;