mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Update the stub code of BOSS
This commit is contained in:
		
							parent
							
								
									4b14e17b18
								
							
						
					
					
						commit
						bd8c80a7b4
					
				
					 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…
	
	Add table
		Add a link
		
	
		Reference in a new issue