Revamped "srv.c".
This commit is contained in:
parent
ec9734bdeb
commit
d35233fb1c
@ -112,7 +112,7 @@ void renderEffect()
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
initSrv();
|
srvInit();
|
||||||
|
|
||||||
aptInit(APPID_APPLICATION);
|
aptInit(APPID_APPLICATION);
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ void swapBuffers()
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
initSrv();
|
srvInit();
|
||||||
|
|
||||||
aptInit(APPID_APPLICATION);
|
aptInit(APPID_APPLICATION);
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ void renderEffect()
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
initSrv();
|
srvInit();
|
||||||
|
|
||||||
aptInit(APPID_APPLICATION);
|
aptInit(APPID_APPLICATION);
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ int main()
|
|||||||
hidInit(NULL);
|
hidInit(NULL);
|
||||||
|
|
||||||
Handle fsuHandle;
|
Handle fsuHandle;
|
||||||
srv_getServiceHandle(NULL, &fsuHandle, "fs:USER");
|
srvGetServiceHandle(&fsuHandle, "fs:USER");
|
||||||
FSUSER_Initialize(fsuHandle);
|
FSUSER_Initialize(fsuHandle);
|
||||||
|
|
||||||
Handle fileHandle;
|
Handle fileHandle;
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#ifndef SRV_H
|
#ifndef SRV_H
|
||||||
#define SRV_H
|
#define SRV_H
|
||||||
|
|
||||||
Result initSrv();
|
Result srvInit();
|
||||||
Result exitSrv();
|
Result srvExit();
|
||||||
Result srv_RegisterClient(Handle* handleptr);
|
Result srvRegisterClient();
|
||||||
Result srv_getServiceHandle(Handle* handleptr, Handle* out, char* server);
|
Result srvGetServiceHandle(Handle* out, char* name);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -69,7 +69,7 @@ Result ACU_WaitInternetConnection()
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 outval=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)
|
while(1)
|
||||||
{
|
{
|
||||||
|
@ -275,7 +275,7 @@ Result aptInit(NS_APPID appID)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
|
|
||||||
//initialize APT stuff, escape load screen
|
//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;
|
if((ret=APT_GetLockHandle(&aptuHandle, 0x0, &aptLockHandle)))return ret;
|
||||||
svcCloseHandle(aptuHandle);
|
svcCloseHandle(aptuHandle);
|
||||||
|
|
||||||
@ -420,7 +420,7 @@ void aptSetStatusPower(u32 status)
|
|||||||
void aptOpenSession()
|
void aptOpenSession()
|
||||||
{
|
{
|
||||||
svcWaitSynchronization1(aptLockHandle, U64_MAX);
|
svcWaitSynchronization1(aptLockHandle, U64_MAX);
|
||||||
srv_getServiceHandle(NULL, &aptuHandle, "APT:U");
|
srvGetServiceHandle(&aptuHandle, "APT:U");
|
||||||
}
|
}
|
||||||
|
|
||||||
void aptCloseSession()
|
void aptCloseSession()
|
||||||
|
@ -11,7 +11,7 @@ Result CFGNOR_Initialize(u8 value)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
ret = srv_getServiceHandle(NULL, &CFGNOR_handle, "cfg:nor");
|
ret = srvGetServiceHandle(&CFGNOR_handle, "cfg:nor");
|
||||||
if(ret!=0)return ret;
|
if(ret!=0)return ret;
|
||||||
|
|
||||||
cmdbuf[0] = 0x00010040;
|
cmdbuf[0] = 0x00010040;
|
||||||
|
@ -70,7 +70,7 @@ Result CSND_initialize(u32* sharedMem)
|
|||||||
if(sharedMem==NULL)sharedMem = (u32*)CSND_SHAREDMEM_DEFAULT;
|
if(sharedMem==NULL)sharedMem = (u32*)CSND_SHAREDMEM_DEFAULT;
|
||||||
CSND_sharedmem = sharedMem;
|
CSND_sharedmem = sharedMem;
|
||||||
|
|
||||||
ret = srv_getServiceHandle(NULL, &CSND_handle, "csnd:SND");
|
ret = srvGetServiceHandle(&CSND_handle, "csnd:SND");
|
||||||
if(ret!=0)return ret;
|
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);
|
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);
|
||||||
|
@ -8,7 +8,7 @@ Handle gspGpuHandle=0;
|
|||||||
|
|
||||||
Result gspInit()
|
Result gspInit()
|
||||||
{
|
{
|
||||||
return srv_getServiceHandle(NULL, &gspGpuHandle, "gsp::Gpu");
|
return srvGetServiceHandle(&gspGpuHandle, "gsp::Gpu");
|
||||||
}
|
}
|
||||||
|
|
||||||
void gspExit()
|
void gspExit()
|
||||||
|
@ -14,7 +14,7 @@ Result hidInit(u32* sharedMem)
|
|||||||
if(!sharedMem)sharedMem=(u32*)HID_SHAREDMEM_DEFAULT;
|
if(!sharedMem)sharedMem=(u32*)HID_SHAREDMEM_DEFAULT;
|
||||||
Result ret=0;
|
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;
|
if((ret=HIDUSER_GetInfo(NULL, &hidMemHandle)))return ret;
|
||||||
hidSharedMem=sharedMem;
|
hidSharedMem=sharedMem;
|
||||||
|
@ -162,7 +162,7 @@ Result IRU_Initialize(u32 *sharedmem_addr, u32 sharedmem_size)
|
|||||||
|
|
||||||
if(iru_handle)return 0;
|
if(iru_handle)return 0;
|
||||||
|
|
||||||
ret = srv_getServiceHandle(NULL, &iru_handle, "ir:u");
|
ret = srvGetServiceHandle(&iru_handle, "ir:u");
|
||||||
if(ret!=0)return ret;
|
if(ret!=0)return ret;
|
||||||
|
|
||||||
ret = irucmd_Initialize();
|
ret = irucmd_Initialize();
|
||||||
|
@ -142,7 +142,7 @@ Result SOC_Initialize(u32 *context_addr, u32 context_size)
|
|||||||
ret = svcCreateMemoryBlock(&memhandle, (u32)context_addr, context_size, 0, 3);
|
ret = svcCreateMemoryBlock(&memhandle, (u32)context_addr, context_size, 0, 3);
|
||||||
if(ret!=0)return ret;
|
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);
|
return socu_cmd1(memhandle, context_size);
|
||||||
}
|
}
|
||||||
|
@ -1,51 +1,64 @@
|
|||||||
|
/*
|
||||||
|
srv.c _ Service manager.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <3ds/types.h>
|
#include <3ds/types.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
|
|
||||||
Handle srvHandle=0;
|
|
||||||
|
|
||||||
Result initSrv()
|
static Handle g_srv_handle = 0;
|
||||||
|
|
||||||
|
Result srvInit()
|
||||||
{
|
{
|
||||||
Result ret=0;
|
Result rc = 0;
|
||||||
if(svcConnectToPort(&srvHandle, "srv:"))return ret;
|
|
||||||
return srv_RegisterClient(&srvHandle);
|
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();
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
cmdbuf[0] = 0x10002;
|
||||||
cmdbuf[0]=0x10002; //request header code
|
cmdbuf[1] = 0x20;
|
||||||
cmdbuf[1]=0x20;
|
|
||||||
|
|
||||||
Result ret=0;
|
Result rc;
|
||||||
if((ret=svcSendSyncRequest(*handleptr)))return ret;
|
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 len = strlen(name);
|
||||||
u8 l=strlen(server);
|
Result rc;
|
||||||
if(!out || !server || l>8)return -1;
|
|
||||||
|
|
||||||
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
|
if(rc = svcSendSyncRequest(g_srv_handle))
|
||||||
strcpy((char*)&cmdbuf[1], server);
|
return rc;
|
||||||
cmdbuf[3]=l;
|
|
||||||
cmdbuf[4]=0x0;
|
|
||||||
|
|
||||||
Result ret=0;
|
|
||||||
if((ret=svcSendSyncRequest(*handleptr)))return ret;
|
|
||||||
|
|
||||||
*out=cmdbuf[3];
|
|
||||||
|
|
||||||
|
*out = cmdbuf[3];
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user