Revamped "srv.c".

This commit is contained in:
plutoo 2014-07-28 23:23:24 +02:00
parent ec9734bdeb
commit d35233fb1c
13 changed files with 60 additions and 47 deletions

View File

@ -112,7 +112,7 @@ void renderEffect()
int main()
{
initSrv();
srvInit();
aptInit(APPID_APPLICATION);

View File

@ -81,7 +81,7 @@ void swapBuffers()
int main()
{
initSrv();
srvInit();
aptInit(APPID_APPLICATION);

View 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;

View 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

View 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)
{

View 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()

View 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;

View 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);

View File

@ -8,7 +8,7 @@ Handle gspGpuHandle=0;
Result gspInit()
{
return srv_getServiceHandle(NULL, &gspGpuHandle, "gsp::Gpu");
return srvGetServiceHandle(&gspGpuHandle, "gsp::Gpu");
}
void gspExit()

View 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;

View 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();

View 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);
}

View 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];
}
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;
u8 len = strlen(name);
Result rc;
u32* cmdbuf=getThreadCommandBuffer();
u32* cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x50100;
strcpy((char*) &cmdbuf[1], name);
cmdbuf[3] = len;
cmdbuf[4] = 0x0;
cmdbuf[0]=0x50100; //request header code
strcpy((char*)&cmdbuf[1], server);
cmdbuf[3]=l;
cmdbuf[4]=0x0;
Result ret=0;
if((ret=svcSendSyncRequest(*handleptr)))return ret;
*out=cmdbuf[3];
if(rc = svcSendSyncRequest(g_srv_handle))
return rc;
*out = cmdbuf[3];
return cmdbuf[1];
}