]> Chaos Git - corbenik/ctrulib.git/commitdiff
Revamped "srv.c".
authorplutoo <plutoo@univor.se>
Mon, 28 Jul 2014 21:23:24 +0000 (23:23 +0200)
committerplutoo <plutoo@univor.se>
Mon, 28 Jul 2014 21:26:13 +0000 (23:26 +0200)
13 files changed:
examples/arm11u/source/main.c
examples/gpu/source/main.c
examples/sdmc/source/main.c
libctru/include/3ds/srv.h
libctru/source/services/ac.c
libctru/source/services/apt.c
libctru/source/services/cfgnor.c
libctru/source/services/csnd.c
libctru/source/services/gsp.c
libctru/source/services/hid.c
libctru/source/services/ir.c
libctru/source/services/soc.c
libctru/source/srv.c

index 9b3536975f5b694d0f621d042a7d8b9d4461a236..c770d061b82096fabfb65e22a359ab6694fcbc53 100644 (file)
@@ -112,7 +112,7 @@ void renderEffect()
 
 int main()
 {
-       initSrv();
+       srvInit();
        
        aptInit(APPID_APPLICATION);
 
index 749041769a9ca26f85d4fab619a6857330c75381..81655f2f9dafd1d0c63e24feccd422983edab8ca 100644 (file)
@@ -81,7 +81,7 @@ void swapBuffers()
 
 int main()
 {
-       initSrv();
+       srvInit();
        
        aptInit(APPID_APPLICATION);
 
index c6dacf30f9e5984223270989ebf45aecde47b9c0..cce8d5199c30ef5ec7d06ed502026ac77496ac00 100644 (file)
@@ -112,7 +112,7 @@ void renderEffect()
 
 int main()
 {
-       initSrv();
+       srvInit();
                
        aptInit(APPID_APPLICATION);
 
@@ -121,7 +121,7 @@ int main()
        hidInit(NULL);
 
        Handle fsuHandle;
-       srv_getServiceHandle(NULL, &fsuHandle, "fs:USER");
+       srvGetServiceHandle(&fsuHandle, "fs:USER");
        FSUSER_Initialize(fsuHandle);
 
        Handle fileHandle;
index 43ae29f80a82a38923025e9d27bd673b049a3ce4..09d5afe53df37e9643f1600d02ef2d53c86aa529 100644 (file)
@@ -1,9 +1,9 @@
 #ifndef SRV_H
 #define SRV_H
 
-Result initSrv();
-Result exitSrv();
-Result srv_RegisterClient(Handle* handleptr);
-Result srv_getServiceHandle(Handle* handleptr, Handle* out, char* server);
+Result srvInit();
+Result srvExit();
+Result srvRegisterClient();
+Result srvGetServiceHandle(Handle* out, char* name);
 
 #endif
index 0a9175ceecd4b1cd0224b7f1e9053d596e20af9f..7bab8085a4b1fcea9569ef90d0220e9f2672f2be 100644 (file)
@@ -69,7 +69,7 @@ Result ACU_WaitInternetConnection()
        Result ret=0;
        u32 outval=0;
 
-       if((ret = srv_getServiceHandle(NULL, &servhandle, "ac:u"))!=0)return ret;
+       if((ret = srvGetServiceHandle(&servhandle, "ac:u"))!=0)return ret;
 
        while(1)
        {
index a224c6877216f4187881d131ac35c3a5e1ca8fd2..9cdca30436fd92f77253df7474afae81a5912459 100644 (file)
@@ -275,7 +275,7 @@ Result aptInit(NS_APPID appID)
        Result ret=0;
 
        //initialize APT stuff, escape load screen
-       srv_getServiceHandle(NULL, &aptuHandle, "APT:U");
+       srvGetServiceHandle(&aptuHandle, "APT:U");
        if((ret=APT_GetLockHandle(&aptuHandle, 0x0, &aptLockHandle)))return ret;
        svcCloseHandle(aptuHandle);
 
@@ -420,7 +420,7 @@ void aptSetStatusPower(u32 status)
 void aptOpenSession()
 {
        svcWaitSynchronization1(aptLockHandle, U64_MAX);
-       srv_getServiceHandle(NULL, &aptuHandle, "APT:U");
+       srvGetServiceHandle(&aptuHandle, "APT:U");
 }
 
 void aptCloseSession()
index 417825fc253895a3458bf4275426578fce4f0086..45aa4e342d0268aba5fe3d7a359e5b04571f434d 100644 (file)
@@ -11,7 +11,7 @@ Result CFGNOR_Initialize(u8 value)
        Result ret = 0;
        u32 *cmdbuf = getThreadCommandBuffer();
 
-       ret = srv_getServiceHandle(NULL, &CFGNOR_handle, "cfg:nor");
+       ret = srvGetServiceHandle(&CFGNOR_handle, "cfg:nor");
        if(ret!=0)return ret;
 
        cmdbuf[0] = 0x00010040;
index d1ce51283d4b3f40e33c144226fce18824228ca0..c0e7c52ed10ec85bcd2b6309a22e7c32f46b8ac0 100644 (file)
@@ -70,7 +70,7 @@ Result CSND_initialize(u32* sharedMem)
        if(sharedMem==NULL)sharedMem = (u32*)CSND_SHAREDMEM_DEFAULT;
        CSND_sharedmem = sharedMem;
 
-       ret = srv_getServiceHandle(NULL, &CSND_handle, "csnd:SND");
+       ret = srvGetServiceHandle(&CSND_handle, "csnd:SND");
        if(ret!=0)return ret;
 
        ret = CSND_cmd1(&CSND_mutexhandle, &CSND_sharedmemhandle, CSND_sharedmem_cmdblocksize+0x114, CSND_sharedmem_cmdblocksize, CSND_sharedmem_cmdblocksize+8, CSND_sharedmem_cmdblocksize+0xc8, CSND_sharedmem_cmdblocksize+0xd8);
index 7d74407c158b545b19f7f1f13599810fe44074d0..50c1600c5676d72886de1494d8b7b7c1942acb95 100644 (file)
@@ -8,7 +8,7 @@ Handle gspGpuHandle=0;
 
 Result gspInit()
 {
-       return srv_getServiceHandle(NULL, &gspGpuHandle, "gsp::Gpu");
+       return srvGetServiceHandle(&gspGpuHandle, "gsp::Gpu");
 }
 
 void gspExit()
index 4a709f4c4d323889a6a640299c0d6a66a0a266ce..7d35e60e3d0adf6c8260daf41aa1d12c13cf94e6 100644 (file)
@@ -14,7 +14,7 @@ Result hidInit(u32* sharedMem)
        if(!sharedMem)sharedMem=(u32*)HID_SHAREDMEM_DEFAULT;
        Result ret=0;
 
-       if((ret=srv_getServiceHandle(NULL, &hidHandle, "hid:USER")))return ret;
+       if((ret=srvGetServiceHandle(&hidHandle, "hid:USER")))return ret;
        
        if((ret=HIDUSER_GetInfo(NULL, &hidMemHandle)))return ret;
        hidSharedMem=sharedMem;
index 40624bf5a7c1c3dee7082cbd379094c76bae3d2b..b2e4078bd417a776199aff9ea88c71f5e1fc3f22 100644 (file)
@@ -162,7 +162,7 @@ Result IRU_Initialize(u32 *sharedmem_addr, u32 sharedmem_size)
 
        if(iru_handle)return 0;
 
-       ret = srv_getServiceHandle(NULL, &iru_handle, "ir:u");
+       ret = srvGetServiceHandle(&iru_handle, "ir:u");
        if(ret!=0)return ret;
 
        ret = irucmd_Initialize();
index 9be4fe0a9d400111c2150a63dbd9fe1d663de6a6..2298537a6a0e37af8d5bff4b9d4eef49d2060f20 100644 (file)
@@ -142,7 +142,7 @@ Result SOC_Initialize(u32 *context_addr, u32 context_size)
        ret = svcCreateMemoryBlock(&memhandle, (u32)context_addr, context_size, 0, 3);
        if(ret!=0)return ret;
 
-       if((ret = srv_getServiceHandle(NULL, &SOCU_handle, "soc:U"))!=0)return ret;
+       if((ret = srvGetServiceHandle(&SOCU_handle, "soc:U"))!=0)return ret;
 
        return socu_cmd1(memhandle, context_size);
 }
index 23a1f357524efa136ae11dc589def7e77afdcd0d..da34c35ac508ef17dc35d95bf1bd6a112f773f57 100644 (file)
@@ -1,51 +1,64 @@
+/*
+  srv.c _ Service manager.
+*/
+
 #include <3ds/types.h>
 #include <3ds/srv.h>
 #include <3ds/svc.h>
 
-Handle srvHandle=0;
 
-Result initSrv()
+static Handle g_srv_handle = 0;
+
+Result srvInit()
 {
-       Result ret=0;
-       if(svcConnectToPort(&srvHandle, "srv:"))return ret;
-       return srv_RegisterClient(&srvHandle);
+    Result rc = 0;
+
+    if(rc = svcConnectToPort(&g_srv_handle, "srv:"))
+        return rc;
+
+    if(rc = srvRegisterClient()) {
+        svcCloseHandle(g_srv_handle);
+        g_srv_handle = 0;
+    }
+
+    return rc;
 }
 
-Result exitSrv()
+Result srvExit()
 {
-       if(srvHandle)svcCloseHandle(srvHandle);
+    if(g_srv_handle != 0)
+        svcCloseHandle(g_srv_handle);
+
+    g_srv_handle = 0;
 }
 
-Result srv_RegisterClient(Handle* handleptr)
+Result srvRegisterClient()
 {
-       if(!handleptr)handleptr=&srvHandle;
-       u32* cmdbuf=getThreadCommandBuffer();
-       cmdbuf[0]=0x10002; //request header code
-       cmdbuf[1]=0x20;
+    u32* cmdbuf = getThreadCommandBuffer();
+    cmdbuf[0] = 0x10002;
+    cmdbuf[1] = 0x20;
 
-       Result ret=0;
-       if((ret=svcSendSyncRequest(*handleptr)))return ret;
+    Result rc;
+    if(rc = svcSendSyncRequest(g_srv_handle))
+        return rc;
 
-       return cmdbuf[1];
+    return cmdbuf[1];
 }
 
-Result srv_getServiceHandle(Handle* handleptr, Handle* out, char* server)
+Result srvGetServiceHandle(Handle* out, char* name)
 {
-       if(!handleptr)handleptr=&srvHandle;
-       u8 l=strlen(server);
-       if(!out || !server || l>8)return -1;
-
-       u32* cmdbuf=getThreadCommandBuffer();
-
-       cmdbuf[0]=0x50100; //request header code
-       strcpy((char*)&cmdbuf[1], server);
-       cmdbuf[3]=l;
-       cmdbuf[4]=0x0;
+    u8 len = strlen(name);
+    Result rc;
 
-       Result ret=0;
-       if((ret=svcSendSyncRequest(*handleptr)))return ret;
+    u32* cmdbuf = getThreadCommandBuffer();
+    cmdbuf[0] = 0x50100;
+    strcpy((char*) &cmdbuf[1], name);
+    cmdbuf[3] = len;
+    cmdbuf[4] = 0x0;
 
-       *out=cmdbuf[3];
+    if(rc = svcSendSyncRequest(g_srv_handle))
+        return rc;
 
-       return cmdbuf[1];
+    *out = cmdbuf[3];
+    return cmdbuf[1];
 }