mirror of
https://github.com/PabloMK7/citra.git
synced 2024-11-25 00:44:05 +00:00
Merge pull request #2024 from JamePeng/update-boss-code
Update the stub code of BOSS
This commit is contained in:
commit
cc7f1155a8
5 changed files with 1810 additions and 4 deletions
|
@ -37,6 +37,7 @@ namespace Log {
|
|||
SUB(Service, FS) \
|
||||
SUB(Service, ERR) \
|
||||
SUB(Service, APT) \
|
||||
SUB(Service, BOSS) \
|
||||
SUB(Service, GSP) \
|
||||
SUB(Service, AC) \
|
||||
SUB(Service, AM) \
|
||||
|
|
|
@ -54,6 +54,7 @@ enum class Class : ClassType {
|
|||
Service_FS, ///< The FS (Filesystem) service implementation
|
||||
Service_ERR, ///< The ERR (Error) port implementation
|
||||
Service_APT, ///< The APT (Applets) service
|
||||
Service_BOSS, ///< The BOSS (SpotPass) service
|
||||
Service_GSP, ///< The GSP (GPU control) service
|
||||
Service_AC, ///< The AC (WiFi status) service
|
||||
Service_AM, ///< The AM (Application manager) service
|
||||
|
|
|
@ -10,11 +10,978 @@
|
|||
namespace Service {
|
||||
namespace BOSS {
|
||||
|
||||
static u32 new_arrival_flag;
|
||||
static u32 ns_data_new_flag;
|
||||
static u32 output_flag;
|
||||
|
||||
void InitializeSession(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u64 unk_param = ((u64)cmd_buff[1] | ((u64)cmd_buff[2] << 32));
|
||||
u32 translation = cmd_buff[3];
|
||||
u32 unk_param4 = cmd_buff[4];
|
||||
|
||||
if (translation != IPC::CallingPidDesc()) {
|
||||
cmd_buff[0] = IPC::MakeHeader(0, 0x1, 0); // 0x40
|
||||
cmd_buff[1] = ResultCode(ErrorDescription::OS_InvalidBufferDescriptor, ErrorModule::OS,
|
||||
ErrorSummary::WrongArgument, ErrorLevel::Permanent)
|
||||
.raw;
|
||||
LOG_ERROR(Service_BOSS, "The translation was invalid, translation=0x%08X", translation);
|
||||
return;
|
||||
}
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x1, 0x1, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param=0x%016X, translation=0x%08X, unk_param4=0x%08X",
|
||||
unk_param, translation, unk_param4);
|
||||
}
|
||||
|
||||
void RegisterStorage(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
u32 unk_param3 = cmd_buff[3];
|
||||
u32 unk_flag = cmd_buff[4] & 0xFF;
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x2, 0x1, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
|
||||
LOG_WARNING(
|
||||
Service_BOSS,
|
||||
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, unk_flag=0x%08X",
|
||||
unk_param1, unk_param2, unk_param3, unk_flag);
|
||||
}
|
||||
|
||||
void UnregisterStorage(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x3, 0x1, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) called");
|
||||
}
|
||||
|
||||
void GetStorageInfo(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x4, 0x2, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) called");
|
||||
}
|
||||
|
||||
void RegisterPrivateRootCa(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
u32 translation = cmd_buff[2];
|
||||
u32 buff_addr = cmd_buff[3];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x5, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
||||
translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void RegisterPrivateClientCert(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
u32 translation1 = cmd_buff[3];
|
||||
u32 buff1_addr = cmd_buff[4];
|
||||
u32 buff1_size = (translation1 >> 4);
|
||||
u32 translation2 = cmd_buff[5];
|
||||
u32 buff2_addr = cmd_buff[6];
|
||||
u32 buff2_size = (translation2 >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x6, 0x1, 0x4);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff1_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff1_addr;
|
||||
cmd_buff[2] = (buff2_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff2_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
||||
"translation1=0x%08X, buff1_addr=0x%08X, buff1_size=0x%08X, "
|
||||
"translation2=0x%08X, buff2_addr=0x%08X, buff2_size=0x%08X",
|
||||
unk_param1, unk_param2, translation1, buff1_addr, buff1_size, translation2,
|
||||
buff2_addr, buff2_size);
|
||||
}
|
||||
|
||||
void GetNewArrivalFlag(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x7, 0x2, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = new_arrival_flag;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) new_arrival_flag=%u", new_arrival_flag);
|
||||
}
|
||||
|
||||
void RegisterNewArrivalEvent(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x8, 0x1, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X", unk_param1,
|
||||
unk_param2);
|
||||
}
|
||||
|
||||
void SetOptoutFlag(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
output_flag = cmd_buff[1] & 0xFF;
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x9, 0x1, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "output_flag=%u", output_flag);
|
||||
}
|
||||
|
||||
void GetOptoutFlag(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0xA, 0x2, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = output_flag;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "output_flag=%u", output_flag);
|
||||
}
|
||||
|
||||
void RegisterTask(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2] & 0xFF;
|
||||
u32 unk_param3 = cmd_buff[3] & 0xFF;
|
||||
u32 translation = cmd_buff[4];
|
||||
u32 buff_addr = cmd_buff[5];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0xB, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, unk_param3, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void UnregisterTask(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2] & 0xFF;
|
||||
u32 translation = cmd_buff[3];
|
||||
u32 buff_addr = cmd_buff[4];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0xC, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void ReconfigureTask(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2] & 0xFF;
|
||||
u32 translation = cmd_buff[3];
|
||||
u32 buff_addr = cmd_buff[4];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0xD, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetTaskIdList(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0xE, 0x1, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) called");
|
||||
}
|
||||
|
||||
void GetStepIdList(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
u32 translation = cmd_buff[2];
|
||||
u32 buff_addr = cmd_buff[3];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0xF, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
||||
translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetNsDataIdList(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
u32 unk_param3 = cmd_buff[3];
|
||||
u32 unk_param4 = cmd_buff[4];
|
||||
u32 translation = cmd_buff[5];
|
||||
u32 buff_addr = cmd_buff[6];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x10, 0x3, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (16 bit value)
|
||||
cmd_buff[3] = 0; // stub 0 (16 bit value)
|
||||
cmd_buff[4] = (buff_size << 4 | 0xC);
|
||||
cmd_buff[5] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||
"unk_param4=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetOwnNsDataIdList(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
u32 unk_param3 = cmd_buff[3];
|
||||
u32 unk_param4 = cmd_buff[4];
|
||||
u32 translation = cmd_buff[5];
|
||||
u32 buff_addr = cmd_buff[6];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x11, 0x3, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (16 bit value)
|
||||
cmd_buff[3] = 0; // stub 0 (16 bit value)
|
||||
cmd_buff[4] = (buff_size << 4 | 0xC);
|
||||
cmd_buff[5] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||
"unk_param4=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetNewDataNsDataIdList(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
u32 unk_param3 = cmd_buff[3];
|
||||
u32 unk_param4 = cmd_buff[4];
|
||||
u32 translation = cmd_buff[5];
|
||||
u32 buff_addr = cmd_buff[6];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x12, 0x3, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (16 bit value)
|
||||
cmd_buff[3] = 0; // stub 0 (16 bit value)
|
||||
cmd_buff[4] = (buff_size << 4 | 0xC);
|
||||
cmd_buff[5] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||
"unk_param4=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetOwnNewDataNsDataIdList(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
u32 unk_param3 = cmd_buff[3];
|
||||
u32 unk_param4 = cmd_buff[4];
|
||||
u32 translation = cmd_buff[5];
|
||||
u32 buff_addr = cmd_buff[6];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x13, 0x3, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (16 bit value)
|
||||
cmd_buff[3] = 0; // stub 0 (16 bit value)
|
||||
cmd_buff[4] = (buff_size << 4 | 0xC);
|
||||
cmd_buff[5] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||
"unk_param4=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void SendProperty(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
u32 translation = cmd_buff[3];
|
||||
u32 buff_addr = cmd_buff[4];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x14, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void SendPropertyHandle(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[2] & 0xFF;
|
||||
u32 translation = cmd_buff[3];
|
||||
u32 buff_addr = cmd_buff[4];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x15, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void ReceiveProperty(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 buff_size = cmd_buff[2];
|
||||
u32 translation = cmd_buff[3];
|
||||
u32 buff_addr = cmd_buff[4];
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x16, 0x2, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (32 bit value)
|
||||
cmd_buff[2] = (buff_size << 4 | 0xC);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, buff_size=0x%08X, "
|
||||
"translation=0x%08X, buff_addr=0x%08X",
|
||||
unk_param1, buff_size, translation, buff_addr);
|
||||
}
|
||||
|
||||
void UpdateTaskInterval(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2] & 0xFF;
|
||||
u32 translation = cmd_buff[3];
|
||||
u32 buff_addr = cmd_buff[4];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x17, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
||||
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void UpdateTaskCount(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
u32 buff_size = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2]; // TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 translation = cmd_buff[3];
|
||||
u32 buff_addr = cmd_buff[4];
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x18, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) buff_size=0x%08X, unk_param2=0x%08X, "
|
||||
"translation=0x%08X, buff_addr=0x%08X",
|
||||
buff_size, unk_param2, translation, buff_addr);
|
||||
}
|
||||
|
||||
void GetTaskInterval(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
u32 unk_param1 = cmd_buff[1]; // TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 translation = cmd_buff[2];
|
||||
u32 buff_addr = cmd_buff[3];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x19, 0x2, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 ( 32bit value)
|
||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[4] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetTaskCount(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
u32 unk_param1 = cmd_buff[1]; // TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 translation = cmd_buff[2];
|
||||
u32 buff_addr = cmd_buff[3];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x1A, 0x2, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 ( 32bit value)
|
||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[4] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetTaskServiceStatus(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
u32 unk_param1 = cmd_buff[1]; // TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 translation = cmd_buff[2];
|
||||
u32 buff_addr = cmd_buff[3];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x1B, 0x2, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 ( 8bit value)
|
||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[4] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void StartTask(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
u32 unk_param1 = cmd_buff[1]; // TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 translation = cmd_buff[2];
|
||||
u32 buff_addr = cmd_buff[3];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x1C, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void StartTaskImmediate(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
u32 unk_param1 = cmd_buff[1]; // TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 translation = cmd_buff[2];
|
||||
u32 buff_addr = cmd_buff[3];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x1D, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void CancelTask(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 translation = cmd_buff[2];
|
||||
u32 buff_addr = cmd_buff[3];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x1E, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetTaskFinishHandle(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x1F, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0;
|
||||
cmd_buff[3] = 0; // stub 0(This should be a handle of task_finish ?)
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) called");
|
||||
}
|
||||
|
||||
void GetTaskState(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 buff_size = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2] & 0xFF;
|
||||
u32 translation = cmd_buff[3];
|
||||
u32 buff_addr = cmd_buff[4];
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x20, 0x4, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (8 bit value)
|
||||
cmd_buff[3] = 0; // stub 0 (32 bit value)
|
||||
cmd_buff[4] = 0; // stub 0 (8 bit value)
|
||||
cmd_buff[5] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[6] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) buff_size=0x%08X, unk_param2=0x%08X, "
|
||||
"translation=0x%08X, buff_addr=0x%08X",
|
||||
buff_size, unk_param2, translation, buff_addr);
|
||||
}
|
||||
|
||||
void GetTaskResult(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 translation = cmd_buff[2];
|
||||
u32 buff_addr = cmd_buff[3];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x21, 0x4, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (8 bit value)
|
||||
cmd_buff[3] = 0; // stub 0 (32 bit value)
|
||||
cmd_buff[4] = 0; // stub 0 (8 bit value)
|
||||
cmd_buff[5] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[6] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetTaskCommErrorCode(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 translation = cmd_buff[2];
|
||||
u32 buff_addr = cmd_buff[3];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x22, 0x4, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (32 bit value)
|
||||
cmd_buff[3] = 0; // stub 0 (32 bit value)
|
||||
cmd_buff[4] = 0; // stub 0 (8 bit value)
|
||||
cmd_buff[5] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[6] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetTaskStatus(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2] & 0xFF;
|
||||
u32 unk_param3 = cmd_buff[3] & 0xFF;
|
||||
u32 translation = cmd_buff[4];
|
||||
u32 buff_addr = cmd_buff[5];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x23, 0x2, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (8 bit value)
|
||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[4] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, unk_param3, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetTaskError(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2] & 0xFF;
|
||||
u32 translation = cmd_buff[4];
|
||||
u32 buff_addr = cmd_buff[5];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x24, 0x2, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (8 bit value)
|
||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[4] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetTaskInfo(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2] & 0xFF;
|
||||
u32 translation = cmd_buff[4];
|
||||
u32 buff_addr = cmd_buff[5];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x25, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void DeleteNsData(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x26, 0x1, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X", unk_param1);
|
||||
}
|
||||
|
||||
void GetNsDataHeaderInfo(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2] & 0xFF;
|
||||
u32 unk_param3 = cmd_buff[3];
|
||||
u32 translation = cmd_buff[4];
|
||||
u32 buff_addr = cmd_buff[5];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x27, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xC);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, unk_param3, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void ReadNsData(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
u32 unk_param3 = cmd_buff[3];
|
||||
u32 unk_param4 = cmd_buff[4];
|
||||
u32 translation = cmd_buff[5];
|
||||
u32 buff_addr = cmd_buff[6];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x28, 0x3, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (32bit value)
|
||||
cmd_buff[3] = 0; // stub 0 (32bit value)
|
||||
cmd_buff[4] = (buff_size << 4 | 0xC);
|
||||
cmd_buff[5] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||
"unk_param4=0x%08X, translation=0x%08X, "
|
||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void SetNsDataAdditionalInfo(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x29, 0x1, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X", unk_param1,
|
||||
unk_param2);
|
||||
}
|
||||
|
||||
void GetNsDataAdditionalInfo(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x2A, 0x2, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (32bit value)
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X", unk_param1);
|
||||
}
|
||||
|
||||
void SetNsDataNewFlag(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
ns_data_new_flag = cmd_buff[2] & 0xFF;
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x2B, 0x1, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, ns_data_new_flag=0x%08X", unk_param1,
|
||||
ns_data_new_flag);
|
||||
}
|
||||
|
||||
void GetNsDataNewFlag(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x2C, 0x2, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = ns_data_new_flag;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, ns_data_new_flag=0x%08X", unk_param1,
|
||||
ns_data_new_flag);
|
||||
}
|
||||
|
||||
void GetNsDataLastUpdate(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x2D, 0x3, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (32bit value)
|
||||
cmd_buff[3] = 0; // stub 0 (32bit value)
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X", unk_param1);
|
||||
}
|
||||
|
||||
void GetErrorCode(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x2E, 0x2, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (32bit value)
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X", unk_param1);
|
||||
}
|
||||
|
||||
void RegisterStorageEntry(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
u32 unk_param3 = cmd_buff[3];
|
||||
u32 unk_param4 = cmd_buff[4];
|
||||
u32 unk_param5 = cmd_buff[5] & 0xFF;
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x2F, 0x1, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||
"unk_param4=0x%08X, unk_param5=0x%08X",
|
||||
unk_param1, unk_param2, unk_param3, unk_param4, unk_param5);
|
||||
}
|
||||
|
||||
void GetStorageEntryInfo(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x30, 0x3, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (32bit value)
|
||||
cmd_buff[3] = 0; // stub 0 (16bit value)
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) called");
|
||||
}
|
||||
|
||||
void SetStorageOption(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1] & 0xFF;
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
u32 unk_param3 = cmd_buff[3];
|
||||
u32 unk_param4 = cmd_buff[4];
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x31, 0x1, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
||||
"unk_param3=0x%08X, unk_param4=0x%08X",
|
||||
unk_param1, unk_param2, unk_param3, unk_param4);
|
||||
}
|
||||
|
||||
void GetStorageOption(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x32, 0x5, 0);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (32bit value)
|
||||
cmd_buff[3] = 0; // stub 0 (8bit value)
|
||||
cmd_buff[4] = 0; // stub 0 (16bit value)
|
||||
cmd_buff[5] = 0; // stub 0 (16bit value)
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) called");
|
||||
}
|
||||
|
||||
void StartBgImmediate(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
u32 unk_param1 = cmd_buff[1]; // TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 translation = cmd_buff[2];
|
||||
u32 buff_addr = cmd_buff[3];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x33, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) buff_size=0x%08X, unk_param2=0x%08X, "
|
||||
"translation=0x%08X, buff_addr=0x%08X",
|
||||
unk_param1, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void GetTaskActivePriority(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
u32 unk_param1 = cmd_buff[1]; // TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 translation = cmd_buff[2];
|
||||
u32 buff_addr = cmd_buff[3];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x34, 0x2, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = 0; // stub 0 (8bit value)
|
||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[4] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) buff_size=0x%08X, unk_param2=0x%08X, "
|
||||
"translation=0x%08X, buff_addr=0x%08X",
|
||||
unk_param1, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void RegisterImmediateTask(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2] & 0xFF;
|
||||
u32 unk_param3 = cmd_buff[3] & 0xFF;
|
||||
u32 translation = cmd_buff[4];
|
||||
u32 buff_addr = cmd_buff[5];
|
||||
u32 buff_size = (translation >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x35, 0x1, 0x2);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||
cmd_buff[4] = buff_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
||||
unk_param1, unk_param2, unk_param3, translation, buff_addr, buff_size);
|
||||
}
|
||||
|
||||
void SetTaskQuery(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
u32 translation1 = cmd_buff[3];
|
||||
u32 buff1_addr = cmd_buff[4];
|
||||
u32 buff1_size = (translation1 >> 4);
|
||||
u32 translation2 = cmd_buff[5];
|
||||
u32 buff2_addr = cmd_buff[6];
|
||||
u32 buff2_size = (translation2 >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x36, 0x1, 0x4);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff1_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff1_addr;
|
||||
cmd_buff[2] = (buff2_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff2_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
||||
"translation1=0x%08X, buff1_addr=0x%08X, buff1_size=0x%08X, "
|
||||
"translation2=0x%08X, buff2_addr=0x%08X, buff2_size=0x%08X",
|
||||
unk_param1, unk_param2, translation1, buff1_addr, buff1_size, translation2,
|
||||
buff2_addr, buff2_size);
|
||||
}
|
||||
|
||||
void GetTaskQuery(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
// TODO(JamePeng): Figure out the meaning of these parameters
|
||||
u32 unk_param1 = cmd_buff[1];
|
||||
u32 unk_param2 = cmd_buff[2];
|
||||
u32 translation1 = cmd_buff[3];
|
||||
u32 buff1_addr = cmd_buff[4];
|
||||
u32 buff1_size = (translation1 >> 4);
|
||||
u32 translation2 = cmd_buff[5];
|
||||
u32 buff2_addr = cmd_buff[6];
|
||||
u32 buff2_size = (translation2 >> 4);
|
||||
|
||||
cmd_buff[0] = IPC::MakeHeader(0x37, 0x1, 0x4);
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = (buff1_size << 4 | 0xA);
|
||||
cmd_buff[3] = buff1_addr;
|
||||
cmd_buff[2] = (buff2_size << 4 | 0xC);
|
||||
cmd_buff[3] = buff2_addr;
|
||||
|
||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
||||
"translation1=0x%08X, buff1_addr=0x%08X, buff1_size=0x%08X, "
|
||||
"translation2=0x%08X, buff2_addr=0x%08X, buff2_size=0x%08X",
|
||||
unk_param1, unk_param2, translation1, buff1_addr, buff1_size, translation2,
|
||||
buff2_addr, buff2_size);
|
||||
}
|
||||
|
||||
void Init() {
|
||||
using namespace Kernel;
|
||||
|
||||
AddService(new BOSS_P_Interface);
|
||||
AddService(new BOSS_U_Interface);
|
||||
|
||||
new_arrival_flag = 0;
|
||||
ns_data_new_flag = 0;
|
||||
output_flag = 0;
|
||||
}
|
||||
|
||||
void Shutdown() {}
|
||||
|
|
|
@ -4,9 +4,794 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "core/hle/service/service.h"
|
||||
|
||||
namespace Service {
|
||||
namespace BOSS {
|
||||
|
||||
/**
|
||||
* BOSS::InitializeSession service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00010082]
|
||||
* 1 : u32 lower 64bit value
|
||||
* 2 : u32 higher 64bit value
|
||||
* 3 : 0x20
|
||||
* 4 : u32 unknown value
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
*/
|
||||
void InitializeSession(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::RegisterStorage service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00020010]
|
||||
* 1 : u32 unknown1
|
||||
* 2 : u32 unknown2
|
||||
* 3 : u32 unknown3
|
||||
* 4 : u8 unknown_flag
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
*/
|
||||
void RegisterStorage(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::UnregisterStorage service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00030000]
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
*/
|
||||
void UnregisterStorage(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetStorageInfo service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00040000]
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u32 unknown value
|
||||
*/
|
||||
void GetStorageInfo(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::RegisterPrivateRootCa service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00050042]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : MappedBufferDesc(permission = R)
|
||||
* 3 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void RegisterPrivateRootCa(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::RegisterPrivateClientCert service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00060084]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u32 unknown value
|
||||
* 3 : MappedBufferDesc1(permission = R)
|
||||
* 4 : u32 buff_addr1
|
||||
* 5 : MappedBufferDesc2(permission = R)
|
||||
* 6 : u32 buff_addr2
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff1_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr1
|
||||
* 4 : buff2_size << 4 | 0xA
|
||||
* 5 : u32 buff_addr2
|
||||
*/
|
||||
void RegisterPrivateClientCert(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetNewArrivalFlag service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00070000]
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u8 flag
|
||||
*/
|
||||
void GetNewArrivalFlag(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::RegisterNewArrivalEvent service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00080002]
|
||||
* 1 : u32 unknown1
|
||||
* 2 : u32 unknown2
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
*/
|
||||
void RegisterNewArrivalEvent(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::SetOptoutFlag service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00090040]
|
||||
* 1 : u8 output_flag
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
*/
|
||||
void SetOptoutFlag(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetOptoutFlag service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x000A0000]
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u8 output_flag
|
||||
*/
|
||||
void GetOptoutFlag(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::RegisterTask service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x000B00C2]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u8 unknown value
|
||||
* 3 : u8 unknown value
|
||||
* 4 : MappedBufferDesc1(permission = R)
|
||||
* 5 : buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void RegisterTask(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::UnregisterTask service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x000C0082]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u8 unknown value
|
||||
* 3 : MappedBufferDesc1(permission = R)
|
||||
* 4 : buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void UnregisterTask(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::ReconfigureTask service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x000D0082]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u8 unknown value
|
||||
* 3 : MappedBufferDesc1(permission = R)
|
||||
* 4 : buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void ReconfigureTask(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskIdList service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x000E0000]
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
*/
|
||||
void GetTaskIdList(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetStepIdList service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x000F0042]
|
||||
* 2 : MappedBufferDesc(permission = R)
|
||||
* 3 : u32 buff_addr
|
||||
*
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void GetStepIdList(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetNsDataIdList service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00100102]
|
||||
* 1 : u32 unknown1
|
||||
* 2 : u32 unknown2
|
||||
* 3 : u32 unknown3
|
||||
* 4 : u32 unknown4
|
||||
* 5 : MappedBufferDesc(permission = W)
|
||||
* 6 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u16 unknown value
|
||||
* 3 : u16 unknown value
|
||||
* 4 : buff_size << 4 | 0xC
|
||||
* 5 : u32 buff_addr
|
||||
*/
|
||||
void GetNsDataIdList(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetOwnNsDataIdList service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00110102]
|
||||
* 1 : u32 unknown1
|
||||
* 2 : u32 unknown2
|
||||
* 3 : u32 unknown3
|
||||
* 4 : u32 unknown4
|
||||
* 5 : MappedBufferDesc(permission = W)
|
||||
* 6 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u16 unknown value
|
||||
* 3 : u16 unknown value
|
||||
* 4 : buff_size << 4 | 0xC
|
||||
* 5 : u32 buff_addr
|
||||
*/
|
||||
void GetOwnNsDataIdList(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetNewDataNsDataIdList service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00120102]
|
||||
* 1 : u32 unknown1
|
||||
* 2 : u32 unknown2
|
||||
* 3 : u32 unknown3
|
||||
* 4 : u32 unknown4
|
||||
* 5 : MappedBufferDesc(permission = W)
|
||||
* 6 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u16 unknown value
|
||||
* 3 : u16 unknown value
|
||||
* 4 : buff_size << 4 | 0xC
|
||||
* 5 : u32 buff_addr
|
||||
*/
|
||||
void GetNewDataNsDataIdList(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetOwnNewDataNsDataIdList service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00130102]
|
||||
* 1 : u32 unknown1
|
||||
* 2 : u32 unknown2
|
||||
* 3 : u32 unknown3
|
||||
* 4 : u32 unknown4
|
||||
* 5 : MappedBufferDesc(permission = W)
|
||||
* 6 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u16 unknown value
|
||||
* 3 : u16 unknown value
|
||||
|
||||
*/
|
||||
void GetOwnNewDataNsDataIdList(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::SendProperty service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00140082]
|
||||
* 1 : u16 unknown value
|
||||
* 2 : u32 unknown value
|
||||
* 3 : MappedBufferDesc(permission = R)
|
||||
* 4 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void SendProperty(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::SendPropertyHandle service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00150042]
|
||||
* 2 : u8 unknown value
|
||||
* 3 : MappedBufferDesc(permission = R)
|
||||
* 4 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void SendPropertyHandle(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::ReceiveProperty service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00160082]
|
||||
* 1 : u16 unknown1
|
||||
* 2 : u32 buff_size
|
||||
* 3 : MappedBufferDesc(permission = W)
|
||||
* 4 : u32 buff addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u32 unknown value
|
||||
* 3 : u16 unknown value
|
||||
* 4 : buff_size << 4 | 0xC
|
||||
* 5 : u32 buff_addr
|
||||
*/
|
||||
void ReceiveProperty(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::UpdateTaskInterval service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00170082]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u8 unknown value
|
||||
* 3 : MappedBufferDesc1(permission = R)
|
||||
* 4 : buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void UpdateTaskInterval(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::UpdateTaskCount service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00180082]
|
||||
* 1 : u32 buff_size
|
||||
* 2 : u32 unknown2
|
||||
* 3 : MappedBufferDesc(permission = R)
|
||||
* 4 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void UpdateTaskCount(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskInterval service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00190042]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : MappedBufferDesc(permission = R)
|
||||
* 3 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u32 unknown value
|
||||
* 3 : buff_size << 4 | 0xA
|
||||
* 4 : u32 buff_addr
|
||||
*/
|
||||
void GetTaskInterval(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskCount service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x001A0042]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : MappedBufferDesc(permission = R)
|
||||
* 3 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u32 unknown value
|
||||
* 3 : buff_size << 4 | 0xA
|
||||
* 4 : u32 buff_addr
|
||||
*/
|
||||
void GetTaskCount(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskServiceStatus service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x001B0042]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : MappedBufferDesc(permission = R)
|
||||
* 3 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u8 unknown value
|
||||
* 3 : buff_size << 4 | 0xA
|
||||
* 4 : u32 buff_addr
|
||||
*/
|
||||
void GetTaskServiceStatus(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::StartTask service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x001C0042]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : MappedBufferDesc(permission = R)
|
||||
* 3 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void StartTask(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::StartTaskImmediate service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x001D0042]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : MappedBufferDesc(permission = R)
|
||||
* 3 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void StartTaskImmediate(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::CancelTask service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x001E0042]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : MappedBufferDesc(permission = R)
|
||||
* 3 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void CancelTask(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskFinishHandle service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x001F0000]
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : 0
|
||||
* 3 : Task Finish Handle
|
||||
*/
|
||||
void GetTaskFinishHandle(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskState service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00200082]
|
||||
* 1 : u32 buff_size
|
||||
* 2 : u8 unknown value
|
||||
* 3 : MappedBufferDesc(permission = R)
|
||||
* 4 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u8 unknown value
|
||||
* 3 : u32 unknown value
|
||||
* 4 : u8 unknown value
|
||||
* 5 : buff_size << 4 | 0xA
|
||||
* 6 : u32 buff_addr
|
||||
*/
|
||||
void GetTaskState(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskResult service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00210042]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : MappedBufferDesc(permission = R)
|
||||
* 3 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u8 unknown value
|
||||
* 3 : u32 unknown value
|
||||
* 4 : u8 unknown value
|
||||
* 5 : buff_size << 4 | 0xA
|
||||
* 6 : u32 buff_addr
|
||||
*/
|
||||
void GetTaskResult(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskCommErrorCode service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00220042]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : MappedBufferDesc(permission = R)
|
||||
* 3 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u32 unknown value
|
||||
* 3 : u32 unknown value
|
||||
* 4 : u8 unknown value
|
||||
* 5 : buff_size << 4 | 0xA
|
||||
* 6 : u32 buff_addr
|
||||
*/
|
||||
void GetTaskCommErrorCode(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskStatus service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x002300C2]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u8 unknown value
|
||||
* 3 : u8 unknown value
|
||||
* 4 : MappedBufferDesc(permission = R)
|
||||
* 5 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u8 unknown value
|
||||
* 3 : buff_size << 4 | 0xA
|
||||
* 4 : u32 buff_addr
|
||||
*/
|
||||
void GetTaskStatus(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskError service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00240082]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u8 unknown value
|
||||
* 3 : MappedBufferDesc(permission = R)
|
||||
* 4 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u8 unknown value
|
||||
* 3 : buff_size << 4 | 0xA
|
||||
* 4 : u32 buff_addr
|
||||
*/
|
||||
void GetTaskError(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskInfo service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00250082]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u8 unknown value
|
||||
* 3 : MappedBufferDesc(permission = R)
|
||||
* 4 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void GetTaskInfo(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::DeleteNsData service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00260040]
|
||||
* 1 : u32 unknown value
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
*/
|
||||
void DeleteNsData(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetNsDataHeaderInfo service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x002700C2]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u8 unknown value
|
||||
* 3 : u32 unknown value
|
||||
* 4 : MappedBufferDesc(permission = W)
|
||||
* 5 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xC
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void GetNsDataHeaderInfo(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::ReadNsData service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00280102]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u32 unknown value
|
||||
* 3 : u32 unknown value
|
||||
* 4 : u32 unknown value
|
||||
* 5 : MappedBufferDesc(permission = W)
|
||||
* 6 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u32 unknown value
|
||||
* 3 : u32 unknown value
|
||||
* 4 : buff_size << 4 | 0xC
|
||||
* 5 : u32 buff_addr
|
||||
*/
|
||||
void ReadNsData(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::SetNsDataAdditionalInfo service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00290080]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u32 unknown value
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
*/
|
||||
void SetNsDataAdditionalInfo(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetNsDataAdditionalInfo service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x002A0040]
|
||||
* 1 : u32 unknown value
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u32 unknown value
|
||||
*/
|
||||
void GetNsDataAdditionalInfo(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::SetNsDataNewFlag service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x002B0080]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u8 flag
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
*/
|
||||
void SetNsDataNewFlag(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetNsDataNewFlag service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x002C0040]
|
||||
* 1 : u32 unknown value
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u8 flag
|
||||
*/
|
||||
void GetNsDataNewFlag(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetNsDataLastUpdate service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x002D0040]
|
||||
* 1 : u32 unknown value
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u32 unknown value
|
||||
* 3 : u32 unknown value
|
||||
*/
|
||||
void GetNsDataLastUpdate(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetErrorCode service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x002E0040]
|
||||
* 1 : u8 unknown value
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u32 unknown value
|
||||
*/
|
||||
void GetErrorCode(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::RegisterStorageEntry service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x002F0140]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u32 unknown value
|
||||
* 3 : u32 unknown value
|
||||
* 4 : u16 unknown value
|
||||
* 5 : u8 unknown value
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
*/
|
||||
void RegisterStorageEntry(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetStorageEntryInfo service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00300000]
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u32 unknown value
|
||||
* 3 : u16 unknown value
|
||||
*/
|
||||
void GetStorageEntryInfo(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::SetStorageOption service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00310100]
|
||||
* 1 : u8 unknown value
|
||||
* 2 : u32 unknown value
|
||||
* 3 : u16 unknown value
|
||||
* 4 : u16 unknown value
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
*/
|
||||
void SetStorageOption(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetStorageOption service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00320000]
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u8 unknown value
|
||||
* 3 : u32 unknown value
|
||||
* 4 : u16 unknown value
|
||||
* 5 : u16 unknown value
|
||||
*/
|
||||
void GetStorageOption(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::StartBgImmediate service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00330042]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : MappedBufferDesc(permission = R)
|
||||
* 3 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void StartBgImmediate(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskActivePriority service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00340042]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : MappedBufferDesc(permission = R)
|
||||
* 3 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : u8 unknown value
|
||||
* 3 : buff_size << 4 | 0xA
|
||||
* 4 : u32 buff_addr
|
||||
*/
|
||||
void GetTaskActivePriority(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::RegisterImmediateTask service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x003500C2]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u8 unknown value
|
||||
* 3 : u8 unknown value
|
||||
* 4 : MappedBufferDesc(permission = R)
|
||||
* 5 : u32 buff_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff_size << 4 | 0xA
|
||||
* 3 : u32 buff_addr
|
||||
*/
|
||||
void RegisterImmediateTask(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::SetTaskQuery service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00360084]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u32 unknown value
|
||||
* 3 : MappedBufferDesc1(permission = R)
|
||||
* 4 : u32 buff1_addr
|
||||
* 5 : MappedBufferDesc2(permission = R)
|
||||
* 6 : u32 buff2_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff1_size << 4 | 0xA
|
||||
* 3 : u32 buff1_addr
|
||||
* 4 : buff2_size << 4 | 0xA
|
||||
* 5 : u32 buff2_addr
|
||||
*/
|
||||
void SetTaskQuery(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* BOSS::GetTaskQuery service function
|
||||
* Inputs:
|
||||
* 0 : Header Code[0x00370084]
|
||||
* 1 : u32 unknown value
|
||||
* 2 : u32 unknown value
|
||||
* 3 : MappedBufferDesc1(permission = R)
|
||||
* 4 : u32 buff1_addr
|
||||
* 5 : MappedBufferDesc2(permission = W)
|
||||
* 6 : u32 buff2_addr
|
||||
* Outputs:
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : buff1_size << 4 | 0xA
|
||||
* 3 : u32 buff1_addr
|
||||
* 4 : buff2_size << 4 | 0xC
|
||||
* 5 : u32 buff2_addr
|
||||
*/
|
||||
void GetTaskQuery(Service::Interface* self);
|
||||
|
||||
/// Initialize BOSS service(s)
|
||||
void Init();
|
||||
|
||||
|
|
|
@ -2,16 +2,68 @@
|
|||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "core/hle/service/boss/boss.h"
|
||||
#include "core/hle/service/boss/boss_u.h"
|
||||
|
||||
namespace Service {
|
||||
namespace BOSS {
|
||||
|
||||
const Interface::FunctionInfo FunctionTable[] = {
|
||||
{0x00020100, nullptr, "GetStorageInfo"},
|
||||
{0x000C0082, nullptr, "UnregisterTask"},
|
||||
{0x001E0042, nullptr, "CancelTask"},
|
||||
{0x00330042, nullptr, "StartBgImmediate"},
|
||||
{0x00010082, InitializeSession, "InitializeSession"},
|
||||
{0x00020100, RegisterStorage, "RegisterStorage"},
|
||||
{0x00030000, UnregisterStorage, "UnregisterStorage"},
|
||||
{0x00040000, GetStorageInfo, "GetStorageInfo"},
|
||||
{0x00050042, RegisterPrivateRootCa, "RegisterPrivateRootCa"},
|
||||
{0x00060084, RegisterPrivateClientCert, "RegisterPrivateClientCert"},
|
||||
{0x00070000, GetNewArrivalFlag, "GetNewArrivalFlag"},
|
||||
{0x00080002, RegisterNewArrivalEvent, "RegisterNewArrivalEvent"},
|
||||
{0x00090040, SetOptoutFlag, "SetOptoutFlag"},
|
||||
{0x000A0000, GetOptoutFlag, "GetOptoutFlag"},
|
||||
{0x000B00C2, RegisterTask, "RegisterTask"},
|
||||
{0x000C0082, UnregisterTask, "UnregisterTask"},
|
||||
{0x000D0082, ReconfigureTask, "ReconfigureTask"},
|
||||
{0x000E0000, GetTaskIdList, "GetTaskIdList"},
|
||||
{0x000F0042, GetStepIdList, "GetStepIdList"},
|
||||
{0x00100102, GetNsDataIdList, "GetNsDataIdList"},
|
||||
{0x00110102, GetOwnNsDataIdList, "GetOwnNsDataIdList"},
|
||||
{0x00120102, GetNewDataNsDataIdList, "GetNewDataNsDataIdList"},
|
||||
{0x00130102, GetOwnNewDataNsDataIdList, "GetOwnNewDataNsDataIdList"},
|
||||
{0x00140082, SendProperty, "SendProperty"},
|
||||
{0x00150042, SendPropertyHandle, "SendPropertyHandle"},
|
||||
{0x00160082, ReceiveProperty, "ReceiveProperty"},
|
||||
{0x00170082, UpdateTaskInterval, "UpdateTaskInterval"},
|
||||
{0x00180082, UpdateTaskCount, "UpdateTaskCount"},
|
||||
{0x00190042, GetTaskInterval, "GetTaskInterval"},
|
||||
{0x001A0042, GetTaskCount, "GetTaskCount"},
|
||||
{0x001B0042, GetTaskServiceStatus, "GetTaskServiceStatus"},
|
||||
{0x001C0042, StartTask, "StartTask"},
|
||||
{0x001D0042, StartTaskImmediate, "StartTaskImmediate"},
|
||||
{0x001E0042, CancelTask, "CancelTask"},
|
||||
{0x001F0000, GetTaskFinishHandle, "GetTaskFinishHandle"},
|
||||
{0x00200082, GetTaskState, "GetTaskState"},
|
||||
{0x00210042, GetTaskResult, "GetTaskResult"},
|
||||
{0x00220042, GetTaskCommErrorCode, "GetTaskCommErrorCode"},
|
||||
{0x002300C2, GetTaskStatus, "GetTaskStatus"},
|
||||
{0x00240082, GetTaskError, "GetTaskError"},
|
||||
{0x00250082, GetTaskInfo, "GetTaskInfo"},
|
||||
{0x00260040, DeleteNsData, "DeleteNsData"},
|
||||
{0x002700C2, GetNsDataHeaderInfo, "GetNsDataHeaderInfo"},
|
||||
{0x00280102, ReadNsData, "ReadNsData"},
|
||||
{0x00290080, SetNsDataAdditionalInfo, "SetNsDataAdditionalInfo"},
|
||||
{0x002A0040, GetNsDataAdditionalInfo, "GetNsDataAdditionalInfo"},
|
||||
{0x002B0080, SetNsDataNewFlag, "SetNsDataNewFlag"},
|
||||
{0x002C0040, GetNsDataNewFlag, "GetNsDataNewFlag"},
|
||||
{0x002D0040, GetNsDataLastUpdate, "GetNsDataLastUpdate"},
|
||||
{0x002E0040, GetErrorCode, "GetErrorCode"},
|
||||
{0x002F0140, RegisterStorageEntry, "RegisterStorageEntry"},
|
||||
{0x00300000, GetStorageEntryInfo, "GetStorageEntryInfo"},
|
||||
{0x00310100, SetStorageOption, "SetStorageOption"},
|
||||
{0x00320000, GetStorageOption, "GetStorageOption"},
|
||||
{0x00330042, StartBgImmediate, "StartBgImmediate"},
|
||||
{0x00340042, GetTaskActivePriority, "GetTaskActivePriority"},
|
||||
{0x003500C2, RegisterImmediateTask, "RegisterImmediateTask"},
|
||||
{0x00360084, SetTaskQuery, "SetTaskQuery"},
|
||||
{0x00370084, GetTaskQuery, "GetTaskQuery"},
|
||||
};
|
||||
|
||||
BOSS_U_Interface::BOSS_U_Interface() {
|
||||
|
|
Loading…
Reference in a new issue