added framework for APT service (application and title launching service)

This commit is contained in:
bunnei 2014-04-13 16:33:45 -04:00
parent 524e78ece8
commit 9f4d677cdf
7 changed files with 126 additions and 5 deletions

View file

@ -7,6 +7,7 @@
#include "core/hle/hle.h"
#include "core/hle/service/service.h"
#include "core/hle/service/apt.h"
namespace Service {
@ -104,19 +105,36 @@ public:
*/
Syscall::Result Sync() {
u32 header = 0;
HLE::Read<u32>(header, (HLE::CMD_BUFFER_ADDR + CMD_OFFSET));
Syscall::Result res = 0;
u32* cmd_buff = (u32*)HLE::GetPointer(HLE::CMD_BUFFER_ADDR + CMD_OFFSET);
switch (cmd_buff[0]) {
switch (header) {
case CMD_HEADER_INIT:
NOTICE_LOG(HLE, "SRV::Sync - Initialize");
NOTICE_LOG(OSHLE, "SRV::Sync - Initialize");
break;
case CMD_HEADER_GET_HANDLE:
NOTICE_LOG(HLE, "SRV::Sync - GetHandle, port: %s", HLE::GetCharPointer(HLE::CMD_BUFFER_ADDR + CMD_OFFSET + 4));
const char* port_name = (const char*)&cmd_buff[1];
Interface* service = g_manager->FetchFromPortName(port_name);
NOTICE_LOG(OSHLE, "SRV::Sync - GetHandle - port: %s, handle: 0x%08X", port_name,
service->GetUID());
if (NULL != service) {
cmd_buff[3] = service->GetUID();
} else {
ERROR_LOG(OSHLE, "Service %s does not exist", port_name);
res = -1;
}
break;
}
return 0;
cmd_buff[1] = res;
return res;
}
};
@ -128,6 +146,7 @@ public:
void Init() {
g_manager = new Manager;
g_manager->AddService(new SRV);
g_manager->AddService(new APT);
NOTICE_LOG(HLE, "Services initialized OK");
}