3
0
Fork 0
forked from suyu/suyu

Merge pull request #2024 from JamePeng/update-boss-code

Update the stub code of BOSS
This commit is contained in:
bunnei 2016-10-07 23:02:39 -04:00 committed by GitHub
commit cc7f1155a8
5 changed files with 1810 additions and 4 deletions

View file

@ -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) \

View file

@ -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

View file

@ -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() {}

View file

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

View file

@ -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() {