Use IPC:MakeHeader instead of hardcoded raw values for IPC command tables. (#6453)
* Use IPC:MakeHeader instead of hardcoded values for IPC command tables. * Use u32 instead of unsigned int in MakeHeader function Co-authored-by: SachinVin <26602104+SachinVin@users.noreply.github.com> * Fix clang format --------- Co-authored-by: SachinVin <26602104+SachinVin@users.noreply.github.com>
This commit is contained in:
		| @@ -56,8 +56,7 @@ union Header { | |||||||
|  * @note While @p normal_params_size is equivalent to the number of normal parameters, |  * @note While @p normal_params_size is equivalent to the number of normal parameters, | ||||||
|  * @p translate_params_size includes the size occupied by the translate parameters headers. |  * @p translate_params_size includes the size occupied by the translate parameters headers. | ||||||
|  */ |  */ | ||||||
| inline u32 MakeHeader(u16 command_id, unsigned int normal_params_size, | inline constexpr u32 MakeHeader(u16 command_id, u32 normal_params_size, u32 translate_params_size) { | ||||||
|                       unsigned int translate_params_size) { |  | ||||||
|     Header header{}; |     Header header{}; | ||||||
|     header.command_id.Assign(command_id); |     header.command_id.Assign(command_id); | ||||||
|     header.normal_params_size.Assign(normal_params_size); |     header.normal_params_size.Assign(normal_params_size); | ||||||
|   | |||||||
| @@ -9,26 +9,28 @@ namespace Service::AC { | |||||||
|  |  | ||||||
| AC_I::AC_I(std::shared_ptr<Module> ac) : Module::Interface(std::move(ac), "ac:i", 10) { | AC_I::AC_I(std::shared_ptr<Module> ac) : Module::Interface(std::move(ac), "ac:i", 10) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010000, &AC_I::CreateDefaultConfig, "CreateDefaultConfig"}, |         // clang-format off | ||||||
|         {0x00040006, &AC_I::ConnectAsync, "ConnectAsync"}, |         {IPC::MakeHeader(0x0001, 0, 0), &AC_I::CreateDefaultConfig, "CreateDefaultConfig"}, | ||||||
|         {0x00050002, &AC_I::GetConnectResult, "GetConnectResult"}, |         {IPC::MakeHeader(0x0004, 0, 6), &AC_I::ConnectAsync, "ConnectAsync"}, | ||||||
|         {0x00070002, nullptr, "CancelConnectAsync"}, |         {IPC::MakeHeader(0x0005, 0, 2), &AC_I::GetConnectResult, "GetConnectResult"}, | ||||||
|         {0x00080004, &AC_I::CloseAsync, "CloseAsync"}, |         {IPC::MakeHeader(0x0007, 0, 2), nullptr, "CancelConnectAsync"}, | ||||||
|         {0x00090002, &AC_I::GetCloseResult, "GetCloseResult"}, |         {IPC::MakeHeader(0x0008, 0, 4), &AC_I::CloseAsync, "CloseAsync"}, | ||||||
|         {0x000A0000, nullptr, "GetLastErrorCode"}, |         {IPC::MakeHeader(0x0009, 0, 2), &AC_I::GetCloseResult, "GetCloseResult"}, | ||||||
|         {0x000C0000, nullptr, "GetStatus"}, |         {IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetLastErrorCode"}, | ||||||
|         {0x000D0000, &AC_I::GetWifiStatus, "GetWifiStatus"}, |         {IPC::MakeHeader(0x000C, 0, 0), nullptr, "GetStatus"}, | ||||||
|         {0x000E0042, nullptr, "GetCurrentAPInfo"}, |         {IPC::MakeHeader(0x000D, 0, 0), &AC_I::GetWifiStatus, "GetWifiStatus"}, | ||||||
|         {0x00100042, nullptr, "GetCurrentNZoneInfo"}, |         {IPC::MakeHeader(0x000E, 1, 2), nullptr, "GetCurrentAPInfo"}, | ||||||
|         {0x00110042, nullptr, "GetNZoneApNumService"}, |         {IPC::MakeHeader(0x0010, 1, 2), nullptr, "GetCurrentNZoneInfo"}, | ||||||
|         {0x001D0042, nullptr, "ScanAPs"}, |         {IPC::MakeHeader(0x0011, 1, 2), nullptr, "GetNZoneApNumService"}, | ||||||
|         {0x00240042, nullptr, "AddDenyApType"}, |         {IPC::MakeHeader(0x001D, 1, 2), nullptr, "ScanAPs"}, | ||||||
|         {0x00270002, &AC_I::GetInfraPriority, "GetInfraPriority"}, |         {IPC::MakeHeader(0x0024, 1, 2), nullptr, "AddDenyApType"}, | ||||||
|         {0x002D0082, &AC_I::SetRequestEulaVersion, "SetRequestEulaVersion"}, |         {IPC::MakeHeader(0x0027, 0, 2), &AC_I::GetInfraPriority, "GetInfraPriority"}, | ||||||
|         {0x00300004, &AC_I::RegisterDisconnectEvent, "RegisterDisconnectEvent"}, |         {IPC::MakeHeader(0x002D, 2, 2), &AC_I::SetRequestEulaVersion, "SetRequestEulaVersion"}, | ||||||
|         {0x003C0042, nullptr, "GetAPSSIDList"}, |         {IPC::MakeHeader(0x0030, 0, 4), &AC_I::RegisterDisconnectEvent, "RegisterDisconnectEvent"}, | ||||||
|         {0x003E0042, &AC_I::IsConnected, "IsConnected"}, |         {IPC::MakeHeader(0x003C, 1, 2), nullptr, "GetAPSSIDList"}, | ||||||
|         {0x00400042, &AC_I::SetClientVersion, "SetClientVersion"}, |         {IPC::MakeHeader(0x003E, 1, 2), &AC_I::IsConnected, "IsConnected"}, | ||||||
|  |         {IPC::MakeHeader(0x0040, 1, 2), &AC_I::SetClientVersion, "SetClientVersion"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -9,26 +9,28 @@ namespace Service::AC { | |||||||
|  |  | ||||||
| AC_U::AC_U(std::shared_ptr<Module> ac) : Module::Interface(std::move(ac), "ac:u", 10) { | AC_U::AC_U(std::shared_ptr<Module> ac) : Module::Interface(std::move(ac), "ac:u", 10) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010000, &AC_U::CreateDefaultConfig, "CreateDefaultConfig"}, |         // clang-format off | ||||||
|         {0x00040006, &AC_U::ConnectAsync, "ConnectAsync"}, |         {IPC::MakeHeader(0x0001, 0, 0), &AC_U::CreateDefaultConfig, "CreateDefaultConfig"}, | ||||||
|         {0x00050002, &AC_U::GetConnectResult, "GetConnectResult"}, |         {IPC::MakeHeader(0x0004, 0, 6), &AC_U::ConnectAsync, "ConnectAsync"}, | ||||||
|         {0x00070002, nullptr, "CancelConnectAsync"}, |         {IPC::MakeHeader(0x0005, 0, 2), &AC_U::GetConnectResult, "GetConnectResult"}, | ||||||
|         {0x00080004, &AC_U::CloseAsync, "CloseAsync"}, |         {IPC::MakeHeader(0x0007, 0, 2), nullptr, "CancelConnectAsync"}, | ||||||
|         {0x00090002, &AC_U::GetCloseResult, "GetCloseResult"}, |         {IPC::MakeHeader(0x0008, 0, 4), &AC_U::CloseAsync, "CloseAsync"}, | ||||||
|         {0x000A0000, nullptr, "GetLastErrorCode"}, |         {IPC::MakeHeader(0x0009, 0, 2), &AC_U::GetCloseResult, "GetCloseResult"}, | ||||||
|         {0x000C0000, nullptr, "GetStatus"}, |         {IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetLastErrorCode"}, | ||||||
|         {0x000D0000, &AC_U::GetWifiStatus, "GetWifiStatus"}, |         {IPC::MakeHeader(0x000C, 0, 0), nullptr, "GetStatus"}, | ||||||
|         {0x000E0042, nullptr, "GetCurrentAPInfo"}, |         {IPC::MakeHeader(0x000D, 0, 0), &AC_U::GetWifiStatus, "GetWifiStatus"}, | ||||||
|         {0x00100042, nullptr, "GetCurrentNZoneInfo"}, |         {IPC::MakeHeader(0x000E, 1, 2), nullptr, "GetCurrentAPInfo"}, | ||||||
|         {0x00110042, nullptr, "GetNZoneApNumService"}, |         {IPC::MakeHeader(0x0010, 1, 2), nullptr, "GetCurrentNZoneInfo"}, | ||||||
|         {0x001D0042, nullptr, "ScanAPs"}, |         {IPC::MakeHeader(0x0011, 1, 2), nullptr, "GetNZoneApNumService"}, | ||||||
|         {0x00240042, nullptr, "AddDenyApType"}, |         {IPC::MakeHeader(0x001D, 1, 2), nullptr, "ScanAPs"}, | ||||||
|         {0x00270002, &AC_U::GetInfraPriority, "GetInfraPriority"}, |         {IPC::MakeHeader(0x0024, 1, 2), nullptr, "AddDenyApType"}, | ||||||
|         {0x002D0082, &AC_U::SetRequestEulaVersion, "SetRequestEulaVersion"}, |         {IPC::MakeHeader(0x0027, 0, 2), &AC_U::GetInfraPriority, "GetInfraPriority"}, | ||||||
|         {0x00300004, &AC_U::RegisterDisconnectEvent, "RegisterDisconnectEvent"}, |         {IPC::MakeHeader(0x002D, 2, 2), &AC_U::SetRequestEulaVersion, "SetRequestEulaVersion"}, | ||||||
|         {0x003C0042, nullptr, "GetAPSSIDList"}, |         {IPC::MakeHeader(0x0030, 0, 4), &AC_U::RegisterDisconnectEvent, "RegisterDisconnectEvent"}, | ||||||
|         {0x003E0042, &AC_U::IsConnected, "IsConnected"}, |         {IPC::MakeHeader(0x003C, 1, 2), nullptr, "GetAPSSIDList"}, | ||||||
|         {0x00400042, &AC_U::SetClientVersion, "SetClientVersion"}, |         {IPC::MakeHeader(0x003E, 1, 2), &AC_U::IsConnected, "IsConnected"}, | ||||||
|  |         {IPC::MakeHeader(0x0040, 1, 2), &AC_U::SetClientVersion, "SetClientVersion"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -10,16 +10,18 @@ namespace Service::ACT { | |||||||
| ACT_A::ACT_A(std::shared_ptr<Module> act) : Module::Interface(std::move(act), "act:a") { | ACT_A::ACT_A(std::shared_ptr<Module> act) : Module::Interface(std::move(act), "act:a") { | ||||||
|     const FunctionInfo functions[] = { |     const FunctionInfo functions[] = { | ||||||
|         // act:u shared commands |         // act:u shared commands | ||||||
|         {0x00010084, nullptr, "Initialize"}, |         // clang-format off | ||||||
|         {0x00020040, nullptr, "GetErrorCode"}, |         {IPC::MakeHeader(0x0001, 2, 4), nullptr, "Initialize"}, | ||||||
|         {0x000600C2, nullptr, "GetAccountDataBlock"}, |         {IPC::MakeHeader(0x0002, 1, 0), nullptr, "GetErrorCode"}, | ||||||
|         {0x000B0042, nullptr, "AcquireEulaList"}, |         {IPC::MakeHeader(0x0006, 3, 2), nullptr, "GetAccountDataBlock"}, | ||||||
|         {0x000D0040, nullptr, "GenerateUuid"}, |         {IPC::MakeHeader(0x000B, 1, 2), nullptr, "AcquireEulaList"}, | ||||||
|  |         {IPC::MakeHeader(0x000D, 1, 0), nullptr, "GenerateUuid"}, | ||||||
|         // act:a |         // act:a | ||||||
|         {0x041300C2, nullptr, "UpdateMiiImage"}, |         {IPC::MakeHeader(0x0413, 3, 2), nullptr, "UpdateMiiImage"}, | ||||||
|         {0x041B0142, nullptr, "AgreeEula"}, |         {IPC::MakeHeader(0x041B, 5, 2), nullptr, "AgreeEula"}, | ||||||
|         {0x04210042, nullptr, "UploadMii"}, |         {IPC::MakeHeader(0x0421, 1, 2), nullptr, "UploadMii"}, | ||||||
|         {0x04230082, nullptr, "ValidateMailAddress"}, |         {IPC::MakeHeader(0x0423, 2, 2), nullptr, "ValidateMailAddress"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -10,11 +10,11 @@ namespace Service::ACT { | |||||||
| ACT_U::ACT_U(std::shared_ptr<Module> act) : Module::Interface(std::move(act), "act:u") { | ACT_U::ACT_U(std::shared_ptr<Module> act) : Module::Interface(std::move(act), "act:u") { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010084, nullptr, "Initialize"}, |         {IPC::MakeHeader(0x0001, 2, 4), nullptr, "Initialize"}, | ||||||
|         {0x00020040, nullptr, "GetErrorCode"}, |         {IPC::MakeHeader(0x0002, 1, 0), nullptr, "GetErrorCode"}, | ||||||
|         {0x000600C2, nullptr, "GetAccountDataBlock"}, |         {IPC::MakeHeader(0x0006, 3, 2), nullptr, "GetAccountDataBlock"}, | ||||||
|         {0x000B0042, nullptr, "AcquireEulaList"}, |         {IPC::MakeHeader(0x000B, 1, 2), nullptr, "AcquireEulaList"}, | ||||||
|         {0x000D0040, nullptr, "GenerateUuid"}, |         {IPC::MakeHeader(0x000D, 1, 0), nullptr, "GenerateUuid"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
|   | |||||||
| @@ -9,19 +9,21 @@ namespace Service::AM { | |||||||
|  |  | ||||||
| AM_APP::AM_APP(std::shared_ptr<Module> am) : Module::Interface(std::move(am), "am:app", 5) { | AM_APP::AM_APP(std::shared_ptr<Module> am) : Module::Interface(std::move(am), "am:app", 5) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x100100C0, &AM_APP::GetDLCContentInfoCount, "GetDLCContentInfoCount"}, |         // clang-format off | ||||||
|         {0x10020104, &AM_APP::FindDLCContentInfos, "FindDLCContentInfos"}, |         {IPC::MakeHeader(0x1001, 3, 0), &AM_APP::GetDLCContentInfoCount, "GetDLCContentInfoCount"}, | ||||||
|         {0x10030142, &AM_APP::ListDLCContentInfos, "ListDLCContentInfos"}, |         {IPC::MakeHeader(0x1002, 4, 4), &AM_APP::FindDLCContentInfos, "FindDLCContentInfos"}, | ||||||
|         {0x10040102, &AM_APP::DeleteContents, "DeleteContents"}, |         {IPC::MakeHeader(0x1003, 5, 2), &AM_APP::ListDLCContentInfos, "ListDLCContentInfos"}, | ||||||
|         {0x10050084, &AM_APP::GetDLCTitleInfos, "GetDLCTitleInfos"}, |         {IPC::MakeHeader(0x1004, 4, 2), &AM_APP::DeleteContents, "DeleteContents"}, | ||||||
|         {0x10060080, nullptr, "GetNumDataTitleTickets"}, |         {IPC::MakeHeader(0x1005, 2, 4), &AM_APP::GetDLCTitleInfos, "GetDLCTitleInfos"}, | ||||||
|         {0x10070102, &AM_APP::ListDataTitleTicketInfos, "ListDataTitleTicketInfos"}, |         {IPC::MakeHeader(0x1006, 2, 0), nullptr, "GetNumDataTitleTickets"}, | ||||||
|         {0x100801C2, nullptr, "GetItemRights"}, |         {IPC::MakeHeader(0x1007, 4, 2), &AM_APP::ListDataTitleTicketInfos, "ListDataTitleTicketInfos"}, | ||||||
|         {0x100900C0, nullptr, "IsDataTitleInUse"}, |         {IPC::MakeHeader(0x1008, 7, 2), nullptr, "GetItemRights"}, | ||||||
|         {0x100A0000, nullptr, "IsExternalTitleDatabaseInitialized"}, |         {IPC::MakeHeader(0x1009, 3, 0), nullptr, "IsDataTitleInUse"}, | ||||||
|         {0x100B00C0, nullptr, "GetNumExistingContentInfos"}, |         {IPC::MakeHeader(0x100A, 0, 0), nullptr, "IsExternalTitleDatabaseInitialized"}, | ||||||
|         {0x100C0142, nullptr, "ListExistingContentInfos"}, |         {IPC::MakeHeader(0x100B, 3, 0), nullptr, "GetNumExistingContentInfos"}, | ||||||
|         {0x100D0084, &AM_APP::GetPatchTitleInfos, "GetPatchTitleInfos"}, |         {IPC::MakeHeader(0x100C, 5, 2), nullptr, "ListExistingContentInfos"}, | ||||||
|  |         {IPC::MakeHeader(0x100D, 2, 4), &AM_APP::GetPatchTitleInfos, "GetPatchTitleInfos"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -9,116 +9,118 @@ namespace Service::AM { | |||||||
|  |  | ||||||
| AM_NET::AM_NET(std::shared_ptr<Module> am) : Module::Interface(std::move(am), "am:net", 5) { | AM_NET::AM_NET(std::shared_ptr<Module> am) : Module::Interface(std::move(am), "am:net", 5) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010040, &AM_NET::GetNumPrograms, "GetNumPrograms"}, |         // clang-format off | ||||||
|         {0x00020082, &AM_NET::GetProgramList, "GetProgramList"}, |         {IPC::MakeHeader(0x0001, 1, 0), &AM_NET::GetNumPrograms, "GetNumPrograms"}, | ||||||
|         {0x00030084, &AM_NET::GetProgramInfos, "GetProgramInfos"}, |         {IPC::MakeHeader(0x0002, 2, 2), &AM_NET::GetProgramList, "GetProgramList"}, | ||||||
|         {0x000400C0, &AM_NET::DeleteUserProgram, "DeleteUserProgram"}, |         {IPC::MakeHeader(0x0003, 2, 4), &AM_NET::GetProgramInfos, "GetProgramInfos"}, | ||||||
|         {0x000500C0, &AM_NET::GetProductCode, "GetProductCode"}, |         {IPC::MakeHeader(0x0004, 3, 0), &AM_NET::DeleteUserProgram, "DeleteUserProgram"}, | ||||||
|         {0x000600C0, nullptr, "GetStorageId"}, |         {IPC::MakeHeader(0x0005, 3, 0), &AM_NET::GetProductCode, "GetProductCode"}, | ||||||
|         {0x00070080, &AM_NET::DeleteTicket, "DeleteTicket"}, |         {IPC::MakeHeader(0x0006, 3, 0), nullptr, "GetStorageId"}, | ||||||
|         {0x00080000, &AM_NET::GetNumTickets, "GetNumTickets"}, |         {IPC::MakeHeader(0x0007, 2, 0), &AM_NET::DeleteTicket, "DeleteTicket"}, | ||||||
|         {0x00090082, &AM_NET::GetTicketList, "GetTicketList"}, |         {IPC::MakeHeader(0x0008, 0, 0), &AM_NET::GetNumTickets, "GetNumTickets"}, | ||||||
|         {0x000A0000, nullptr, "GetDeviceID"}, |         {IPC::MakeHeader(0x0009, 2, 2), &AM_NET::GetTicketList, "GetTicketList"}, | ||||||
|         {0x000B0040, nullptr, "GetNumImportTitleContexts"}, |         {IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetDeviceID"}, | ||||||
|         {0x000C0082, nullptr, "GetImportTitleContextList"}, |         {IPC::MakeHeader(0x000B, 1, 0), nullptr, "GetNumImportTitleContexts"}, | ||||||
|         {0x000D0084, nullptr, "GetImportTitleContexts"}, |         {IPC::MakeHeader(0x000C, 2, 2), nullptr, "GetImportTitleContextList"}, | ||||||
|         {0x000E00C0, nullptr, "DeleteImportTitleContext"}, |         {IPC::MakeHeader(0x000D, 2, 4), nullptr, "GetImportTitleContexts"}, | ||||||
|         {0x000F00C0, nullptr, "GetNumImportContentContexts"}, |         {IPC::MakeHeader(0x000E, 3, 0), nullptr, "DeleteImportTitleContext"}, | ||||||
|         {0x00100102, nullptr, "GetImportContentContextList"}, |         {IPC::MakeHeader(0x000F, 3, 0), nullptr, "GetNumImportContentContexts"}, | ||||||
|         {0x00110104, nullptr, "GetImportContentContexts"}, |         {IPC::MakeHeader(0x0010, 4, 2), nullptr, "GetImportContentContextList"}, | ||||||
|         {0x00120102, nullptr, "DeleteImportContentContexts"}, |         {IPC::MakeHeader(0x0011, 4, 4), nullptr, "GetImportContentContexts"}, | ||||||
|         {0x00130040, nullptr, "NeedsCleanup"}, |         {IPC::MakeHeader(0x0012, 4, 2), nullptr, "DeleteImportContentContexts"}, | ||||||
|         {0x00140040, nullptr, "DoCleanup"}, |         {IPC::MakeHeader(0x0013, 1, 0), nullptr, "NeedsCleanup"}, | ||||||
|         {0x00150040, nullptr, "DeleteAllImportContexts"}, |         {IPC::MakeHeader(0x0014, 1, 0), nullptr, "DoCleanup"}, | ||||||
|         {0x00160000, nullptr, "DeleteAllTemporaryPrograms"}, |         {IPC::MakeHeader(0x0015, 1, 0), nullptr, "DeleteAllImportContexts"}, | ||||||
|         {0x00170044, nullptr, "ImportTwlBackupLegacy"}, |         {IPC::MakeHeader(0x0016, 0, 0), nullptr, "DeleteAllTemporaryPrograms"}, | ||||||
|         {0x00180080, nullptr, "InitializeTitleDatabase"}, |         {IPC::MakeHeader(0x0017, 1, 4), nullptr, "ImportTwlBackupLegacy"}, | ||||||
|         {0x00190040, nullptr, "QueryAvailableTitleDatabase"}, |         {IPC::MakeHeader(0x0018, 2, 0), nullptr, "InitializeTitleDatabase"}, | ||||||
|         {0x001A00C0, nullptr, "CalcTwlBackupSize"}, |         {IPC::MakeHeader(0x0019, 1, 0), nullptr, "QueryAvailableTitleDatabase"}, | ||||||
|         {0x001B0144, nullptr, "ExportTwlBackup"}, |         {IPC::MakeHeader(0x001A, 3, 0), nullptr, "CalcTwlBackupSize"}, | ||||||
|         {0x001C0084, nullptr, "ImportTwlBackup"}, |         {IPC::MakeHeader(0x001B, 5, 4), nullptr, "ExportTwlBackup"}, | ||||||
|         {0x001D0000, nullptr, "DeleteAllTwlUserPrograms"}, |         {IPC::MakeHeader(0x001C, 2, 4), nullptr, "ImportTwlBackup"}, | ||||||
|         {0x001E00C8, nullptr, "ReadTwlBackupInfo"}, |         {IPC::MakeHeader(0x001D, 0, 0), nullptr, "DeleteAllTwlUserPrograms"}, | ||||||
|         {0x001F0040, nullptr, "DeleteAllExpiredUserPrograms"}, |         {IPC::MakeHeader(0x001E, 3, 8), nullptr, "ReadTwlBackupInfo"}, | ||||||
|         {0x00200000, nullptr, "GetTwlArchiveResourceInfo"}, |         {IPC::MakeHeader(0x001F, 1, 0), nullptr, "DeleteAllExpiredUserPrograms"}, | ||||||
|         {0x00210042, nullptr, "GetPersonalizedTicketInfoList"}, |         {IPC::MakeHeader(0x0020, 0, 0), nullptr, "GetTwlArchiveResourceInfo"}, | ||||||
|         {0x00220080, nullptr, "DeleteAllImportContextsFiltered"}, |         {IPC::MakeHeader(0x0021, 1, 2), nullptr, "GetPersonalizedTicketInfoList"}, | ||||||
|         {0x00230080, nullptr, "GetNumImportTitleContextsFiltered"}, |         {IPC::MakeHeader(0x0022, 2, 0), nullptr, "DeleteAllImportContextsFiltered"}, | ||||||
|         {0x002400C2, nullptr, "GetImportTitleContextListFiltered"}, |         {IPC::MakeHeader(0x0023, 2, 0), nullptr, "GetNumImportTitleContextsFiltered"}, | ||||||
|         {0x002500C0, nullptr, "CheckContentRights"}, |         {IPC::MakeHeader(0x0024, 3, 2), nullptr, "GetImportTitleContextListFiltered"}, | ||||||
|         {0x00260044, nullptr, "GetTicketLimitInfos"}, |         {IPC::MakeHeader(0x0025, 3, 0), nullptr, "CheckContentRights"}, | ||||||
|         {0x00270044, nullptr, "GetDemoLaunchInfos"}, |         {IPC::MakeHeader(0x0026, 1, 4), nullptr, "GetTicketLimitInfos"}, | ||||||
|         {0x00280108, nullptr, "ReadTwlBackupInfoEx"}, |         {IPC::MakeHeader(0x0027, 1, 4), nullptr, "GetDemoLaunchInfos"}, | ||||||
|         {0x00290082, nullptr, "DeleteUserProgramsAtomically"}, |         {IPC::MakeHeader(0x0028, 4, 8), nullptr, "ReadTwlBackupInfoEx"}, | ||||||
|         {0x002A00C0, nullptr, "GetNumExistingContentInfosSystem"}, |         {IPC::MakeHeader(0x0029, 2, 2), nullptr, "DeleteUserProgramsAtomically"}, | ||||||
|         {0x002B0142, nullptr, "ListExistingContentInfosSystem"}, |         {IPC::MakeHeader(0x002A, 3, 0), nullptr, "GetNumExistingContentInfosSystem"}, | ||||||
|         {0x002C0084, nullptr, "GetProgramInfosIgnorePlatform"}, |         {IPC::MakeHeader(0x002B, 5, 2), nullptr, "ListExistingContentInfosSystem"}, | ||||||
|         {0x002D00C0, nullptr, "CheckContentRightsIgnorePlatform"}, |         {IPC::MakeHeader(0x002C, 2, 4), nullptr, "GetProgramInfosIgnorePlatform"}, | ||||||
|         {0x04010080, nullptr, "UpdateFirmwareTo"}, |         {IPC::MakeHeader(0x002D, 3, 0), nullptr, "CheckContentRightsIgnorePlatform"}, | ||||||
|         {0x04020040, &AM_NET::BeginImportProgram, "BeginImportProgram"}, |         {IPC::MakeHeader(0x0401, 2, 0), nullptr, "UpdateFirmwareTo"}, | ||||||
|         {0x04030000, nullptr, "BeginImportProgramTemporarily"}, |         {IPC::MakeHeader(0x0402, 1, 0), &AM_NET::BeginImportProgram, "BeginImportProgram"}, | ||||||
|         {0x04040002, nullptr, "CancelImportProgram"}, |         {IPC::MakeHeader(0x0403, 0, 0), nullptr, "BeginImportProgramTemporarily"}, | ||||||
|         {0x04050002, &AM_NET::EndImportProgram, "EndImportProgram"}, |         {IPC::MakeHeader(0x0404, 0, 2), nullptr, "CancelImportProgram"}, | ||||||
|         {0x04060002, nullptr, "EndImportProgramWithoutCommit"}, |         {IPC::MakeHeader(0x0405, 0, 2), &AM_NET::EndImportProgram, "EndImportProgram"}, | ||||||
|         {0x040700C2, nullptr, "CommitImportPrograms"}, |         {IPC::MakeHeader(0x0406, 0, 2), nullptr, "EndImportProgramWithoutCommit"}, | ||||||
|         {0x04080042, &AM_NET::GetProgramInfoFromCia, "GetProgramInfoFromCia"}, |         {IPC::MakeHeader(0x0407, 3, 2), nullptr, "CommitImportPrograms"}, | ||||||
|         {0x04090004, &AM_NET::GetSystemMenuDataFromCia, "GetSystemMenuDataFromCia"}, |         {IPC::MakeHeader(0x0408, 1, 2), &AM_NET::GetProgramInfoFromCia, "GetProgramInfoFromCia"}, | ||||||
|         {0x040A0002, &AM_NET::GetDependencyListFromCia, "GetDependencyListFromCia"}, |         {IPC::MakeHeader(0x0409, 0, 4), &AM_NET::GetSystemMenuDataFromCia, "GetSystemMenuDataFromCia"}, | ||||||
|         {0x040B0002, &AM_NET::GetTransferSizeFromCia, "GetTransferSizeFromCia"}, |         {IPC::MakeHeader(0x040A, 0, 2), &AM_NET::GetDependencyListFromCia, "GetDependencyListFromCia"}, | ||||||
|         {0x040C0002, &AM_NET::GetCoreVersionFromCia, "GetCoreVersionFromCia"}, |         {IPC::MakeHeader(0x040B, 0, 2), &AM_NET::GetTransferSizeFromCia, "GetTransferSizeFromCia"}, | ||||||
|         {0x040D0042, &AM_NET::GetRequiredSizeFromCia, "GetRequiredSizeFromCia"}, |         {IPC::MakeHeader(0x040C, 0, 2), &AM_NET::GetCoreVersionFromCia, "GetCoreVersionFromCia"}, | ||||||
|         {0x040E00C2, nullptr, "CommitImportProgramsAndUpdateFirmwareAuto"}, |         {IPC::MakeHeader(0x040D, 1, 2), &AM_NET::GetRequiredSizeFromCia, "GetRequiredSizeFromCia"}, | ||||||
|         {0x040F0000, nullptr, "UpdateFirmwareAuto"}, |         {IPC::MakeHeader(0x040E, 3, 2), nullptr, "CommitImportProgramsAndUpdateFirmwareAuto"}, | ||||||
|         {0x041000C0, &AM_NET::DeleteProgram, "DeleteProgram"}, |         {IPC::MakeHeader(0x040F, 0, 0), nullptr, "UpdateFirmwareAuto"}, | ||||||
|         {0x04110044, nullptr, "GetTwlProgramListForReboot"}, |         {IPC::MakeHeader(0x0410, 3, 0), &AM_NET::DeleteProgram, "DeleteProgram"}, | ||||||
|         {0x04120000, nullptr, "GetSystemUpdaterMutex"}, |         {IPC::MakeHeader(0x0411, 1, 4), nullptr, "GetTwlProgramListForReboot"}, | ||||||
|         {0x04130002, &AM_NET::GetMetaSizeFromCia, "GetMetaSizeFromCia"}, |         {IPC::MakeHeader(0x0412, 0, 0), nullptr, "GetSystemUpdaterMutex"}, | ||||||
|         {0x04140044, &AM_NET::GetMetaDataFromCia, "GetMetaDataFromCia"}, |         {IPC::MakeHeader(0x0413, 0, 2), &AM_NET::GetMetaSizeFromCia, "GetMetaSizeFromCia"}, | ||||||
|         {0x04150080, nullptr, "CheckDemoLaunchRights"}, |         {IPC::MakeHeader(0x0414, 1, 4), &AM_NET::GetMetaDataFromCia, "GetMetaDataFromCia"}, | ||||||
|         {0x041600C0, nullptr, "GetInternalTitleLocationInfo"}, |         {IPC::MakeHeader(0x0415, 2, 0), nullptr, "CheckDemoLaunchRights"}, | ||||||
|         {0x041700C0, nullptr, "PerpetuateAgbSaveData"}, |         {IPC::MakeHeader(0x0416, 3, 0), nullptr, "GetInternalTitleLocationInfo"}, | ||||||
|         {0x04180040, nullptr, "BeginImportProgramForOverWrite"}, |         {IPC::MakeHeader(0x0417, 3, 0), nullptr, "PerpetuateAgbSaveData"}, | ||||||
|         {0x04190000, nullptr, "BeginImportSystemProgram"}, |         {IPC::MakeHeader(0x0418, 1, 0), nullptr, "BeginImportProgramForOverWrite"}, | ||||||
|         {0x08010000, nullptr, "BeginImportTicket"}, |         {IPC::MakeHeader(0x0419, 0, 0), nullptr, "BeginImportSystemProgram"}, | ||||||
|         {0x08020002, nullptr, "CancelImportTicket"}, |         {IPC::MakeHeader(0x0801, 0, 0), nullptr, "BeginImportTicket"}, | ||||||
|         {0x08030002, nullptr, "EndImportTicket"}, |         {IPC::MakeHeader(0x0802, 0, 2), nullptr, "CancelImportTicket"}, | ||||||
|         {0x08040100, nullptr, "BeginImportTitle"}, |         {IPC::MakeHeader(0x0803, 0, 2), nullptr, "EndImportTicket"}, | ||||||
|         {0x08050000, nullptr, "StopImportTitle"}, |         {IPC::MakeHeader(0x0804, 4, 0), nullptr, "BeginImportTitle"}, | ||||||
|         {0x080600C0, nullptr, "ResumeImportTitle"}, |         {IPC::MakeHeader(0x0805, 0, 0), nullptr, "StopImportTitle"}, | ||||||
|         {0x08070000, nullptr, "CancelImportTitle"}, |         {IPC::MakeHeader(0x0806, 3, 0), nullptr, "ResumeImportTitle"}, | ||||||
|         {0x08080000, nullptr, "EndImportTitle"}, |         {IPC::MakeHeader(0x0807, 0, 0), nullptr, "CancelImportTitle"}, | ||||||
|         {0x080900C2, nullptr, "CommitImportTitles"}, |         {IPC::MakeHeader(0x0808, 0, 0), nullptr, "EndImportTitle"}, | ||||||
|         {0x080A0000, nullptr, "BeginImportTmd"}, |         {IPC::MakeHeader(0x0809, 3, 2), nullptr, "CommitImportTitles"}, | ||||||
|         {0x080B0002, nullptr, "CancelImportTmd"}, |         {IPC::MakeHeader(0x080A, 0, 0), nullptr, "BeginImportTmd"}, | ||||||
|         {0x080C0042, nullptr, "EndImportTmd"}, |         {IPC::MakeHeader(0x080B, 0, 2), nullptr, "CancelImportTmd"}, | ||||||
|         {0x080D0042, nullptr, "CreateImportContentContexts"}, |         {IPC::MakeHeader(0x080C, 1, 2), nullptr, "EndImportTmd"}, | ||||||
|         {0x080E0040, nullptr, "BeginImportContent"}, |         {IPC::MakeHeader(0x080D, 1, 2), nullptr, "CreateImportContentContexts"}, | ||||||
|         {0x080F0002, nullptr, "StopImportContent"}, |         {IPC::MakeHeader(0x080E, 1, 0), nullptr, "BeginImportContent"}, | ||||||
|         {0x08100040, nullptr, "ResumeImportContent"}, |         {IPC::MakeHeader(0x080F, 0, 2), nullptr, "StopImportContent"}, | ||||||
|         {0x08110002, nullptr, "CancelImportContent"}, |         {IPC::MakeHeader(0x0810, 1, 0), nullptr, "ResumeImportContent"}, | ||||||
|         {0x08120002, nullptr, "EndImportContent"}, |         {IPC::MakeHeader(0x0811, 0, 2), nullptr, "CancelImportContent"}, | ||||||
|         {0x08130000, nullptr, "GetNumCurrentImportContentContexts"}, |         {IPC::MakeHeader(0x0812, 0, 2), nullptr, "EndImportContent"}, | ||||||
|         {0x08140042, nullptr, "GetCurrentImportContentContextList"}, |         {IPC::MakeHeader(0x0813, 0, 0), nullptr, "GetNumCurrentImportContentContexts"}, | ||||||
|         {0x08150044, nullptr, "GetCurrentImportContentContexts"}, |         {IPC::MakeHeader(0x0814, 1, 2), nullptr, "GetCurrentImportContentContextList"}, | ||||||
|         {0x08160146, nullptr, "Sign"}, |         {IPC::MakeHeader(0x0815, 1, 4), nullptr, "GetCurrentImportContentContexts"}, | ||||||
|         {0x08170146, nullptr, "Verify"}, |         {IPC::MakeHeader(0x0816, 5, 6), nullptr, "Sign"}, | ||||||
|         {0x08180042, nullptr, "GetDeviceCert"}, |         {IPC::MakeHeader(0x0817, 5, 6), nullptr, "Verify"}, | ||||||
|         {0x08190108, nullptr, "ImportCertificates"}, |         {IPC::MakeHeader(0x0818, 1, 2), nullptr, "GetDeviceCert"}, | ||||||
|         {0x081A0042, nullptr, "ImportCertificate"}, |         {IPC::MakeHeader(0x0819, 4, 8), nullptr, "ImportCertificates"}, | ||||||
|         {0x081B00C2, nullptr, "CommitImportTitlesAndUpdateFirmwareAuto"}, |         {IPC::MakeHeader(0x081A, 1, 2), nullptr, "ImportCertificate"}, | ||||||
|         {0x081C0100, nullptr, "DeleteTicketId"}, |         {IPC::MakeHeader(0x081B, 3, 2), nullptr, "CommitImportTitlesAndUpdateFirmwareAuto"}, | ||||||
|         {0x081D0080, nullptr, "GetNumTicketIds"}, |         {IPC::MakeHeader(0x081C, 4, 0), nullptr, "DeleteTicketId"}, | ||||||
|         {0x081E0102, nullptr, "GetTicketIdList"}, |         {IPC::MakeHeader(0x081D, 2, 0), nullptr, "GetNumTicketIds"}, | ||||||
|         {0x081F0080, nullptr, "GetNumTicketsOfProgram"}, |         {IPC::MakeHeader(0x081E, 4, 2), nullptr, "GetTicketIdList"}, | ||||||
|         {0x08200102, nullptr, "ListTicketInfos"}, |         {IPC::MakeHeader(0x081F, 2, 0), nullptr, "GetNumTicketsOfProgram"}, | ||||||
|         {0x08210142, nullptr, "GetRightsOnlyTicketData"}, |         {IPC::MakeHeader(0x0820, 4, 2), nullptr, "ListTicketInfos"}, | ||||||
|         {0x08220000, nullptr, "GetNumCurrentContentInfos"}, |         {IPC::MakeHeader(0x0821, 5, 2), nullptr, "GetRightsOnlyTicketData"}, | ||||||
|         {0x08230044, nullptr, "FindCurrentContentInfos"}, |         {IPC::MakeHeader(0x0822, 0, 0), nullptr, "GetNumCurrentContentInfos"}, | ||||||
|         {0x08240082, nullptr, "ListCurrentContentInfos"}, |         {IPC::MakeHeader(0x0823, 1, 4), nullptr, "FindCurrentContentInfos"}, | ||||||
|         {0x08250102, nullptr, "CalculateContextRequiredSize"}, |         {IPC::MakeHeader(0x0824, 2, 2), nullptr, "ListCurrentContentInfos"}, | ||||||
|         {0x08260042, nullptr, "UpdateImportContentContexts"}, |         {IPC::MakeHeader(0x0825, 4, 2), nullptr, "CalculateContextRequiredSize"}, | ||||||
|         {0x08270000, nullptr, "DeleteAllDemoLaunchInfos"}, |         {IPC::MakeHeader(0x0826, 1, 2), nullptr, "UpdateImportContentContexts"}, | ||||||
|         {0x082800C0, nullptr, "BeginImportTitleForOverWrite"}, |         {IPC::MakeHeader(0x0827, 0, 0), nullptr, "DeleteAllDemoLaunchInfos"}, | ||||||
|  |         {IPC::MakeHeader(0x0828, 3, 0), nullptr, "BeginImportTitleForOverWrite"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -9,64 +9,66 @@ namespace Service::AM { | |||||||
|  |  | ||||||
| AM_SYS::AM_SYS(std::shared_ptr<Module> am) : Module::Interface(std::move(am), "am:sys", 5) { | AM_SYS::AM_SYS(std::shared_ptr<Module> am) : Module::Interface(std::move(am), "am:sys", 5) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010040, &AM_SYS::GetNumPrograms, "GetNumPrograms"}, |         // clang-format off | ||||||
|         {0x00020082, &AM_SYS::GetProgramList, "GetProgramList"}, |         {IPC::MakeHeader(0x0001, 1, 0), &AM_SYS::GetNumPrograms, "GetNumPrograms"}, | ||||||
|         {0x00030084, &AM_SYS::GetProgramInfos, "GetProgramInfos"}, |         {IPC::MakeHeader(0x0002, 2, 2), &AM_SYS::GetProgramList, "GetProgramList"}, | ||||||
|         {0x000400C0, &AM_SYS::DeleteUserProgram, "DeleteUserProgram"}, |         {IPC::MakeHeader(0x0003, 2, 4), &AM_SYS::GetProgramInfos, "GetProgramInfos"}, | ||||||
|         {0x000500C0, &AM_SYS::GetProductCode, "GetProductCode"}, |         {IPC::MakeHeader(0x0004, 3, 0), &AM_SYS::DeleteUserProgram, "DeleteUserProgram"}, | ||||||
|         {0x000600C0, nullptr, "GetStorageId"}, |         {IPC::MakeHeader(0x0005, 3, 0), &AM_SYS::GetProductCode, "GetProductCode"}, | ||||||
|         {0x00070080, &AM_SYS::DeleteTicket, "DeleteTicket"}, |         {IPC::MakeHeader(0x0006, 3, 0), nullptr, "GetStorageId"}, | ||||||
|         {0x00080000, &AM_SYS::GetNumTickets, "GetNumTickets"}, |         {IPC::MakeHeader(0x0007, 2, 0), &AM_SYS::DeleteTicket, "DeleteTicket"}, | ||||||
|         {0x00090082, &AM_SYS::GetTicketList, "GetTicketList"}, |         {IPC::MakeHeader(0x0008, 0, 0), &AM_SYS::GetNumTickets, "GetNumTickets"}, | ||||||
|         {0x000A0000, nullptr, "GetDeviceID"}, |         {IPC::MakeHeader(0x0009, 2, 2), &AM_SYS::GetTicketList, "GetTicketList"}, | ||||||
|         {0x000B0040, nullptr, "GetNumImportTitleContexts"}, |         {IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetDeviceID"}, | ||||||
|         {0x000C0082, nullptr, "GetImportTitleContextList"}, |         {IPC::MakeHeader(0x000B, 1, 0), nullptr, "GetNumImportTitleContexts"}, | ||||||
|         {0x000D0084, nullptr, "GetImportTitleContexts"}, |         {IPC::MakeHeader(0x000C, 2, 2), nullptr, "GetImportTitleContextList"}, | ||||||
|         {0x000E00C0, nullptr, "DeleteImportTitleContext"}, |         {IPC::MakeHeader(0x000D, 2, 4), nullptr, "GetImportTitleContexts"}, | ||||||
|         {0x000F00C0, nullptr, "GetNumImportContentContexts"}, |         {IPC::MakeHeader(0x000E, 3, 0), nullptr, "DeleteImportTitleContext"}, | ||||||
|         {0x00100102, nullptr, "GetImportContentContextList"}, |         {IPC::MakeHeader(0x000F, 3, 0), nullptr, "GetNumImportContentContexts"}, | ||||||
|         {0x00110104, nullptr, "GetImportContentContexts"}, |         {IPC::MakeHeader(0x0010, 4, 2), nullptr, "GetImportContentContextList"}, | ||||||
|         {0x00120102, nullptr, "DeleteImportContentContexts"}, |         {IPC::MakeHeader(0x0011, 4, 4), nullptr, "GetImportContentContexts"}, | ||||||
|         {0x00130040, nullptr, "NeedsCleanup"}, |         {IPC::MakeHeader(0x0012, 4, 2), nullptr, "DeleteImportContentContexts"}, | ||||||
|         {0x00140040, nullptr, "DoCleanup"}, |         {IPC::MakeHeader(0x0013, 1, 0), nullptr, "NeedsCleanup"}, | ||||||
|         {0x00150040, nullptr, "DeleteAllImportContexts"}, |         {IPC::MakeHeader(0x0014, 1, 0), nullptr, "DoCleanup"}, | ||||||
|         {0x00160000, nullptr, "DeleteAllTemporaryPrograms"}, |         {IPC::MakeHeader(0x0015, 1, 0), nullptr, "DeleteAllImportContexts"}, | ||||||
|         {0x00170044, nullptr, "ImportTwlBackupLegacy"}, |         {IPC::MakeHeader(0x0016, 0, 0), nullptr, "DeleteAllTemporaryPrograms"}, | ||||||
|         {0x00180080, nullptr, "InitializeTitleDatabase"}, |         {IPC::MakeHeader(0x0017, 1, 4), nullptr, "ImportTwlBackupLegacy"}, | ||||||
|         {0x00190040, &AM_SYS::QueryAvailableTitleDatabase, "QueryAvailableTitleDatabase"}, |         {IPC::MakeHeader(0x0018, 2, 0), nullptr, "InitializeTitleDatabase"}, | ||||||
|         {0x001A00C0, nullptr, "CalcTwlBackupSize"}, |         {IPC::MakeHeader(0x0019, 1, 0), &AM_SYS::QueryAvailableTitleDatabase, "QueryAvailableTitleDatabase"}, | ||||||
|         {0x001B0144, nullptr, "ExportTwlBackup"}, |         {IPC::MakeHeader(0x001A, 3, 0), nullptr, "CalcTwlBackupSize"}, | ||||||
|         {0x001C0084, nullptr, "ImportTwlBackup"}, |         {IPC::MakeHeader(0x001B, 5, 4), nullptr, "ExportTwlBackup"}, | ||||||
|         {0x001D0000, nullptr, "DeleteAllTwlUserPrograms"}, |         {IPC::MakeHeader(0x001C, 2, 4), nullptr, "ImportTwlBackup"}, | ||||||
|         {0x001E00C8, nullptr, "ReadTwlBackupInfo"}, |         {IPC::MakeHeader(0x001D, 0, 0), nullptr, "DeleteAllTwlUserPrograms"}, | ||||||
|         {0x001F0040, nullptr, "DeleteAllExpiredUserPrograms"}, |         {IPC::MakeHeader(0x001E, 3, 8), nullptr, "ReadTwlBackupInfo"}, | ||||||
|         {0x00200000, nullptr, "GetTwlArchiveResourceInfo"}, |         {IPC::MakeHeader(0x001F, 1, 0), nullptr, "DeleteAllExpiredUserPrograms"}, | ||||||
|         {0x00210042, nullptr, "GetPersonalizedTicketInfoList"}, |         {IPC::MakeHeader(0x0020, 0, 0), nullptr, "GetTwlArchiveResourceInfo"}, | ||||||
|         {0x00220080, nullptr, "DeleteAllImportContextsFiltered"}, |         {IPC::MakeHeader(0x0021, 1, 2), nullptr, "GetPersonalizedTicketInfoList"}, | ||||||
|         {0x00230080, nullptr, "GetNumImportTitleContextsFiltered"}, |         {IPC::MakeHeader(0x0022, 2, 0), nullptr, "DeleteAllImportContextsFiltered"}, | ||||||
|         {0x002400C2, nullptr, "GetImportTitleContextListFiltered"}, |         {IPC::MakeHeader(0x0023, 2, 0), nullptr, "GetNumImportTitleContextsFiltered"}, | ||||||
|         {0x002500C0, &AM_SYS::CheckContentRights, "CheckContentRights"}, |         {IPC::MakeHeader(0x0024, 3, 2), nullptr, "GetImportTitleContextListFiltered"}, | ||||||
|         {0x00260044, nullptr, "GetTicketLimitInfos"}, |         {IPC::MakeHeader(0x0025, 3, 0), &AM_SYS::CheckContentRights, "CheckContentRights"}, | ||||||
|         {0x00270044, nullptr, "GetDemoLaunchInfos"}, |         {IPC::MakeHeader(0x0026, 1, 4), nullptr, "GetTicketLimitInfos"}, | ||||||
|         {0x00280108, nullptr, "ReadTwlBackupInfoEx"}, |         {IPC::MakeHeader(0x0027, 1, 4), nullptr, "GetDemoLaunchInfos"}, | ||||||
|         {0x00290082, nullptr, "DeleteUserProgramsAtomically"}, |         {IPC::MakeHeader(0x0028, 4, 8), nullptr, "ReadTwlBackupInfoEx"}, | ||||||
|         {0x002A00C0, nullptr, "GetNumExistingContentInfosSystem"}, |         {IPC::MakeHeader(0x0029, 2, 2), nullptr, "DeleteUserProgramsAtomically"}, | ||||||
|         {0x002B0142, nullptr, "ListExistingContentInfosSystem"}, |         {IPC::MakeHeader(0x002A, 3, 0), nullptr, "GetNumExistingContentInfosSystem"}, | ||||||
|         {0x002C0084, nullptr, "GetProgramInfosIgnorePlatform"}, |         {IPC::MakeHeader(0x002B, 5, 2), nullptr, "ListExistingContentInfosSystem"}, | ||||||
|         {0x002D00C0, &AM_SYS::CheckContentRightsIgnorePlatform, "CheckContentRightsIgnorePlatform"}, |         {IPC::MakeHeader(0x002C, 2, 4), nullptr, "GetProgramInfosIgnorePlatform"}, | ||||||
|         {0x100100C0, &AM_SYS::GetDLCContentInfoCount, "GetDLCContentInfoCount"}, |         {IPC::MakeHeader(0x002D, 3, 0), &AM_SYS::CheckContentRightsIgnorePlatform, "CheckContentRightsIgnorePlatform"}, | ||||||
|         {0x10020104, &AM_SYS::FindDLCContentInfos, "FindDLCContentInfos"}, |         {IPC::MakeHeader(0x1001, 3, 0), &AM_SYS::GetDLCContentInfoCount, "GetDLCContentInfoCount"}, | ||||||
|         {0x10030142, &AM_SYS::ListDLCContentInfos, "ListDLCContentInfos"}, |         {IPC::MakeHeader(0x1002, 4, 4), &AM_SYS::FindDLCContentInfos, "FindDLCContentInfos"}, | ||||||
|         {0x10040102, &AM_SYS::DeleteContents, "DeleteContents"}, |         {IPC::MakeHeader(0x1003, 5, 2), &AM_SYS::ListDLCContentInfos, "ListDLCContentInfos"}, | ||||||
|         {0x10050084, &AM_SYS::GetDLCTitleInfos, "GetDLCTitleInfos"}, |         {IPC::MakeHeader(0x1004, 4, 2), &AM_SYS::DeleteContents, "DeleteContents"}, | ||||||
|         {0x10060080, nullptr, "GetNumDataTitleTickets"}, |         {IPC::MakeHeader(0x1005, 2, 4), &AM_SYS::GetDLCTitleInfos, "GetDLCTitleInfos"}, | ||||||
|         {0x10070102, &AM_SYS::ListDataTitleTicketInfos, "ListDataTitleTicketInfos"}, |         {IPC::MakeHeader(0x1006, 2, 0), nullptr, "GetNumDataTitleTickets"}, | ||||||
|         {0x100801C2, nullptr, "GetItemRights"}, |         {IPC::MakeHeader(0x1007, 4, 2), &AM_SYS::ListDataTitleTicketInfos, "ListDataTitleTicketInfos"}, | ||||||
|         {0x100900C0, nullptr, "IsDataTitleInUse"}, |         {IPC::MakeHeader(0x1008, 7, 2), nullptr, "GetItemRights"}, | ||||||
|         {0x100A0000, nullptr, "IsExternalTitleDatabaseInitialized"}, |         {IPC::MakeHeader(0x1009, 3, 0), nullptr, "IsDataTitleInUse"}, | ||||||
|         {0x100B00C0, nullptr, "GetNumExistingContentInfos"}, |         {IPC::MakeHeader(0x100A, 0, 0), nullptr, "IsExternalTitleDatabaseInitialized"}, | ||||||
|         {0x100C0142, nullptr, "ListExistingContentInfos"}, |         {IPC::MakeHeader(0x100B, 3, 0), nullptr, "GetNumExistingContentInfos"}, | ||||||
|         {0x100D0084, &AM_SYS::GetPatchTitleInfos, "GetPatchTitleInfos"}, |         {IPC::MakeHeader(0x100C, 5, 2), nullptr, "ListExistingContentInfos"}, | ||||||
|  |         {IPC::MakeHeader(0x100D, 2, 4), &AM_SYS::GetPatchTitleInfos, "GetPatchTitleInfos"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -9,76 +9,78 @@ namespace Service::AM { | |||||||
|  |  | ||||||
| AM_U::AM_U(std::shared_ptr<Module> am) : Module::Interface(std::move(am), "am:u", 5) { | AM_U::AM_U(std::shared_ptr<Module> am) : Module::Interface(std::move(am), "am:u", 5) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010040, &AM_U::GetNumPrograms, "GetNumPrograms"}, |         // clang-format off | ||||||
|         {0x00020082, &AM_U::GetProgramList, "GetProgramList"}, |         {IPC::MakeHeader(0x0001, 1, 0), &AM_U::GetNumPrograms, "GetNumPrograms"}, | ||||||
|         {0x00030084, &AM_U::GetProgramInfos, "GetProgramInfos"}, |         {IPC::MakeHeader(0x0002, 2, 2), &AM_U::GetProgramList, "GetProgramList"}, | ||||||
|         {0x000400C0, &AM_U::DeleteUserProgram, "DeleteUserProgram"}, |         {IPC::MakeHeader(0x0003, 2, 4), &AM_U::GetProgramInfos, "GetProgramInfos"}, | ||||||
|         {0x000500C0, &AM_U::GetProductCode, "GetProductCode"}, |         {IPC::MakeHeader(0x0004, 3, 0), &AM_U::DeleteUserProgram, "DeleteUserProgram"}, | ||||||
|         {0x000600C0, nullptr, "GetStorageId"}, |         {IPC::MakeHeader(0x0005, 3, 0), &AM_U::GetProductCode, "GetProductCode"}, | ||||||
|         {0x00070080, &AM_U::DeleteTicket, "DeleteTicket"}, |         {IPC::MakeHeader(0x0006, 3, 0), nullptr, "GetStorageId"}, | ||||||
|         {0x00080000, &AM_U::GetNumTickets, "GetNumTickets"}, |         {IPC::MakeHeader(0x0007, 2, 0), &AM_U::DeleteTicket, "DeleteTicket"}, | ||||||
|         {0x00090082, &AM_U::GetTicketList, "GetTicketList"}, |         {IPC::MakeHeader(0x0008, 0, 0), &AM_U::GetNumTickets, "GetNumTickets"}, | ||||||
|         {0x000A0000, nullptr, "GetDeviceID"}, |         {IPC::MakeHeader(0x0009, 2, 2), &AM_U::GetTicketList, "GetTicketList"}, | ||||||
|         {0x000B0040, nullptr, "GetNumImportTitleContexts"}, |         {IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetDeviceID"}, | ||||||
|         {0x000C0082, nullptr, "GetImportTitleContextList"}, |         {IPC::MakeHeader(0x000B, 1, 0), nullptr, "GetNumImportTitleContexts"}, | ||||||
|         {0x000D0084, nullptr, "GetImportTitleContexts"}, |         {IPC::MakeHeader(0x000C, 2, 2), nullptr, "GetImportTitleContextList"}, | ||||||
|         {0x000E00C0, nullptr, "DeleteImportTitleContext"}, |         {IPC::MakeHeader(0x000D, 2, 4), nullptr, "GetImportTitleContexts"}, | ||||||
|         {0x000F00C0, nullptr, "GetNumImportContentContexts"}, |         {IPC::MakeHeader(0x000E, 3, 0), nullptr, "DeleteImportTitleContext"}, | ||||||
|         {0x00100102, nullptr, "GetImportContentContextList"}, |         {IPC::MakeHeader(0x000F, 3, 0), nullptr, "GetNumImportContentContexts"}, | ||||||
|         {0x00110104, nullptr, "GetImportContentContexts"}, |         {IPC::MakeHeader(0x0010, 4, 2), nullptr, "GetImportContentContextList"}, | ||||||
|         {0x00120102, nullptr, "DeleteImportContentContexts"}, |         {IPC::MakeHeader(0x0011, 4, 4), nullptr, "GetImportContentContexts"}, | ||||||
|         {0x00130040, nullptr, "NeedsCleanup"}, |         {IPC::MakeHeader(0x0012, 4, 2), nullptr, "DeleteImportContentContexts"}, | ||||||
|         {0x00140040, nullptr, "DoCleanup"}, |         {IPC::MakeHeader(0x0013, 1, 0), nullptr, "NeedsCleanup"}, | ||||||
|         {0x00150040, nullptr, "DeleteAllImportContexts"}, |         {IPC::MakeHeader(0x0014, 1, 0), nullptr, "DoCleanup"}, | ||||||
|         {0x00160000, nullptr, "DeleteAllTemporaryPrograms"}, |         {IPC::MakeHeader(0x0015, 1, 0), nullptr, "DeleteAllImportContexts"}, | ||||||
|         {0x00170044, nullptr, "ImportTwlBackupLegacy"}, |         {IPC::MakeHeader(0x0016, 0, 0), nullptr, "DeleteAllTemporaryPrograms"}, | ||||||
|         {0x00180080, nullptr, "InitializeTitleDatabase"}, |         {IPC::MakeHeader(0x0017, 1, 4), nullptr, "ImportTwlBackupLegacy"}, | ||||||
|         {0x00190040, nullptr, "QueryAvailableTitleDatabase"}, |         {IPC::MakeHeader(0x0018, 2, 0), nullptr, "InitializeTitleDatabase"}, | ||||||
|         {0x001A00C0, nullptr, "CalcTwlBackupSize"}, |         {IPC::MakeHeader(0x0019, 1, 0), nullptr, "QueryAvailableTitleDatabase"}, | ||||||
|         {0x001B0144, nullptr, "ExportTwlBackup"}, |         {IPC::MakeHeader(0x001A, 3, 0), nullptr, "CalcTwlBackupSize"}, | ||||||
|         {0x001C0084, nullptr, "ImportTwlBackup"}, |         {IPC::MakeHeader(0x001B, 5, 4), nullptr, "ExportTwlBackup"}, | ||||||
|         {0x001D0000, nullptr, "DeleteAllTwlUserPrograms"}, |         {IPC::MakeHeader(0x001C, 2, 4), nullptr, "ImportTwlBackup"}, | ||||||
|         {0x001E00C8, nullptr, "ReadTwlBackupInfo"}, |         {IPC::MakeHeader(0x001D, 0, 0), nullptr, "DeleteAllTwlUserPrograms"}, | ||||||
|         {0x001F0040, nullptr, "DeleteAllExpiredUserPrograms"}, |         {IPC::MakeHeader(0x001E, 3, 8), nullptr, "ReadTwlBackupInfo"}, | ||||||
|         {0x00200000, nullptr, "GetTwlArchiveResourceInfo"}, |         {IPC::MakeHeader(0x001F, 1, 0), nullptr, "DeleteAllExpiredUserPrograms"}, | ||||||
|         {0x00210042, nullptr, "GetPersonalizedTicketInfoList"}, |         {IPC::MakeHeader(0x0020, 0, 0), nullptr, "GetTwlArchiveResourceInfo"}, | ||||||
|         {0x00220080, nullptr, "DeleteAllImportContextsFiltered"}, |         {IPC::MakeHeader(0x0021, 1, 2), nullptr, "GetPersonalizedTicketInfoList"}, | ||||||
|         {0x00230080, nullptr, "GetNumImportTitleContextsFiltered"}, |         {IPC::MakeHeader(0x0022, 2, 0), nullptr, "DeleteAllImportContextsFiltered"}, | ||||||
|         {0x002400C2, nullptr, "GetImportTitleContextListFiltered"}, |         {IPC::MakeHeader(0x0023, 2, 0), nullptr, "GetNumImportTitleContextsFiltered"}, | ||||||
|         {0x002500C0, nullptr, "CheckContentRights"}, |         {IPC::MakeHeader(0x0024, 3, 2), nullptr, "GetImportTitleContextListFiltered"}, | ||||||
|         {0x00260044, nullptr, "GetTicketLimitInfos"}, |         {IPC::MakeHeader(0x0025, 3, 0), nullptr, "CheckContentRights"}, | ||||||
|         {0x00270044, nullptr, "GetDemoLaunchInfos"}, |         {IPC::MakeHeader(0x0026, 1, 4), nullptr, "GetTicketLimitInfos"}, | ||||||
|         {0x00280108, nullptr, "ReadTwlBackupInfoEx"}, |         {IPC::MakeHeader(0x0027, 1, 4), nullptr, "GetDemoLaunchInfos"}, | ||||||
|         {0x00290082, nullptr, "DeleteUserProgramsAtomically"}, |         {IPC::MakeHeader(0x0028, 4, 8), nullptr, "ReadTwlBackupInfoEx"}, | ||||||
|         {0x002A00C0, nullptr, "GetNumExistingContentInfosSystem"}, |         {IPC::MakeHeader(0x0029, 2, 2), nullptr, "DeleteUserProgramsAtomically"}, | ||||||
|         {0x002B0142, nullptr, "ListExistingContentInfosSystem"}, |         {IPC::MakeHeader(0x002A, 3, 0), nullptr, "GetNumExistingContentInfosSystem"}, | ||||||
|         {0x002C0084, nullptr, "GetProgramInfosIgnorePlatform"}, |         {IPC::MakeHeader(0x002B, 5, 2), nullptr, "ListExistingContentInfosSystem"}, | ||||||
|         {0x002D00C0, nullptr, "CheckContentRightsIgnorePlatform"}, |         {IPC::MakeHeader(0x002C, 2, 4), nullptr, "GetProgramInfosIgnorePlatform"}, | ||||||
|         {0x04010080, nullptr, "UpdateFirmwareTo"}, |         {IPC::MakeHeader(0x002D, 3, 0), nullptr, "CheckContentRightsIgnorePlatform"}, | ||||||
|         {0x04020040, &AM_U::BeginImportProgram, "BeginImportProgram"}, |         {IPC::MakeHeader(0x0401, 2, 0), nullptr, "UpdateFirmwareTo"}, | ||||||
|         {0x04030000, &AM_U::BeginImportProgramTemporarily, "BeginImportProgramTemporarily"}, |         {IPC::MakeHeader(0x0402, 1, 0), &AM_U::BeginImportProgram, "BeginImportProgram"}, | ||||||
|         {0x04040002, nullptr, "CancelImportProgram"}, |         {IPC::MakeHeader(0x0403, 0, 0), &AM_U::BeginImportProgramTemporarily, "BeginImportProgramTemporarily"}, | ||||||
|         {0x04050002, &AM_U::EndImportProgram, "EndImportProgram"}, |         {IPC::MakeHeader(0x0404, 0, 2), nullptr, "CancelImportProgram"}, | ||||||
|         {0x04060002, &AM_U::EndImportProgramWithoutCommit, "EndImportProgramWithoutCommit"}, |         {IPC::MakeHeader(0x0405, 0, 2), &AM_U::EndImportProgram, "EndImportProgram"}, | ||||||
|         {0x040700C2, &AM_U::CommitImportPrograms, "CommitImportPrograms"}, |         {IPC::MakeHeader(0x0406, 0, 2), &AM_U::EndImportProgramWithoutCommit, "EndImportProgramWithoutCommit"}, | ||||||
|         {0x04080042, &AM_U::GetProgramInfoFromCia, "GetProgramInfoFromCia"}, |         {IPC::MakeHeader(0x0407, 3, 2), &AM_U::CommitImportPrograms, "CommitImportPrograms"}, | ||||||
|         {0x04090004, &AM_U::GetSystemMenuDataFromCia, "GetSystemMenuDataFromCia"}, |         {IPC::MakeHeader(0x0408, 1, 2), &AM_U::GetProgramInfoFromCia, "GetProgramInfoFromCia"}, | ||||||
|         {0x040A0002, &AM_U::GetDependencyListFromCia, "GetDependencyListFromCia"}, |         {IPC::MakeHeader(0x0409, 0, 4), &AM_U::GetSystemMenuDataFromCia, "GetSystemMenuDataFromCia"}, | ||||||
|         {0x040B0002, &AM_U::GetTransferSizeFromCia, "GetTransferSizeFromCia"}, |         {IPC::MakeHeader(0x040A, 0, 2), &AM_U::GetDependencyListFromCia, "GetDependencyListFromCia"}, | ||||||
|         {0x040C0002, &AM_U::GetCoreVersionFromCia, "GetCoreVersionFromCia"}, |         {IPC::MakeHeader(0x040B, 0, 2), &AM_U::GetTransferSizeFromCia, "GetTransferSizeFromCia"}, | ||||||
|         {0x040D0042, &AM_U::GetRequiredSizeFromCia, "GetRequiredSizeFromCia"}, |         {IPC::MakeHeader(0x040C, 0, 2), &AM_U::GetCoreVersionFromCia, "GetCoreVersionFromCia"}, | ||||||
|         {0x040E00C2, nullptr, "CommitImportProgramsAndUpdateFirmwareAuto"}, |         {IPC::MakeHeader(0x040D, 1, 2), &AM_U::GetRequiredSizeFromCia, "GetRequiredSizeFromCia"}, | ||||||
|         {0x040F0000, nullptr, "UpdateFirmwareAuto"}, |         {IPC::MakeHeader(0x040E, 3, 2), nullptr, "CommitImportProgramsAndUpdateFirmwareAuto"}, | ||||||
|         {0x041000C0, &AM_U::DeleteProgram, "DeleteProgram"}, |         {IPC::MakeHeader(0x040F, 0, 0), nullptr, "UpdateFirmwareAuto"}, | ||||||
|         {0x04110044, nullptr, "GetTwlProgramListForReboot"}, |         {IPC::MakeHeader(0x0410, 3, 0), &AM_U::DeleteProgram, "DeleteProgram"}, | ||||||
|         {0x04120000, &AM_U::GetSystemUpdaterMutex, "GetSystemUpdaterMutex"}, |         {IPC::MakeHeader(0x0411, 1, 4), nullptr, "GetTwlProgramListForReboot"}, | ||||||
|         {0x04130002, &AM_U::GetMetaSizeFromCia, "GetMetaSizeFromCia"}, |         {IPC::MakeHeader(0x0412, 0, 0), &AM_U::GetSystemUpdaterMutex, "GetSystemUpdaterMutex"}, | ||||||
|         {0x04140044, &AM_U::GetMetaDataFromCia, "GetMetaDataFromCia"}, |         {IPC::MakeHeader(0x0413, 0, 2), &AM_U::GetMetaSizeFromCia, "GetMetaSizeFromCia"}, | ||||||
|         {0x04150080, nullptr, "CheckDemoLaunchRights"}, |         {IPC::MakeHeader(0x0414, 1, 4), &AM_U::GetMetaDataFromCia, "GetMetaDataFromCia"}, | ||||||
|         {0x041600C0, nullptr, "GetInternalTitleLocationInfo"}, |         {IPC::MakeHeader(0x0415, 2, 0), nullptr, "CheckDemoLaunchRights"}, | ||||||
|         {0x041700C0, nullptr, "PerpetuateAgbSaveData"}, |         {IPC::MakeHeader(0x0416, 3, 0), nullptr, "GetInternalTitleLocationInfo"}, | ||||||
|         {0x04180040, nullptr, "BeginImportProgramForOverWrite"}, |         {IPC::MakeHeader(0x0417, 3, 0), nullptr, "PerpetuateAgbSaveData"}, | ||||||
|         {0x04190000, nullptr, "BeginImportSystemProgram"}, |         {IPC::MakeHeader(0x0418, 1, 0), nullptr, "BeginImportProgramForOverWrite"}, | ||||||
|  |         {IPC::MakeHeader(0x0419, 0, 0), nullptr, "BeginImportSystemProgram"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -10,98 +10,100 @@ namespace Service::APT { | |||||||
| APT_A::APT_A(std::shared_ptr<Module> apt) | APT_A::APT_A(std::shared_ptr<Module> apt) | ||||||
|     : Module::APTInterface(std::move(apt), "APT:A", MaxAPTSessions) { |     : Module::APTInterface(std::move(apt), "APT:A", MaxAPTSessions) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010040, &APT_A::GetLockHandle, "GetLockHandle"}, |         // clang-format off | ||||||
|         {0x00020080, &APT_A::Initialize, "Initialize"}, |         {IPC::MakeHeader(0x0001, 1, 0), &APT_A::GetLockHandle, "GetLockHandle"}, | ||||||
|         {0x00030040, &APT_A::Enable, "Enable"}, |         {IPC::MakeHeader(0x0002, 2, 0), &APT_A::Initialize, "Initialize"}, | ||||||
|         {0x00040040, nullptr, "Finalize"}, |         {IPC::MakeHeader(0x0003, 1, 0), &APT_A::Enable, "Enable"}, | ||||||
|         {0x00050040, &APT_A::GetAppletManInfo, "GetAppletManInfo"}, |         {IPC::MakeHeader(0x0004, 1, 0), nullptr, "Finalize"}, | ||||||
|         {0x00060040, &APT_A::GetAppletInfo, "GetAppletInfo"}, |         {IPC::MakeHeader(0x0005, 1, 0), &APT_A::GetAppletManInfo, "GetAppletManInfo"}, | ||||||
|         {0x00070000, nullptr, "GetLastSignaledAppletId"}, |         {IPC::MakeHeader(0x0006, 1, 0), &APT_A::GetAppletInfo, "GetAppletInfo"}, | ||||||
|         {0x00080000, nullptr, "CountRegisteredApplet"}, |         {IPC::MakeHeader(0x0007, 0, 0), nullptr, "GetLastSignaledAppletId"}, | ||||||
|         {0x00090040, &APT_A::IsRegistered, "IsRegistered"}, |         {IPC::MakeHeader(0x0008, 0, 0), nullptr, "CountRegisteredApplet"}, | ||||||
|         {0x000A0040, nullptr, "GetAttribute"}, |         {IPC::MakeHeader(0x0009, 1, 0), &APT_A::IsRegistered, "IsRegistered"}, | ||||||
|         {0x000B0040, &APT_A::InquireNotification, "InquireNotification"}, |         {IPC::MakeHeader(0x000A, 1, 0), nullptr, "GetAttribute"}, | ||||||
|         {0x000C0104, &APT_A::SendParameter, "SendParameter"}, |         {IPC::MakeHeader(0x000B, 1, 0), &APT_A::InquireNotification, "InquireNotification"}, | ||||||
|         {0x000D0080, &APT_A::ReceiveParameter, "ReceiveParameter"}, |         {IPC::MakeHeader(0x000C, 4, 4), &APT_A::SendParameter, "SendParameter"}, | ||||||
|         {0x000E0080, &APT_A::GlanceParameter, "GlanceParameter"}, |         {IPC::MakeHeader(0x000D, 2, 0), &APT_A::ReceiveParameter, "ReceiveParameter"}, | ||||||
|         {0x000F0100, &APT_A::CancelParameter, "CancelParameter"}, |         {IPC::MakeHeader(0x000E, 2, 0), &APT_A::GlanceParameter, "GlanceParameter"}, | ||||||
|         {0x001000C2, nullptr, "DebugFunc"}, |         {IPC::MakeHeader(0x000F, 4, 0), &APT_A::CancelParameter, "CancelParameter"}, | ||||||
|         {0x001100C0, nullptr, "MapProgramIdForDebug"}, |         {IPC::MakeHeader(0x0010, 3, 2), nullptr, "DebugFunc"}, | ||||||
|         {0x00120040, nullptr, "SetHomeMenuAppletIdForDebug"}, |         {IPC::MakeHeader(0x0011, 3, 0), nullptr, "MapProgramIdForDebug"}, | ||||||
|         {0x00130000, nullptr, "GetPreparationState"}, |         {IPC::MakeHeader(0x0012, 1, 0), nullptr, "SetHomeMenuAppletIdForDebug"}, | ||||||
|         {0x00140040, nullptr, "SetPreparationState"}, |         {IPC::MakeHeader(0x0013, 0, 0), nullptr, "GetPreparationState"}, | ||||||
|         {0x00150140, &APT_A::PrepareToStartApplication, "PrepareToStartApplication"}, |         {IPC::MakeHeader(0x0014, 1, 0), nullptr, "SetPreparationState"}, | ||||||
|         {0x00160040, &APT_A::PreloadLibraryApplet, "PreloadLibraryApplet"}, |         {IPC::MakeHeader(0x0015, 5, 0), &APT_A::PrepareToStartApplication, "PrepareToStartApplication"}, | ||||||
|         {0x00170040, &APT_A::FinishPreloadingLibraryApplet, "FinishPreloadingLibraryApplet"}, |         {IPC::MakeHeader(0x0016, 1, 0), &APT_A::PreloadLibraryApplet, "PreloadLibraryApplet"}, | ||||||
|         {0x00180040, &APT_A::PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"}, |         {IPC::MakeHeader(0x0017, 1, 0), &APT_A::FinishPreloadingLibraryApplet, "FinishPreloadingLibraryApplet"}, | ||||||
|         {0x00190040, &APT_A::PrepareToStartSystemApplet, "PrepareToStartSystemApplet"}, |         {IPC::MakeHeader(0x0018, 1, 0), &APT_A::PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"}, | ||||||
|         {0x001A0000, &APT_A::PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"}, |         {IPC::MakeHeader(0x0019, 1, 0), &APT_A::PrepareToStartSystemApplet, "PrepareToStartSystemApplet"}, | ||||||
|         {0x001B00C4, &APT_A::StartApplication, "StartApplication"}, |         {IPC::MakeHeader(0x001A, 0, 0), &APT_A::PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"}, | ||||||
|         {0x001C0000, &APT_A::WakeupApplication, "WakeupApplication"}, |         {IPC::MakeHeader(0x001B, 3, 4), &APT_A::StartApplication, "StartApplication"}, | ||||||
|         {0x001D0000, nullptr, "CancelApplication"}, |         {IPC::MakeHeader(0x001C, 0, 0), &APT_A::WakeupApplication, "WakeupApplication"}, | ||||||
|         {0x001E0084, &APT_A::StartLibraryApplet, "StartLibraryApplet"}, |         {IPC::MakeHeader(0x001D, 0, 0), nullptr, "CancelApplication"}, | ||||||
|         {0x001F0084, &APT_A::StartSystemApplet, "StartSystemApplet"}, |         {IPC::MakeHeader(0x001E, 2, 4), &APT_A::StartLibraryApplet, "StartLibraryApplet"}, | ||||||
|         {0x00200044, nullptr, "StartNewestHomeMenu"}, |         {IPC::MakeHeader(0x001F, 2, 4), &APT_A::StartSystemApplet, "StartSystemApplet"}, | ||||||
|         {0x00210000, &APT_A::OrderToCloseApplication, "OrderToCloseApplication"}, |         {IPC::MakeHeader(0x0020, 1, 4), nullptr, "StartNewestHomeMenu"}, | ||||||
|         {0x00220040, &APT_A::PrepareToCloseApplication, "PrepareToCloseApplication"}, |         {IPC::MakeHeader(0x0021, 0, 0), &APT_A::OrderToCloseApplication, "OrderToCloseApplication"}, | ||||||
|         {0x00230040, nullptr, "PrepareToJumpToApplication"}, |         {IPC::MakeHeader(0x0022, 1, 0), &APT_A::PrepareToCloseApplication, "PrepareToCloseApplication"}, | ||||||
|         {0x00240044, nullptr, "JumpToApplication"}, |         {IPC::MakeHeader(0x0023, 1, 0), nullptr, "PrepareToJumpToApplication"}, | ||||||
|         {0x002500C0, &APT_A::PrepareToCloseLibraryApplet, "PrepareToCloseLibraryApplet"}, |         {IPC::MakeHeader(0x0024, 1, 4), nullptr, "JumpToApplication"}, | ||||||
|         {0x00260000, &APT_A::PrepareToCloseSystemApplet, "PrepareToCloseSystemApplet"}, |         {IPC::MakeHeader(0x0025, 3, 0), &APT_A::PrepareToCloseLibraryApplet, "PrepareToCloseLibraryApplet"}, | ||||||
|         {0x00270044, &APT_A::CloseApplication, "CloseApplication"}, |         {IPC::MakeHeader(0x0026, 0, 0), &APT_A::PrepareToCloseSystemApplet, "PrepareToCloseSystemApplet"}, | ||||||
|         {0x00280044, &APT_A::CloseLibraryApplet, "CloseLibraryApplet"}, |         {IPC::MakeHeader(0x0027, 1, 4), &APT_A::CloseApplication, "CloseApplication"}, | ||||||
|         {0x00290044, &APT_A::CloseSystemApplet, "CloseSystemApplet"}, |         {IPC::MakeHeader(0x0028, 1, 4), &APT_A::CloseLibraryApplet, "CloseLibraryApplet"}, | ||||||
|         {0x002A0000, &APT_A::OrderToCloseSystemApplet, "OrderToCloseSystemApplet"}, |         {IPC::MakeHeader(0x0029, 1, 4), &APT_A::CloseSystemApplet, "CloseSystemApplet"}, | ||||||
|         {0x002B0000, &APT_A::PrepareToJumpToHomeMenu, "PrepareToJumpToHomeMenu"}, |         {IPC::MakeHeader(0x002A, 0, 0), &APT_A::OrderToCloseSystemApplet, "OrderToCloseSystemApplet"}, | ||||||
|         {0x002C0044, &APT_A::JumpToHomeMenu, "JumpToHomeMenu"}, |         {IPC::MakeHeader(0x002B, 0, 0), &APT_A::PrepareToJumpToHomeMenu, "PrepareToJumpToHomeMenu"}, | ||||||
|         {0x002D0000, &APT_A::PrepareToLeaveHomeMenu, "PrepareToLeaveHomeMenu"}, |         {IPC::MakeHeader(0x002C, 1, 4), &APT_A::JumpToHomeMenu, "JumpToHomeMenu"}, | ||||||
|         {0x002E0044, &APT_A::LeaveHomeMenu, "LeaveHomeMenu"}, |         {IPC::MakeHeader(0x002D, 0, 0), &APT_A::PrepareToLeaveHomeMenu, "PrepareToLeaveHomeMenu"}, | ||||||
|         {0x002F0040, nullptr, "PrepareToLeaveResidentApplet"}, |         {IPC::MakeHeader(0x002E, 1, 4), &APT_A::LeaveHomeMenu, "LeaveHomeMenu"}, | ||||||
|         {0x00300044, nullptr, "LeaveResidentApplet"}, |         {IPC::MakeHeader(0x002F, 1, 0), nullptr, "PrepareToLeaveResidentApplet"}, | ||||||
|         {0x00310100, &APT_A::PrepareToDoApplicationJump, "PrepareToDoApplicationJump"}, |         {IPC::MakeHeader(0x0030, 1, 4), nullptr, "LeaveResidentApplet"}, | ||||||
|         {0x00320084, &APT_A::DoApplicationJump, "DoApplicationJump"}, |         {IPC::MakeHeader(0x0031, 4, 0), &APT_A::PrepareToDoApplicationJump, "PrepareToDoApplicationJump"}, | ||||||
|         {0x00330000, &APT_A::GetProgramIdOnApplicationJump, "GetProgramIdOnApplicationJump"}, |         {IPC::MakeHeader(0x0032, 2, 4), &APT_A::DoApplicationJump, "DoApplicationJump"}, | ||||||
|         {0x00340084, nullptr, "SendDeliverArg"}, |         {IPC::MakeHeader(0x0033, 0, 0), &APT_A::GetProgramIdOnApplicationJump, "GetProgramIdOnApplicationJump"}, | ||||||
|         {0x00350080, &APT_A::ReceiveDeliverArg, "ReceiveDeliverArg"}, |         {IPC::MakeHeader(0x0034, 2, 4), nullptr, "SendDeliverArg"}, | ||||||
|         {0x00360040, &APT_A::LoadSysMenuArg, "LoadSysMenuArg"}, |         {IPC::MakeHeader(0x0035, 2, 0), &APT_A::ReceiveDeliverArg, "ReceiveDeliverArg"}, | ||||||
|         {0x00370042, &APT_A::StoreSysMenuArg, "StoreSysMenuArg"}, |         {IPC::MakeHeader(0x0036, 1, 0), &APT_A::LoadSysMenuArg, "LoadSysMenuArg"}, | ||||||
|         {0x00380040, nullptr, "PreloadResidentApplet"}, |         {IPC::MakeHeader(0x0037, 1, 2), &APT_A::StoreSysMenuArg, "StoreSysMenuArg"}, | ||||||
|         {0x00390040, nullptr, "PrepareToStartResidentApplet"}, |         {IPC::MakeHeader(0x0038, 1, 0), nullptr, "PreloadResidentApplet"}, | ||||||
|         {0x003A0044, nullptr, "StartResidentApplet"}, |         {IPC::MakeHeader(0x0039, 1, 0), nullptr, "PrepareToStartResidentApplet"}, | ||||||
|         {0x003B0040, &APT_A::CancelLibraryApplet, "CancelLibraryApplet"}, |         {IPC::MakeHeader(0x003A, 1, 4), nullptr, "StartResidentApplet"}, | ||||||
|         {0x003C0042, nullptr, "SendDspSleep"}, |         {IPC::MakeHeader(0x003B, 1, 0), &APT_A::CancelLibraryApplet, "CancelLibraryApplet"}, | ||||||
|         {0x003D0042, nullptr, "SendDspWakeUp"}, |         {IPC::MakeHeader(0x003C, 1, 2), nullptr, "SendDspSleep"}, | ||||||
|         {0x003E0080, nullptr, "ReplySleepQuery"}, |         {IPC::MakeHeader(0x003D, 1, 2), nullptr, "SendDspWakeUp"}, | ||||||
|         {0x003F0040, nullptr, "ReplySleepNotificationComplete"}, |         {IPC::MakeHeader(0x003E, 2, 0), nullptr, "ReplySleepQuery"}, | ||||||
|         {0x00400042, &APT_A::SendCaptureBufferInfo, "SendCaptureBufferInfo"}, |         {IPC::MakeHeader(0x003F, 1, 0), nullptr, "ReplySleepNotificationComplete"}, | ||||||
|         {0x00410040, &APT_A::ReceiveCaptureBufferInfo, "ReceiveCaptureBufferInfo"}, |         {IPC::MakeHeader(0x0040, 1, 2), &APT_A::SendCaptureBufferInfo, "SendCaptureBufferInfo"}, | ||||||
|         {0x00420080, nullptr, "SleepSystem"}, |         {IPC::MakeHeader(0x0041, 1, 0), &APT_A::ReceiveCaptureBufferInfo, "ReceiveCaptureBufferInfo"}, | ||||||
|         {0x00430040, &APT_A::NotifyToWait, "NotifyToWait"}, |         {IPC::MakeHeader(0x0042, 2, 0), nullptr, "SleepSystem"}, | ||||||
|         {0x00440000, &APT_A::GetSharedFont, "GetSharedFont"}, |         {IPC::MakeHeader(0x0043, 1, 0), &APT_A::NotifyToWait, "NotifyToWait"}, | ||||||
|         {0x00450040, &APT_A::GetWirelessRebootInfo, "GetWirelessRebootInfo"}, |         {IPC::MakeHeader(0x0044, 0, 0), &APT_A::GetSharedFont, "GetSharedFont"}, | ||||||
|         {0x00460104, &APT_A::Wrap, "Wrap"}, |         {IPC::MakeHeader(0x0045, 1, 0), &APT_A::GetWirelessRebootInfo, "GetWirelessRebootInfo"}, | ||||||
|         {0x00470104, &APT_A::Unwrap, "Unwrap"}, |         {IPC::MakeHeader(0x0046, 4, 4), &APT_A::Wrap, "Wrap"}, | ||||||
|         {0x00480100, nullptr, "GetProgramInfo"}, |         {IPC::MakeHeader(0x0047, 4, 4), &APT_A::Unwrap, "Unwrap"}, | ||||||
|         {0x00490180, nullptr, "Reboot"}, |         {IPC::MakeHeader(0x0048, 4, 0), nullptr, "GetProgramInfo"}, | ||||||
|         {0x004A0040, &APT_A::GetCaptureInfo, "GetCaptureInfo"}, |         {IPC::MakeHeader(0x0049, 6, 0), nullptr, "Reboot"}, | ||||||
|         {0x004B00C2, &APT_A::AppletUtility, "AppletUtility"}, |         {IPC::MakeHeader(0x004A, 1, 0), &APT_A::GetCaptureInfo, "GetCaptureInfo"}, | ||||||
|         {0x004C0000, nullptr, "SetFatalErrDispMode"}, |         {IPC::MakeHeader(0x004B, 3, 2), &APT_A::AppletUtility, "AppletUtility"}, | ||||||
|         {0x004D0080, nullptr, "GetAppletProgramInfo"}, |         {IPC::MakeHeader(0x004C, 0, 0), nullptr, "SetFatalErrDispMode"}, | ||||||
|         {0x004E0000, nullptr, "HardwareResetAsync"}, |         {IPC::MakeHeader(0x004D, 2, 0), nullptr, "GetAppletProgramInfo"}, | ||||||
|         {0x004F0080, &APT_A::SetAppCpuTimeLimit, "SetAppCpuTimeLimit"}, |         {IPC::MakeHeader(0x004E, 0, 0), nullptr, "HardwareResetAsync"}, | ||||||
|         {0x00500040, &APT_A::GetAppCpuTimeLimit, "GetAppCpuTimeLimit"}, |         {IPC::MakeHeader(0x004F, 2, 0), &APT_A::SetAppCpuTimeLimit, "SetAppCpuTimeLimit"}, | ||||||
|         {0x00510080, &APT_A::GetStartupArgument, "GetStartupArgument"}, |         {IPC::MakeHeader(0x0050, 1, 0), &APT_A::GetAppCpuTimeLimit, "GetAppCpuTimeLimit"}, | ||||||
|         {0x00520104, nullptr, "Wrap1"}, |         {IPC::MakeHeader(0x0051, 2, 0), &APT_A::GetStartupArgument, "GetStartupArgument"}, | ||||||
|         {0x00530104, nullptr, "Unwrap1"}, |         {IPC::MakeHeader(0x0052, 4, 4), nullptr, "Wrap1"}, | ||||||
|         {0x00550040, &APT_A::SetScreenCapPostPermission, "SetScreenCapPostPermission"}, |         {IPC::MakeHeader(0x0053, 4, 4), nullptr, "Unwrap1"}, | ||||||
|         {0x00560000, &APT_A::GetScreenCapPostPermission, "GetScreenCapPostPermission"}, |         {IPC::MakeHeader(0x0055, 1, 0), &APT_A::SetScreenCapPostPermission, "SetScreenCapPostPermission"}, | ||||||
|         {0x00570044, nullptr, "WakeupApplication2"}, |         {IPC::MakeHeader(0x0056, 0, 0), &APT_A::GetScreenCapPostPermission, "GetScreenCapPostPermission"}, | ||||||
|         {0x00580002, nullptr, "GetProgramID"}, |         {IPC::MakeHeader(0x0057, 1, 4), nullptr, "WakeupApplication2"}, | ||||||
|         {0x01010000, &APT_A::CheckNew3DSApp, "CheckNew3DSApp"}, |         {IPC::MakeHeader(0x0058, 0, 2), nullptr, "GetProgramID"}, | ||||||
|         {0x01020000, &APT_A::CheckNew3DS, "CheckNew3DS"}, |         {IPC::MakeHeader(0x0101, 0, 0), &APT_A::CheckNew3DSApp, "CheckNew3DSApp"}, | ||||||
|         {0x01030000, &APT_A::Unknown0x0103, "Unknown0x0103"}, |         {IPC::MakeHeader(0x0102, 0, 0), &APT_A::CheckNew3DS, "CheckNew3DS"}, | ||||||
|         {0x01040000, nullptr, "IsStandardMemoryLayout"}, |         {IPC::MakeHeader(0x0103, 0, 0), &APT_A::Unknown0x0103, "Unknown0x0103"}, | ||||||
|         {0x01050100, &APT_A::IsTitleAllowed, "IsTitleAllowed"}, |         {IPC::MakeHeader(0x0104, 0, 0), nullptr, "IsStandardMemoryLayout"}, | ||||||
|  |         {IPC::MakeHeader(0x0105, 4, 0), &APT_A::IsTitleAllowed, "IsTitleAllowed"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -10,98 +10,100 @@ namespace Service::APT { | |||||||
| APT_S::APT_S(std::shared_ptr<Module> apt) | APT_S::APT_S(std::shared_ptr<Module> apt) | ||||||
|     : Module::APTInterface(std::move(apt), "APT:S", MaxAPTSessions) { |     : Module::APTInterface(std::move(apt), "APT:S", MaxAPTSessions) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010040, &APT_S::GetLockHandle, "GetLockHandle"}, |         // clang-format off | ||||||
|         {0x00020080, &APT_S::Initialize, "Initialize"}, |         {IPC::MakeHeader(0x0001, 1, 0), &APT_S::GetLockHandle, "GetLockHandle"}, | ||||||
|         {0x00030040, &APT_S::Enable, "Enable"}, |         {IPC::MakeHeader(0x0002, 2, 0), &APT_S::Initialize, "Initialize"}, | ||||||
|         {0x00040040, nullptr, "Finalize"}, |         {IPC::MakeHeader(0x0003, 1, 0), &APT_S::Enable, "Enable"}, | ||||||
|         {0x00050040, &APT_S::GetAppletManInfo, "GetAppletManInfo"}, |         {IPC::MakeHeader(0x0004, 1, 0), nullptr, "Finalize"}, | ||||||
|         {0x00060040, &APT_S::GetAppletInfo, "GetAppletInfo"}, |         {IPC::MakeHeader(0x0005, 1, 0), &APT_S::GetAppletManInfo, "GetAppletManInfo"}, | ||||||
|         {0x00070000, nullptr, "GetLastSignaledAppletId"}, |         {IPC::MakeHeader(0x0006, 1, 0), &APT_S::GetAppletInfo, "GetAppletInfo"}, | ||||||
|         {0x00080000, nullptr, "CountRegisteredApplet"}, |         {IPC::MakeHeader(0x0007, 0, 0), nullptr, "GetLastSignaledAppletId"}, | ||||||
|         {0x00090040, &APT_S::IsRegistered, "IsRegistered"}, |         {IPC::MakeHeader(0x0008, 0, 0), nullptr, "CountRegisteredApplet"}, | ||||||
|         {0x000A0040, nullptr, "GetAttribute"}, |         {IPC::MakeHeader(0x0009, 1, 0), &APT_S::IsRegistered, "IsRegistered"}, | ||||||
|         {0x000B0040, &APT_S::InquireNotification, "InquireNotification"}, |         {IPC::MakeHeader(0x000A, 1, 0), nullptr, "GetAttribute"}, | ||||||
|         {0x000C0104, &APT_S::SendParameter, "SendParameter"}, |         {IPC::MakeHeader(0x000B, 1, 0), &APT_S::InquireNotification, "InquireNotification"}, | ||||||
|         {0x000D0080, &APT_S::ReceiveParameter, "ReceiveParameter"}, |         {IPC::MakeHeader(0x000C, 4, 4), &APT_S::SendParameter, "SendParameter"}, | ||||||
|         {0x000E0080, &APT_S::GlanceParameter, "GlanceParameter"}, |         {IPC::MakeHeader(0x000D, 2, 0), &APT_S::ReceiveParameter, "ReceiveParameter"}, | ||||||
|         {0x000F0100, &APT_S::CancelParameter, "CancelParameter"}, |         {IPC::MakeHeader(0x000E, 2, 0), &APT_S::GlanceParameter, "GlanceParameter"}, | ||||||
|         {0x001000C2, nullptr, "DebugFunc"}, |         {IPC::MakeHeader(0x000F, 4, 0), &APT_S::CancelParameter, "CancelParameter"}, | ||||||
|         {0x001100C0, nullptr, "MapProgramIdForDebug"}, |         {IPC::MakeHeader(0x0010, 3, 2), nullptr, "DebugFunc"}, | ||||||
|         {0x00120040, nullptr, "SetHomeMenuAppletIdForDebug"}, |         {IPC::MakeHeader(0x0011, 3, 0), nullptr, "MapProgramIdForDebug"}, | ||||||
|         {0x00130000, nullptr, "GetPreparationState"}, |         {IPC::MakeHeader(0x0012, 1, 0), nullptr, "SetHomeMenuAppletIdForDebug"}, | ||||||
|         {0x00140040, nullptr, "SetPreparationState"}, |         {IPC::MakeHeader(0x0013, 0, 0), nullptr, "GetPreparationState"}, | ||||||
|         {0x00150140, &APT_S::PrepareToStartApplication, "PrepareToStartApplication"}, |         {IPC::MakeHeader(0x0014, 1, 0), nullptr, "SetPreparationState"}, | ||||||
|         {0x00160040, &APT_S::PreloadLibraryApplet, "PreloadLibraryApplet"}, |         {IPC::MakeHeader(0x0015, 5, 0), &APT_S::PrepareToStartApplication, "PrepareToStartApplication"}, | ||||||
|         {0x00170040, &APT_S::FinishPreloadingLibraryApplet, "FinishPreloadingLibraryApplet"}, |         {IPC::MakeHeader(0x0016, 1, 0), &APT_S::PreloadLibraryApplet, "PreloadLibraryApplet"}, | ||||||
|         {0x00180040, &APT_S::PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"}, |         {IPC::MakeHeader(0x0017, 1, 0), &APT_S::FinishPreloadingLibraryApplet, "FinishPreloadingLibraryApplet"}, | ||||||
|         {0x00190040, &APT_S::PrepareToStartSystemApplet, "PrepareToStartSystemApplet"}, |         {IPC::MakeHeader(0x0018, 1, 0), &APT_S::PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"}, | ||||||
|         {0x001A0000, &APT_S::PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"}, |         {IPC::MakeHeader(0x0019, 1, 0), &APT_S::PrepareToStartSystemApplet, "PrepareToStartSystemApplet"}, | ||||||
|         {0x001B00C4, &APT_S::StartApplication, "StartApplication"}, |         {IPC::MakeHeader(0x001A, 0, 0), &APT_S::PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"}, | ||||||
|         {0x001C0000, &APT_S::WakeupApplication, "WakeupApplication"}, |         {IPC::MakeHeader(0x001B, 3, 4), &APT_S::StartApplication, "StartApplication"}, | ||||||
|         {0x001D0000, nullptr, "CancelApplication"}, |         {IPC::MakeHeader(0x001C, 0, 0), &APT_S::WakeupApplication, "WakeupApplication"}, | ||||||
|         {0x001E0084, &APT_S::StartLibraryApplet, "StartLibraryApplet"}, |         {IPC::MakeHeader(0x001D, 0, 0), nullptr, "CancelApplication"}, | ||||||
|         {0x001F0084, &APT_S::StartSystemApplet, "StartSystemApplet"}, |         {IPC::MakeHeader(0x001E, 2, 4), &APT_S::StartLibraryApplet, "StartLibraryApplet"}, | ||||||
|         {0x00200044, nullptr, "StartNewestHomeMenu"}, |         {IPC::MakeHeader(0x001F, 2, 4), &APT_S::StartSystemApplet, "StartSystemApplet"}, | ||||||
|         {0x00210000, &APT_S::OrderToCloseApplication, "OrderToCloseApplication"}, |         {IPC::MakeHeader(0x0020, 1, 4), nullptr, "StartNewestHomeMenu"}, | ||||||
|         {0x00220040, &APT_S::PrepareToCloseApplication, "PrepareToCloseApplication"}, |         {IPC::MakeHeader(0x0021, 0, 0), &APT_S::OrderToCloseApplication, "OrderToCloseApplication"}, | ||||||
|         {0x00230040, nullptr, "PrepareToJumpToApplication"}, |         {IPC::MakeHeader(0x0022, 1, 0), &APT_S::PrepareToCloseApplication, "PrepareToCloseApplication"}, | ||||||
|         {0x00240044, nullptr, "JumpToApplication"}, |         {IPC::MakeHeader(0x0023, 1, 0), nullptr, "PrepareToJumpToApplication"}, | ||||||
|         {0x002500C0, &APT_S::PrepareToCloseLibraryApplet, "PrepareToCloseLibraryApplet"}, |         {IPC::MakeHeader(0x0024, 1, 4), nullptr, "JumpToApplication"}, | ||||||
|         {0x00260000, &APT_S::PrepareToCloseSystemApplet, "PrepareToCloseSystemApplet"}, |         {IPC::MakeHeader(0x0025, 3, 0), &APT_S::PrepareToCloseLibraryApplet, "PrepareToCloseLibraryApplet"}, | ||||||
|         {0x00270044, &APT_S::CloseApplication, "CloseApplication"}, |         {IPC::MakeHeader(0x0026, 0, 0), &APT_S::PrepareToCloseSystemApplet, "PrepareToCloseSystemApplet"}, | ||||||
|         {0x00280044, &APT_S::CloseLibraryApplet, "CloseLibraryApplet"}, |         {IPC::MakeHeader(0x0027, 1, 4), &APT_S::CloseApplication, "CloseApplication"}, | ||||||
|         {0x00290044, &APT_S::CloseSystemApplet, "CloseSystemApplet"}, |         {IPC::MakeHeader(0x0028, 1, 4), &APT_S::CloseLibraryApplet, "CloseLibraryApplet"}, | ||||||
|         {0x002A0000, &APT_S::OrderToCloseSystemApplet, "OrderToCloseSystemApplet"}, |         {IPC::MakeHeader(0x0029, 1, 4), &APT_S::CloseSystemApplet, "CloseSystemApplet"}, | ||||||
|         {0x002B0000, &APT_S::PrepareToJumpToHomeMenu, "PrepareToJumpToHomeMenu"}, |         {IPC::MakeHeader(0x002A, 0, 0), &APT_S::OrderToCloseSystemApplet, "OrderToCloseSystemApplet"}, | ||||||
|         {0x002C0044, &APT_S::JumpToHomeMenu, "JumpToHomeMenu"}, |         {IPC::MakeHeader(0x002B, 0, 0), &APT_S::PrepareToJumpToHomeMenu, "PrepareToJumpToHomeMenu"}, | ||||||
|         {0x002D0000, &APT_S::PrepareToLeaveHomeMenu, "PrepareToLeaveHomeMenu"}, |         {IPC::MakeHeader(0x002C, 1, 4), &APT_S::JumpToHomeMenu, "JumpToHomeMenu"}, | ||||||
|         {0x002E0044, &APT_S::LeaveHomeMenu, "LeaveHomeMenu"}, |         {IPC::MakeHeader(0x002D, 0, 0), &APT_S::PrepareToLeaveHomeMenu, "PrepareToLeaveHomeMenu"}, | ||||||
|         {0x002F0040, nullptr, "PrepareToLeaveResidentApplet"}, |         {IPC::MakeHeader(0x002E, 1, 4), &APT_S::LeaveHomeMenu, "LeaveHomeMenu"}, | ||||||
|         {0x00300044, nullptr, "LeaveResidentApplet"}, |         {IPC::MakeHeader(0x002F, 1, 0), nullptr, "PrepareToLeaveResidentApplet"}, | ||||||
|         {0x00310100, &APT_S::PrepareToDoApplicationJump, "PrepareToDoApplicationJump"}, |         {IPC::MakeHeader(0x0030, 1, 4), nullptr, "LeaveResidentApplet"}, | ||||||
|         {0x00320084, &APT_S::DoApplicationJump, "DoApplicationJump"}, |         {IPC::MakeHeader(0x0031, 4, 0), &APT_S::PrepareToDoApplicationJump, "PrepareToDoApplicationJump"}, | ||||||
|         {0x00330000, &APT_S::GetProgramIdOnApplicationJump, "GetProgramIdOnApplicationJump"}, |         {IPC::MakeHeader(0x0032, 2, 4), &APT_S::DoApplicationJump, "DoApplicationJump"}, | ||||||
|         {0x00340084, nullptr, "SendDeliverArg"}, |         {IPC::MakeHeader(0x0033, 0, 0), &APT_S::GetProgramIdOnApplicationJump, "GetProgramIdOnApplicationJump"}, | ||||||
|         {0x00350080, &APT_S::ReceiveDeliverArg, "ReceiveDeliverArg"}, |         {IPC::MakeHeader(0x0034, 2, 4), nullptr, "SendDeliverArg"}, | ||||||
|         {0x00360040, &APT_S::LoadSysMenuArg, "LoadSysMenuArg"}, |         {IPC::MakeHeader(0x0035, 2, 0), &APT_S::ReceiveDeliverArg, "ReceiveDeliverArg"}, | ||||||
|         {0x00370042, &APT_S::StoreSysMenuArg, "StoreSysMenuArg"}, |         {IPC::MakeHeader(0x0036, 1, 0), &APT_S::LoadSysMenuArg, "LoadSysMenuArg"}, | ||||||
|         {0x00380040, nullptr, "PreloadResidentApplet"}, |         {IPC::MakeHeader(0x0037, 1, 2), &APT_S::StoreSysMenuArg, "StoreSysMenuArg"}, | ||||||
|         {0x00390040, nullptr, "PrepareToStartResidentApplet"}, |         {IPC::MakeHeader(0x0038, 1, 0), nullptr, "PreloadResidentApplet"}, | ||||||
|         {0x003A0044, nullptr, "StartResidentApplet"}, |         {IPC::MakeHeader(0x0039, 1, 0), nullptr, "PrepareToStartResidentApplet"}, | ||||||
|         {0x003B0040, &APT_S::CancelLibraryApplet, "CancelLibraryApplet"}, |         {IPC::MakeHeader(0x003A, 1, 4), nullptr, "StartResidentApplet"}, | ||||||
|         {0x003C0042, nullptr, "SendDspSleep"}, |         {IPC::MakeHeader(0x003B, 1, 0), &APT_S::CancelLibraryApplet, "CancelLibraryApplet"}, | ||||||
|         {0x003D0042, nullptr, "SendDspWakeUp"}, |         {IPC::MakeHeader(0x003C, 1, 2), nullptr, "SendDspSleep"}, | ||||||
|         {0x003E0080, nullptr, "ReplySleepQuery"}, |         {IPC::MakeHeader(0x003D, 1, 2), nullptr, "SendDspWakeUp"}, | ||||||
|         {0x003F0040, nullptr, "ReplySleepNotificationComplete"}, |         {IPC::MakeHeader(0x003E, 2, 0), nullptr, "ReplySleepQuery"}, | ||||||
|         {0x00400042, &APT_S::SendCaptureBufferInfo, "SendCaptureBufferInfo"}, |         {IPC::MakeHeader(0x003F, 1, 0), nullptr, "ReplySleepNotificationComplete"}, | ||||||
|         {0x00410040, &APT_S::ReceiveCaptureBufferInfo, "ReceiveCaptureBufferInfo"}, |         {IPC::MakeHeader(0x0040, 1, 2), &APT_S::SendCaptureBufferInfo, "SendCaptureBufferInfo"}, | ||||||
|         {0x00420080, nullptr, "SleepSystem"}, |         {IPC::MakeHeader(0x0041, 1, 0), &APT_S::ReceiveCaptureBufferInfo, "ReceiveCaptureBufferInfo"}, | ||||||
|         {0x00430040, &APT_S::NotifyToWait, "NotifyToWait"}, |         {IPC::MakeHeader(0x0042, 2, 0), nullptr, "SleepSystem"}, | ||||||
|         {0x00440000, &APT_S::GetSharedFont, "GetSharedFont"}, |         {IPC::MakeHeader(0x0043, 1, 0), &APT_S::NotifyToWait, "NotifyToWait"}, | ||||||
|         {0x00450040, &APT_S::GetWirelessRebootInfo, "GetWirelessRebootInfo"}, |         {IPC::MakeHeader(0x0044, 0, 0), &APT_S::GetSharedFont, "GetSharedFont"}, | ||||||
|         {0x00460104, &APT_S::Wrap, "Wrap"}, |         {IPC::MakeHeader(0x0045, 1, 0), &APT_S::GetWirelessRebootInfo, "GetWirelessRebootInfo"}, | ||||||
|         {0x00470104, &APT_S::Unwrap, "Unwrap"}, |         {IPC::MakeHeader(0x0046, 4, 4), &APT_S::Wrap, "Wrap"}, | ||||||
|         {0x00480100, nullptr, "GetProgramInfo"}, |         {IPC::MakeHeader(0x0047, 4, 4), &APT_S::Unwrap, "Unwrap"}, | ||||||
|         {0x00490180, nullptr, "Reboot"}, |         {IPC::MakeHeader(0x0048, 4, 0), nullptr, "GetProgramInfo"}, | ||||||
|         {0x004A0040, &APT_S::GetCaptureInfo, "GetCaptureInfo"}, |         {IPC::MakeHeader(0x0049, 6, 0), nullptr, "Reboot"}, | ||||||
|         {0x004B00C2, &APT_S::AppletUtility, "AppletUtility"}, |         {IPC::MakeHeader(0x004A, 1, 0), &APT_S::GetCaptureInfo, "GetCaptureInfo"}, | ||||||
|         {0x004C0000, nullptr, "SetFatalErrDispMode"}, |         {IPC::MakeHeader(0x004B, 3, 2), &APT_S::AppletUtility, "AppletUtility"}, | ||||||
|         {0x004D0080, nullptr, "GetAppletProgramInfo"}, |         {IPC::MakeHeader(0x004C, 0, 0), nullptr, "SetFatalErrDispMode"}, | ||||||
|         {0x004E0000, nullptr, "HardwareResetAsync"}, |         {IPC::MakeHeader(0x004D, 2, 0), nullptr, "GetAppletProgramInfo"}, | ||||||
|         {0x004F0080, &APT_S::SetAppCpuTimeLimit, "SetAppCpuTimeLimit"}, |         {IPC::MakeHeader(0x004E, 0, 0), nullptr, "HardwareResetAsync"}, | ||||||
|         {0x00500040, &APT_S::GetAppCpuTimeLimit, "GetAppCpuTimeLimit"}, |         {IPC::MakeHeader(0x004F, 2, 0), &APT_S::SetAppCpuTimeLimit, "SetAppCpuTimeLimit"}, | ||||||
|         {0x00510080, &APT_S::GetStartupArgument, "GetStartupArgument"}, |         {IPC::MakeHeader(0x0050, 1, 0), &APT_S::GetAppCpuTimeLimit, "GetAppCpuTimeLimit"}, | ||||||
|         {0x00520104, nullptr, "Wrap1"}, |         {IPC::MakeHeader(0x0051, 2, 0), &APT_S::GetStartupArgument, "GetStartupArgument"}, | ||||||
|         {0x00530104, nullptr, "Unwrap1"}, |         {IPC::MakeHeader(0x0052, 4, 4), nullptr, "Wrap1"}, | ||||||
|         {0x00550040, &APT_S::SetScreenCapPostPermission, "SetScreenCapPostPermission"}, |         {IPC::MakeHeader(0x0053, 4, 4), nullptr, "Unwrap1"}, | ||||||
|         {0x00560000, &APT_S::GetScreenCapPostPermission, "GetScreenCapPostPermission"}, |         {IPC::MakeHeader(0x0055, 1, 0), &APT_S::SetScreenCapPostPermission, "SetScreenCapPostPermission"}, | ||||||
|         {0x00570044, nullptr, "WakeupApplication2"}, |         {IPC::MakeHeader(0x0056, 0, 0), &APT_S::GetScreenCapPostPermission, "GetScreenCapPostPermission"}, | ||||||
|         {0x00580002, nullptr, "GetProgramID"}, |         {IPC::MakeHeader(0x0057, 1, 4), nullptr, "WakeupApplication2"}, | ||||||
|         {0x01010000, &APT_S::CheckNew3DSApp, "CheckNew3DSApp"}, |         {IPC::MakeHeader(0x0058, 0, 2), nullptr, "GetProgramID"}, | ||||||
|         {0x01020000, &APT_S::CheckNew3DS, "CheckNew3DS"}, |         {IPC::MakeHeader(0x0101, 0, 0), &APT_S::CheckNew3DSApp, "CheckNew3DSApp"}, | ||||||
|         {0x01030000, &APT_S::Unknown0x0103, "Unknown0x0103"}, |         {IPC::MakeHeader(0x0102, 0, 0), &APT_S::CheckNew3DS, "CheckNew3DS"}, | ||||||
|         {0x01040000, nullptr, "IsStandardMemoryLayout"}, |         {IPC::MakeHeader(0x0103, 0, 0), &APT_S::Unknown0x0103, "Unknown0x0103"}, | ||||||
|         {0x01050100, &APT_S::IsTitleAllowed, "IsTitleAllowed"}, |         {IPC::MakeHeader(0x0104, 0, 0), nullptr, "IsStandardMemoryLayout"}, | ||||||
|  |         {IPC::MakeHeader(0x0105, 4, 0), &APT_S::IsTitleAllowed, "IsTitleAllowed"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -10,98 +10,100 @@ namespace Service::APT { | |||||||
| APT_U::APT_U(std::shared_ptr<Module> apt) | APT_U::APT_U(std::shared_ptr<Module> apt) | ||||||
|     : Module::APTInterface(std::move(apt), "APT:U", MaxAPTSessions) { |     : Module::APTInterface(std::move(apt), "APT:U", MaxAPTSessions) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010040, &APT_U::GetLockHandle, "GetLockHandle"}, |         // clang-format off | ||||||
|         {0x00020080, &APT_U::Initialize, "Initialize"}, |         {IPC::MakeHeader(0x0001, 1, 0), &APT_U::GetLockHandle, "GetLockHandle"}, | ||||||
|         {0x00030040, &APT_U::Enable, "Enable"}, |         {IPC::MakeHeader(0x0002, 2, 0), &APT_U::Initialize, "Initialize"}, | ||||||
|         {0x00040040, nullptr, "Finalize"}, |         {IPC::MakeHeader(0x0003, 1, 0), &APT_U::Enable, "Enable"}, | ||||||
|         {0x00050040, &APT_U::GetAppletManInfo, "GetAppletManInfo"}, |         {IPC::MakeHeader(0x0004, 1, 0), nullptr, "Finalize"}, | ||||||
|         {0x00060040, &APT_U::GetAppletInfo, "GetAppletInfo"}, |         {IPC::MakeHeader(0x0005, 1, 0), &APT_U::GetAppletManInfo, "GetAppletManInfo"}, | ||||||
|         {0x00070000, nullptr, "GetLastSignaledAppletId"}, |         {IPC::MakeHeader(0x0006, 1, 0), &APT_U::GetAppletInfo, "GetAppletInfo"}, | ||||||
|         {0x00080000, nullptr, "CountRegisteredApplet"}, |         {IPC::MakeHeader(0x0007, 0, 0), nullptr, "GetLastSignaledAppletId"}, | ||||||
|         {0x00090040, &APT_U::IsRegistered, "IsRegistered"}, |         {IPC::MakeHeader(0x0008, 0, 0), nullptr, "CountRegisteredApplet"}, | ||||||
|         {0x000A0040, nullptr, "GetAttribute"}, |         {IPC::MakeHeader(0x0009, 1, 0), &APT_U::IsRegistered, "IsRegistered"}, | ||||||
|         {0x000B0040, &APT_U::InquireNotification, "InquireNotification"}, |         {IPC::MakeHeader(0x000A, 1, 0), nullptr, "GetAttribute"}, | ||||||
|         {0x000C0104, &APT_U::SendParameter, "SendParameter"}, |         {IPC::MakeHeader(0x000B, 1, 0), &APT_U::InquireNotification, "InquireNotification"}, | ||||||
|         {0x000D0080, &APT_U::ReceiveParameter, "ReceiveParameter"}, |         {IPC::MakeHeader(0x000C, 4, 4), &APT_U::SendParameter, "SendParameter"}, | ||||||
|         {0x000E0080, &APT_U::GlanceParameter, "GlanceParameter"}, |         {IPC::MakeHeader(0x000D, 2, 0), &APT_U::ReceiveParameter, "ReceiveParameter"}, | ||||||
|         {0x000F0100, &APT_U::CancelParameter, "CancelParameter"}, |         {IPC::MakeHeader(0x000E, 2, 0), &APT_U::GlanceParameter, "GlanceParameter"}, | ||||||
|         {0x001000C2, nullptr, "DebugFunc"}, |         {IPC::MakeHeader(0x000F, 4, 0), &APT_U::CancelParameter, "CancelParameter"}, | ||||||
|         {0x001100C0, nullptr, "MapProgramIdForDebug"}, |         {IPC::MakeHeader(0x0010, 3, 2), nullptr, "DebugFunc"}, | ||||||
|         {0x00120040, nullptr, "SetHomeMenuAppletIdForDebug"}, |         {IPC::MakeHeader(0x0011, 3, 0), nullptr, "MapProgramIdForDebug"}, | ||||||
|         {0x00130000, nullptr, "GetPreparationState"}, |         {IPC::MakeHeader(0x0012, 1, 0), nullptr, "SetHomeMenuAppletIdForDebug"}, | ||||||
|         {0x00140040, nullptr, "SetPreparationState"}, |         {IPC::MakeHeader(0x0013, 0, 0), nullptr, "GetPreparationState"}, | ||||||
|         {0x00150140, &APT_U::PrepareToStartApplication, "PrepareToStartApplication"}, |         {IPC::MakeHeader(0x0014, 1, 0), nullptr, "SetPreparationState"}, | ||||||
|         {0x00160040, &APT_U::PreloadLibraryApplet, "PreloadLibraryApplet"}, |         {IPC::MakeHeader(0x0015, 5, 0), &APT_U::PrepareToStartApplication, "PrepareToStartApplication"}, | ||||||
|         {0x00170040, &APT_U::FinishPreloadingLibraryApplet, "FinishPreloadingLibraryApplet"}, |         {IPC::MakeHeader(0x0016, 1, 0), &APT_U::PreloadLibraryApplet, "PreloadLibraryApplet"}, | ||||||
|         {0x00180040, &APT_U::PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"}, |         {IPC::MakeHeader(0x0017, 1, 0), &APT_U::FinishPreloadingLibraryApplet, "FinishPreloadingLibraryApplet"}, | ||||||
|         {0x00190040, &APT_U::PrepareToStartSystemApplet, "PrepareToStartSystemApplet"}, |         {IPC::MakeHeader(0x0018, 1, 0), &APT_U::PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"}, | ||||||
|         {0x001A0000, &APT_U::PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"}, |         {IPC::MakeHeader(0x0019, 1, 0), &APT_U::PrepareToStartSystemApplet, "PrepareToStartSystemApplet"}, | ||||||
|         {0x001B00C4, &APT_U::StartApplication, "StartApplication"}, |         {IPC::MakeHeader(0x001A, 0, 0), &APT_U::PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"}, | ||||||
|         {0x001C0000, &APT_U::WakeupApplication, "WakeupApplication"}, |         {IPC::MakeHeader(0x001B, 3, 4), &APT_U::StartApplication, "StartApplication"}, | ||||||
|         {0x001D0000, nullptr, "CancelApplication"}, |         {IPC::MakeHeader(0x001C, 0, 0), &APT_U::WakeupApplication, "WakeupApplication"}, | ||||||
|         {0x001E0084, &APT_U::StartLibraryApplet, "StartLibraryApplet"}, |         {IPC::MakeHeader(0x001D, 0, 0), nullptr, "CancelApplication"}, | ||||||
|         {0x001F0084, &APT_U::StartSystemApplet, "StartSystemApplet"}, |         {IPC::MakeHeader(0x001E, 2, 4), &APT_U::StartLibraryApplet, "StartLibraryApplet"}, | ||||||
|         {0x00200044, nullptr, "StartNewestHomeMenu"}, |         {IPC::MakeHeader(0x001F, 2, 4), &APT_U::StartSystemApplet, "StartSystemApplet"}, | ||||||
|         {0x00210000, &APT_U::OrderToCloseApplication, "OrderToCloseApplication"}, |         {IPC::MakeHeader(0x0020, 1, 4), nullptr, "StartNewestHomeMenu"}, | ||||||
|         {0x00220040, &APT_U::PrepareToCloseApplication, "PrepareToCloseApplication"}, |         {IPC::MakeHeader(0x0021, 0, 0), &APT_U::OrderToCloseApplication, "OrderToCloseApplication"}, | ||||||
|         {0x00230040, nullptr, "PrepareToJumpToApplication"}, |         {IPC::MakeHeader(0x0022, 1, 0), &APT_U::PrepareToCloseApplication, "PrepareToCloseApplication"}, | ||||||
|         {0x00240044, nullptr, "JumpToApplication"}, |         {IPC::MakeHeader(0x0023, 1, 0), nullptr, "PrepareToJumpToApplication"}, | ||||||
|         {0x002500C0, &APT_U::PrepareToCloseLibraryApplet, "PrepareToCloseLibraryApplet"}, |         {IPC::MakeHeader(0x0024, 1, 4), nullptr, "JumpToApplication"}, | ||||||
|         {0x00260000, &APT_U::PrepareToCloseSystemApplet, "PrepareToCloseSystemApplet"}, |         {IPC::MakeHeader(0x0025, 3, 0), &APT_U::PrepareToCloseLibraryApplet, "PrepareToCloseLibraryApplet"}, | ||||||
|         {0x00270044, &APT_U::CloseApplication, "CloseApplication"}, |         {IPC::MakeHeader(0x0026, 0, 0), &APT_U::PrepareToCloseSystemApplet, "PrepareToCloseSystemApplet"}, | ||||||
|         {0x00280044, &APT_U::CloseLibraryApplet, "CloseLibraryApplet"}, |         {IPC::MakeHeader(0x0027, 1, 4), &APT_U::CloseApplication, "CloseApplication"}, | ||||||
|         {0x00290044, &APT_U::CloseSystemApplet, "CloseSystemApplet"}, |         {IPC::MakeHeader(0x0028, 1, 4), &APT_U::CloseLibraryApplet, "CloseLibraryApplet"}, | ||||||
|         {0x002A0000, &APT_U::OrderToCloseSystemApplet, "OrderToCloseSystemApplet"}, |         {IPC::MakeHeader(0x0029, 1, 4), &APT_U::CloseSystemApplet, "CloseSystemApplet"}, | ||||||
|         {0x002B0000, &APT_U::PrepareToJumpToHomeMenu, "PrepareToJumpToHomeMenu"}, |         {IPC::MakeHeader(0x002A, 0, 0), &APT_U::OrderToCloseSystemApplet, "OrderToCloseSystemApplet"}, | ||||||
|         {0x002C0044, &APT_U::JumpToHomeMenu, "JumpToHomeMenu"}, |         {IPC::MakeHeader(0x002B, 0, 0), &APT_U::PrepareToJumpToHomeMenu, "PrepareToJumpToHomeMenu"}, | ||||||
|         {0x002D0000, &APT_U::PrepareToLeaveHomeMenu, "PrepareToLeaveHomeMenu"}, |         {IPC::MakeHeader(0x002C, 1, 4), &APT_U::JumpToHomeMenu, "JumpToHomeMenu"}, | ||||||
|         {0x002E0044, &APT_U::LeaveHomeMenu, "LeaveHomeMenu"}, |         {IPC::MakeHeader(0x002D, 0, 0), &APT_U::PrepareToLeaveHomeMenu, "PrepareToLeaveHomeMenu"}, | ||||||
|         {0x002F0040, nullptr, "PrepareToLeaveResidentApplet"}, |         {IPC::MakeHeader(0x002E, 1, 4), &APT_U::LeaveHomeMenu, "LeaveHomeMenu"}, | ||||||
|         {0x00300044, nullptr, "LeaveResidentApplet"}, |         {IPC::MakeHeader(0x002F, 1, 0), nullptr, "PrepareToLeaveResidentApplet"}, | ||||||
|         {0x00310100, &APT_U::PrepareToDoApplicationJump, "PrepareToDoApplicationJump"}, |         {IPC::MakeHeader(0x0030, 1, 4), nullptr, "LeaveResidentApplet"}, | ||||||
|         {0x00320084, &APT_U::DoApplicationJump, "DoApplicationJump"}, |         {IPC::MakeHeader(0x0031, 4, 0), &APT_U::PrepareToDoApplicationJump, "PrepareToDoApplicationJump"}, | ||||||
|         {0x00330000, &APT_U::GetProgramIdOnApplicationJump, "GetProgramIdOnApplicationJump"}, |         {IPC::MakeHeader(0x0032, 2, 4), &APT_U::DoApplicationJump, "DoApplicationJump"}, | ||||||
|         {0x00340084, nullptr, "SendDeliverArg"}, |         {IPC::MakeHeader(0x0033, 0, 0), &APT_U::GetProgramIdOnApplicationJump, "GetProgramIdOnApplicationJump"}, | ||||||
|         {0x00350080, &APT_U::ReceiveDeliverArg, "ReceiveDeliverArg"}, |         {IPC::MakeHeader(0x0034, 2, 4), nullptr, "SendDeliverArg"}, | ||||||
|         {0x00360040, &APT_U::LoadSysMenuArg, "LoadSysMenuArg"}, |         {IPC::MakeHeader(0x0035, 2, 0), &APT_U::ReceiveDeliverArg, "ReceiveDeliverArg"}, | ||||||
|         {0x00370042, &APT_U::StoreSysMenuArg, "StoreSysMenuArg"}, |         {IPC::MakeHeader(0x0036, 1, 0), &APT_U::LoadSysMenuArg, "LoadSysMenuArg"}, | ||||||
|         {0x00380040, nullptr, "PreloadResidentApplet"}, |         {IPC::MakeHeader(0x0037, 1, 2), &APT_U::StoreSysMenuArg, "StoreSysMenuArg"}, | ||||||
|         {0x00390040, nullptr, "PrepareToStartResidentApplet"}, |         {IPC::MakeHeader(0x0038, 1, 0), nullptr, "PreloadResidentApplet"}, | ||||||
|         {0x003A0044, nullptr, "StartResidentApplet"}, |         {IPC::MakeHeader(0x0039, 1, 0), nullptr, "PrepareToStartResidentApplet"}, | ||||||
|         {0x003B0040, &APT_U::CancelLibraryApplet, "CancelLibraryApplet"}, |         {IPC::MakeHeader(0x003A, 1, 4), nullptr, "StartResidentApplet"}, | ||||||
|         {0x003C0042, nullptr, "SendDspSleep"}, |         {IPC::MakeHeader(0x003B, 1, 0), &APT_U::CancelLibraryApplet, "CancelLibraryApplet"}, | ||||||
|         {0x003D0042, nullptr, "SendDspWakeUp"}, |         {IPC::MakeHeader(0x003C, 1, 2), nullptr, "SendDspSleep"}, | ||||||
|         {0x003E0080, nullptr, "ReplySleepQuery"}, |         {IPC::MakeHeader(0x003D, 1, 2), nullptr, "SendDspWakeUp"}, | ||||||
|         {0x003F0040, nullptr, "ReplySleepNotificationComplete"}, |         {IPC::MakeHeader(0x003E, 2, 0), nullptr, "ReplySleepQuery"}, | ||||||
|         {0x00400042, &APT_U::SendCaptureBufferInfo, "SendCaptureBufferInfo"}, |         {IPC::MakeHeader(0x003F, 1, 0), nullptr, "ReplySleepNotificationComplete"}, | ||||||
|         {0x00410040, &APT_U::ReceiveCaptureBufferInfo, "ReceiveCaptureBufferInfo"}, |         {IPC::MakeHeader(0x0040, 1, 2), &APT_U::SendCaptureBufferInfo, "SendCaptureBufferInfo"}, | ||||||
|         {0x00420080, nullptr, "SleepSystem"}, |         {IPC::MakeHeader(0x0041, 1, 0), &APT_U::ReceiveCaptureBufferInfo, "ReceiveCaptureBufferInfo"}, | ||||||
|         {0x00430040, &APT_U::NotifyToWait, "NotifyToWait"}, |         {IPC::MakeHeader(0x0042, 2, 0), nullptr, "SleepSystem"}, | ||||||
|         {0x00440000, &APT_U::GetSharedFont, "GetSharedFont"}, |         {IPC::MakeHeader(0x0043, 1, 0), &APT_U::NotifyToWait, "NotifyToWait"}, | ||||||
|         {0x00450040, &APT_U::GetWirelessRebootInfo, "GetWirelessRebootInfo"}, |         {IPC::MakeHeader(0x0044, 0, 0), &APT_U::GetSharedFont, "GetSharedFont"}, | ||||||
|         {0x00460104, &APT_U::Wrap, "Wrap"}, |         {IPC::MakeHeader(0x0045, 1, 0), &APT_U::GetWirelessRebootInfo, "GetWirelessRebootInfo"}, | ||||||
|         {0x00470104, &APT_U::Unwrap, "Unwrap"}, |         {IPC::MakeHeader(0x0046, 4, 4), &APT_U::Wrap, "Wrap"}, | ||||||
|         {0x00480100, nullptr, "GetProgramInfo"}, |         {IPC::MakeHeader(0x0047, 4, 4), &APT_U::Unwrap, "Unwrap"}, | ||||||
|         {0x00490180, nullptr, "Reboot"}, |         {IPC::MakeHeader(0x0048, 4, 0), nullptr, "GetProgramInfo"}, | ||||||
|         {0x004A0040, &APT_U::GetCaptureInfo, "GetCaptureInfo"}, |         {IPC::MakeHeader(0x0049, 6, 0), nullptr, "Reboot"}, | ||||||
|         {0x004B00C2, &APT_U::AppletUtility, "AppletUtility"}, |         {IPC::MakeHeader(0x004A, 1, 0), &APT_U::GetCaptureInfo, "GetCaptureInfo"}, | ||||||
|         {0x004C0000, nullptr, "SetFatalErrDispMode"}, |         {IPC::MakeHeader(0x004B, 3, 2), &APT_U::AppletUtility, "AppletUtility"}, | ||||||
|         {0x004D0080, nullptr, "GetAppletProgramInfo"}, |         {IPC::MakeHeader(0x004C, 0, 0), nullptr, "SetFatalErrDispMode"}, | ||||||
|         {0x004E0000, nullptr, "HardwareResetAsync"}, |         {IPC::MakeHeader(0x004D, 2, 0), nullptr, "GetAppletProgramInfo"}, | ||||||
|         {0x004F0080, &APT_U::SetAppCpuTimeLimit, "SetAppCpuTimeLimit"}, |         {IPC::MakeHeader(0x004E, 0, 0), nullptr, "HardwareResetAsync"}, | ||||||
|         {0x00500040, &APT_U::GetAppCpuTimeLimit, "GetAppCpuTimeLimit"}, |         {IPC::MakeHeader(0x004F, 2, 0), &APT_U::SetAppCpuTimeLimit, "SetAppCpuTimeLimit"}, | ||||||
|         {0x00510080, &APT_U::GetStartupArgument, "GetStartupArgument"}, |         {IPC::MakeHeader(0x0050, 1, 0), &APT_U::GetAppCpuTimeLimit, "GetAppCpuTimeLimit"}, | ||||||
|         {0x00520104, nullptr, "Wrap1"}, |         {IPC::MakeHeader(0x0051, 2, 0), &APT_U::GetStartupArgument, "GetStartupArgument"}, | ||||||
|         {0x00530104, nullptr, "Unwrap1"}, |         {IPC::MakeHeader(0x0052, 4, 4), nullptr, "Wrap1"}, | ||||||
|         {0x00550040, &APT_U::SetScreenCapPostPermission, "SetScreenCapPostPermission"}, |         {IPC::MakeHeader(0x0053, 4, 4), nullptr, "Unwrap1"}, | ||||||
|         {0x00560000, &APT_U::GetScreenCapPostPermission, "GetScreenCapPostPermission"}, |         {IPC::MakeHeader(0x0055, 1, 0), &APT_U::SetScreenCapPostPermission, "SetScreenCapPostPermission"}, | ||||||
|         {0x00570044, nullptr, "WakeupApplication2"}, |         {IPC::MakeHeader(0x0056, 0, 0), &APT_U::GetScreenCapPostPermission, "GetScreenCapPostPermission"}, | ||||||
|         {0x00580002, nullptr, "GetProgramID"}, |         {IPC::MakeHeader(0x0057, 1, 4), nullptr, "WakeupApplication2"}, | ||||||
|         {0x01010000, &APT_U::CheckNew3DSApp, "CheckNew3DSApp"}, |         {IPC::MakeHeader(0x0058, 0, 2), nullptr, "GetProgramID"}, | ||||||
|         {0x01020000, &APT_U::CheckNew3DS, "CheckNew3DS"}, |         {IPC::MakeHeader(0x0101, 0, 0), &APT_U::CheckNew3DSApp, "CheckNew3DSApp"}, | ||||||
|         {0x01030000, &APT_U::Unknown0x0103, "Unknown0x0103"}, |         {IPC::MakeHeader(0x0102, 0, 0), &APT_U::CheckNew3DS, "CheckNew3DS"}, | ||||||
|         {0x01040000, nullptr, "IsStandardMemoryLayout"}, |         {IPC::MakeHeader(0x0103, 0, 0), &APT_U::Unknown0x0103, "Unknown0x0103"}, | ||||||
|         {0x01050100, &APT_U::IsTitleAllowed, "IsTitleAllowed"}, |         {IPC::MakeHeader(0x0104, 0, 0), nullptr, "IsStandardMemoryLayout"}, | ||||||
|  |         {IPC::MakeHeader(0x0105, 4, 0), &APT_U::IsTitleAllowed, "IsTitleAllowed"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -10,8 +10,10 @@ namespace Service::NS { | |||||||
| NS_C::NS_C(std::shared_ptr<Service::APT::Module> apt) | NS_C::NS_C(std::shared_ptr<Service::APT::Module> apt) | ||||||
|     : Service::APT::Module::NSInterface(std::move(apt), "ns:c", 1) { |     : Service::APT::Module::NSInterface(std::move(apt), "ns:c", 1) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010100, nullptr, "LockSpecialContent"}, |         // clang-format off | ||||||
|         {0x00020100, nullptr, "UnlockSpecialContent"}, |         {IPC::MakeHeader(0x0001, 4, 0), nullptr, "LockSpecialContent"}, | ||||||
|  |         {IPC::MakeHeader(0x0002, 4, 0), nullptr, "UnlockSpecialContent"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -10,21 +10,23 @@ namespace Service::NS { | |||||||
| NS_S::NS_S(std::shared_ptr<Service::APT::Module> apt) | NS_S::NS_S(std::shared_ptr<Service::APT::Module> apt) | ||||||
|     : Service::APT::Module::NSInterface(std::move(apt), "ns:s", 3) { |     : Service::APT::Module::NSInterface(std::move(apt), "ns:s", 3) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x000100C0, nullptr, "LaunchFIRM"}, |         // clang-format off | ||||||
|         {0x000200C0, nullptr, "LaunchTitle"}, |         {IPC::MakeHeader(0x0001, 3, 0), nullptr, "LaunchFIRM"}, | ||||||
|         {0x00030000, nullptr, "TerminateApplication"}, |         {IPC::MakeHeader(0x0002, 3, 0), nullptr, "LaunchTitle"}, | ||||||
|         {0x00040040, nullptr, "TerminateProcess"}, |         {IPC::MakeHeader(0x0003, 0, 0), nullptr, "TerminateApplication"}, | ||||||
|         {0x000500C0, nullptr, "LaunchApplicationFIRM"}, |         {IPC::MakeHeader(0x0004, 1, 0), nullptr, "TerminateProcess"}, | ||||||
|         {0x00060042, &NS_S::SetWirelessRebootInfo, "SetWirelessRebootInfo"}, |         {IPC::MakeHeader(0x0005, 3, 0), nullptr, "LaunchApplicationFIRM"}, | ||||||
|         {0x00070042, nullptr, "CardUpdateInitialize"}, |         {IPC::MakeHeader(0x0006, 1, 2), &NS_S::SetWirelessRebootInfo, "SetWirelessRebootInfo"}, | ||||||
|         {0x00080000, nullptr, "CardUpdateShutdown"}, |         {IPC::MakeHeader(0x0007, 1, 2), nullptr, "CardUpdateInitialize"}, | ||||||
|         {0x000D0140, nullptr, "SetTWLBannerHMAC"}, |         {IPC::MakeHeader(0x0008, 0, 0), nullptr, "CardUpdateShutdown"}, | ||||||
|         {0x000E0000, &NS_S::ShutdownAsync, "ShutdownAsync"}, |         {IPC::MakeHeader(0x000D, 5, 0), nullptr, "SetTWLBannerHMAC"}, | ||||||
|         {0x00100180, &NS_S::RebootSystem, "RebootSystem"}, |         {IPC::MakeHeader(0x000E, 0, 0), &NS_S::ShutdownAsync, "ShutdownAsync"}, | ||||||
|         {0x00110100, nullptr, "TerminateTitle"}, |         {IPC::MakeHeader(0x0010, 6, 0), &NS_S::RebootSystem, "RebootSystem"}, | ||||||
|         {0x001200C0, nullptr, "SetApplicationCpuTimeLimit"}, |         {IPC::MakeHeader(0x0011, 4, 0), nullptr, "TerminateTitle"}, | ||||||
|         {0x00150140, nullptr, "LaunchApplication"}, |         {IPC::MakeHeader(0x0012, 3, 0), nullptr, "SetApplicationCpuTimeLimit"}, | ||||||
|         {0x00160000, &NS_S::RebootSystemClean, "RebootSystemClean"}, |         {IPC::MakeHeader(0x0015, 5, 0), nullptr, "LaunchApplication"}, | ||||||
|  |         {IPC::MakeHeader(0x0016, 0, 0), &NS_S::RebootSystemClean, "RebootSystemClean"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -12,72 +12,72 @@ BOSS_P::BOSS_P(std::shared_ptr<Module> boss) | |||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // boss:u shared commands |         // boss:u shared commands | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010082, &BOSS_P::InitializeSession, "InitializeSession"}, |         {IPC::MakeHeader(0x0001, 2, 2), &BOSS_P::InitializeSession, "InitializeSession"}, | ||||||
|         {0x00020100, &BOSS_P::SetStorageInfo, "RegisterStorage"}, |         {IPC::MakeHeader(0x0002, 4, 0), &BOSS_P::SetStorageInfo, "RegisterStorage"}, | ||||||
|         {0x00030000, &BOSS_P::UnregisterStorage, "UnregisterStorage"}, |         {IPC::MakeHeader(0x0003, 0, 0), &BOSS_P::UnregisterStorage, "UnregisterStorage"}, | ||||||
|         {0x00040000, &BOSS_P::GetStorageInfo, "GetStorageInfo"}, |         {IPC::MakeHeader(0x0004, 0, 0), &BOSS_P::GetStorageInfo, "GetStorageInfo"}, | ||||||
|         {0x00050042, &BOSS_P::RegisterPrivateRootCa, "RegisterPrivateRootCa"}, |         {IPC::MakeHeader(0x0005, 1, 2), &BOSS_P::RegisterPrivateRootCa, "RegisterPrivateRootCa"}, | ||||||
|         {0x00060084, &BOSS_P::RegisterPrivateClientCert, "RegisterPrivateClientCert"}, |         {IPC::MakeHeader(0x0006, 2, 4), &BOSS_P::RegisterPrivateClientCert, "RegisterPrivateClientCert"}, | ||||||
|         {0x00070000, &BOSS_P::GetNewArrivalFlag, "GetNewArrivalFlag"}, |         {IPC::MakeHeader(0x0007, 0, 0), &BOSS_P::GetNewArrivalFlag, "GetNewArrivalFlag"}, | ||||||
|         {0x00080002, &BOSS_P::RegisterNewArrivalEvent, "RegisterNewArrivalEvent"}, |         {IPC::MakeHeader(0x0008, 0, 2), &BOSS_P::RegisterNewArrivalEvent, "RegisterNewArrivalEvent"}, | ||||||
|         {0x00090040, &BOSS_P::SetOptoutFlag, "SetOptoutFlag"}, |         {IPC::MakeHeader(0x0009, 1, 0), &BOSS_P::SetOptoutFlag, "SetOptoutFlag"}, | ||||||
|         {0x000A0000, &BOSS_P::GetOptoutFlag, "GetOptoutFlag"}, |         {IPC::MakeHeader(0x000A, 0, 0), &BOSS_P::GetOptoutFlag, "GetOptoutFlag"}, | ||||||
|         {0x000B00C2, &BOSS_P::RegisterTask, "RegisterTask"}, |         {IPC::MakeHeader(0x000B, 3, 2), &BOSS_P::RegisterTask, "RegisterTask"}, | ||||||
|         {0x000C0082, &BOSS_P::UnregisterTask, "UnregisterTask"}, |         {IPC::MakeHeader(0x000C, 2, 2), &BOSS_P::UnregisterTask, "UnregisterTask"}, | ||||||
|         {0x000D0082, &BOSS_P::ReconfigureTask, "ReconfigureTask"}, |         {IPC::MakeHeader(0x000D, 2, 2), &BOSS_P::ReconfigureTask, "ReconfigureTask"}, | ||||||
|         {0x000E0000, &BOSS_P::GetTaskIdList, "GetTaskIdList"}, |         {IPC::MakeHeader(0x000E, 0, 0), &BOSS_P::GetTaskIdList, "GetTaskIdList"}, | ||||||
|         {0x000F0042, &BOSS_P::GetStepIdList, "GetStepIdList"}, |         {IPC::MakeHeader(0x000F, 1, 2), &BOSS_P::GetStepIdList, "GetStepIdList"}, | ||||||
|         {0x00100102, &BOSS_P::GetNsDataIdList, "GetNsDataIdList"}, |         {IPC::MakeHeader(0x0010, 4, 2), &BOSS_P::GetNsDataIdList, "GetNsDataIdList"}, | ||||||
|         {0x00110102, &BOSS_P::GetNsDataIdList1, "GetNsDataIdList1"}, |         {IPC::MakeHeader(0x0011, 4, 2), &BOSS_P::GetNsDataIdList1, "GetNsDataIdList1"}, | ||||||
|         {0x00120102, &BOSS_P::GetNsDataIdList2, "GetNsDataIdList2"}, |         {IPC::MakeHeader(0x0012, 4, 2), &BOSS_P::GetNsDataIdList2, "GetNsDataIdList2"}, | ||||||
|         {0x00130102, &BOSS_P::GetNsDataIdList3, "GetNsDataIdList3"}, |         {IPC::MakeHeader(0x0013, 4, 2), &BOSS_P::GetNsDataIdList3, "GetNsDataIdList3"}, | ||||||
|         {0x00140082, &BOSS_P::SendProperty, "SendProperty"}, |         {IPC::MakeHeader(0x0014, 2, 2), &BOSS_P::SendProperty, "SendProperty"}, | ||||||
|         {0x00150042, &BOSS_P::SendPropertyHandle, "SendPropertyHandle"}, |         {IPC::MakeHeader(0x0015, 1, 2), &BOSS_P::SendPropertyHandle, "SendPropertyHandle"}, | ||||||
|         {0x00160082, &BOSS_P::ReceiveProperty, "ReceiveProperty"}, |         {IPC::MakeHeader(0x0016, 2, 2), &BOSS_P::ReceiveProperty, "ReceiveProperty"}, | ||||||
|         {0x00170082, &BOSS_P::UpdateTaskInterval, "UpdateTaskInterval"}, |         {IPC::MakeHeader(0x0017, 2, 2), &BOSS_P::UpdateTaskInterval, "UpdateTaskInterval"}, | ||||||
|         {0x00180082, &BOSS_P::UpdateTaskCount, "UpdateTaskCount"}, |         {IPC::MakeHeader(0x0018, 2, 2), &BOSS_P::UpdateTaskCount, "UpdateTaskCount"}, | ||||||
|         {0x00190042, &BOSS_P::GetTaskInterval, "GetTaskInterval"}, |         {IPC::MakeHeader(0x0019, 1, 2), &BOSS_P::GetTaskInterval, "GetTaskInterval"}, | ||||||
|         {0x001A0042, &BOSS_P::GetTaskCount, "GetTaskCount"}, |         {IPC::MakeHeader(0x001A, 1, 2), &BOSS_P::GetTaskCount, "GetTaskCount"}, | ||||||
|         {0x001B0042, &BOSS_P::GetTaskServiceStatus, "GetTaskServiceStatus"}, |         {IPC::MakeHeader(0x001B, 1, 2), &BOSS_P::GetTaskServiceStatus, "GetTaskServiceStatus"}, | ||||||
|         {0x001C0042, &BOSS_P::StartTask, "StartTask"}, |         {IPC::MakeHeader(0x001C, 1, 2), &BOSS_P::StartTask, "StartTask"}, | ||||||
|         {0x001D0042, &BOSS_P::StartTaskImmediate, "StartTaskImmediate"}, |         {IPC::MakeHeader(0x001D, 1, 2), &BOSS_P::StartTaskImmediate, "StartTaskImmediate"}, | ||||||
|         {0x001E0042, &BOSS_P::CancelTask, "CancelTask"}, |         {IPC::MakeHeader(0x001E, 1, 2), &BOSS_P::CancelTask, "CancelTask"}, | ||||||
|         {0x001F0000, &BOSS_P::GetTaskFinishHandle, "GetTaskFinishHandle"}, |         {IPC::MakeHeader(0x001F, 0, 0), &BOSS_P::GetTaskFinishHandle, "GetTaskFinishHandle"}, | ||||||
|         {0x00200082, &BOSS_P::GetTaskState, "GetTaskState"}, |         {IPC::MakeHeader(0x0020, 2, 2), &BOSS_P::GetTaskState, "GetTaskState"}, | ||||||
|         {0x00210042, &BOSS_P::GetTaskResult, "GetTaskResult"}, |         {IPC::MakeHeader(0x0021, 1, 2), &BOSS_P::GetTaskResult, "GetTaskResult"}, | ||||||
|         {0x00220042, &BOSS_P::GetTaskCommErrorCode, "GetTaskCommErrorCode"}, |         {IPC::MakeHeader(0x0022, 1, 2), &BOSS_P::GetTaskCommErrorCode, "GetTaskCommErrorCode"}, | ||||||
|         {0x002300C2, &BOSS_P::GetTaskStatus, "GetTaskStatus"}, |         {IPC::MakeHeader(0x0023, 3, 2), &BOSS_P::GetTaskStatus, "GetTaskStatus"}, | ||||||
|         {0x00240082, &BOSS_P::GetTaskError, "GetTaskError"}, |         {IPC::MakeHeader(0x0024, 2, 2), &BOSS_P::GetTaskError, "GetTaskError"}, | ||||||
|         {0x00250082, &BOSS_P::GetTaskInfo, "GetTaskInfo"}, |         {IPC::MakeHeader(0x0025, 2, 2), &BOSS_P::GetTaskInfo, "GetTaskInfo"}, | ||||||
|         {0x00260040, &BOSS_P::DeleteNsData, "DeleteNsData"}, |         {IPC::MakeHeader(0x0026, 1, 0), &BOSS_P::DeleteNsData, "DeleteNsData"}, | ||||||
|         {0x002700C2, &BOSS_P::GetNsDataHeaderInfo, "GetNsDataHeaderInfo"}, |         {IPC::MakeHeader(0x0027, 3, 2), &BOSS_P::GetNsDataHeaderInfo, "GetNsDataHeaderInfo"}, | ||||||
|         {0x00280102, &BOSS_P::ReadNsData, "ReadNsData"}, |         {IPC::MakeHeader(0x0028, 4, 2), &BOSS_P::ReadNsData, "ReadNsData"}, | ||||||
|         {0x00290080, &BOSS_P::SetNsDataAdditionalInfo, "SetNsDataAdditionalInfo"}, |         {IPC::MakeHeader(0x0029, 2, 0), &BOSS_P::SetNsDataAdditionalInfo, "SetNsDataAdditionalInfo"}, | ||||||
|         {0x002A0040, &BOSS_P::GetNsDataAdditionalInfo, "GetNsDataAdditionalInfo"}, |         {IPC::MakeHeader(0x002A, 1, 0), &BOSS_P::GetNsDataAdditionalInfo, "GetNsDataAdditionalInfo"}, | ||||||
|         {0x002B0080, &BOSS_P::SetNsDataNewFlag, "SetNsDataNewFlag"}, |         {IPC::MakeHeader(0x002B, 2, 0), &BOSS_P::SetNsDataNewFlag, "SetNsDataNewFlag"}, | ||||||
|         {0x002C0040, &BOSS_P::GetNsDataNewFlag, "GetNsDataNewFlag"}, |         {IPC::MakeHeader(0x002C, 1, 0), &BOSS_P::GetNsDataNewFlag, "GetNsDataNewFlag"}, | ||||||
|         {0x002D0040, &BOSS_P::GetNsDataLastUpdate, "GetNsDataLastUpdate"}, |         {IPC::MakeHeader(0x002D, 1, 0), &BOSS_P::GetNsDataLastUpdate, "GetNsDataLastUpdate"}, | ||||||
|         {0x002E0040, &BOSS_P::GetErrorCode, "GetErrorCode"}, |         {IPC::MakeHeader(0x002E, 1, 0), &BOSS_P::GetErrorCode, "GetErrorCode"}, | ||||||
|         {0x002F0140, &BOSS_P::RegisterStorageEntry, "RegisterStorageEntry"}, |         {IPC::MakeHeader(0x002F, 5, 0), &BOSS_P::RegisterStorageEntry, "RegisterStorageEntry"}, | ||||||
|         {0x00300000, &BOSS_P::GetStorageEntryInfo, "GetStorageEntryInfo"}, |         {IPC::MakeHeader(0x0030, 0, 0), &BOSS_P::GetStorageEntryInfo, "GetStorageEntryInfo"}, | ||||||
|         {0x00310100, &BOSS_P::SetStorageOption, "SetStorageOption"}, |         {IPC::MakeHeader(0x0031, 4, 0), &BOSS_P::SetStorageOption, "SetStorageOption"}, | ||||||
|         {0x00320000, &BOSS_P::GetStorageOption, "GetStorageOption"}, |         {IPC::MakeHeader(0x0032, 0, 0), &BOSS_P::GetStorageOption, "GetStorageOption"}, | ||||||
|         {0x00330042, &BOSS_P::StartBgImmediate, "StartBgImmediate"}, |         {IPC::MakeHeader(0x0033, 1, 2), &BOSS_P::StartBgImmediate, "StartBgImmediate"}, | ||||||
|         {0x00340042, &BOSS_P::GetTaskProperty0, "GetTaskProperty0"}, |         {IPC::MakeHeader(0x0034, 1, 2), &BOSS_P::GetTaskProperty0, "GetTaskProperty0"}, | ||||||
|         {0x003500C2, &BOSS_P::RegisterImmediateTask, "RegisterImmediateTask"}, |         {IPC::MakeHeader(0x0035, 3, 2), &BOSS_P::RegisterImmediateTask, "RegisterImmediateTask"}, | ||||||
|         {0x00360084, &BOSS_P::SetTaskQuery, "SetTaskQuery"}, |         {IPC::MakeHeader(0x0036, 2, 4), &BOSS_P::SetTaskQuery, "SetTaskQuery"}, | ||||||
|         {0x00370084, &BOSS_P::GetTaskQuery, "GetTaskQuery"}, |         {IPC::MakeHeader(0x0037, 2, 4), &BOSS_P::GetTaskQuery, "GetTaskQuery"}, | ||||||
|         // boss:p |         // boss:p | ||||||
|         {0x04010082, &BOSS_P::InitializeSessionPrivileged, "InitializeSessionPrivileged"}, |         {IPC::MakeHeader(0x0401, 2, 2), &BOSS_P::InitializeSessionPrivileged, "InitializeSessionPrivileged"}, | ||||||
|         {0x04040080, &BOSS_P::GetAppNewFlag, "GetAppNewFlag"}, |         {IPC::MakeHeader(0x0404, 2, 0), &BOSS_P::GetAppNewFlag, "GetAppNewFlag"}, | ||||||
|         {0x040D0182, &BOSS_P::GetNsDataIdListPrivileged, "GetNsDataIdListPrivileged"}, |         {IPC::MakeHeader(0x040D, 6, 2), &BOSS_P::GetNsDataIdListPrivileged, "GetNsDataIdListPrivileged"}, | ||||||
|         {0x040E0182, &BOSS_P::GetNsDataIdListPrivileged1, "GetNsDataIdListPrivileged1"}, |         {IPC::MakeHeader(0x040E, 6, 2), &BOSS_P::GetNsDataIdListPrivileged1, "GetNsDataIdListPrivileged1"}, | ||||||
|         {0x04130082, &BOSS_P::SendPropertyPrivileged, "SendPropertyPrivileged"}, |         {IPC::MakeHeader(0x0413, 2, 2), &BOSS_P::SendPropertyPrivileged, "SendPropertyPrivileged"}, | ||||||
|         {0x041500C0, &BOSS_P::DeleteNsDataPrivileged, "DeleteNsDataPrivileged"}, |         {IPC::MakeHeader(0x0415, 3, 0), &BOSS_P::DeleteNsDataPrivileged, "DeleteNsDataPrivileged"}, | ||||||
|         {0x04160142, &BOSS_P::GetNsDataHeaderInfoPrivileged, "GetNsDataHeaderInfoPrivileged"}, |         {IPC::MakeHeader(0x0416, 5, 2), &BOSS_P::GetNsDataHeaderInfoPrivileged, "GetNsDataHeaderInfoPrivileged"}, | ||||||
|         {0x04170182, &BOSS_P::ReadNsDataPrivileged, "ReadNsDataPrivileged"}, |         {IPC::MakeHeader(0x0417, 6, 2), &BOSS_P::ReadNsDataPrivileged, "ReadNsDataPrivileged"}, | ||||||
|         {0x041A0100, &BOSS_P::SetNsDataNewFlagPrivileged, "SetNsDataNewFlagPrivileged"}, |         {IPC::MakeHeader(0x041A, 4, 0), &BOSS_P::SetNsDataNewFlagPrivileged, "SetNsDataNewFlagPrivileged"}, | ||||||
|         {0x041B00C0, &BOSS_P::GetNsDataNewFlagPrivileged, "GetNsDataNewFlagPrivileged"}, |         {IPC::MakeHeader(0x041B, 3, 0), &BOSS_P::GetNsDataNewFlagPrivileged, "GetNsDataNewFlagPrivileged"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -11,61 +11,61 @@ BOSS_U::BOSS_U(std::shared_ptr<Module> boss) | |||||||
|     : Module::Interface(std::move(boss), "boss:U", DefaultMaxSessions) { |     : Module::Interface(std::move(boss), "boss:U", DefaultMaxSessions) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010082, &BOSS_U::InitializeSession, "InitializeSession"}, |         {IPC::MakeHeader(0x0001, 2, 2), &BOSS_U::InitializeSession, "InitializeSession"}, | ||||||
|         {0x00020100, &BOSS_U::SetStorageInfo, "SetStorageInfo"}, |         {IPC::MakeHeader(0x0002, 4, 0), &BOSS_U::SetStorageInfo, "SetStorageInfo"}, | ||||||
|         {0x00030000, &BOSS_U::UnregisterStorage, "UnregisterStorage"}, |         {IPC::MakeHeader(0x0003, 0, 0), &BOSS_U::UnregisterStorage, "UnregisterStorage"}, | ||||||
|         {0x00040000, &BOSS_U::GetStorageInfo, "GetStorageInfo"}, |         {IPC::MakeHeader(0x0004, 0, 0), &BOSS_U::GetStorageInfo, "GetStorageInfo"}, | ||||||
|         {0x00050042, &BOSS_U::RegisterPrivateRootCa, "RegisterPrivateRootCa"}, |         {IPC::MakeHeader(0x0005, 1, 2), &BOSS_U::RegisterPrivateRootCa, "RegisterPrivateRootCa"}, | ||||||
|         {0x00060084, &BOSS_U::RegisterPrivateClientCert, "RegisterPrivateClientCert"}, |         {IPC::MakeHeader(0x0006, 2, 4), &BOSS_U::RegisterPrivateClientCert, "RegisterPrivateClientCert"}, | ||||||
|         {0x00070000, &BOSS_U::GetNewArrivalFlag, "GetNewArrivalFlag"}, |         {IPC::MakeHeader(0x0007, 0, 0), &BOSS_U::GetNewArrivalFlag, "GetNewArrivalFlag"}, | ||||||
|         {0x00080002, &BOSS_U::RegisterNewArrivalEvent, "RegisterNewArrivalEvent"}, |         {IPC::MakeHeader(0x0008, 0, 2), &BOSS_U::RegisterNewArrivalEvent, "RegisterNewArrivalEvent"}, | ||||||
|         {0x00090040, &BOSS_U::SetOptoutFlag, "SetOptoutFlag"}, |         {IPC::MakeHeader(0x0009, 1, 0), &BOSS_U::SetOptoutFlag, "SetOptoutFlag"}, | ||||||
|         {0x000A0000, &BOSS_U::GetOptoutFlag, "GetOptoutFlag"}, |         {IPC::MakeHeader(0x000A, 0, 0), &BOSS_U::GetOptoutFlag, "GetOptoutFlag"}, | ||||||
|         {0x000B00C2, &BOSS_U::RegisterTask, "RegisterTask"}, |         {IPC::MakeHeader(0x000B, 3, 2), &BOSS_U::RegisterTask, "RegisterTask"}, | ||||||
|         {0x000C0082, &BOSS_U::UnregisterTask, "UnregisterTask"}, |         {IPC::MakeHeader(0x000C, 2, 2), &BOSS_U::UnregisterTask, "UnregisterTask"}, | ||||||
|         {0x000D0082, &BOSS_U::ReconfigureTask, "ReconfigureTask"}, |         {IPC::MakeHeader(0x000D, 2, 2), &BOSS_U::ReconfigureTask, "ReconfigureTask"}, | ||||||
|         {0x000E0000, &BOSS_U::GetTaskIdList, "GetTaskIdList"}, |         {IPC::MakeHeader(0x000E, 0, 0), &BOSS_U::GetTaskIdList, "GetTaskIdList"}, | ||||||
|         {0x000F0042, &BOSS_U::GetStepIdList, "GetStepIdList"}, |         {IPC::MakeHeader(0x000F, 1, 2), &BOSS_U::GetStepIdList, "GetStepIdList"}, | ||||||
|         {0x00100102, &BOSS_U::GetNsDataIdList, "GetNsDataIdList"}, |         {IPC::MakeHeader(0x0010, 4, 2), &BOSS_U::GetNsDataIdList, "GetNsDataIdList"}, | ||||||
|         {0x00110102, &BOSS_U::GetNsDataIdList1, "GetNsDataIdList1"}, |         {IPC::MakeHeader(0x0011, 4, 2), &BOSS_U::GetNsDataIdList1, "GetNsDataIdList1"}, | ||||||
|         {0x00120102, &BOSS_U::GetNsDataIdList2, "GetNsDataIdList2"}, |         {IPC::MakeHeader(0x0012, 4, 2), &BOSS_U::GetNsDataIdList2, "GetNsDataIdList2"}, | ||||||
|         {0x00130102, &BOSS_U::GetNsDataIdList3, "GetNsDataIdList3"}, |         {IPC::MakeHeader(0x0013, 4, 2), &BOSS_U::GetNsDataIdList3, "GetNsDataIdList3"}, | ||||||
|         {0x00140082, &BOSS_U::SendProperty, "SendProperty"}, |         {IPC::MakeHeader(0x0014, 2, 2), &BOSS_U::SendProperty, "SendProperty"}, | ||||||
|         {0x00150042, &BOSS_U::SendPropertyHandle, "SendPropertyHandle"}, |         {IPC::MakeHeader(0x0015, 1, 2), &BOSS_U::SendPropertyHandle, "SendPropertyHandle"}, | ||||||
|         {0x00160082, &BOSS_U::ReceiveProperty, "ReceiveProperty"}, |         {IPC::MakeHeader(0x0016, 2, 2), &BOSS_U::ReceiveProperty, "ReceiveProperty"}, | ||||||
|         {0x00170082, &BOSS_U::UpdateTaskInterval, "UpdateTaskInterval"}, |         {IPC::MakeHeader(0x0017, 2, 2), &BOSS_U::UpdateTaskInterval, "UpdateTaskInterval"}, | ||||||
|         {0x00180082, &BOSS_U::UpdateTaskCount, "UpdateTaskCount"}, |         {IPC::MakeHeader(0x0018, 2, 2), &BOSS_U::UpdateTaskCount, "UpdateTaskCount"}, | ||||||
|         {0x00190042, &BOSS_U::GetTaskInterval, "GetTaskInterval"}, |         {IPC::MakeHeader(0x0019, 1, 2), &BOSS_U::GetTaskInterval, "GetTaskInterval"}, | ||||||
|         {0x001A0042, &BOSS_U::GetTaskCount, "GetTaskCount"}, |         {IPC::MakeHeader(0x001A, 1, 2), &BOSS_U::GetTaskCount, "GetTaskCount"}, | ||||||
|         {0x001B0042, &BOSS_U::GetTaskServiceStatus, "GetTaskServiceStatus"}, |         {IPC::MakeHeader(0x001B, 1, 2), &BOSS_U::GetTaskServiceStatus, "GetTaskServiceStatus"}, | ||||||
|         {0x001C0042, &BOSS_U::StartTask, "StartTask"}, |         {IPC::MakeHeader(0x001C, 1, 2), &BOSS_U::StartTask, "StartTask"}, | ||||||
|         {0x001D0042, &BOSS_U::StartTaskImmediate, "StartTaskImmediate"}, |         {IPC::MakeHeader(0x001D, 1, 2), &BOSS_U::StartTaskImmediate, "StartTaskImmediate"}, | ||||||
|         {0x001E0042, &BOSS_U::CancelTask, "CancelTask"}, |         {IPC::MakeHeader(0x001E, 1, 2), &BOSS_U::CancelTask, "CancelTask"}, | ||||||
|         {0x001F0000, &BOSS_U::GetTaskFinishHandle, "GetTaskFinishHandle"}, |         {IPC::MakeHeader(0x001F, 0, 0), &BOSS_U::GetTaskFinishHandle, "GetTaskFinishHandle"}, | ||||||
|         {0x00200082, &BOSS_U::GetTaskState, "GetTaskState"}, |         {IPC::MakeHeader(0x0020, 2, 2), &BOSS_U::GetTaskState, "GetTaskState"}, | ||||||
|         {0x00210042, &BOSS_U::GetTaskResult, "GetTaskResult"}, |         {IPC::MakeHeader(0x0021, 1, 2), &BOSS_U::GetTaskResult, "GetTaskResult"}, | ||||||
|         {0x00220042, &BOSS_U::GetTaskCommErrorCode, "GetTaskCommErrorCode"}, |         {IPC::MakeHeader(0x0022, 1, 2), &BOSS_U::GetTaskCommErrorCode, "GetTaskCommErrorCode"}, | ||||||
|         {0x002300C2, &BOSS_U::GetTaskStatus, "GetTaskStatus"}, |         {IPC::MakeHeader(0x0023, 3, 2), &BOSS_U::GetTaskStatus, "GetTaskStatus"}, | ||||||
|         {0x00240082, &BOSS_U::GetTaskError, "GetTaskError"}, |         {IPC::MakeHeader(0x0024, 2, 2), &BOSS_U::GetTaskError, "GetTaskError"}, | ||||||
|         {0x00250082, &BOSS_U::GetTaskInfo, "GetTaskInfo"}, |         {IPC::MakeHeader(0x0025, 2, 2), &BOSS_U::GetTaskInfo, "GetTaskInfo"}, | ||||||
|         {0x00260040, &BOSS_U::DeleteNsData, "DeleteNsData"}, |         {IPC::MakeHeader(0x0026, 1, 0), &BOSS_U::DeleteNsData, "DeleteNsData"}, | ||||||
|         {0x002700C2, &BOSS_U::GetNsDataHeaderInfo, "GetNsDataHeaderInfo"}, |         {IPC::MakeHeader(0x0027, 3, 2), &BOSS_U::GetNsDataHeaderInfo, "GetNsDataHeaderInfo"}, | ||||||
|         {0x00280102, &BOSS_U::ReadNsData, "ReadNsData"}, |         {IPC::MakeHeader(0x0028, 4, 2), &BOSS_U::ReadNsData, "ReadNsData"}, | ||||||
|         {0x00290080, &BOSS_U::SetNsDataAdditionalInfo, "SetNsDataAdditionalInfo"}, |         {IPC::MakeHeader(0x0029, 2, 0), &BOSS_U::SetNsDataAdditionalInfo, "SetNsDataAdditionalInfo"}, | ||||||
|         {0x002A0040, &BOSS_U::GetNsDataAdditionalInfo, "GetNsDataAdditionalInfo"}, |         {IPC::MakeHeader(0x002A, 1, 0), &BOSS_U::GetNsDataAdditionalInfo, "GetNsDataAdditionalInfo"}, | ||||||
|         {0x002B0080, &BOSS_U::SetNsDataNewFlag, "SetNsDataNewFlag"}, |         {IPC::MakeHeader(0x002B, 2, 0), &BOSS_U::SetNsDataNewFlag, "SetNsDataNewFlag"}, | ||||||
|         {0x002C0040, &BOSS_U::GetNsDataNewFlag, "GetNsDataNewFlag"}, |         {IPC::MakeHeader(0x002C, 1, 0), &BOSS_U::GetNsDataNewFlag, "GetNsDataNewFlag"}, | ||||||
|         {0x002D0040, &BOSS_U::GetNsDataLastUpdate, "GetNsDataLastUpdate"}, |         {IPC::MakeHeader(0x002D, 1, 0), &BOSS_U::GetNsDataLastUpdate, "GetNsDataLastUpdate"}, | ||||||
|         {0x002E0040, &BOSS_U::GetErrorCode, "GetErrorCode"}, |         {IPC::MakeHeader(0x002E, 1, 0), &BOSS_U::GetErrorCode, "GetErrorCode"}, | ||||||
|         {0x002F0140, &BOSS_U::RegisterStorageEntry, "RegisterStorageEntry"}, |         {IPC::MakeHeader(0x002F, 5, 0), &BOSS_U::RegisterStorageEntry, "RegisterStorageEntry"}, | ||||||
|         {0x00300000, &BOSS_U::GetStorageEntryInfo, "GetStorageEntryInfo"}, |         {IPC::MakeHeader(0x0030, 0, 0), &BOSS_U::GetStorageEntryInfo, "GetStorageEntryInfo"}, | ||||||
|         {0x00310100, &BOSS_U::SetStorageOption, "SetStorageOption"}, |         {IPC::MakeHeader(0x0031, 4, 0), &BOSS_U::SetStorageOption, "SetStorageOption"}, | ||||||
|         {0x00320000, &BOSS_U::GetStorageOption, "GetStorageOption"}, |         {IPC::MakeHeader(0x0032, 0, 0), &BOSS_U::GetStorageOption, "GetStorageOption"}, | ||||||
|         {0x00330042, &BOSS_U::StartBgImmediate, "StartBgImmediate"}, |         {IPC::MakeHeader(0x0033, 1, 2), &BOSS_U::StartBgImmediate, "StartBgImmediate"}, | ||||||
|         {0x00340042, &BOSS_U::GetTaskProperty0, "GetTaskProperty0"}, |         {IPC::MakeHeader(0x0034, 1, 2), &BOSS_U::GetTaskProperty0, "GetTaskProperty0"}, | ||||||
|         {0x003500C2, &BOSS_U::RegisterImmediateTask, "RegisterImmediateTask"}, |         {IPC::MakeHeader(0x0035, 3, 2), &BOSS_U::RegisterImmediateTask, "RegisterImmediateTask"}, | ||||||
|         {0x00360084, &BOSS_U::SetTaskQuery, "SetTaskQuery"}, |         {IPC::MakeHeader(0x0036, 2, 4), &BOSS_U::SetTaskQuery, "SetTaskQuery"}, | ||||||
|         {0x00370084, &BOSS_U::GetTaskQuery, "GetTaskQuery"}, |         {IPC::MakeHeader(0x0037, 2, 4), &BOSS_U::GetTaskQuery, "GetTaskQuery"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -10,71 +10,70 @@ namespace Service::CAM { | |||||||
|  |  | ||||||
| CAM_C::CAM_C(std::shared_ptr<Module> cam) : Module::Interface(std::move(cam), "cam:c", 1) { | CAM_C::CAM_C(std::shared_ptr<Module> cam) : Module::Interface(std::move(cam), "cam:c", 1) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010040, &CAM_C::StartCapture, "StartCapture"}, |         // clang-format off | ||||||
|         {0x00020040, &CAM_C::StopCapture, "StopCapture"}, |         {IPC::MakeHeader(0x0001, 1, 0), &CAM_C::StartCapture, "StartCapture"}, | ||||||
|         {0x00030040, &CAM_C::IsBusy, "IsBusy"}, |         {IPC::MakeHeader(0x0002, 1, 0), &CAM_C::StopCapture, "StopCapture"}, | ||||||
|         {0x00040040, &CAM_C::ClearBuffer, "ClearBuffer"}, |         {IPC::MakeHeader(0x0003, 1, 0), &CAM_C::IsBusy, "IsBusy"}, | ||||||
|         {0x00050040, &CAM_C::GetVsyncInterruptEvent, "GetVsyncInterruptEvent"}, |         {IPC::MakeHeader(0x0004, 1, 0), &CAM_C::ClearBuffer, "ClearBuffer"}, | ||||||
|         {0x00060040, &CAM_C::GetBufferErrorInterruptEvent, "GetBufferErrorInterruptEvent"}, |         {IPC::MakeHeader(0x0005, 1, 0), &CAM_C::GetVsyncInterruptEvent, "GetVsyncInterruptEvent"}, | ||||||
|         {0x00070102, &CAM_C::SetReceiving, "SetReceiving"}, |         {IPC::MakeHeader(0x0006, 1, 0), &CAM_C::GetBufferErrorInterruptEvent, "GetBufferErrorInterruptEvent"}, | ||||||
|         {0x00080040, &CAM_C::IsFinishedReceiving, "IsFinishedReceiving"}, |         {IPC::MakeHeader(0x0007, 4, 2), &CAM_C::SetReceiving, "SetReceiving"}, | ||||||
|         {0x00090100, &CAM_C::SetTransferLines, "SetTransferLines"}, |         {IPC::MakeHeader(0x0008, 1, 0), &CAM_C::IsFinishedReceiving, "IsFinishedReceiving"}, | ||||||
|         {0x000A0080, &CAM_C::GetMaxLines, "GetMaxLines"}, |         {IPC::MakeHeader(0x0009, 4, 0), &CAM_C::SetTransferLines, "SetTransferLines"}, | ||||||
|         {0x000B0100, &CAM_C::SetTransferBytes, "SetTransferBytes"}, |         {IPC::MakeHeader(0x000A, 2, 0), &CAM_C::GetMaxLines, "GetMaxLines"}, | ||||||
|         {0x000C0040, &CAM_C::GetTransferBytes, "GetTransferBytes"}, |         {IPC::MakeHeader(0x000B, 4, 0), &CAM_C::SetTransferBytes, "SetTransferBytes"}, | ||||||
|         {0x000D0080, &CAM_C::GetMaxBytes, "GetMaxBytes"}, |         {IPC::MakeHeader(0x000C, 1, 0), &CAM_C::GetTransferBytes, "GetTransferBytes"}, | ||||||
|         {0x000E0080, &CAM_C::SetTrimming, "SetTrimming"}, |         {IPC::MakeHeader(0x000D, 2, 0), &CAM_C::GetMaxBytes, "GetMaxBytes"}, | ||||||
|         {0x000F0040, &CAM_C::IsTrimming, "IsTrimming"}, |         {IPC::MakeHeader(0x000E, 2, 0), &CAM_C::SetTrimming, "SetTrimming"}, | ||||||
|         {0x00100140, &CAM_C::SetTrimmingParams, "SetTrimmingParams"}, |         {IPC::MakeHeader(0x000F, 1, 0), &CAM_C::IsTrimming, "IsTrimming"}, | ||||||
|         {0x00110040, &CAM_C::GetTrimmingParams, "GetTrimmingParams"}, |         {IPC::MakeHeader(0x0010, 5, 0), &CAM_C::SetTrimmingParams, "SetTrimmingParams"}, | ||||||
|         {0x00120140, &CAM_C::SetTrimmingParamsCenter, "SetTrimmingParamsCenter"}, |         {IPC::MakeHeader(0x0011, 1, 0), &CAM_C::GetTrimmingParams, "GetTrimmingParams"}, | ||||||
|         {0x00130040, &CAM_C::Activate, "Activate"}, |         {IPC::MakeHeader(0x0012, 5, 0), &CAM_C::SetTrimmingParamsCenter, "SetTrimmingParamsCenter"}, | ||||||
|         {0x00140080, &CAM_C::SwitchContext, "SwitchContext"}, |         {IPC::MakeHeader(0x0013, 1, 0), &CAM_C::Activate, "Activate"}, | ||||||
|         {0x00150080, nullptr, "SetExposure"}, |         {IPC::MakeHeader(0x0014, 2, 0), &CAM_C::SwitchContext, "SwitchContext"}, | ||||||
|         {0x00160080, nullptr, "SetWhiteBalance"}, |         {IPC::MakeHeader(0x0015, 2, 0), nullptr, "SetExposure"}, | ||||||
|         {0x00170080, nullptr, "SetWhiteBalanceWithoutBaseUp"}, |         {IPC::MakeHeader(0x0016, 2, 0), nullptr, "SetWhiteBalance"}, | ||||||
|         {0x00180080, nullptr, "SetSharpness"}, |         {IPC::MakeHeader(0x0017, 2, 0), nullptr, "SetWhiteBalanceWithoutBaseUp"}, | ||||||
|         {0x00190080, nullptr, "SetAutoExposure"}, |         {IPC::MakeHeader(0x0018, 2, 0), nullptr, "SetSharpness"}, | ||||||
|         {0x001A0040, nullptr, "IsAutoExposure"}, |         {IPC::MakeHeader(0x0019, 2, 0), nullptr, "SetAutoExposure"}, | ||||||
|         {0x001B0080, nullptr, "SetAutoWhiteBalance"}, |         {IPC::MakeHeader(0x001A, 1, 0), nullptr, "IsAutoExposure"}, | ||||||
|         {0x001C0040, nullptr, "IsAutoWhiteBalance"}, |         {IPC::MakeHeader(0x001B, 2, 0), nullptr, "SetAutoWhiteBalance"}, | ||||||
|         {0x001D00C0, &CAM_C::FlipImage, "FlipImage"}, |         {IPC::MakeHeader(0x001C, 1, 0), nullptr, "IsAutoWhiteBalance"}, | ||||||
|         {0x001E0200, &CAM_C::SetDetailSize, "SetDetailSize"}, |         {IPC::MakeHeader(0x001D, 3, 0), &CAM_C::FlipImage, "FlipImage"}, | ||||||
|         {0x001F00C0, &CAM_C::SetSize, "SetSize"}, |         {IPC::MakeHeader(0x001E, 8, 0), &CAM_C::SetDetailSize, "SetDetailSize"}, | ||||||
|         {0x00200080, &CAM_C::SetFrameRate, "SetFrameRate"}, |         {IPC::MakeHeader(0x001F, 3, 0), &CAM_C::SetSize, "SetSize"}, | ||||||
|         {0x00210080, nullptr, "SetPhotoMode"}, |         {IPC::MakeHeader(0x0020, 2, 0), &CAM_C::SetFrameRate, "SetFrameRate"}, | ||||||
|         {0x002200C0, &CAM_C::SetEffect, "SetEffect"}, |         {IPC::MakeHeader(0x0021, 2, 0), nullptr, "SetPhotoMode"}, | ||||||
|         {0x00230080, nullptr, "SetContrast"}, |         {IPC::MakeHeader(0x0022, 3, 0), &CAM_C::SetEffect, "SetEffect"}, | ||||||
|         {0x00240080, nullptr, "SetLensCorrection"}, |         {IPC::MakeHeader(0x0023, 2, 0), nullptr, "SetContrast"}, | ||||||
|         {0x002500C0, &CAM_C::SetOutputFormat, "SetOutputFormat"}, |         {IPC::MakeHeader(0x0024, 2, 0), nullptr, "SetLensCorrection"}, | ||||||
|         {0x00260140, nullptr, "SetAutoExposureWindow"}, |         {IPC::MakeHeader(0x0025, 3, 0), &CAM_C::SetOutputFormat, "SetOutputFormat"}, | ||||||
|         {0x00270140, nullptr, "SetAutoWhiteBalanceWindow"}, |         {IPC::MakeHeader(0x0026, 5, 0), nullptr, "SetAutoExposureWindow"}, | ||||||
|         {0x00280080, nullptr, "SetNoiseFilter"}, |         {IPC::MakeHeader(0x0027, 5, 0), nullptr, "SetAutoWhiteBalanceWindow"}, | ||||||
|         {0x00290080, &CAM_C::SynchronizeVsyncTiming, "SynchronizeVsyncTiming"}, |         {IPC::MakeHeader(0x0028, 2, 0), nullptr, "SetNoiseFilter"}, | ||||||
|         {0x002A0080, &CAM_C::GetLatestVsyncTiming, "GetLatestVsyncTiming"}, |         {IPC::MakeHeader(0x0029, 2, 0), &CAM_C::SynchronizeVsyncTiming, "SynchronizeVsyncTiming"}, | ||||||
|         {0x002B0000, &CAM_C::GetStereoCameraCalibrationData, "GetStereoCameraCalibrationData"}, |         {IPC::MakeHeader(0x002A, 2, 0), &CAM_C::GetLatestVsyncTiming, "GetLatestVsyncTiming"}, | ||||||
|         {0x002C0400, nullptr, "SetStereoCameraCalibrationData"}, |         {IPC::MakeHeader(0x002B, 0, 0), &CAM_C::GetStereoCameraCalibrationData, "GetStereoCameraCalibrationData"}, | ||||||
|         {0x002D00C0, nullptr, "WriteRegisterI2c"}, |         {IPC::MakeHeader(0x002C, 16, 0), nullptr, "SetStereoCameraCalibrationData"}, | ||||||
|         {0x002E00C0, nullptr, "WriteMcuVariableI2c"}, |         {IPC::MakeHeader(0x002D, 3, 0), nullptr, "WriteRegisterI2c"}, | ||||||
|         {0x002F0080, nullptr, "ReadRegisterI2cExclusive"}, |         {IPC::MakeHeader(0x002E, 3, 0), nullptr, "WriteMcuVariableI2c"}, | ||||||
|         {0x00300080, nullptr, "ReadMcuVariableI2cExclusive"}, |         {IPC::MakeHeader(0x002F, 2, 0), nullptr, "ReadRegisterI2cExclusive"}, | ||||||
|         {0x00310180, nullptr, "SetImageQualityCalibrationData"}, |         {IPC::MakeHeader(0x0030, 2, 0), nullptr, "ReadMcuVariableI2cExclusive"}, | ||||||
|         {0x00320000, nullptr, "GetImageQualityCalibrationData"}, |         {IPC::MakeHeader(0x0031, 6, 0), nullptr, "SetImageQualityCalibrationData"}, | ||||||
|         {0x003302C0, &CAM_C::SetPackageParameterWithoutContext, |         {IPC::MakeHeader(0x0032, 0, 0), nullptr, "GetImageQualityCalibrationData"}, | ||||||
|          "SetPackageParameterWithoutContext"}, |         {IPC::MakeHeader(0x0033, 11, 0), &CAM_C::SetPackageParameterWithoutContext, "SetPackageParameterWithoutContext"}, | ||||||
|         {0x00340140, &CAM_C::SetPackageParameterWithContext, "SetPackageParameterWithContext"}, |         {IPC::MakeHeader(0x0034, 5, 0), &CAM_C::SetPackageParameterWithContext, "SetPackageParameterWithContext"}, | ||||||
|         {0x003501C0, &CAM_C::SetPackageParameterWithContextDetail, |         {IPC::MakeHeader(0x0035, 7, 0), &CAM_C::SetPackageParameterWithContextDetail, "SetPackageParameterWithContextDetail"}, | ||||||
|          "SetPackageParameterWithContextDetail"}, |         {IPC::MakeHeader(0x0036, 0, 0), &CAM_C::GetSuitableY2rStandardCoefficient, "GetSuitableY2rStandardCoefficient"}, | ||||||
|         {0x00360000, &CAM_C::GetSuitableY2rStandardCoefficient, |         {IPC::MakeHeader(0x0037, 8, 2), nullptr, "PlayShutterSoundWithWave"}, | ||||||
|          "GetSuitableY2rStandardCoefficient"}, |         {IPC::MakeHeader(0x0038, 1, 0), &CAM_C::PlayShutterSound, "PlayShutterSound"}, | ||||||
|         {0x00370202, nullptr, "PlayShutterSoundWithWave"}, |         {IPC::MakeHeader(0x0039, 0, 0), &CAM_C::DriverInitialize, "DriverInitialize"}, | ||||||
|         {0x00380040, &CAM_C::PlayShutterSound, "PlayShutterSound"}, |         {IPC::MakeHeader(0x003A, 0, 0), &CAM_C::DriverFinalize, "DriverFinalize"}, | ||||||
|         {0x00390000, &CAM_C::DriverInitialize, "DriverInitialize"}, |         {IPC::MakeHeader(0x003B, 0, 0), nullptr, "GetActivatedCamera"}, | ||||||
|         {0x003A0000, &CAM_C::DriverFinalize, "DriverFinalize"}, |         {IPC::MakeHeader(0x003C, 0, 0), nullptr, "GetSleepCamera"}, | ||||||
|         {0x003B0000, nullptr, "GetActivatedCamera"}, |         {IPC::MakeHeader(0x003D, 1, 0), nullptr, "SetSleepCamera"}, | ||||||
|         {0x003C0000, nullptr, "GetSleepCamera"}, |         {IPC::MakeHeader(0x003E, 1, 0), nullptr, "SetBrightnessSynchronization"}, | ||||||
|         {0x003D0040, nullptr, "SetSleepCamera"}, |         // clang-format on | ||||||
|         {0x003E0040, nullptr, "SetBrightnessSynchronization"}, |  | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -10,71 +10,70 @@ namespace Service::CAM { | |||||||
|  |  | ||||||
| CAM_S::CAM_S(std::shared_ptr<Module> cam) : Module::Interface(std::move(cam), "cam:s", 1) { | CAM_S::CAM_S(std::shared_ptr<Module> cam) : Module::Interface(std::move(cam), "cam:s", 1) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010040, &CAM_S::StartCapture, "StartCapture"}, |         // clang-format off | ||||||
|         {0x00020040, &CAM_S::StopCapture, "StopCapture"}, |         {IPC::MakeHeader(0x0001, 1, 0), &CAM_S::StartCapture, "StartCapture"}, | ||||||
|         {0x00030040, &CAM_S::IsBusy, "IsBusy"}, |         {IPC::MakeHeader(0x0002, 1, 0), &CAM_S::StopCapture, "StopCapture"}, | ||||||
|         {0x00040040, &CAM_S::ClearBuffer, "ClearBuffer"}, |         {IPC::MakeHeader(0x0003, 1, 0), &CAM_S::IsBusy, "IsBusy"}, | ||||||
|         {0x00050040, &CAM_S::GetVsyncInterruptEvent, "GetVsyncInterruptEvent"}, |         {IPC::MakeHeader(0x0004, 1, 0), &CAM_S::ClearBuffer, "ClearBuffer"}, | ||||||
|         {0x00060040, &CAM_S::GetBufferErrorInterruptEvent, "GetBufferErrorInterruptEvent"}, |         {IPC::MakeHeader(0x0005, 1, 0), &CAM_S::GetVsyncInterruptEvent, "GetVsyncInterruptEvent"}, | ||||||
|         {0x00070102, &CAM_S::SetReceiving, "SetReceiving"}, |         {IPC::MakeHeader(0x0006, 1, 0), &CAM_S::GetBufferErrorInterruptEvent, "GetBufferErrorInterruptEvent"}, | ||||||
|         {0x00080040, &CAM_S::IsFinishedReceiving, "IsFinishedReceiving"}, |         {IPC::MakeHeader(0x0007, 4, 2), &CAM_S::SetReceiving, "SetReceiving"}, | ||||||
|         {0x00090100, &CAM_S::SetTransferLines, "SetTransferLines"}, |         {IPC::MakeHeader(0x0008, 1, 0), &CAM_S::IsFinishedReceiving, "IsFinishedReceiving"}, | ||||||
|         {0x000A0080, &CAM_S::GetMaxLines, "GetMaxLines"}, |         {IPC::MakeHeader(0x0009, 4, 0), &CAM_S::SetTransferLines, "SetTransferLines"}, | ||||||
|         {0x000B0100, &CAM_S::SetTransferBytes, "SetTransferBytes"}, |         {IPC::MakeHeader(0x000A, 2, 0), &CAM_S::GetMaxLines, "GetMaxLines"}, | ||||||
|         {0x000C0040, &CAM_S::GetTransferBytes, "GetTransferBytes"}, |         {IPC::MakeHeader(0x000B, 4, 0), &CAM_S::SetTransferBytes, "SetTransferBytes"}, | ||||||
|         {0x000D0080, &CAM_S::GetMaxBytes, "GetMaxBytes"}, |         {IPC::MakeHeader(0x000C, 1, 0), &CAM_S::GetTransferBytes, "GetTransferBytes"}, | ||||||
|         {0x000E0080, &CAM_S::SetTrimming, "SetTrimming"}, |         {IPC::MakeHeader(0x000D, 2, 0), &CAM_S::GetMaxBytes, "GetMaxBytes"}, | ||||||
|         {0x000F0040, &CAM_S::IsTrimming, "IsTrimming"}, |         {IPC::MakeHeader(0x000E, 2, 0), &CAM_S::SetTrimming, "SetTrimming"}, | ||||||
|         {0x00100140, &CAM_S::SetTrimmingParams, "SetTrimmingParams"}, |         {IPC::MakeHeader(0x000F, 1, 0), &CAM_S::IsTrimming, "IsTrimming"}, | ||||||
|         {0x00110040, &CAM_S::GetTrimmingParams, "GetTrimmingParams"}, |         {IPC::MakeHeader(0x0010, 5, 0), &CAM_S::SetTrimmingParams, "SetTrimmingParams"}, | ||||||
|         {0x00120140, &CAM_S::SetTrimmingParamsCenter, "SetTrimmingParamsCenter"}, |         {IPC::MakeHeader(0x0011, 1, 0), &CAM_S::GetTrimmingParams, "GetTrimmingParams"}, | ||||||
|         {0x00130040, &CAM_S::Activate, "Activate"}, |         {IPC::MakeHeader(0x0012, 5, 0), &CAM_S::SetTrimmingParamsCenter, "SetTrimmingParamsCenter"}, | ||||||
|         {0x00140080, &CAM_S::SwitchContext, "SwitchContext"}, |         {IPC::MakeHeader(0x0013, 1, 0), &CAM_S::Activate, "Activate"}, | ||||||
|         {0x00150080, nullptr, "SetExposure"}, |         {IPC::MakeHeader(0x0014, 2, 0), &CAM_S::SwitchContext, "SwitchContext"}, | ||||||
|         {0x00160080, nullptr, "SetWhiteBalance"}, |         {IPC::MakeHeader(0x0015, 2, 0), nullptr, "SetExposure"}, | ||||||
|         {0x00170080, nullptr, "SetWhiteBalanceWithoutBaseUp"}, |         {IPC::MakeHeader(0x0016, 2, 0), nullptr, "SetWhiteBalance"}, | ||||||
|         {0x00180080, nullptr, "SetSharpness"}, |         {IPC::MakeHeader(0x0017, 2, 0), nullptr, "SetWhiteBalanceWithoutBaseUp"}, | ||||||
|         {0x00190080, nullptr, "SetAutoExposure"}, |         {IPC::MakeHeader(0x0018, 2, 0), nullptr, "SetSharpness"}, | ||||||
|         {0x001A0040, nullptr, "IsAutoExposure"}, |         {IPC::MakeHeader(0x0019, 2, 0), nullptr, "SetAutoExposure"}, | ||||||
|         {0x001B0080, nullptr, "SetAutoWhiteBalance"}, |         {IPC::MakeHeader(0x001A, 1, 0), nullptr, "IsAutoExposure"}, | ||||||
|         {0x001C0040, nullptr, "IsAutoWhiteBalance"}, |         {IPC::MakeHeader(0x001B, 2, 0), nullptr, "SetAutoWhiteBalance"}, | ||||||
|         {0x001D00C0, &CAM_S::FlipImage, "FlipImage"}, |         {IPC::MakeHeader(0x001C, 1, 0), nullptr, "IsAutoWhiteBalance"}, | ||||||
|         {0x001E0200, &CAM_S::SetDetailSize, "SetDetailSize"}, |         {IPC::MakeHeader(0x001D, 3, 0), &CAM_S::FlipImage, "FlipImage"}, | ||||||
|         {0x001F00C0, &CAM_S::SetSize, "SetSize"}, |         {IPC::MakeHeader(0x001E, 8, 0), &CAM_S::SetDetailSize, "SetDetailSize"}, | ||||||
|         {0x00200080, &CAM_S::SetFrameRate, "SetFrameRate"}, |         {IPC::MakeHeader(0x001F, 3, 0), &CAM_S::SetSize, "SetSize"}, | ||||||
|         {0x00210080, nullptr, "SetPhotoMode"}, |         {IPC::MakeHeader(0x0020, 2, 0), &CAM_S::SetFrameRate, "SetFrameRate"}, | ||||||
|         {0x002200C0, &CAM_S::SetEffect, "SetEffect"}, |         {IPC::MakeHeader(0x0021, 2, 0), nullptr, "SetPhotoMode"}, | ||||||
|         {0x00230080, nullptr, "SetContrast"}, |         {IPC::MakeHeader(0x0022, 3, 0), &CAM_S::SetEffect, "SetEffect"}, | ||||||
|         {0x00240080, nullptr, "SetLensCorrection"}, |         {IPC::MakeHeader(0x0023, 2, 0), nullptr, "SetContrast"}, | ||||||
|         {0x002500C0, &CAM_S::SetOutputFormat, "SetOutputFormat"}, |         {IPC::MakeHeader(0x0024, 2, 0), nullptr, "SetLensCorrection"}, | ||||||
|         {0x00260140, nullptr, "SetAutoExposureWindow"}, |         {IPC::MakeHeader(0x0025, 3, 0), &CAM_S::SetOutputFormat, "SetOutputFormat"}, | ||||||
|         {0x00270140, nullptr, "SetAutoWhiteBalanceWindow"}, |         {IPC::MakeHeader(0x0026, 5, 0), nullptr, "SetAutoExposureWindow"}, | ||||||
|         {0x00280080, nullptr, "SetNoiseFilter"}, |         {IPC::MakeHeader(0x0027, 5, 0), nullptr, "SetAutoWhiteBalanceWindow"}, | ||||||
|         {0x00290080, &CAM_S::SynchronizeVsyncTiming, "SynchronizeVsyncTiming"}, |         {IPC::MakeHeader(0x0028, 2, 0), nullptr, "SetNoiseFilter"}, | ||||||
|         {0x002A0080, &CAM_S::GetLatestVsyncTiming, "GetLatestVsyncTiming"}, |         {IPC::MakeHeader(0x0029, 2, 0), &CAM_S::SynchronizeVsyncTiming, "SynchronizeVsyncTiming"}, | ||||||
|         {0x002B0000, &CAM_S::GetStereoCameraCalibrationData, "GetStereoCameraCalibrationData"}, |         {IPC::MakeHeader(0x002A, 2, 0), &CAM_S::GetLatestVsyncTiming, "GetLatestVsyncTiming"}, | ||||||
|         {0x002C0400, nullptr, "SetStereoCameraCalibrationData"}, |         {IPC::MakeHeader(0x002B, 0, 0), &CAM_S::GetStereoCameraCalibrationData, "GetStereoCameraCalibrationData"}, | ||||||
|         {0x002D00C0, nullptr, "WriteRegisterI2c"}, |         {IPC::MakeHeader(0x002C, 16, 0), nullptr, "SetStereoCameraCalibrationData"}, | ||||||
|         {0x002E00C0, nullptr, "WriteMcuVariableI2c"}, |         {IPC::MakeHeader(0x002D, 3, 0), nullptr, "WriteRegisterI2c"}, | ||||||
|         {0x002F0080, nullptr, "ReadRegisterI2cExclusive"}, |         {IPC::MakeHeader(0x002E, 3, 0), nullptr, "WriteMcuVariableI2c"}, | ||||||
|         {0x00300080, nullptr, "ReadMcuVariableI2cExclusive"}, |         {IPC::MakeHeader(0x002F, 2, 0), nullptr, "ReadRegisterI2cExclusive"}, | ||||||
|         {0x00310180, nullptr, "SetImageQualityCalibrationData"}, |         {IPC::MakeHeader(0x0030, 2, 0), nullptr, "ReadMcuVariableI2cExclusive"}, | ||||||
|         {0x00320000, nullptr, "GetImageQualityCalibrationData"}, |         {IPC::MakeHeader(0x0031, 6, 0), nullptr, "SetImageQualityCalibrationData"}, | ||||||
|         {0x003302C0, &CAM_S::SetPackageParameterWithoutContext, |         {IPC::MakeHeader(0x0032, 0, 0), nullptr, "GetImageQualityCalibrationData"}, | ||||||
|          "SetPackageParameterWithoutContext"}, |         {IPC::MakeHeader(0x0033, 11, 0), &CAM_S::SetPackageParameterWithoutContext, "SetPackageParameterWithoutContext"}, | ||||||
|         {0x00340140, &CAM_S::SetPackageParameterWithContext, "SetPackageParameterWithContext"}, |         {IPC::MakeHeader(0x0034, 5, 0), &CAM_S::SetPackageParameterWithContext, "SetPackageParameterWithContext"}, | ||||||
|         {0x003501C0, &CAM_S::SetPackageParameterWithContextDetail, |         {IPC::MakeHeader(0x0035, 7, 0), &CAM_S::SetPackageParameterWithContextDetail, "SetPackageParameterWithContextDetail"}, | ||||||
|          "SetPackageParameterWithContextDetail"}, |         {IPC::MakeHeader(0x0036, 0, 0), &CAM_S::GetSuitableY2rStandardCoefficient, "GetSuitableY2rStandardCoefficient"}, | ||||||
|         {0x00360000, &CAM_S::GetSuitableY2rStandardCoefficient, |         {IPC::MakeHeader(0x0037, 8, 2), nullptr, "PlayShutterSoundWithWave"}, | ||||||
|          "GetSuitableY2rStandardCoefficient"}, |         {IPC::MakeHeader(0x0038, 1, 0), &CAM_S::PlayShutterSound, "PlayShutterSound"}, | ||||||
|         {0x00370202, nullptr, "PlayShutterSoundWithWave"}, |         {IPC::MakeHeader(0x0039, 0, 0), &CAM_S::DriverInitialize, "DriverInitialize"}, | ||||||
|         {0x00380040, &CAM_S::PlayShutterSound, "PlayShutterSound"}, |         {IPC::MakeHeader(0x003A, 0, 0), &CAM_S::DriverFinalize, "DriverFinalize"}, | ||||||
|         {0x00390000, &CAM_S::DriverInitialize, "DriverInitialize"}, |         {IPC::MakeHeader(0x003B, 0, 0), nullptr, "GetActivatedCamera"}, | ||||||
|         {0x003A0000, &CAM_S::DriverFinalize, "DriverFinalize"}, |         {IPC::MakeHeader(0x003C, 0, 0), nullptr, "GetSleepCamera"}, | ||||||
|         {0x003B0000, nullptr, "GetActivatedCamera"}, |         {IPC::MakeHeader(0x003D, 1, 0), nullptr, "SetSleepCamera"}, | ||||||
|         {0x003C0000, nullptr, "GetSleepCamera"}, |         {IPC::MakeHeader(0x003E, 1, 0), nullptr, "SetBrightnessSynchronization"}, | ||||||
|         {0x003D0040, nullptr, "SetSleepCamera"}, |         // clang-format on | ||||||
|         {0x003E0040, nullptr, "SetBrightnessSynchronization"}, |  | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -10,71 +10,70 @@ namespace Service::CAM { | |||||||
|  |  | ||||||
| CAM_U::CAM_U(std::shared_ptr<Module> cam) : Module::Interface(std::move(cam), "cam:u", 1) { | CAM_U::CAM_U(std::shared_ptr<Module> cam) : Module::Interface(std::move(cam), "cam:u", 1) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010040, &CAM_U::StartCapture, "StartCapture"}, |         // clang-format off | ||||||
|         {0x00020040, &CAM_U::StopCapture, "StopCapture"}, |         {IPC::MakeHeader(0x0001, 1, 0), &CAM_U::StartCapture, "StartCapture"}, | ||||||
|         {0x00030040, &CAM_U::IsBusy, "IsBusy"}, |         {IPC::MakeHeader(0x0002, 1, 0), &CAM_U::StopCapture, "StopCapture"}, | ||||||
|         {0x00040040, &CAM_U::ClearBuffer, "ClearBuffer"}, |         {IPC::MakeHeader(0x0003, 1, 0), &CAM_U::IsBusy, "IsBusy"}, | ||||||
|         {0x00050040, &CAM_U::GetVsyncInterruptEvent, "GetVsyncInterruptEvent"}, |         {IPC::MakeHeader(0x0004, 1, 0), &CAM_U::ClearBuffer, "ClearBuffer"}, | ||||||
|         {0x00060040, &CAM_U::GetBufferErrorInterruptEvent, "GetBufferErrorInterruptEvent"}, |         {IPC::MakeHeader(0x0005, 1, 0), &CAM_U::GetVsyncInterruptEvent, "GetVsyncInterruptEvent"}, | ||||||
|         {0x00070102, &CAM_U::SetReceiving, "SetReceiving"}, |         {IPC::MakeHeader(0x0006, 1, 0), &CAM_U::GetBufferErrorInterruptEvent, "GetBufferErrorInterruptEvent"}, | ||||||
|         {0x00080040, &CAM_U::IsFinishedReceiving, "IsFinishedReceiving"}, |         {IPC::MakeHeader(0x0007, 4, 2), &CAM_U::SetReceiving, "SetReceiving"}, | ||||||
|         {0x00090100, &CAM_U::SetTransferLines, "SetTransferLines"}, |         {IPC::MakeHeader(0x0008, 1, 0), &CAM_U::IsFinishedReceiving, "IsFinishedReceiving"}, | ||||||
|         {0x000A0080, &CAM_U::GetMaxLines, "GetMaxLines"}, |         {IPC::MakeHeader(0x0009, 4, 0), &CAM_U::SetTransferLines, "SetTransferLines"}, | ||||||
|         {0x000B0100, &CAM_U::SetTransferBytes, "SetTransferBytes"}, |         {IPC::MakeHeader(0x000A, 2, 0), &CAM_U::GetMaxLines, "GetMaxLines"}, | ||||||
|         {0x000C0040, &CAM_U::GetTransferBytes, "GetTransferBytes"}, |         {IPC::MakeHeader(0x000B, 4, 0), &CAM_U::SetTransferBytes, "SetTransferBytes"}, | ||||||
|         {0x000D0080, &CAM_U::GetMaxBytes, "GetMaxBytes"}, |         {IPC::MakeHeader(0x000C, 1, 0), &CAM_U::GetTransferBytes, "GetTransferBytes"}, | ||||||
|         {0x000E0080, &CAM_U::SetTrimming, "SetTrimming"}, |         {IPC::MakeHeader(0x000D, 2, 0), &CAM_U::GetMaxBytes, "GetMaxBytes"}, | ||||||
|         {0x000F0040, &CAM_U::IsTrimming, "IsTrimming"}, |         {IPC::MakeHeader(0x000E, 2, 0), &CAM_U::SetTrimming, "SetTrimming"}, | ||||||
|         {0x00100140, &CAM_U::SetTrimmingParams, "SetTrimmingParams"}, |         {IPC::MakeHeader(0x000F, 1, 0), &CAM_U::IsTrimming, "IsTrimming"}, | ||||||
|         {0x00110040, &CAM_U::GetTrimmingParams, "GetTrimmingParams"}, |         {IPC::MakeHeader(0x0010, 5, 0), &CAM_U::SetTrimmingParams, "SetTrimmingParams"}, | ||||||
|         {0x00120140, &CAM_U::SetTrimmingParamsCenter, "SetTrimmingParamsCenter"}, |         {IPC::MakeHeader(0x0011, 1, 0), &CAM_U::GetTrimmingParams, "GetTrimmingParams"}, | ||||||
|         {0x00130040, &CAM_U::Activate, "Activate"}, |         {IPC::MakeHeader(0x0012, 5, 0), &CAM_U::SetTrimmingParamsCenter, "SetTrimmingParamsCenter"}, | ||||||
|         {0x00140080, &CAM_U::SwitchContext, "SwitchContext"}, |         {IPC::MakeHeader(0x0013, 1, 0), &CAM_U::Activate, "Activate"}, | ||||||
|         {0x00150080, nullptr, "SetExposure"}, |         {IPC::MakeHeader(0x0014, 2, 0), &CAM_U::SwitchContext, "SwitchContext"}, | ||||||
|         {0x00160080, nullptr, "SetWhiteBalance"}, |         {IPC::MakeHeader(0x0015, 2, 0), nullptr, "SetExposure"}, | ||||||
|         {0x00170080, nullptr, "SetWhiteBalanceWithoutBaseUp"}, |         {IPC::MakeHeader(0x0016, 2, 0), nullptr, "SetWhiteBalance"}, | ||||||
|         {0x00180080, nullptr, "SetSharpness"}, |         {IPC::MakeHeader(0x0017, 2, 0), nullptr, "SetWhiteBalanceWithoutBaseUp"}, | ||||||
|         {0x00190080, nullptr, "SetAutoExposure"}, |         {IPC::MakeHeader(0x0018, 2, 0), nullptr, "SetSharpness"}, | ||||||
|         {0x001A0040, nullptr, "IsAutoExposure"}, |         {IPC::MakeHeader(0x0019, 2, 0), nullptr, "SetAutoExposure"}, | ||||||
|         {0x001B0080, nullptr, "SetAutoWhiteBalance"}, |         {IPC::MakeHeader(0x001A, 1, 0), nullptr, "IsAutoExposure"}, | ||||||
|         {0x001C0040, nullptr, "IsAutoWhiteBalance"}, |         {IPC::MakeHeader(0x001B, 2, 0), nullptr, "SetAutoWhiteBalance"}, | ||||||
|         {0x001D00C0, &CAM_U::FlipImage, "FlipImage"}, |         {IPC::MakeHeader(0x001C, 1, 0), nullptr, "IsAutoWhiteBalance"}, | ||||||
|         {0x001E0200, &CAM_U::SetDetailSize, "SetDetailSize"}, |         {IPC::MakeHeader(0x001D, 3, 0), &CAM_U::FlipImage, "FlipImage"}, | ||||||
|         {0x001F00C0, &CAM_U::SetSize, "SetSize"}, |         {IPC::MakeHeader(0x001E, 8, 0), &CAM_U::SetDetailSize, "SetDetailSize"}, | ||||||
|         {0x00200080, &CAM_U::SetFrameRate, "SetFrameRate"}, |         {IPC::MakeHeader(0x001F, 3, 0), &CAM_U::SetSize, "SetSize"}, | ||||||
|         {0x00210080, nullptr, "SetPhotoMode"}, |         {IPC::MakeHeader(0x0020, 2, 0), &CAM_U::SetFrameRate, "SetFrameRate"}, | ||||||
|         {0x002200C0, &CAM_U::SetEffect, "SetEffect"}, |         {IPC::MakeHeader(0x0021, 2, 0), nullptr, "SetPhotoMode"}, | ||||||
|         {0x00230080, nullptr, "SetContrast"}, |         {IPC::MakeHeader(0x0022, 3, 0), &CAM_U::SetEffect, "SetEffect"}, | ||||||
|         {0x00240080, nullptr, "SetLensCorrection"}, |         {IPC::MakeHeader(0x0023, 2, 0), nullptr, "SetContrast"}, | ||||||
|         {0x002500C0, &CAM_U::SetOutputFormat, "SetOutputFormat"}, |         {IPC::MakeHeader(0x0024, 2, 0), nullptr, "SetLensCorrection"}, | ||||||
|         {0x00260140, nullptr, "SetAutoExposureWindow"}, |         {IPC::MakeHeader(0x0025, 3, 0), &CAM_U::SetOutputFormat, "SetOutputFormat"}, | ||||||
|         {0x00270140, nullptr, "SetAutoWhiteBalanceWindow"}, |         {IPC::MakeHeader(0x0026, 5, 0), nullptr, "SetAutoExposureWindow"}, | ||||||
|         {0x00280080, nullptr, "SetNoiseFilter"}, |         {IPC::MakeHeader(0x0027, 5, 0), nullptr, "SetAutoWhiteBalanceWindow"}, | ||||||
|         {0x00290080, &CAM_U::SynchronizeVsyncTiming, "SynchronizeVsyncTiming"}, |         {IPC::MakeHeader(0x0028, 2, 0), nullptr, "SetNoiseFilter"}, | ||||||
|         {0x002A0080, &CAM_U::GetLatestVsyncTiming, "GetLatestVsyncTiming"}, |         {IPC::MakeHeader(0x0029, 2, 0), &CAM_U::SynchronizeVsyncTiming, "SynchronizeVsyncTiming"}, | ||||||
|         {0x002B0000, &CAM_U::GetStereoCameraCalibrationData, "GetStereoCameraCalibrationData"}, |         {IPC::MakeHeader(0x002A, 2, 0), &CAM_U::GetLatestVsyncTiming, "GetLatestVsyncTiming"}, | ||||||
|         {0x002C0400, nullptr, "SetStereoCameraCalibrationData"}, |         {IPC::MakeHeader(0x002B, 0, 0), &CAM_U::GetStereoCameraCalibrationData, "GetStereoCameraCalibrationData"}, | ||||||
|         {0x002D00C0, nullptr, "WriteRegisterI2c"}, |         {IPC::MakeHeader(0x002C, 16, 0), nullptr, "SetStereoCameraCalibrationData"}, | ||||||
|         {0x002E00C0, nullptr, "WriteMcuVariableI2c"}, |         {IPC::MakeHeader(0x002D, 3, 0), nullptr, "WriteRegisterI2c"}, | ||||||
|         {0x002F0080, nullptr, "ReadRegisterI2cExclusive"}, |         {IPC::MakeHeader(0x002E, 3, 0), nullptr, "WriteMcuVariableI2c"}, | ||||||
|         {0x00300080, nullptr, "ReadMcuVariableI2cExclusive"}, |         {IPC::MakeHeader(0x002F, 2, 0), nullptr, "ReadRegisterI2cExclusive"}, | ||||||
|         {0x00310180, nullptr, "SetImageQualityCalibrationData"}, |         {IPC::MakeHeader(0x0030, 2, 0), nullptr, "ReadMcuVariableI2cExclusive"}, | ||||||
|         {0x00320000, nullptr, "GetImageQualityCalibrationData"}, |         {IPC::MakeHeader(0x0031, 6, 0), nullptr, "SetImageQualityCalibrationData"}, | ||||||
|         {0x003302C0, &CAM_U::SetPackageParameterWithoutContext, |         {IPC::MakeHeader(0x0032, 0, 0), nullptr, "GetImageQualityCalibrationData"}, | ||||||
|          "SetPackageParameterWithoutContext"}, |         {IPC::MakeHeader(0x0033, 11, 0), &CAM_U::SetPackageParameterWithoutContext, "SetPackageParameterWithoutContext"}, | ||||||
|         {0x00340140, &CAM_U::SetPackageParameterWithContext, "SetPackageParameterWithContext"}, |         {IPC::MakeHeader(0x0034, 5, 0), &CAM_U::SetPackageParameterWithContext, "SetPackageParameterWithContext"}, | ||||||
|         {0x003501C0, &CAM_U::SetPackageParameterWithContextDetail, |         {IPC::MakeHeader(0x0035, 7, 0), &CAM_U::SetPackageParameterWithContextDetail, "SetPackageParameterWithContextDetail"}, | ||||||
|          "SetPackageParameterWithContextDetail"}, |         {IPC::MakeHeader(0x0036, 0, 0), &CAM_U::GetSuitableY2rStandardCoefficient, "GetSuitableY2rStandardCoefficient"}, | ||||||
|         {0x00360000, &CAM_U::GetSuitableY2rStandardCoefficient, |         {IPC::MakeHeader(0x0037, 8, 2), nullptr, "PlayShutterSoundWithWave"}, | ||||||
|          "GetSuitableY2rStandardCoefficient"}, |         {IPC::MakeHeader(0x0038, 1, 0), &CAM_U::PlayShutterSound, "PlayShutterSound"}, | ||||||
|         {0x00370202, nullptr, "PlayShutterSoundWithWave"}, |         {IPC::MakeHeader(0x0039, 0, 0), &CAM_U::DriverInitialize, "DriverInitialize"}, | ||||||
|         {0x00380040, &CAM_U::PlayShutterSound, "PlayShutterSound"}, |         {IPC::MakeHeader(0x003A, 0, 0), &CAM_U::DriverFinalize, "DriverFinalize"}, | ||||||
|         {0x00390000, &CAM_U::DriverInitialize, "DriverInitialize"}, |         {IPC::MakeHeader(0x003B, 0, 0), nullptr, "GetActivatedCamera"}, | ||||||
|         {0x003A0000, &CAM_U::DriverFinalize, "DriverFinalize"}, |         {IPC::MakeHeader(0x003C, 0, 0), nullptr, "GetSleepCamera"}, | ||||||
|         {0x003B0000, nullptr, "GetActivatedCamera"}, |         {IPC::MakeHeader(0x003D, 1, 0), nullptr, "SetSleepCamera"}, | ||||||
|         {0x003C0000, nullptr, "GetSleepCamera"}, |         {IPC::MakeHeader(0x003E, 1, 0), nullptr, "SetBrightnessSynchronization"}, | ||||||
|         {0x003D0040, nullptr, "SetSleepCamera"}, |         // clang-format on | ||||||
|         {0x003E0040, nullptr, "SetBrightnessSynchronization"}, |  | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -13,10 +13,10 @@ CECD_NDM::CECD_NDM(std::shared_ptr<Module> cecd) | |||||||
|     : Module::Interface(std::move(cecd), "cecd:ndm", DefaultMaxSessions) { |     : Module::Interface(std::move(cecd), "cecd:ndm", DefaultMaxSessions) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010000, nullptr, "Initialize"}, |         {IPC::MakeHeader(0x0001, 0, 0), nullptr, "Initialize"}, | ||||||
|         {0x00020000, nullptr, "Deinitialize"}, |         {IPC::MakeHeader(0x0002, 0, 0), nullptr, "Deinitialize"}, | ||||||
|         {0x00030000, nullptr, "ResumeDaemon"}, |         {IPC::MakeHeader(0x0003, 0, 0), nullptr, "ResumeDaemon"}, | ||||||
|         {0x00040040, nullptr, "SuspendDaemon"}, |         {IPC::MakeHeader(0x0004, 1, 0), nullptr, "SuspendDaemon"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -14,28 +14,28 @@ CECD_S::CECD_S(std::shared_ptr<Module> cecd) | |||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // cecd:u shared commands |         // cecd:u shared commands | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x000100C2, &CECD_S::Open, "Open"}, |         {IPC::MakeHeader(0x0001, 3, 2), &CECD_S::Open, "Open"}, | ||||||
|         {0x00020042, &CECD_S::Read, "Read"}, |         {IPC::MakeHeader(0x0002, 1, 2), &CECD_S::Read, "Read"}, | ||||||
|         {0x00030104, &CECD_S::ReadMessage, "ReadMessage"}, |         {IPC::MakeHeader(0x0003, 4, 4), &CECD_S::ReadMessage, "ReadMessage"}, | ||||||
|         {0x00040106, &CECD_S::ReadMessageWithHMAC, "ReadMessageWithHMAC"}, |         {IPC::MakeHeader(0x0004, 4, 6), &CECD_S::ReadMessageWithHMAC, "ReadMessageWithHMAC"}, | ||||||
|         {0x00050042, &CECD_S::Write, "Write"}, |         {IPC::MakeHeader(0x0005, 1, 2), &CECD_S::Write, "Write"}, | ||||||
|         {0x00060104, &CECD_S::WriteMessage, "WriteMessage"}, |         {IPC::MakeHeader(0x0006, 4, 4), &CECD_S::WriteMessage, "WriteMessage"}, | ||||||
|         {0x00070106, &CECD_S::WriteMessageWithHMAC, "WriteMessageWithHMAC"}, |         {IPC::MakeHeader(0x0007, 4, 6), &CECD_S::WriteMessageWithHMAC, "WriteMessageWithHMAC"}, | ||||||
|         {0x00080102, &CECD_S::Delete, "Delete"}, |         {IPC::MakeHeader(0x0008, 4, 2), &CECD_S::Delete, "Delete"}, | ||||||
|         {0x000900C2, &CECD_S::SetData, "SetData"}, |         {IPC::MakeHeader(0x0009, 3, 2), &CECD_S::SetData, "SetData"}, | ||||||
|         {0x000A00C4, &CECD_S::ReadData, "ReadData"}, |         {IPC::MakeHeader(0x000A, 3, 4), &CECD_S::ReadData, "ReadData"}, | ||||||
|         {0x000B0040, &CECD_S::Start, "Start"}, |         {IPC::MakeHeader(0x000B, 1, 0), &CECD_S::Start, "Start"}, | ||||||
|         {0x000C0040, &CECD_S::Stop, "Stop"}, |         {IPC::MakeHeader(0x000C, 1, 0), &CECD_S::Stop, "Stop"}, | ||||||
|         {0x000D0082, &CECD_S::GetCecInfoBuffer, "GetCecInfoBuffer"}, |         {IPC::MakeHeader(0x000D, 2, 2), &CECD_S::GetCecInfoBuffer, "GetCecInfoBuffer"}, | ||||||
|         {0x000E0000, &CECD_S::GetCecdState, "GetCecdState"}, |         {IPC::MakeHeader(0x000E, 0, 0), &CECD_S::GetCecdState, "GetCecdState"}, | ||||||
|         {0x000F0000, &CECD_S::GetCecInfoEventHandle, "GetCecInfoEventHandle"}, |         {IPC::MakeHeader(0x000F, 0, 0), &CECD_S::GetCecInfoEventHandle, "GetCecInfoEventHandle"}, | ||||||
|         {0x00100000, &CECD_S::GetChangeStateEventHandle, "GetChangeStateEventHandle"}, |         {IPC::MakeHeader(0x0010, 0, 0), &CECD_S::GetChangeStateEventHandle, "GetChangeStateEventHandle"}, | ||||||
|         {0x00110104, &CECD_S::OpenAndWrite, "OpenAndWrite"}, |         {IPC::MakeHeader(0x0011, 4, 4), &CECD_S::OpenAndWrite, "OpenAndWrite"}, | ||||||
|         {0x00120104, &CECD_S::OpenAndRead, "OpenAndRead"}, |         {IPC::MakeHeader(0x0012, 4, 4), &CECD_S::OpenAndRead, "OpenAndRead"}, | ||||||
|         {0x001E0082, nullptr, "GetEventLog"}, |         {IPC::MakeHeader(0x001E, 2, 2), nullptr, "GetEventLog"}, | ||||||
|         {0x001F0000, nullptr, "GetEventLogStart"}, |         {IPC::MakeHeader(0x001F, 0, 0), nullptr, "GetEventLogStart"}, | ||||||
|         // cecd:s commands |         // cecd:s commands | ||||||
|         {0x04020002, nullptr, "GetCecInfoEventHandleSys"}, |         {IPC::MakeHeader(0x0402, 0, 2), nullptr, "GetCecInfoEventHandleSys"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -14,26 +14,26 @@ CECD_U::CECD_U(std::shared_ptr<Module> cecd) | |||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // cecd:u shared commands |         // cecd:u shared commands | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x000100C2, &CECD_U::Open, "Open"}, |         {IPC::MakeHeader(0x0001, 3, 2), &CECD_U::Open, "Open"}, | ||||||
|         {0x00020042, &CECD_U::Read, "Read"}, |         {IPC::MakeHeader(0x0002, 1, 2), &CECD_U::Read, "Read"}, | ||||||
|         {0x00030104, &CECD_U::ReadMessage, "ReadMessage"}, |         {IPC::MakeHeader(0x0003, 4, 4), &CECD_U::ReadMessage, "ReadMessage"}, | ||||||
|         {0x00040106, &CECD_U::ReadMessageWithHMAC, "ReadMessageWithHMAC"}, |         {IPC::MakeHeader(0x0004, 4, 6), &CECD_U::ReadMessageWithHMAC, "ReadMessageWithHMAC"}, | ||||||
|         {0x00050042, &CECD_U::Write, "Write"}, |         {IPC::MakeHeader(0x0005, 1, 2), &CECD_U::Write, "Write"}, | ||||||
|         {0x00060104, &CECD_U::WriteMessage, "WriteMessage"}, |         {IPC::MakeHeader(0x0006, 4, 4), &CECD_U::WriteMessage, "WriteMessage"}, | ||||||
|         {0x00070106, &CECD_U::WriteMessageWithHMAC, "WriteMessageWithHMAC"}, |         {IPC::MakeHeader(0x0007, 4, 6), &CECD_U::WriteMessageWithHMAC, "WriteMessageWithHMAC"}, | ||||||
|         {0x00080102, &CECD_U::Delete, "Delete"}, |         {IPC::MakeHeader(0x0008, 4, 2), &CECD_U::Delete, "Delete"}, | ||||||
|         {0x000900C2, &CECD_U::SetData, "SetData"}, |         {IPC::MakeHeader(0x0009, 3, 2), &CECD_U::SetData, "SetData"}, | ||||||
|         {0x000A00C4, &CECD_U::ReadData, "ReadData"}, |         {IPC::MakeHeader(0x000A, 3, 4), &CECD_U::ReadData, "ReadData"}, | ||||||
|         {0x000B0040, &CECD_U::Start, "Start"}, |         {IPC::MakeHeader(0x000B, 1, 0), &CECD_U::Start, "Start"}, | ||||||
|         {0x000C0040, &CECD_U::Stop, "Stop"}, |         {IPC::MakeHeader(0x000C, 1, 0), &CECD_U::Stop, "Stop"}, | ||||||
|         {0x000D0082, &CECD_U::GetCecInfoBuffer, "GetCecInfoBuffer"}, |         {IPC::MakeHeader(0x000D, 2, 2), &CECD_U::GetCecInfoBuffer, "GetCecInfoBuffer"}, | ||||||
|         {0x000E0000, &CECD_U::GetCecdState, "GetCecdState"}, |         {IPC::MakeHeader(0x000E, 0, 0), &CECD_U::GetCecdState, "GetCecdState"}, | ||||||
|         {0x000F0000, &CECD_U::GetCecInfoEventHandle, "GetCecInfoEventHandle"}, |         {IPC::MakeHeader(0x000F, 0, 0), &CECD_U::GetCecInfoEventHandle, "GetCecInfoEventHandle"}, | ||||||
|         {0x00100000, &CECD_U::GetChangeStateEventHandle, "GetChangeStateEventHandle"}, |         {IPC::MakeHeader(0x0010, 0, 0), &CECD_U::GetChangeStateEventHandle, "GetChangeStateEventHandle"}, | ||||||
|         {0x00110104, &CECD_U::OpenAndWrite, "OpenAndWrite"}, |         {IPC::MakeHeader(0x0011, 4, 4), &CECD_U::OpenAndWrite, "OpenAndWrite"}, | ||||||
|         {0x00120104, &CECD_U::OpenAndRead, "OpenAndRead"}, |         {IPC::MakeHeader(0x0012, 4, 4), &CECD_U::OpenAndRead, "OpenAndRead"}, | ||||||
|         {0x001E0082, nullptr, "GetEventLog"}, |         {IPC::MakeHeader(0x001E, 2, 2), nullptr, "GetEventLog"}, | ||||||
|         {0x001F0000, nullptr, "GetEventLogStart"}, |         {IPC::MakeHeader(0x001F, 0, 0), nullptr, "GetEventLogStart"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -12,52 +12,52 @@ namespace Service::CFG { | |||||||
| CFG_I::CFG_I(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "cfg:i", 23) { | CFG_I::CFG_I(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "cfg:i", 23) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // cfg common |         // cfg common | ||||||
|         {0x00010082, &CFG_I::GetConfigInfoBlk2, "GetConfigInfoBlk2"}, |         // clang-format off | ||||||
|         {0x00020000, &CFG_I::D<&CFG_I::SecureInfoGetRegion, 0x0002>, "SecureInfoGetRegion"}, |         {IPC::MakeHeader(0x0001, 2, 2), &CFG_I::GetConfigInfoBlk2, "GetConfigInfoBlk2"}, | ||||||
|         {0x00030040, &CFG_I::GenHashConsoleUnique, "GenHashConsoleUnique"}, |         {IPC::MakeHeader(0x0002, 0, 0), &CFG_I::D<&CFG_I::SecureInfoGetRegion, 0x0002>, "SecureInfoGetRegion"}, | ||||||
|         {0x00040000, &CFG_I::GetRegionCanadaUSA, "GetRegionCanadaUSA"}, |         {IPC::MakeHeader(0x0003, 1, 0), &CFG_I::GenHashConsoleUnique, "GenHashConsoleUnique"}, | ||||||
|         {0x00050000, &CFG_I::GetSystemModel, "GetSystemModel"}, |         {IPC::MakeHeader(0x0004, 0, 0), &CFG_I::GetRegionCanadaUSA, "GetRegionCanadaUSA"}, | ||||||
|         {0x00060000, &CFG_I::GetModelNintendo2DS, "GetModelNintendo2DS"}, |         {IPC::MakeHeader(0x0005, 0, 0), &CFG_I::GetSystemModel, "GetSystemModel"}, | ||||||
|         {0x00070040, nullptr, "WriteToFirstByteCfgSavegame"}, |         {IPC::MakeHeader(0x0006, 0, 0), &CFG_I::GetModelNintendo2DS, "GetModelNintendo2DS"}, | ||||||
|         {0x00080080, nullptr, "GoThroughTable"}, |         {IPC::MakeHeader(0x0007, 1, 0), nullptr, "WriteToFirstByteCfgSavegame"}, | ||||||
|         {0x00090040, &CFG_I::GetCountryCodeString, "GetCountryCodeString"}, |         {IPC::MakeHeader(0x0008, 2, 0), nullptr, "GoThroughTable"}, | ||||||
|         {0x000A0040, &CFG_I::GetCountryCodeID, "GetCountryCodeID"}, |         {IPC::MakeHeader(0x0009, 1, 0), &CFG_I::GetCountryCodeString, "GetCountryCodeString"}, | ||||||
|         {0x000B0000, nullptr, "IsFangateSupported"}, |         {IPC::MakeHeader(0x000A, 1, 0), &CFG_I::GetCountryCodeID, "GetCountryCodeID"}, | ||||||
|  |         {IPC::MakeHeader(0x000B, 0, 0), nullptr, "IsFangateSupported"}, | ||||||
|         // cfg:i |         // cfg:i | ||||||
|         {0x04010082, &CFG_I::D<&CFG_I::GetConfigInfoBlk8, 0x0401>, "GetConfigInfoBlk8"}, |         {IPC::MakeHeader(0x0401, 2, 2), &CFG_I::D<&CFG_I::GetConfigInfoBlk8, 0x0401>, "GetConfigInfoBlk8"}, | ||||||
|         {0x04020082, &CFG_I::D<&CFG_I::SetConfigInfoBlk4, 0x0402>, "SetConfigInfoBlk4"}, |         {IPC::MakeHeader(0x0402, 2, 2), &CFG_I::D<&CFG_I::SetConfigInfoBlk4, 0x0402>, "SetConfigInfoBlk4"}, | ||||||
|         {0x04030000, &CFG_I::D<&CFG_I::UpdateConfigNANDSavegame, 0x0403>, |         {IPC::MakeHeader(0x0403, 0, 0), &CFG_I::D<&CFG_I::UpdateConfigNANDSavegame, 0x0403>, "UpdateConfigNANDSavegame"}, | ||||||
|          "UpdateConfigNANDSavegame"}, |         {IPC::MakeHeader(0x0404, 1, 2), nullptr, "GetLocalFriendCodeSeedData"}, | ||||||
|         {0x04040042, nullptr, "GetLocalFriendCodeSeedData"}, |         {IPC::MakeHeader(0x0405, 0, 0), nullptr, "GetLocalFriendCodeSeed"}, | ||||||
|         {0x04050000, nullptr, "GetLocalFriendCodeSeed"}, |         {IPC::MakeHeader(0x0406, 0, 0), &CFG_I::D<&CFG_I::SecureInfoGetRegion, 0x0406>, "SecureInfoGetRegion"}, | ||||||
|         {0x04060000, &CFG_I::D<&CFG_I::SecureInfoGetRegion, 0x0406>, "SecureInfoGetRegion"}, |         {IPC::MakeHeader(0x0407, 0, 0), nullptr, "SecureInfoGetByte101"}, | ||||||
|         {0x04070000, nullptr, "SecureInfoGetByte101"}, |         {IPC::MakeHeader(0x0408, 1, 2), nullptr, "SecureInfoGetSerialNo"}, | ||||||
|         {0x04080042, nullptr, "SecureInfoGetSerialNo"}, |         {IPC::MakeHeader(0x0409, 0, 0), nullptr, "UpdateConfigBlk00040003"}, | ||||||
|         {0x04090000, nullptr, "UpdateConfigBlk00040003"}, |         {IPC::MakeHeader(0x0801, 2, 2), &CFG_I::D<&CFG_I::GetConfigInfoBlk8, 0x0801>, "GetConfigInfoBlk8"}, | ||||||
|         {0x08010082, &CFG_I::D<&CFG_I::GetConfigInfoBlk8, 0x0801>, "GetConfigInfoBlk8"}, |         {IPC::MakeHeader(0x0802, 2, 2), &CFG_I::D<&CFG_I::SetConfigInfoBlk4, 0x0802>, "SetConfigInfoBlk4"}, | ||||||
|         {0x08020082, &CFG_I::D<&CFG_I::SetConfigInfoBlk4, 0x0802>, "SetConfigInfoBlk4"}, |         {IPC::MakeHeader(0x0803, 0, 0), &CFG_I::D<&CFG_I::UpdateConfigNANDSavegame, 0x0803>, "UpdateConfigNANDSavegame"}, | ||||||
|         {0x08030000, &CFG_I::D<&CFG_I::UpdateConfigNANDSavegame, 0x0803>, |         {IPC::MakeHeader(0x0804, 3, 2), nullptr, "CreateConfigInfoBlk"}, | ||||||
|          "UpdateConfigNANDSavegame"}, |         {IPC::MakeHeader(0x0805, 0, 0), nullptr, "DeleteConfigNANDSavefile"}, | ||||||
|         {0x080400C2, nullptr, "CreateConfigInfoBlk"}, |         {IPC::MakeHeader(0x0806, 0, 0), &CFG_I::FormatConfig, "FormatConfig"}, | ||||||
|         {0x08050000, nullptr, "DeleteConfigNANDSavefile"}, |         {IPC::MakeHeader(0x0808, 0, 0), nullptr, "UpdateConfigBlk1"}, | ||||||
|         {0x08060000, &CFG_I::FormatConfig, "FormatConfig"}, |         {IPC::MakeHeader(0x0809, 0, 0), nullptr, "UpdateConfigBlk2"}, | ||||||
|         {0x08080000, nullptr, "UpdateConfigBlk1"}, |         {IPC::MakeHeader(0x080A, 0, 0), nullptr, "UpdateConfigBlk3"}, | ||||||
|         {0x08090000, nullptr, "UpdateConfigBlk2"}, |         {IPC::MakeHeader(0x080B, 2, 2), nullptr, "SetGetLocalFriendCodeSeedData"}, | ||||||
|         {0x080A0000, nullptr, "UpdateConfigBlk3"}, |         {IPC::MakeHeader(0x080C, 1, 2), nullptr, "SetLocalFriendCodeSeedSignature"}, | ||||||
|         {0x080B0082, nullptr, "SetGetLocalFriendCodeSeedData"}, |         {IPC::MakeHeader(0x080D, 0, 0), nullptr, "DeleteCreateNANDLocalFriendCodeSeed"}, | ||||||
|         {0x080C0042, nullptr, "SetLocalFriendCodeSeedSignature"}, |         {IPC::MakeHeader(0x080E, 0, 0), nullptr, "VerifySigLocalFriendCodeSeed"}, | ||||||
|         {0x080D0000, nullptr, "DeleteCreateNANDLocalFriendCodeSeed"}, |         {IPC::MakeHeader(0x080F, 1, 2), nullptr, "GetLocalFriendCodeSeedData"}, | ||||||
|         {0x080E0000, nullptr, "VerifySigLocalFriendCodeSeed"}, |         {IPC::MakeHeader(0x0810, 0, 0), nullptr, "GetLocalFriendCodeSeed"}, | ||||||
|         {0x080F0042, nullptr, "GetLocalFriendCodeSeedData"}, |         {IPC::MakeHeader(0x0811, 2, 4), nullptr, "SetSecureInfo"}, | ||||||
|         {0x08100000, nullptr, "GetLocalFriendCodeSeed"}, |         {IPC::MakeHeader(0x0812, 0, 0), nullptr, "DeleteCreateNANDSecureInfo"}, | ||||||
|         {0x08110084, nullptr, "SetSecureInfo"}, |         {IPC::MakeHeader(0x0813, 0, 0), nullptr, "VerifySigSecureInfo"}, | ||||||
|         {0x08120000, nullptr, "DeleteCreateNANDSecureInfo"}, |         {IPC::MakeHeader(0x0814, 1, 2), nullptr, "SecureInfoGetData"}, | ||||||
|         {0x08130000, nullptr, "VerifySigSecureInfo"}, |         {IPC::MakeHeader(0x0815, 1, 2), nullptr, "SecureInfoGetSignature"}, | ||||||
|         {0x08140042, nullptr, "SecureInfoGetData"}, |         {IPC::MakeHeader(0x0816, 0, 0), &CFG_I::D<&CFG_I::SecureInfoGetRegion, 0x0816>, "SecureInfoGetRegion"}, | ||||||
|         {0x08150042, nullptr, "SecureInfoGetSignature"}, |         {IPC::MakeHeader(0x0817, 0, 0), nullptr, "SecureInfoGetByte101"}, | ||||||
|         {0x08160000, &CFG_I::D<&CFG_I::SecureInfoGetRegion, 0x0816>, "SecureInfoGetRegion"}, |         {IPC::MakeHeader(0x0818, 1, 2), nullptr, "SecureInfoGetSerialNo"}, | ||||||
|         {0x08170000, nullptr, "SecureInfoGetByte101"}, |         // clang-format on | ||||||
|         {0x08180042, nullptr, "SecureInfoGetSerialNo"}, |  | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,10 +11,12 @@ namespace Service::CFG { | |||||||
|  |  | ||||||
| CFG_NOR::CFG_NOR() : ServiceFramework("cfg:nor", 23) { | CFG_NOR::CFG_NOR() : ServiceFramework("cfg:nor", 23) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010040, nullptr, "Initialize"}, |         // clang-format off | ||||||
|         {0x00020000, nullptr, "Shutdown"}, |         {IPC::MakeHeader(0x0001, 1, 0), nullptr, "Initialize"}, | ||||||
|         {0x00050082, nullptr, "ReadData"}, |         {IPC::MakeHeader(0x0002, 0, 0), nullptr, "Shutdown"}, | ||||||
|         {0x00060082, nullptr, "WriteData"}, |         {IPC::MakeHeader(0x0005, 2, 2), nullptr, "ReadData"}, | ||||||
|  |         {IPC::MakeHeader(0x0006, 2, 2), nullptr, "WriteData"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -12,28 +12,29 @@ namespace Service::CFG { | |||||||
| CFG_S::CFG_S(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "cfg:s", 23) { | CFG_S::CFG_S(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "cfg:s", 23) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // cfg common |         // cfg common | ||||||
|         {0x00010082, &CFG_S::GetConfigInfoBlk2, "GetConfigInfoBlk2"}, |         // clang-format off | ||||||
|         {0x00020000, &CFG_S::D<&CFG_S::SecureInfoGetRegion, 0x0002>, "SecureInfoGetRegion"}, |         {IPC::MakeHeader(0x0001, 2, 2), &CFG_S::GetConfigInfoBlk2, "GetConfigInfoBlk2"}, | ||||||
|         {0x00030040, &CFG_S::GenHashConsoleUnique, "GenHashConsoleUnique"}, |         {IPC::MakeHeader(0x0002, 0, 0), &CFG_S::D<&CFG_S::SecureInfoGetRegion, 0x0002>, "SecureInfoGetRegion"}, | ||||||
|         {0x00040000, &CFG_S::GetRegionCanadaUSA, "GetRegionCanadaUSA"}, |         {IPC::MakeHeader(0x0003, 1, 0), &CFG_S::GenHashConsoleUnique, "GenHashConsoleUnique"}, | ||||||
|         {0x00050000, &CFG_S::GetSystemModel, "GetSystemModel"}, |         {IPC::MakeHeader(0x0004, 0, 0), &CFG_S::GetRegionCanadaUSA, "GetRegionCanadaUSA"}, | ||||||
|         {0x00060000, &CFG_S::GetModelNintendo2DS, "GetModelNintendo2DS"}, |         {IPC::MakeHeader(0x0005, 0, 0), &CFG_S::GetSystemModel, "GetSystemModel"}, | ||||||
|         {0x00070040, nullptr, "WriteToFirstByteCfgSavegame"}, |         {IPC::MakeHeader(0x0006, 0, 0), &CFG_S::GetModelNintendo2DS, "GetModelNintendo2DS"}, | ||||||
|         {0x00080080, nullptr, "GoThroughTable"}, |         {IPC::MakeHeader(0x0007, 1, 0), nullptr, "WriteToFirstByteCfgSavegame"}, | ||||||
|         {0x00090040, &CFG_S::GetCountryCodeString, "GetCountryCodeString"}, |         {IPC::MakeHeader(0x0008, 2, 0), nullptr, "GoThroughTable"}, | ||||||
|         {0x000A0040, &CFG_S::GetCountryCodeID, "GetCountryCodeID"}, |         {IPC::MakeHeader(0x0009, 1, 0), &CFG_S::GetCountryCodeString, "GetCountryCodeString"}, | ||||||
|         {0x000B0000, nullptr, "IsFangateSupported"}, |         {IPC::MakeHeader(0x000A, 1, 0), &CFG_S::GetCountryCodeID, "GetCountryCodeID"}, | ||||||
|  |         {IPC::MakeHeader(0x000B, 0, 0), nullptr, "IsFangateSupported"}, | ||||||
|         // cfg:s |         // cfg:s | ||||||
|         {0x04010082, &CFG_S::D<&CFG_S::GetConfigInfoBlk8, 0x0401>, "GetConfigInfoBlk8"}, |         {IPC::MakeHeader(0x0401, 2, 2), &CFG_S::D<&CFG_S::GetConfigInfoBlk8, 0x0401>, "GetConfigInfoBlk8"}, | ||||||
|         {0x04020082, &CFG_S::D<&CFG_S::SetConfigInfoBlk4, 0x0402>, "SetConfigInfoBlk4"}, |         {IPC::MakeHeader(0x0402, 2, 2), &CFG_S::D<&CFG_S::SetConfigInfoBlk4, 0x0402>, "SetConfigInfoBlk4"}, | ||||||
|         {0x04030000, &CFG_S::D<&CFG_S::UpdateConfigNANDSavegame, 0x0403>, |         {IPC::MakeHeader(0x0403, 0, 0), &CFG_S::D<&CFG_S::UpdateConfigNANDSavegame, 0x0403>, "UpdateConfigNANDSavegame"}, | ||||||
|          "UpdateConfigNANDSavegame"}, |         {IPC::MakeHeader(0x0404, 1, 2), nullptr, "GetLocalFriendCodeSeedData"}, | ||||||
|         {0x04040042, nullptr, "GetLocalFriendCodeSeedData"}, |         {IPC::MakeHeader(0x0405, 0, 0), nullptr, "GetLocalFriendCodeSeed"}, | ||||||
|         {0x04050000, nullptr, "GetLocalFriendCodeSeed"}, |         {IPC::MakeHeader(0x0406, 0, 0), &CFG_S::D<&CFG_S::SecureInfoGetRegion, 0x0406>, "SecureInfoGetRegion"}, | ||||||
|         {0x04060000, &CFG_S::D<&CFG_S::SecureInfoGetRegion, 0x0406>, "SecureInfoGetRegion"}, |         {IPC::MakeHeader(0x0407, 0, 0), nullptr, "SecureInfoGetByte101"}, | ||||||
|         {0x04070000, nullptr, "SecureInfoGetByte101"}, |         {IPC::MakeHeader(0x0408, 1, 2), nullptr, "SecureInfoGetSerialNo"}, | ||||||
|         {0x04080042, nullptr, "SecureInfoGetSerialNo"}, |         {IPC::MakeHeader(0x0409, 0, 0), nullptr, "UpdateConfigBlk00040003"}, | ||||||
|         {0x04090000, nullptr, "UpdateConfigBlk00040003"}, |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -12,17 +12,19 @@ namespace Service::CFG { | |||||||
| CFG_U::CFG_U(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "cfg:u", 23) { | CFG_U::CFG_U(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "cfg:u", 23) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // cfg common |         // cfg common | ||||||
|         {0x00010082, &CFG_U::GetConfigInfoBlk2, "GetConfigInfoBlk2"}, |         // clang-format off | ||||||
|         {0x00020000, &CFG_U::D<&CFG_U::SecureInfoGetRegion, 0x0002>, "SecureInfoGetRegion"}, |         {IPC::MakeHeader(0x0001, 2, 2), &CFG_U::GetConfigInfoBlk2, "GetConfigInfoBlk2"}, | ||||||
|         {0x00030040, &CFG_U::GenHashConsoleUnique, "GenHashConsoleUnique"}, |         {IPC::MakeHeader(0x0002, 0, 0), &CFG_U::D<&CFG_U::SecureInfoGetRegion, 0x0002>, "SecureInfoGetRegion"}, | ||||||
|         {0x00040000, &CFG_U::GetRegionCanadaUSA, "GetRegionCanadaUSA"}, |         {IPC::MakeHeader(0x0003, 1, 0), &CFG_U::GenHashConsoleUnique, "GenHashConsoleUnique"}, | ||||||
|         {0x00050000, &CFG_U::GetSystemModel, "GetSystemModel"}, |         {IPC::MakeHeader(0x0004, 0, 0), &CFG_U::GetRegionCanadaUSA, "GetRegionCanadaUSA"}, | ||||||
|         {0x00060000, &CFG_U::GetModelNintendo2DS, "GetModelNintendo2DS"}, |         {IPC::MakeHeader(0x0005, 0, 0), &CFG_U::GetSystemModel, "GetSystemModel"}, | ||||||
|         {0x00070040, nullptr, "WriteToFirstByteCfgSavegame"}, |         {IPC::MakeHeader(0x0006, 0, 0), &CFG_U::GetModelNintendo2DS, "GetModelNintendo2DS"}, | ||||||
|         {0x00080080, nullptr, "GoThroughTable"}, |         {IPC::MakeHeader(0x0007, 1, 0), nullptr, "WriteToFirstByteCfgSavegame"}, | ||||||
|         {0x00090040, &CFG_U::GetCountryCodeString, "GetCountryCodeString"}, |         {IPC::MakeHeader(0x0008, 2, 0), nullptr, "GoThroughTable"}, | ||||||
|         {0x000A0040, &CFG_U::GetCountryCodeID, "GetCountryCodeID"}, |         {IPC::MakeHeader(0x0009, 1, 0), &CFG_U::GetCountryCodeString, "GetCountryCodeString"}, | ||||||
|         {0x000B0000, nullptr, "IsFangateSupported"}, |         {IPC::MakeHeader(0x000A, 1, 0), &CFG_U::GetCountryCodeID, "GetCountryCodeID"}, | ||||||
|  |         {IPC::MakeHeader(0x000B, 0, 0), nullptr, "IsFangateSupported"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -508,18 +508,18 @@ void CSND_SND::Reset(Kernel::HLERequestContext& ctx) { | |||||||
| CSND_SND::CSND_SND(Core::System& system) : ServiceFramework("csnd:SND", 4), system(system) { | CSND_SND::CSND_SND(Core::System& system) : ServiceFramework("csnd:SND", 4), system(system) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010140, &CSND_SND::Initialize, "Initialize"}, |         {IPC::MakeHeader(0x0001, 5, 0), &CSND_SND::Initialize, "Initialize"}, | ||||||
|         {0x00020000, &CSND_SND::Shutdown, "Shutdown"}, |         {IPC::MakeHeader(0x0002, 0, 0), &CSND_SND::Shutdown, "Shutdown"}, | ||||||
|         {0x00030040, &CSND_SND::ExecuteCommands, "ExecuteCommands"}, |         {IPC::MakeHeader(0x0003, 1, 0), &CSND_SND::ExecuteCommands, "ExecuteCommands"}, | ||||||
|         {0x00040080, nullptr, "ExecuteType1Commands"}, |         {IPC::MakeHeader(0x0004, 2, 0), nullptr, "ExecuteType1Commands"}, | ||||||
|         {0x00050000, &CSND_SND::AcquireSoundChannels, "AcquireSoundChannels"}, |         {IPC::MakeHeader(0x0005, 0, 0), &CSND_SND::AcquireSoundChannels, "AcquireSoundChannels"}, | ||||||
|         {0x00060000, &CSND_SND::ReleaseSoundChannels, "ReleaseSoundChannels"}, |         {IPC::MakeHeader(0x0006, 0, 0), &CSND_SND::ReleaseSoundChannels, "ReleaseSoundChannels"}, | ||||||
|         {0x00070000, &CSND_SND::AcquireCapUnit, "AcquireCapUnit"}, |         {IPC::MakeHeader(0x0007, 0, 0), &CSND_SND::AcquireCapUnit, "AcquireCapUnit"}, | ||||||
|         {0x00080040, &CSND_SND::ReleaseCapUnit, "ReleaseCapUnit"}, |         {IPC::MakeHeader(0x0008, 1, 0), &CSND_SND::ReleaseCapUnit, "ReleaseCapUnit"}, | ||||||
|         {0x00090082, &CSND_SND::FlushDataCache, "FlushDataCache"}, |         {IPC::MakeHeader(0x0009, 2, 2), &CSND_SND::FlushDataCache, "FlushDataCache"}, | ||||||
|         {0x000A0082, &CSND_SND::StoreDataCache, "StoreDataCache"}, |         {IPC::MakeHeader(0x000A, 2, 2), &CSND_SND::StoreDataCache, "StoreDataCache"}, | ||||||
|         {0x000B0082, &CSND_SND::InvalidateDataCache, "InvalidateDataCache"}, |         {IPC::MakeHeader(0x000B, 2, 2), &CSND_SND::InvalidateDataCache, "InvalidateDataCache"}, | ||||||
|         {0x000C0000, &CSND_SND::Reset, "Reset"}, |         {IPC::MakeHeader(0x000C, 0, 0), &CSND_SND::Reset, "Reset"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -13,26 +13,26 @@ namespace Service::DLP { | |||||||
| DLP_CLNT::DLP_CLNT() : ServiceFramework("dlp:CLNT", 1) { | DLP_CLNT::DLP_CLNT() : ServiceFramework("dlp:CLNT", 1) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x000100C3, nullptr, "Initialize"}, |         {IPC::MakeHeader(0x0001, 3, 3), nullptr, "Initialize"}, | ||||||
|         {0x00020000, nullptr, "Finalize"}, |         {IPC::MakeHeader(0x0002, 0, 0), nullptr, "Finalize"}, | ||||||
|         {0x00030000, nullptr, "GetEventDesc"}, |         {IPC::MakeHeader(0x0003, 0, 0), nullptr, "GetEventDesc"}, | ||||||
|         {0x00040000, nullptr, "GetChannel"}, |         {IPC::MakeHeader(0x0004, 0, 0), nullptr, "GetChannel"}, | ||||||
|         {0x00050180, nullptr, "StartScan"}, |         {IPC::MakeHeader(0x0005, 6, 0), nullptr, "StartScan"}, | ||||||
|         {0x00060000, nullptr, "StopScan"}, |         {IPC::MakeHeader(0x0006, 0, 0), nullptr, "StopScan"}, | ||||||
|         {0x00070080, nullptr, "GetServerInfo"}, |         {IPC::MakeHeader(0x0007, 2, 0), nullptr, "GetServerInfo"}, | ||||||
|         {0x00080100, nullptr, "GetTitleInfo"}, |         {IPC::MakeHeader(0x0008, 4, 0), nullptr, "GetTitleInfo"}, | ||||||
|         {0x00090040, nullptr, "GetTitleInfoInOrder"}, |         {IPC::MakeHeader(0x0009, 1, 0), nullptr, "GetTitleInfoInOrder"}, | ||||||
|         {0x000A0080, nullptr, "DeleteScanInfo"}, |         {IPC::MakeHeader(0x000A, 2, 0), nullptr, "DeleteScanInfo"}, | ||||||
|         {0x000B0100, nullptr, "PrepareForSystemDownload"}, |         {IPC::MakeHeader(0x000B, 4, 0), nullptr, "PrepareForSystemDownload"}, | ||||||
|         {0x000C0000, nullptr, "StartSystemDownload"}, |         {IPC::MakeHeader(0x000C, 0, 0), nullptr, "StartSystemDownload"}, | ||||||
|         {0x000D0100, nullptr, "StartTitleDownload"}, |         {IPC::MakeHeader(0x000D, 4, 0), nullptr, "StartTitleDownload"}, | ||||||
|         {0x000E0000, nullptr, "GetMyStatus"}, |         {IPC::MakeHeader(0x000E, 0, 0), nullptr, "GetMyStatus"}, | ||||||
|         {0x000F0040, nullptr, "GetConnectingNodes"}, |         {IPC::MakeHeader(0x000F, 1, 0), nullptr, "GetConnectingNodes"}, | ||||||
|         {0x00100040, nullptr, "GetNodeInfo"}, |         {IPC::MakeHeader(0x0010, 1, 0), nullptr, "GetNodeInfo"}, | ||||||
|         {0x00110000, nullptr, "GetWirelessRebootPassphrase"}, |         {IPC::MakeHeader(0x0011, 0, 0), nullptr, "GetWirelessRebootPassphrase"}, | ||||||
|         {0x00120000, nullptr, "StopSession"}, |         {IPC::MakeHeader(0x0012, 0, 0), nullptr, "StopSession"}, | ||||||
|         {0x00130100, nullptr, "GetCupVersion"}, |         {IPC::MakeHeader(0x0013, 4, 0), nullptr, "GetCupVersion"}, | ||||||
|         {0x00140100, nullptr, "GetDupAvailability"}, |         {IPC::MakeHeader(0x0014, 4, 0), nullptr, "GetDupAvailability"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -13,23 +13,23 @@ namespace Service::DLP { | |||||||
| DLP_FKCL::DLP_FKCL() : ServiceFramework("dlp:FKCL", 1) { | DLP_FKCL::DLP_FKCL() : ServiceFramework("dlp:FKCL", 1) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010083, nullptr, "Initialize"}, |         {IPC::MakeHeader(0x0001, 2, 3), nullptr, "Initialize"}, | ||||||
|         {0x00020000, nullptr, "Finalize"}, |         {IPC::MakeHeader(0x0002, 0, 0), nullptr, "Finalize"}, | ||||||
|         {0x00030000, nullptr, "GetEventDesc"}, |         {IPC::MakeHeader(0x0003, 0, 0), nullptr, "GetEventDesc"}, | ||||||
|         {0x00040000, nullptr, "GetChannels"}, |         {IPC::MakeHeader(0x0004, 0, 0), nullptr, "GetChannels"}, | ||||||
|         {0x00050180, nullptr, "StartScan"}, |         {IPC::MakeHeader(0x0005, 6, 0), nullptr, "StartScan"}, | ||||||
|         {0x00060000, nullptr, "StopScan"}, |         {IPC::MakeHeader(0x0006, 0, 0), nullptr, "StopScan"}, | ||||||
|         {0x00070080, nullptr, "GetServerInfo"}, |         {IPC::MakeHeader(0x0007, 2, 0), nullptr, "GetServerInfo"}, | ||||||
|         {0x00080100, nullptr, "GetTitleInfo"}, |         {IPC::MakeHeader(0x0008, 4, 0), nullptr, "GetTitleInfo"}, | ||||||
|         {0x00090040, nullptr, "GetTitleInfoInOrder"}, |         {IPC::MakeHeader(0x0009, 1, 0), nullptr, "GetTitleInfoInOrder"}, | ||||||
|         {0x000A0080, nullptr, "DeleteScanInfo"}, |         {IPC::MakeHeader(0x000A, 2, 0), nullptr, "DeleteScanInfo"}, | ||||||
|         {0x000B0100, nullptr, "StartFakeSession"}, |         {IPC::MakeHeader(0x000B, 4, 0), nullptr, "StartFakeSession"}, | ||||||
|         {0x000C0000, nullptr, "GetMyStatus"}, |         {IPC::MakeHeader(0x000C, 0, 0), nullptr, "GetMyStatus"}, | ||||||
|         {0x000D0040, nullptr, "GetConnectingNodes"}, |         {IPC::MakeHeader(0x000D, 1, 0), nullptr, "GetConnectingNodes"}, | ||||||
|         {0x000E0040, nullptr, "GetNodeInfo"}, |         {IPC::MakeHeader(0x000E, 1, 0), nullptr, "GetNodeInfo"}, | ||||||
|         {0x000F0000, nullptr, "GetWirelessRebootPassphrase"}, |         {IPC::MakeHeader(0x000F, 0, 0), nullptr, "GetWirelessRebootPassphrase"}, | ||||||
|         {0x00100000, nullptr, "StopSession"}, |         {IPC::MakeHeader(0x0010, 0, 0), nullptr, "StopSession"}, | ||||||
|         {0x00110203, nullptr, "Initialize2"}, |         {IPC::MakeHeader(0x0011, 8, 3), nullptr, "Initialize2"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -27,22 +27,22 @@ void DLP_SRVR::IsChild(Kernel::HLERequestContext& ctx) { | |||||||
| DLP_SRVR::DLP_SRVR() : ServiceFramework("dlp:SRVR", 1) { | DLP_SRVR::DLP_SRVR() : ServiceFramework("dlp:SRVR", 1) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010183, nullptr, "Initialize"}, |         {IPC::MakeHeader(0x0001, 6, 3), nullptr, "Initialize"}, | ||||||
|         {0x00020000, nullptr, "Finalize"}, |         {IPC::MakeHeader(0x0002, 0, 0), nullptr, "Finalize"}, | ||||||
|         {0x00030000, nullptr, "GetServerState"}, |         {IPC::MakeHeader(0x0003, 0, 0), nullptr, "GetServerState"}, | ||||||
|         {0x00040000, nullptr, "GetEventDescription"}, |         {IPC::MakeHeader(0x0004, 0, 0), nullptr, "GetEventDescription"}, | ||||||
|         {0x00050080, nullptr, "StartAccepting"}, |         {IPC::MakeHeader(0x0005, 2, 0), nullptr, "StartAccepting"}, | ||||||
|         {0x00060000, nullptr, "EndAccepting"}, |         {IPC::MakeHeader(0x0006, 0, 0), nullptr, "EndAccepting"}, | ||||||
|         {0x00070000, nullptr, "StartDistribution"}, |         {IPC::MakeHeader(0x0007, 0, 0), nullptr, "StartDistribution"}, | ||||||
|         {0x000800C0, nullptr, "SendWirelessRebootPassphrase"}, |         {IPC::MakeHeader(0x0008, 3, 0), nullptr, "SendWirelessRebootPassphrase"}, | ||||||
|         {0x00090040, nullptr, "AcceptClient"}, |         {IPC::MakeHeader(0x0009, 1, 0), nullptr, "AcceptClient"}, | ||||||
|         {0x000A0040, nullptr, "DisconnectClient"}, |         {IPC::MakeHeader(0x000A, 1, 0), nullptr, "DisconnectClient"}, | ||||||
|         {0x000B0042, nullptr, "GetConnectingClients"}, |         {IPC::MakeHeader(0x000B, 1, 2), nullptr, "GetConnectingClients"}, | ||||||
|         {0x000C0040, nullptr, "GetClientInfo"}, |         {IPC::MakeHeader(0x000C, 1, 0), nullptr, "GetClientInfo"}, | ||||||
|         {0x000D0040, nullptr, "GetClientState"}, |         {IPC::MakeHeader(0x000D, 1, 0), nullptr, "GetClientState"}, | ||||||
|         {0x000E0040, &DLP_SRVR::IsChild, "IsChild"}, |         {IPC::MakeHeader(0x000E, 1, 0), &DLP_SRVR::IsChild, "IsChild"}, | ||||||
|         {0x000F0303, nullptr, "InitializeWithName"}, |         {IPC::MakeHeader(0x000F, 12, 3), nullptr, "InitializeWithName"}, | ||||||
|         {0x00100000, nullptr, "GetDupNoticeNeed"}, |         {IPC::MakeHeader(0x0010, 0, 0), nullptr, "GetDupNoticeNeed"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -347,39 +347,39 @@ DSP_DSP::DSP_DSP(Core::System& system) | |||||||
|     : ServiceFramework("dsp::DSP", DefaultMaxSessions), system(system) { |     : ServiceFramework("dsp::DSP", DefaultMaxSessions), system(system) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010040, &DSP_DSP::RecvData, "RecvData"}, |         {IPC::MakeHeader(0x0001, 1, 0), &DSP_DSP::RecvData, "RecvData"}, | ||||||
|         {0x00020040, &DSP_DSP::RecvDataIsReady, "RecvDataIsReady"}, |         {IPC::MakeHeader(0x0002, 1, 0), &DSP_DSP::RecvDataIsReady, "RecvDataIsReady"}, | ||||||
|         {0x00030080, nullptr, "SendData"}, |         {IPC::MakeHeader(0x0003, 2, 0), nullptr, "SendData"}, | ||||||
|         {0x00040040, nullptr, "SendDataIsEmpty"}, |         {IPC::MakeHeader(0x0004, 1, 0), nullptr, "SendDataIsEmpty"}, | ||||||
|         {0x000500C2, nullptr, "SendFifoEx"}, |         {IPC::MakeHeader(0x0005, 3, 2), nullptr, "SendFifoEx"}, | ||||||
|         {0x000600C0, nullptr, "RecvFifoEx"}, |         {IPC::MakeHeader(0x0006, 3, 0), nullptr, "RecvFifoEx"}, | ||||||
|         {0x00070040, &DSP_DSP::SetSemaphore, "SetSemaphore"}, |         {IPC::MakeHeader(0x0007, 1, 0), &DSP_DSP::SetSemaphore, "SetSemaphore"}, | ||||||
|         {0x00080000, nullptr, "GetSemaphore"}, |         {IPC::MakeHeader(0x0008, 0, 0), nullptr, "GetSemaphore"}, | ||||||
|         {0x00090040, nullptr, "ClearSemaphore"}, |         {IPC::MakeHeader(0x0009, 1, 0), nullptr, "ClearSemaphore"}, | ||||||
|         {0x000A0040, nullptr, "MaskSemaphore"}, |         {IPC::MakeHeader(0x000A, 1, 0), nullptr, "MaskSemaphore"}, | ||||||
|         {0x000B0000, nullptr, "CheckSemaphoreRequest"}, |         {IPC::MakeHeader(0x000B, 0, 0), nullptr, "CheckSemaphoreRequest"}, | ||||||
|         {0x000C0040, &DSP_DSP::ConvertProcessAddressFromDspDram, "ConvertProcessAddressFromDspDram"}, |         {IPC::MakeHeader(0x000C, 1, 0), &DSP_DSP::ConvertProcessAddressFromDspDram, "ConvertProcessAddressFromDspDram"}, | ||||||
|         {0x000D0082, &DSP_DSP::WriteProcessPipe, "WriteProcessPipe"}, |         {IPC::MakeHeader(0x000D, 2, 2), &DSP_DSP::WriteProcessPipe, "WriteProcessPipe"}, | ||||||
|         {0x000E00C0, &DSP_DSP::ReadPipe, "ReadPipe"}, |         {IPC::MakeHeader(0x000E, 3, 0), &DSP_DSP::ReadPipe, "ReadPipe"}, | ||||||
|         {0x000F0080, &DSP_DSP::GetPipeReadableSize, "GetPipeReadableSize"}, |         {IPC::MakeHeader(0x000F, 2, 0), &DSP_DSP::GetPipeReadableSize, "GetPipeReadableSize"}, | ||||||
|         {0x001000C0, &DSP_DSP::ReadPipeIfPossible, "ReadPipeIfPossible"}, |         {IPC::MakeHeader(0x0010, 3, 0), &DSP_DSP::ReadPipeIfPossible, "ReadPipeIfPossible"}, | ||||||
|         {0x001100C2, &DSP_DSP::LoadComponent, "LoadComponent"}, |         {IPC::MakeHeader(0x0011, 3, 2), &DSP_DSP::LoadComponent, "LoadComponent"}, | ||||||
|         {0x00120000, &DSP_DSP::UnloadComponent, "UnloadComponent"}, |         {IPC::MakeHeader(0x0012, 0, 0), &DSP_DSP::UnloadComponent, "UnloadComponent"}, | ||||||
|         {0x00130082, &DSP_DSP::FlushDataCache, "FlushDataCache"}, |         {IPC::MakeHeader(0x0013, 2, 2), &DSP_DSP::FlushDataCache, "FlushDataCache"}, | ||||||
|         {0x00140082, &DSP_DSP::InvalidateDataCache, "InvalidateDCache"}, |         {IPC::MakeHeader(0x0014, 2, 2), &DSP_DSP::InvalidateDataCache, "InvalidateDCache"}, | ||||||
|         {0x00150082, &DSP_DSP::RegisterInterruptEvents, "RegisterInterruptEvents"}, |         {IPC::MakeHeader(0x0015, 2, 2), &DSP_DSP::RegisterInterruptEvents, "RegisterInterruptEvents"}, | ||||||
|         {0x00160000, &DSP_DSP::GetSemaphoreEventHandle, "GetSemaphoreEventHandle"}, |         {IPC::MakeHeader(0x0016, 0, 0), &DSP_DSP::GetSemaphoreEventHandle, "GetSemaphoreEventHandle"}, | ||||||
|         {0x00170040, &DSP_DSP::SetSemaphoreMask, "SetSemaphoreMask"}, |         {IPC::MakeHeader(0x0017, 1, 0), &DSP_DSP::SetSemaphoreMask, "SetSemaphoreMask"}, | ||||||
|         {0x00180040, nullptr, "GetPhysicalAddress"}, |         {IPC::MakeHeader(0x0018, 1, 0), nullptr, "GetPhysicalAddress"}, | ||||||
|         {0x00190040, nullptr, "GetVirtualAddress"}, |         {IPC::MakeHeader(0x0019, 1, 0), nullptr, "GetVirtualAddress"}, | ||||||
|         {0x001A0042, nullptr, "SetIirFilterI2S1_cmd1"}, |         {IPC::MakeHeader(0x001A, 1, 2), nullptr, "SetIirFilterI2S1_cmd1"}, | ||||||
|         {0x001B0042, nullptr, "SetIirFilterI2S1_cmd2"}, |         {IPC::MakeHeader(0x001B, 1, 2), nullptr, "SetIirFilterI2S1_cmd2"}, | ||||||
|         {0x001C0082, nullptr, "SetIirFilterEQ"}, |         {IPC::MakeHeader(0x001C, 2, 2), nullptr, "SetIirFilterEQ"}, | ||||||
|         {0x001D00C0, nullptr, "ReadMultiEx_SPI2"}, |         {IPC::MakeHeader(0x001D, 3, 0), nullptr, "ReadMultiEx_SPI2"}, | ||||||
|         {0x001E00C2, nullptr, "WriteMultiEx_SPI2"}, |         {IPC::MakeHeader(0x001E, 3, 2), nullptr, "WriteMultiEx_SPI2"}, | ||||||
|         {0x001F0000, &DSP_DSP::GetHeadphoneStatus, "GetHeadphoneStatus"}, |         {IPC::MakeHeader(0x001F, 0, 0), &DSP_DSP::GetHeadphoneStatus, "GetHeadphoneStatus"}, | ||||||
|         {0x00200040, &DSP_DSP::ForceHeadphoneOut, "ForceHeadphoneOut"}, |         {IPC::MakeHeader(0x0020, 1, 0), &DSP_DSP::ForceHeadphoneOut, "ForceHeadphoneOut"}, | ||||||
|         {0x00210000, nullptr, "GetIsDspOccupied"}, |         {IPC::MakeHeader(0x0021, 0, 0), nullptr, "GetIsDspOccupied"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -249,8 +249,10 @@ void ERR_F::ThrowFatalError(Kernel::HLERequestContext& ctx) { | |||||||
|  |  | ||||||
| ERR_F::ERR_F(Core::System& system) : ServiceFramework("err:f", 1), system(system) { | ERR_F::ERR_F(Core::System& system) : ServiceFramework("err:f", 1), system(system) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010800, &ERR_F::ThrowFatalError, "ThrowFatalError"}, |         // clang-format off | ||||||
|         {0x00020042, nullptr, "SetUserString"}, |         {IPC::MakeHeader(0x0001, 32, 0), &ERR_F::ThrowFatalError, "ThrowFatalError"}, | ||||||
|  |         {IPC::MakeHeader(0x0002, 1, 2), nullptr, "SetUserString"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -891,117 +891,119 @@ ResultVal<u16> FS_USER::GetSpecialContentIndexFromTMD(MediaType media_type, u64 | |||||||
| FS_USER::FS_USER(Core::System& system) | FS_USER::FS_USER(Core::System& system) | ||||||
|     : ServiceFramework("fs:USER", 30), system(system), archives(system.ArchiveManager()) { |     : ServiceFramework("fs:USER", 30), system(system), archives(system.ArchiveManager()) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x000100C6, nullptr, "Dummy1"}, |         // clang-format off | ||||||
|         {0x040100C4, nullptr, "Control"}, |         {IPC::MakeHeader(0x0001, 3, 6), nullptr, "Dummy1"}, | ||||||
|         {0x08010002, &FS_USER::Initialize, "Initialize"}, |         {IPC::MakeHeader(0x0401, 3, 4), nullptr, "Control"}, | ||||||
|         {0x080201C2, &FS_USER::OpenFile, "OpenFile"}, |         {IPC::MakeHeader(0x0801, 0, 2), &FS_USER::Initialize, "Initialize"}, | ||||||
|         {0x08030204, &FS_USER::OpenFileDirectly, "OpenFileDirectly"}, |         {IPC::MakeHeader(0x0802, 7, 2), &FS_USER::OpenFile, "OpenFile"}, | ||||||
|         {0x08040142, &FS_USER::DeleteFile, "DeleteFile"}, |         {IPC::MakeHeader(0x0803, 8, 4), &FS_USER::OpenFileDirectly, "OpenFileDirectly"}, | ||||||
|         {0x08050244, &FS_USER::RenameFile, "RenameFile"}, |         {IPC::MakeHeader(0x0804, 5, 2), &FS_USER::DeleteFile, "DeleteFile"}, | ||||||
|         {0x08060142, &FS_USER::DeleteDirectory, "DeleteDirectory"}, |         {IPC::MakeHeader(0x0805, 9, 4), &FS_USER::RenameFile, "RenameFile"}, | ||||||
|         {0x08070142, &FS_USER::DeleteDirectoryRecursively, "DeleteDirectoryRecursively"}, |         {IPC::MakeHeader(0x0806, 5, 2), &FS_USER::DeleteDirectory, "DeleteDirectory"}, | ||||||
|         {0x08080202, &FS_USER::CreateFile, "CreateFile"}, |         {IPC::MakeHeader(0x0807, 5, 2), &FS_USER::DeleteDirectoryRecursively, "DeleteDirectoryRecursively"}, | ||||||
|         {0x08090182, &FS_USER::CreateDirectory, "CreateDirectory"}, |         {IPC::MakeHeader(0x0808, 8, 2), &FS_USER::CreateFile, "CreateFile"}, | ||||||
|         {0x080A0244, &FS_USER::RenameDirectory, "RenameDirectory"}, |         {IPC::MakeHeader(0x0809, 6, 2), &FS_USER::CreateDirectory, "CreateDirectory"}, | ||||||
|         {0x080B0102, &FS_USER::OpenDirectory, "OpenDirectory"}, |         {IPC::MakeHeader(0x080A, 9, 4), &FS_USER::RenameDirectory, "RenameDirectory"}, | ||||||
|         {0x080C00C2, &FS_USER::OpenArchive, "OpenArchive"}, |         {IPC::MakeHeader(0x080B, 4, 2), &FS_USER::OpenDirectory, "OpenDirectory"}, | ||||||
|         {0x080D0144, nullptr, "ControlArchive"}, |         {IPC::MakeHeader(0x080C, 3, 2), &FS_USER::OpenArchive, "OpenArchive"}, | ||||||
|         {0x080E0080, &FS_USER::CloseArchive, "CloseArchive"}, |         {IPC::MakeHeader(0x080D, 5, 4), nullptr, "ControlArchive"}, | ||||||
|         {0x080F0180, &FS_USER::FormatThisUserSaveData, "FormatThisUserSaveData"}, |         {IPC::MakeHeader(0x080E, 2, 0), &FS_USER::CloseArchive, "CloseArchive"}, | ||||||
|         {0x08100200, &FS_USER::CreateLegacySystemSaveData, "CreateLegacySystemSaveData"}, |         {IPC::MakeHeader(0x080F, 6, 0), &FS_USER::FormatThisUserSaveData, "FormatThisUserSaveData"}, | ||||||
|         {0x08110040, nullptr, "DeleteSystemSaveData"}, |         {IPC::MakeHeader(0x0810, 8, 0), &FS_USER::CreateLegacySystemSaveData, "CreateLegacySystemSaveData"}, | ||||||
|         {0x08120080, &FS_USER::GetFreeBytes, "GetFreeBytes"}, |         {IPC::MakeHeader(0x0811, 1, 0), nullptr, "DeleteSystemSaveData"}, | ||||||
|         {0x08130000, nullptr, "GetCardType"}, |         {IPC::MakeHeader(0x0812, 2, 0), &FS_USER::GetFreeBytes, "GetFreeBytes"}, | ||||||
|         {0x08140000, &FS_USER::GetSdmcArchiveResource, "GetSdmcArchiveResource"}, |         {IPC::MakeHeader(0x0813, 0, 0), nullptr, "GetCardType"}, | ||||||
|         {0x08150000, &FS_USER::GetNandArchiveResource, "GetNandArchiveResource"}, |         {IPC::MakeHeader(0x0814, 0, 0), &FS_USER::GetSdmcArchiveResource, "GetSdmcArchiveResource"}, | ||||||
|         {0x08160000, nullptr, "GetSdmcFatfsError"}, |         {IPC::MakeHeader(0x0815, 0, 0), &FS_USER::GetNandArchiveResource, "GetNandArchiveResource"}, | ||||||
|         {0x08170000, &FS_USER::IsSdmcDetected, "IsSdmcDetected"}, |         {IPC::MakeHeader(0x0816, 0, 0), nullptr, "GetSdmcFatfsError"}, | ||||||
|         {0x08180000, &FS_USER::IsSdmcWriteable, "IsSdmcWritable"}, |         {IPC::MakeHeader(0x0817, 0, 0), &FS_USER::IsSdmcDetected, "IsSdmcDetected"}, | ||||||
|         {0x08190042, nullptr, "GetSdmcCid"}, |         {IPC::MakeHeader(0x0818, 0, 0), &FS_USER::IsSdmcWriteable, "IsSdmcWritable"}, | ||||||
|         {0x081A0042, nullptr, "GetNandCid"}, |         {IPC::MakeHeader(0x0819, 1, 2), nullptr, "GetSdmcCid"}, | ||||||
|         {0x081B0000, nullptr, "GetSdmcSpeedInfo"}, |         {IPC::MakeHeader(0x081A, 1, 2), nullptr, "GetNandCid"}, | ||||||
|         {0x081C0000, nullptr, "GetNandSpeedInfo"}, |         {IPC::MakeHeader(0x081B, 0, 0), nullptr, "GetSdmcSpeedInfo"}, | ||||||
|         {0x081D0042, nullptr, "GetSdmcLog"}, |         {IPC::MakeHeader(0x081C, 0, 0), nullptr, "GetNandSpeedInfo"}, | ||||||
|         {0x081E0042, nullptr, "GetNandLog"}, |         {IPC::MakeHeader(0x081D, 1, 2), nullptr, "GetSdmcLog"}, | ||||||
|         {0x081F0000, nullptr, "ClearSdmcLog"}, |         {IPC::MakeHeader(0x081E, 1, 2), nullptr, "GetNandLog"}, | ||||||
|         {0x08200000, nullptr, "ClearNandLog"}, |         {IPC::MakeHeader(0x081F, 0, 0), nullptr, "ClearSdmcLog"}, | ||||||
|         {0x08210000, &FS_USER::CardSlotIsInserted, "CardSlotIsInserted"}, |         {IPC::MakeHeader(0x0820, 0, 0), nullptr, "ClearNandLog"}, | ||||||
|         {0x08220000, nullptr, "CardSlotPowerOn"}, |         {IPC::MakeHeader(0x0821, 0, 0), &FS_USER::CardSlotIsInserted, "CardSlotIsInserted"}, | ||||||
|         {0x08230000, nullptr, "CardSlotPowerOff"}, |         {IPC::MakeHeader(0x0822, 0, 0), nullptr, "CardSlotPowerOn"}, | ||||||
|         {0x08240000, nullptr, "CardSlotGetCardIFPowerStatus"}, |         {IPC::MakeHeader(0x0823, 0, 0), nullptr, "CardSlotPowerOff"}, | ||||||
|         {0x08250040, nullptr, "CardNorDirectCommand"}, |         {IPC::MakeHeader(0x0824, 0, 0), nullptr, "CardSlotGetCardIFPowerStatus"}, | ||||||
|         {0x08260080, nullptr, "CardNorDirectCommandWithAddress"}, |         {IPC::MakeHeader(0x0825, 1, 0), nullptr, "CardNorDirectCommand"}, | ||||||
|         {0x08270082, nullptr, "CardNorDirectRead"}, |         {IPC::MakeHeader(0x0826, 2, 0), nullptr, "CardNorDirectCommandWithAddress"}, | ||||||
|         {0x082800C2, nullptr, "CardNorDirectReadWithAddress"}, |         {IPC::MakeHeader(0x0827, 2, 2), nullptr, "CardNorDirectRead"}, | ||||||
|         {0x08290082, nullptr, "CardNorDirectWrite"}, |         {IPC::MakeHeader(0x0828, 3, 2), nullptr, "CardNorDirectReadWithAddress"}, | ||||||
|         {0x082A00C2, nullptr, "CardNorDirectWriteWithAddress"}, |         {IPC::MakeHeader(0x0829, 2, 2), nullptr, "CardNorDirectWrite"}, | ||||||
|         {0x082B00C2, nullptr, "CardNorDirectRead_4xIO"}, |         {IPC::MakeHeader(0x082A, 3, 2), nullptr, "CardNorDirectWriteWithAddress"}, | ||||||
|         {0x082C0082, nullptr, "CardNorDirectCpuWriteWithoutVerify"}, |         {IPC::MakeHeader(0x082B, 3, 2), nullptr, "CardNorDirectRead_4xIO"}, | ||||||
|         {0x082D0040, nullptr, "CardNorDirectSectorEraseWithoutVerify"}, |         {IPC::MakeHeader(0x082C, 2, 2), nullptr, "CardNorDirectCpuWriteWithoutVerify"}, | ||||||
|         {0x082E0040, nullptr, "GetProductInfo"}, |         {IPC::MakeHeader(0x082D, 1, 0), nullptr, "CardNorDirectSectorEraseWithoutVerify"}, | ||||||
|         {0x082F0040, &FS_USER::GetProgramLaunchInfo, "GetProgramLaunchInfo"}, |         {IPC::MakeHeader(0x082E, 1, 0), nullptr, "GetProductInfo"}, | ||||||
|         {0x08300182, &FS_USER::ObsoletedCreateExtSaveData, "Obsoleted_3_0_CreateExtSaveData"}, |         {IPC::MakeHeader(0x082F, 1, 0), &FS_USER::GetProgramLaunchInfo, "GetProgramLaunchInfo"}, | ||||||
|         {0x08310180, nullptr, "CreateSharedExtSaveData"}, |         {IPC::MakeHeader(0x0830, 6, 2), &FS_USER::ObsoletedCreateExtSaveData, "Obsoleted_3_0_CreateExtSaveData"}, | ||||||
|         {0x08320102, nullptr, "ReadExtSaveDataIcon"}, |         {IPC::MakeHeader(0x0831, 6, 0), nullptr, "CreateSharedExtSaveData"}, | ||||||
|         {0x08330082, nullptr, "EnumerateExtSaveData"}, |         {IPC::MakeHeader(0x0832, 4, 2), nullptr, "ReadExtSaveDataIcon"}, | ||||||
|         {0x08340082, nullptr, "EnumerateSharedExtSaveData"}, |         {IPC::MakeHeader(0x0833, 2, 2), nullptr, "EnumerateExtSaveData"}, | ||||||
|         {0x08350080, &FS_USER::ObsoletedDeleteExtSaveData, "Obsoleted_3_0_DeleteExtSaveData"}, |         {IPC::MakeHeader(0x0834, 2, 2), nullptr, "EnumerateSharedExtSaveData"}, | ||||||
|         {0x08360080, nullptr, "DeleteSharedExtSaveData"}, |         {IPC::MakeHeader(0x0835, 2, 0), &FS_USER::ObsoletedDeleteExtSaveData, "Obsoleted_3_0_DeleteExtSaveData"}, | ||||||
|         {0x08370040, nullptr, "SetCardSpiBaudRate"}, |         {IPC::MakeHeader(0x0836, 2, 0), nullptr, "DeleteSharedExtSaveData"}, | ||||||
|         {0x08380040, nullptr, "SetCardSpiBusMode"}, |         {IPC::MakeHeader(0x0837, 1, 0), nullptr, "SetCardSpiBaudRate"}, | ||||||
|         {0x08390000, nullptr, "SendInitializeInfoTo9"}, |         {IPC::MakeHeader(0x0838, 1, 0), nullptr, "SetCardSpiBusMode"}, | ||||||
|         {0x083A0100, &FS_USER::GetSpecialContentIndex, "GetSpecialContentIndex"}, |         {IPC::MakeHeader(0x0839, 0, 0), nullptr, "SendInitializeInfoTo9"}, | ||||||
|         {0x083B00C2, nullptr, "GetLegacyRomHeader"}, |         {IPC::MakeHeader(0x083A, 4, 0), &FS_USER::GetSpecialContentIndex, "GetSpecialContentIndex"}, | ||||||
|         {0x083C00C2, nullptr, "GetLegacyBannerData"}, |         {IPC::MakeHeader(0x083B, 3, 2), nullptr, "GetLegacyRomHeader"}, | ||||||
|         {0x083D0100, nullptr, "CheckAuthorityToAccessExtSaveData"}, |         {IPC::MakeHeader(0x083C, 3, 2), nullptr, "GetLegacyBannerData"}, | ||||||
|         {0x083E00C2, nullptr, "QueryTotalQuotaSize"}, |         {IPC::MakeHeader(0x083D, 4, 0), nullptr, "CheckAuthorityToAccessExtSaveData"}, | ||||||
|         {0x083F00C0, nullptr, "GetExtDataBlockSize"}, |         {IPC::MakeHeader(0x083E, 3, 2), nullptr, "QueryTotalQuotaSize"}, | ||||||
|         {0x08400040, nullptr, "AbnegateAccessRight"}, |         {IPC::MakeHeader(0x083F, 3, 0), nullptr, "GetExtDataBlockSize"}, | ||||||
|         {0x08410000, nullptr, "DeleteSdmcRoot"}, |         {IPC::MakeHeader(0x0840, 1, 0), nullptr, "AbnegateAccessRight"}, | ||||||
|         {0x08420040, nullptr, "DeleteAllExtSaveDataOnNand"}, |         {IPC::MakeHeader(0x0841, 0, 0), nullptr, "DeleteSdmcRoot"}, | ||||||
|         {0x08430000, nullptr, "InitializeCtrFileSystem"}, |         {IPC::MakeHeader(0x0842, 1, 0), nullptr, "DeleteAllExtSaveDataOnNand"}, | ||||||
|         {0x08440000, nullptr, "CreateSeed"}, |         {IPC::MakeHeader(0x0843, 0, 0), nullptr, "InitializeCtrFileSystem"}, | ||||||
|         {0x084500C2, &FS_USER::GetFormatInfo, "GetFormatInfo"}, |         {IPC::MakeHeader(0x0844, 0, 0), nullptr, "CreateSeed"}, | ||||||
|         {0x08460102, nullptr, "GetLegacyRomHeader2"}, |         {IPC::MakeHeader(0x0845, 3, 2), &FS_USER::GetFormatInfo, "GetFormatInfo"}, | ||||||
|         {0x08470180, nullptr, "FormatCtrCardUserSaveData"}, |         {IPC::MakeHeader(0x0846, 4, 2), nullptr, "GetLegacyRomHeader2"}, | ||||||
|         {0x08480042, nullptr, "GetSdmcCtrRootPath"}, |         {IPC::MakeHeader(0x0847, 6, 0), nullptr, "FormatCtrCardUserSaveData"}, | ||||||
|         {0x08490040, &FS_USER::GetArchiveResource, "GetArchiveResource"}, |         {IPC::MakeHeader(0x0848, 1, 2), nullptr, "GetSdmcCtrRootPath"}, | ||||||
|         {0x084A0002, nullptr, "ExportIntegrityVerificationSeed"}, |         {IPC::MakeHeader(0x0849, 1, 0), &FS_USER::GetArchiveResource, "GetArchiveResource"}, | ||||||
|         {0x084B0002, nullptr, "ImportIntegrityVerificationSeed"}, |         {IPC::MakeHeader(0x084A, 0, 2), nullptr, "ExportIntegrityVerificationSeed"}, | ||||||
|         {0x084C0242, &FS_USER::FormatSaveData, "FormatSaveData"}, |         {IPC::MakeHeader(0x084B, 0, 2), nullptr, "ImportIntegrityVerificationSeed"}, | ||||||
|         {0x084D0102, nullptr, "GetLegacySubBannerData"}, |         {IPC::MakeHeader(0x084C, 9, 2), &FS_USER::FormatSaveData, "FormatSaveData"}, | ||||||
|         {0x084E0342, nullptr, "UpdateSha256Context"}, |         {IPC::MakeHeader(0x084D, 4, 2), nullptr, "GetLegacySubBannerData"}, | ||||||
|         {0x084F0102, nullptr, "ReadSpecialFile"}, |         {IPC::MakeHeader(0x084E, 13, 2), nullptr, "UpdateSha256Context"}, | ||||||
|         {0x08500040, nullptr, "GetSpecialFileSize"}, |         {IPC::MakeHeader(0x084F, 4, 2), nullptr, "ReadSpecialFile"}, | ||||||
|         {0x08510242, &FS_USER::CreateExtSaveData, "CreateExtSaveData"}, |         {IPC::MakeHeader(0x0850, 1, 0), nullptr, "GetSpecialFileSize"}, | ||||||
|         {0x08520100, &FS_USER::DeleteExtSaveData, "DeleteExtSaveData"}, |         {IPC::MakeHeader(0x0851, 9, 2), &FS_USER::CreateExtSaveData, "CreateExtSaveData"}, | ||||||
|         {0x08530142, nullptr, "ReadExtSaveDataIcon"}, |         {IPC::MakeHeader(0x0852, 4, 0), &FS_USER::DeleteExtSaveData, "DeleteExtSaveData"}, | ||||||
|         {0x085400C0, nullptr, "GetExtDataBlockSize"}, |         {IPC::MakeHeader(0x0853, 5, 2), nullptr, "ReadExtSaveDataIcon"}, | ||||||
|         {0x08550102, nullptr, "EnumerateExtSaveData"}, |         {IPC::MakeHeader(0x0854, 3, 0), nullptr, "GetExtDataBlockSize"}, | ||||||
|         {0x08560240, &FS_USER::CreateSystemSaveData, "CreateSystemSaveData"}, |         {IPC::MakeHeader(0x0855, 4, 2), nullptr, "EnumerateExtSaveData"}, | ||||||
|         {0x08570080, &FS_USER::DeleteSystemSaveData, "DeleteSystemSaveData"}, |         {IPC::MakeHeader(0x0856, 9, 0), &FS_USER::CreateSystemSaveData, "CreateSystemSaveData"}, | ||||||
|         {0x08580000, nullptr, "StartDeviceMoveAsSource"}, |         {IPC::MakeHeader(0x0857, 2, 0), &FS_USER::DeleteSystemSaveData, "DeleteSystemSaveData"}, | ||||||
|         {0x08590200, nullptr, "StartDeviceMoveAsDestination"}, |         {IPC::MakeHeader(0x0858, 0, 0), nullptr, "StartDeviceMoveAsSource"}, | ||||||
|         {0x085A00C0, nullptr, "SetArchivePriority"}, |         {IPC::MakeHeader(0x0859, 8, 0), nullptr, "StartDeviceMoveAsDestination"}, | ||||||
|         {0x085B0080, nullptr, "GetArchivePriority"}, |         {IPC::MakeHeader(0x085A, 3, 0), nullptr, "SetArchivePriority"}, | ||||||
|         {0x085C00C0, nullptr, "SetCtrCardLatencyParameter"}, |         {IPC::MakeHeader(0x085B, 2, 0), nullptr, "GetArchivePriority"}, | ||||||
|         {0x085D01C0, nullptr, "SetFsCompatibilityInfo"}, |         {IPC::MakeHeader(0x085C, 3, 0), nullptr, "SetCtrCardLatencyParameter"}, | ||||||
|         {0x085E0040, nullptr, "ResetCardCompatibilityParameter"}, |         {IPC::MakeHeader(0x085D, 7, 0), nullptr, "SetFsCompatibilityInfo"}, | ||||||
|         {0x085F0040, nullptr, "SwitchCleanupInvalidSaveData"}, |         {IPC::MakeHeader(0x085E, 1, 0), nullptr, "ResetCardCompatibilityParameter"}, | ||||||
|         {0x08600042, nullptr, "EnumerateSystemSaveData"}, |         {IPC::MakeHeader(0x085F, 1, 0), nullptr, "SwitchCleanupInvalidSaveData"}, | ||||||
|         {0x08610042, &FS_USER::InitializeWithSdkVersion, "InitializeWithSdkVersion"}, |         {IPC::MakeHeader(0x0860, 1, 2), nullptr, "EnumerateSystemSaveData"}, | ||||||
|         {0x08620040, &FS_USER::SetPriority, "SetPriority"}, |         {IPC::MakeHeader(0x0861, 1, 2), &FS_USER::InitializeWithSdkVersion, "InitializeWithSdkVersion"}, | ||||||
|         {0x08630000, &FS_USER::GetPriority, "GetPriority"}, |         {IPC::MakeHeader(0x0862, 1, 0), &FS_USER::SetPriority, "SetPriority"}, | ||||||
|         {0x08640000, nullptr, "GetNandInfo"}, |         {IPC::MakeHeader(0x0863, 0, 0), &FS_USER::GetPriority, "GetPriority"}, | ||||||
|         {0x08650140, &FS_USER::SetSaveDataSecureValue, "SetSaveDataSecureValue"}, |         {IPC::MakeHeader(0x0864, 0, 0), nullptr, "GetNandInfo"}, | ||||||
|         {0x086600C0, &FS_USER::GetSaveDataSecureValue, "GetSaveDataSecureValue"}, |         {IPC::MakeHeader(0x0865, 5, 0), &FS_USER::SetSaveDataSecureValue, "SetSaveDataSecureValue"}, | ||||||
|         {0x086700C4, nullptr, "ControlSecureSave"}, |         {IPC::MakeHeader(0x0866, 3, 0), &FS_USER::GetSaveDataSecureValue, "GetSaveDataSecureValue"}, | ||||||
|         {0x08680000, nullptr, "GetMediaType"}, |         {IPC::MakeHeader(0x0867, 3, 4), nullptr, "ControlSecureSave"}, | ||||||
|         {0x08690000, nullptr, "GetNandEraseCount"}, |         {IPC::MakeHeader(0x0868, 0, 0), nullptr, "GetMediaType"}, | ||||||
|         {0x086A0082, nullptr, "ReadNandReport"}, |         {IPC::MakeHeader(0x0869, 0, 0), nullptr, "GetNandEraseCount"}, | ||||||
|         {0x087A0180, &FS_USER::AddSeed, "AddSeed"}, |         {IPC::MakeHeader(0x086A, 2, 2), nullptr, "ReadNandReport"}, | ||||||
|         {0x087D0000, &FS_USER::GetNumSeeds, "GetNumSeeds"}, |         {IPC::MakeHeader(0x087A, 6, 0), &FS_USER::AddSeed, "AddSeed"}, | ||||||
|         {0x088600C0, nullptr, "CheckUpdatedDat"}, |         {IPC::MakeHeader(0x087D, 0, 0), &FS_USER::GetNumSeeds, "GetNumSeeds"}, | ||||||
|  |         {IPC::MakeHeader(0x0886, 3, 0), nullptr, "CheckUpdatedDat"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -820,37 +820,39 @@ SessionData* GSP_GPU::FindRegisteredThreadData(u32 thread_id) { | |||||||
|  |  | ||||||
| GSP_GPU::GSP_GPU(Core::System& system) : ServiceFramework("gsp::Gpu", 2), system(system) { | GSP_GPU::GSP_GPU(Core::System& system) : ServiceFramework("gsp::Gpu", 2), system(system) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010082, &GSP_GPU::WriteHWRegs, "WriteHWRegs"}, |         // clang-format off | ||||||
|         {0x00020084, &GSP_GPU::WriteHWRegsWithMask, "WriteHWRegsWithMask"}, |         {IPC::MakeHeader(0x0001, 2, 2), &GSP_GPU::WriteHWRegs, "WriteHWRegs"}, | ||||||
|         {0x00030082, nullptr, "WriteHWRegRepeat"}, |         {IPC::MakeHeader(0x0002, 2, 4), &GSP_GPU::WriteHWRegsWithMask, "WriteHWRegsWithMask"}, | ||||||
|         {0x00040080, &GSP_GPU::ReadHWRegs, "ReadHWRegs"}, |         {IPC::MakeHeader(0x0003, 2, 2), nullptr, "WriteHWRegRepeat"}, | ||||||
|         {0x00050200, &GSP_GPU::SetBufferSwap, "SetBufferSwap"}, |         {IPC::MakeHeader(0x0004, 2, 0), &GSP_GPU::ReadHWRegs, "ReadHWRegs"}, | ||||||
|         {0x00060082, nullptr, "SetCommandList"}, |         {IPC::MakeHeader(0x0005, 8, 0), &GSP_GPU::SetBufferSwap, "SetBufferSwap"}, | ||||||
|         {0x000700C2, nullptr, "RequestDma"}, |         {IPC::MakeHeader(0x0006, 2, 2), nullptr, "SetCommandList"}, | ||||||
|         {0x00080082, &GSP_GPU::FlushDataCache, "FlushDataCache"}, |         {IPC::MakeHeader(0x0007, 3, 2), nullptr, "RequestDma"}, | ||||||
|         {0x00090082, &GSP_GPU::InvalidateDataCache, "InvalidateDataCache"}, |         {IPC::MakeHeader(0x0008, 2, 2), &GSP_GPU::FlushDataCache, "FlushDataCache"}, | ||||||
|         {0x000A0044, nullptr, "RegisterInterruptEvents"}, |         {IPC::MakeHeader(0x0009, 2, 2), &GSP_GPU::InvalidateDataCache, "InvalidateDataCache"}, | ||||||
|         {0x000B0040, &GSP_GPU::SetLcdForceBlack, "SetLcdForceBlack"}, |         {IPC::MakeHeader(0x000A, 1, 4), nullptr, "RegisterInterruptEvents"}, | ||||||
|         {0x000C0000, &GSP_GPU::TriggerCmdReqQueue, "TriggerCmdReqQueue"}, |         {IPC::MakeHeader(0x000B, 1, 0), &GSP_GPU::SetLcdForceBlack, "SetLcdForceBlack"}, | ||||||
|         {0x000D0140, nullptr, "SetDisplayTransfer"}, |         {IPC::MakeHeader(0x000C, 0, 0), &GSP_GPU::TriggerCmdReqQueue, "TriggerCmdReqQueue"}, | ||||||
|         {0x000E0180, nullptr, "SetTextureCopy"}, |         {IPC::MakeHeader(0x000D, 5, 0), nullptr, "SetDisplayTransfer"}, | ||||||
|         {0x000F0200, nullptr, "SetMemoryFill"}, |         {IPC::MakeHeader(0x000E, 6, 0), nullptr, "SetTextureCopy"}, | ||||||
|         {0x00100040, &GSP_GPU::SetAxiConfigQoSMode, "SetAxiConfigQoSMode"}, |         {IPC::MakeHeader(0x000F, 8, 0), nullptr, "SetMemoryFill"}, | ||||||
|         {0x00110040, nullptr, "SetPerfLogMode"}, |         {IPC::MakeHeader(0x0010, 1, 0), &GSP_GPU::SetAxiConfigQoSMode, "SetAxiConfigQoSMode"}, | ||||||
|         {0x00120000, nullptr, "GetPerfLog"}, |         {IPC::MakeHeader(0x0011, 1, 0), nullptr, "SetPerfLogMode"}, | ||||||
|         {0x00130042, &GSP_GPU::RegisterInterruptRelayQueue, "RegisterInterruptRelayQueue"}, |         {IPC::MakeHeader(0x0012, 0, 0), nullptr, "GetPerfLog"}, | ||||||
|         {0x00140000, &GSP_GPU::UnregisterInterruptRelayQueue, "UnregisterInterruptRelayQueue"}, |         {IPC::MakeHeader(0x0013, 1, 2), &GSP_GPU::RegisterInterruptRelayQueue, "RegisterInterruptRelayQueue"}, | ||||||
|         {0x00150002, nullptr, "TryAcquireRight"}, |         {IPC::MakeHeader(0x0014, 0, 0), &GSP_GPU::UnregisterInterruptRelayQueue, "UnregisterInterruptRelayQueue"}, | ||||||
|         {0x00160042, &GSP_GPU::AcquireRight, "AcquireRight"}, |         {IPC::MakeHeader(0x0015, 0, 2), nullptr, "TryAcquireRight"}, | ||||||
|         {0x00170000, &GSP_GPU::ReleaseRight, "ReleaseRight"}, |         {IPC::MakeHeader(0x0016, 1, 2), &GSP_GPU::AcquireRight, "AcquireRight"}, | ||||||
|         {0x00180000, &GSP_GPU::ImportDisplayCaptureInfo, "ImportDisplayCaptureInfo"}, |         {IPC::MakeHeader(0x0017, 0, 0), &GSP_GPU::ReleaseRight, "ReleaseRight"}, | ||||||
|         {0x00190000, &GSP_GPU::SaveVramSysArea, "SaveVramSysArea"}, |         {IPC::MakeHeader(0x0018, 0, 0), &GSP_GPU::ImportDisplayCaptureInfo, "ImportDisplayCaptureInfo"}, | ||||||
|         {0x001A0000, &GSP_GPU::RestoreVramSysArea, "RestoreVramSysArea"}, |         {IPC::MakeHeader(0x0019, 0, 0), &GSP_GPU::SaveVramSysArea, "SaveVramSysArea"}, | ||||||
|         {0x001B0000, nullptr, "ResetGpuCore"}, |         {IPC::MakeHeader(0x001A, 0, 0), &GSP_GPU::RestoreVramSysArea, "RestoreVramSysArea"}, | ||||||
|         {0x001C0040, &GSP_GPU::SetLedForceOff, "SetLedForceOff"}, |         {IPC::MakeHeader(0x001B, 0, 0), nullptr, "ResetGpuCore"}, | ||||||
|         {0x001D0040, nullptr, "SetTestCommand"}, |         {IPC::MakeHeader(0x001C, 1, 0), &GSP_GPU::SetLedForceOff, "SetLedForceOff"}, | ||||||
|         {0x001E0080, nullptr, "SetInternalPriorities"}, |         {IPC::MakeHeader(0x001D, 1, 0), nullptr, "SetTestCommand"}, | ||||||
|         {0x001F0082, &GSP_GPU::StoreDataCache, "StoreDataCache"}, |         {IPC::MakeHeader(0x001E, 2, 0), nullptr, "SetInternalPriorities"}, | ||||||
|  |         {IPC::MakeHeader(0x001F, 2, 2), &GSP_GPU::StoreDataCache, "StoreDataCache"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -12,15 +12,17 @@ namespace Service::GSP { | |||||||
|  |  | ||||||
| GSP_LCD::GSP_LCD() : ServiceFramework("gsp::Lcd") { | GSP_LCD::GSP_LCD() : ServiceFramework("gsp::Lcd") { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x000A0080, nullptr, "SetBrightnessRaw"}, |         // clang-format off | ||||||
|         {0x000B0080, nullptr, "SetBrightness"}, |         {IPC::MakeHeader(0x000A, 2, 0), nullptr, "SetBrightnessRaw"}, | ||||||
|         {0x000F0000, nullptr, "PowerOnAllBacklights"}, |         {IPC::MakeHeader(0x000B, 2, 0), nullptr, "SetBrightness"}, | ||||||
|         {0x00100000, nullptr, "PowerOffAllBacklights"}, |         {IPC::MakeHeader(0x000F, 0, 0), nullptr, "PowerOnAllBacklights"}, | ||||||
|         {0x00110040, nullptr, "PowerOnBacklight"}, |         {IPC::MakeHeader(0x0010, 0, 0), nullptr, "PowerOffAllBacklights"}, | ||||||
|         {0x00120040, nullptr, "PowerOffBacklight"}, |         {IPC::MakeHeader(0x0011, 1, 0), nullptr, "PowerOnBacklight"}, | ||||||
|         {0x00130040, nullptr, "SetLedForceOff"}, |         {IPC::MakeHeader(0x0012, 1, 0), nullptr, "PowerOffBacklight"}, | ||||||
|         {0x00140000, nullptr, "GetVendor"}, |         {IPC::MakeHeader(0x0013, 1, 0), nullptr, "SetLedForceOff"}, | ||||||
|         {0x00150040, nullptr, "GetBrightness"}, |         {IPC::MakeHeader(0x0014, 0, 0), nullptr, "GetVendor"}, | ||||||
|  |         {IPC::MakeHeader(0x0015, 1, 0), nullptr, "GetBrightness"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -11,19 +11,20 @@ namespace Service::HID { | |||||||
|  |  | ||||||
| Spvr::Spvr(std::shared_ptr<Module> hid) : Module::Interface(std::move(hid), "hid:SPVR", 6) { | Spvr::Spvr(std::shared_ptr<Module> hid) : Module::Interface(std::move(hid), "hid:SPVR", 6) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010200, nullptr, "CalibrateTouchScreen"}, |         // clang-format off | ||||||
|         {0x00020000, nullptr, "UpdateTouchConfig"}, |         {IPC::MakeHeader(0x0001, 8, 0), nullptr, "CalibrateTouchScreen"}, | ||||||
|         {0x000A0000, &Spvr::GetIPCHandles, "GetIPCHandles"}, |         {IPC::MakeHeader(0x0002, 0, 0), nullptr, "UpdateTouchConfig"}, | ||||||
|         {0x000B0000, nullptr, "StartAnalogStickCalibration"}, |         {IPC::MakeHeader(0x000A, 0, 0), &Spvr::GetIPCHandles, "GetIPCHandles"}, | ||||||
|         {0x000E0000, nullptr, "GetAnalogStickCalibrateParam"}, |         {IPC::MakeHeader(0x000B, 0, 0), nullptr, "StartAnalogStickCalibration"}, | ||||||
|         {0x00110000, &Spvr::EnableAccelerometer, "EnableAccelerometer"}, |         {IPC::MakeHeader(0x000E, 0, 0), nullptr, "GetAnalogStickCalibrateParam"}, | ||||||
|         {0x00120000, &Spvr::DisableAccelerometer, "DisableAccelerometer"}, |         {IPC::MakeHeader(0x0011, 0, 0), &Spvr::EnableAccelerometer, "EnableAccelerometer"}, | ||||||
|         {0x00130000, &Spvr::EnableGyroscopeLow, "EnableGyroscopeLow"}, |         {IPC::MakeHeader(0x0012, 0, 0), &Spvr::DisableAccelerometer, "DisableAccelerometer"}, | ||||||
|         {0x00140000, &Spvr::DisableGyroscopeLow, "DisableGyroscopeLow"}, |         {IPC::MakeHeader(0x0013, 0, 0), &Spvr::EnableGyroscopeLow, "EnableGyroscopeLow"}, | ||||||
|         {0x00150000, &Spvr::GetGyroscopeLowRawToDpsCoefficient, |         {IPC::MakeHeader(0x0014, 0, 0), &Spvr::DisableGyroscopeLow, "DisableGyroscopeLow"}, | ||||||
|          "GetGyroscopeLowRawToDpsCoefficient"}, |         {IPC::MakeHeader(0x0015, 0, 0), &Spvr::GetGyroscopeLowRawToDpsCoefficient, "GetGyroscopeLowRawToDpsCoefficient"}, | ||||||
|         {0x00160000, &Spvr::GetGyroscopeLowCalibrateParam, "GetGyroscopeLowCalibrateParam"}, |         {IPC::MakeHeader(0x0016, 0, 0), &Spvr::GetGyroscopeLowCalibrateParam, "GetGyroscopeLowCalibrateParam"}, | ||||||
|         {0x00170000, &Spvr::GetSoundVolume, "GetSoundVolume"}, |         {IPC::MakeHeader(0x0017, 0, 0), &Spvr::GetSoundVolume, "GetSoundVolume"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,19 +11,20 @@ namespace Service::HID { | |||||||
|  |  | ||||||
| User::User(std::shared_ptr<Module> hid) : Module::Interface(std::move(hid), "hid:USER", 6) { | User::User(std::shared_ptr<Module> hid) : Module::Interface(std::move(hid), "hid:USER", 6) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010200, nullptr, "CalibrateTouchScreen"}, |         // clang-format off | ||||||
|         {0x00020000, nullptr, "UpdateTouchConfig"}, |         {IPC::MakeHeader(0x0001, 8, 0), nullptr, "CalibrateTouchScreen"}, | ||||||
|         {0x000A0000, &User::GetIPCHandles, "GetIPCHandles"}, |         {IPC::MakeHeader(0x0002, 0, 0), nullptr, "UpdateTouchConfig"}, | ||||||
|         {0x000B0000, nullptr, "StartAnalogStickCalibration"}, |         {IPC::MakeHeader(0x000A, 0, 0), &User::GetIPCHandles, "GetIPCHandles"}, | ||||||
|         {0x000E0000, nullptr, "GetAnalogStickCalibrateParam"}, |         {IPC::MakeHeader(0x000B, 0, 0), nullptr, "StartAnalogStickCalibration"}, | ||||||
|         {0x00110000, &User::EnableAccelerometer, "EnableAccelerometer"}, |         {IPC::MakeHeader(0x000E, 0, 0), nullptr, "GetAnalogStickCalibrateParam"}, | ||||||
|         {0x00120000, &User::DisableAccelerometer, "DisableAccelerometer"}, |         {IPC::MakeHeader(0x0011, 0, 0), &User::EnableAccelerometer, "EnableAccelerometer"}, | ||||||
|         {0x00130000, &User::EnableGyroscopeLow, "EnableGyroscopeLow"}, |         {IPC::MakeHeader(0x0012, 0, 0), &User::DisableAccelerometer, "DisableAccelerometer"}, | ||||||
|         {0x00140000, &User::DisableGyroscopeLow, "DisableGyroscopeLow"}, |         {IPC::MakeHeader(0x0013, 0, 0), &User::EnableGyroscopeLow, "EnableGyroscopeLow"}, | ||||||
|         {0x00150000, &User::GetGyroscopeLowRawToDpsCoefficient, |         {IPC::MakeHeader(0x0014, 0, 0), &User::DisableGyroscopeLow, "DisableGyroscopeLow"}, | ||||||
|          "GetGyroscopeLowRawToDpsCoefficient"}, |         {IPC::MakeHeader(0x0015, 0, 0), &User::GetGyroscopeLowRawToDpsCoefficient, "GetGyroscopeLowRawToDpsCoefficient"}, | ||||||
|         {0x00160000, &User::GetGyroscopeLowCalibrateParam, "GetGyroscopeLowCalibrateParam"}, |         {IPC::MakeHeader(0x0016, 0, 0), &User::GetGyroscopeLowCalibrateParam, "GetGyroscopeLowCalibrateParam"}, | ||||||
|         {0x00170000, &User::GetSoundVolume, "GetSoundVolume"}, |         {IPC::MakeHeader(0x0017, 0, 0), &User::GetSoundVolume, "GetSoundVolume"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -868,62 +868,64 @@ void HTTP_C::DecryptClCertA() { | |||||||
|  |  | ||||||
| HTTP_C::HTTP_C() : ServiceFramework("http:C", 32) { | HTTP_C::HTTP_C() : ServiceFramework("http:C", 32) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010044, &HTTP_C::Initialize, "Initialize"}, |         // clang-format off | ||||||
|         {0x00020082, &HTTP_C::CreateContext, "CreateContext"}, |         {IPC::MakeHeader(0x0001, 1, 4), &HTTP_C::Initialize, "Initialize"}, | ||||||
|         {0x00030040, &HTTP_C::CloseContext, "CloseContext"}, |         {IPC::MakeHeader(0x0002, 2, 2), &HTTP_C::CreateContext, "CreateContext"}, | ||||||
|         {0x00040040, nullptr, "CancelConnection"}, |         {IPC::MakeHeader(0x0003, 1, 0), &HTTP_C::CloseContext, "CloseContext"}, | ||||||
|         {0x00050040, nullptr, "GetRequestState"}, |         {IPC::MakeHeader(0x0004, 1, 0), nullptr, "CancelConnection"}, | ||||||
|         {0x00060040, nullptr, "GetDownloadSizeState"}, |         {IPC::MakeHeader(0x0005, 1, 0), nullptr, "GetRequestState"}, | ||||||
|         {0x00070040, nullptr, "GetRequestError"}, |         {IPC::MakeHeader(0x0006, 1, 0), nullptr, "GetDownloadSizeState"}, | ||||||
|         {0x00080042, &HTTP_C::InitializeConnectionSession, "InitializeConnectionSession"}, |         {IPC::MakeHeader(0x0007, 1, 0), nullptr, "GetRequestError"}, | ||||||
|         {0x00090040, &HTTP_C::BeginRequest, "BeginRequest"}, |         {IPC::MakeHeader(0x0008, 1, 2), &HTTP_C::InitializeConnectionSession, "InitializeConnectionSession"}, | ||||||
|         {0x000A0040, &HTTP_C::BeginRequestAsync, "BeginRequestAsync"}, |         {IPC::MakeHeader(0x0009, 1, 0), &HTTP_C::BeginRequest, "BeginRequest"}, | ||||||
|         {0x000B0082, nullptr, "ReceiveData"}, |         {IPC::MakeHeader(0x000A, 1, 0), &HTTP_C::BeginRequestAsync, "BeginRequestAsync"}, | ||||||
|         {0x000C0102, nullptr, "ReceiveDataTimeout"}, |         {IPC::MakeHeader(0x000B, 2, 2), nullptr, "ReceiveData"}, | ||||||
|         {0x000D0146, nullptr, "SetProxy"}, |         {IPC::MakeHeader(0x000C, 4, 2), nullptr, "ReceiveDataTimeout"}, | ||||||
|         {0x000E0040, nullptr, "SetProxyDefault"}, |         {IPC::MakeHeader(0x000D, 5, 6), nullptr, "SetProxy"}, | ||||||
|         {0x000F00C4, nullptr, "SetBasicAuthorization"}, |         {IPC::MakeHeader(0x000E, 1, 0), nullptr, "SetProxyDefault"}, | ||||||
|         {0x00100080, nullptr, "SetSocketBufferSize"}, |         {IPC::MakeHeader(0x000F, 3, 4), nullptr, "SetBasicAuthorization"}, | ||||||
|         {0x001100C4, &HTTP_C::AddRequestHeader, "AddRequestHeader"}, |         {IPC::MakeHeader(0x0010, 2, 0), nullptr, "SetSocketBufferSize"}, | ||||||
|         {0x001200C4, &HTTP_C::AddPostDataAscii, "AddPostDataAscii"}, |         {IPC::MakeHeader(0x0011, 3, 4), &HTTP_C::AddRequestHeader, "AddRequestHeader"}, | ||||||
|         {0x001300C4, nullptr, "AddPostDataBinary"}, |         {IPC::MakeHeader(0x0012, 3, 4), &HTTP_C::AddPostDataAscii, "AddPostDataAscii"}, | ||||||
|         {0x00140082, nullptr, "AddPostDataRaw"}, |         {IPC::MakeHeader(0x0013, 3, 4), nullptr, "AddPostDataBinary"}, | ||||||
|         {0x00150080, nullptr, "SetPostDataType"}, |         {IPC::MakeHeader(0x0014, 2, 2), nullptr, "AddPostDataRaw"}, | ||||||
|         {0x001600C4, nullptr, "SendPostDataAscii"}, |         {IPC::MakeHeader(0x0015, 2, 0), nullptr, "SetPostDataType"}, | ||||||
|         {0x00170144, nullptr, "SendPostDataAsciiTimeout"}, |         {IPC::MakeHeader(0x0016, 3, 4), nullptr, "SendPostDataAscii"}, | ||||||
|         {0x001800C4, nullptr, "SendPostDataBinary"}, |         {IPC::MakeHeader(0x0017, 5, 4), nullptr, "SendPostDataAsciiTimeout"}, | ||||||
|         {0x00190144, nullptr, "SendPostDataBinaryTimeout"}, |         {IPC::MakeHeader(0x0018, 3, 4), nullptr, "SendPostDataBinary"}, | ||||||
|         {0x001A0082, nullptr, "SendPostDataRaw"}, |         {IPC::MakeHeader(0x0019, 5, 4), nullptr, "SendPostDataBinaryTimeout"}, | ||||||
|         {0x001B0102, nullptr, "SendPOSTDataRawTimeout"}, |         {IPC::MakeHeader(0x001A, 2, 2), nullptr, "SendPostDataRaw"}, | ||||||
|         {0x001C0080, nullptr, "SetPostDataEncoding"}, |         {IPC::MakeHeader(0x001B, 4, 2), nullptr, "SendPOSTDataRawTimeout"}, | ||||||
|         {0x001D0040, nullptr, "NotifyFinishSendPostData"}, |         {IPC::MakeHeader(0x001C, 2, 0), nullptr, "SetPostDataEncoding"}, | ||||||
|         {0x001E00C4, nullptr, "GetResponseHeader"}, |         {IPC::MakeHeader(0x001D, 1, 0), nullptr, "NotifyFinishSendPostData"}, | ||||||
|         {0x001F0144, nullptr, "GetResponseHeaderTimeout"}, |         {IPC::MakeHeader(0x001E, 3, 4), nullptr, "GetResponseHeader"}, | ||||||
|         {0x00200082, nullptr, "GetResponseData"}, |         {IPC::MakeHeader(0x001F, 5, 4), nullptr, "GetResponseHeaderTimeout"}, | ||||||
|         {0x00210102, nullptr, "GetResponseDataTimeout"}, |         {IPC::MakeHeader(0x0020, 2, 2), nullptr, "GetResponseData"}, | ||||||
|         {0x00220040, nullptr, "GetResponseStatusCode"}, |         {IPC::MakeHeader(0x0021, 4, 2), nullptr, "GetResponseDataTimeout"}, | ||||||
|         {0x002300C0, nullptr, "GetResponseStatusCodeTimeout"}, |         {IPC::MakeHeader(0x0022, 1, 0), nullptr, "GetResponseStatusCode"}, | ||||||
|         {0x00240082, nullptr, "AddTrustedRootCA"}, |         {IPC::MakeHeader(0x0023, 3, 0), nullptr, "GetResponseStatusCodeTimeout"}, | ||||||
|         {0x00250080, nullptr, "AddDefaultCert"}, |         {IPC::MakeHeader(0x0024, 2, 2), nullptr, "AddTrustedRootCA"}, | ||||||
|         {0x00260080, nullptr, "SelectRootCertChain"}, |         {IPC::MakeHeader(0x0025, 2, 0), nullptr, "AddDefaultCert"}, | ||||||
|         {0x002700C4, nullptr, "SetClientCert"}, |         {IPC::MakeHeader(0x0026, 2, 0), nullptr, "SelectRootCertChain"}, | ||||||
|         {0x00290080, &HTTP_C::SetClientCertContext, "SetClientCertContext"}, |         {IPC::MakeHeader(0x0027, 3, 4), nullptr, "SetClientCert"}, | ||||||
|         {0x002A0040, &HTTP_C::GetSSLError, "GetSSLError"}, |         {IPC::MakeHeader(0x0029, 2, 0), &HTTP_C::SetClientCertContext, "SetClientCertContext"}, | ||||||
|         {0x002B0080, nullptr, "SetSSLOpt"}, |         {IPC::MakeHeader(0x002A, 1, 0), &HTTP_C::GetSSLError, "GetSSLError"}, | ||||||
|         {0x002C0080, nullptr, "SetSSLClearOpt"}, |         {IPC::MakeHeader(0x002B, 2, 0), nullptr, "SetSSLOpt"}, | ||||||
|         {0x002D0000, nullptr, "CreateRootCertChain"}, |         {IPC::MakeHeader(0x002C, 2, 0), nullptr, "SetSSLClearOpt"}, | ||||||
|         {0x002E0040, nullptr, "DestroyRootCertChain"}, |         {IPC::MakeHeader(0x002D, 0, 0), nullptr, "CreateRootCertChain"}, | ||||||
|         {0x002F0082, nullptr, "RootCertChainAddCert"}, |         {IPC::MakeHeader(0x002E, 1, 0), nullptr, "DestroyRootCertChain"}, | ||||||
|         {0x00300080, nullptr, "RootCertChainAddDefaultCert"}, |         {IPC::MakeHeader(0x002F, 2, 2), nullptr, "RootCertChainAddCert"}, | ||||||
|         {0x00310080, nullptr, "RootCertChainRemoveCert"}, |         {IPC::MakeHeader(0x0030, 2, 0), nullptr, "RootCertChainAddDefaultCert"}, | ||||||
|         {0x00320084, &HTTP_C::OpenClientCertContext, "OpenClientCertContext"}, |         {IPC::MakeHeader(0x0031, 2, 0), nullptr, "RootCertChainRemoveCert"}, | ||||||
|         {0x00330040, &HTTP_C::OpenDefaultClientCertContext, "OpenDefaultClientCertContext"}, |         {IPC::MakeHeader(0x0032, 2, 4), &HTTP_C::OpenClientCertContext, "OpenClientCertContext"}, | ||||||
|         {0x00340040, &HTTP_C::CloseClientCertContext, "CloseClientCertContext"}, |         {IPC::MakeHeader(0x0033, 1, 0), &HTTP_C::OpenDefaultClientCertContext, "OpenDefaultClientCertContext"}, | ||||||
|         {0x00350186, nullptr, "SetDefaultProxy"}, |         {IPC::MakeHeader(0x0034, 1, 0), &HTTP_C::CloseClientCertContext, "CloseClientCertContext"}, | ||||||
|         {0x00360000, nullptr, "ClearDNSCache"}, |         {IPC::MakeHeader(0x0035, 6, 6), nullptr, "SetDefaultProxy"}, | ||||||
|         {0x00370080, nullptr, "SetKeepAlive"}, |         {IPC::MakeHeader(0x0036, 0, 0), nullptr, "ClearDNSCache"}, | ||||||
|         {0x003800C0, nullptr, "SetPostDataTypeSize"}, |         {IPC::MakeHeader(0x0037, 2, 0), nullptr, "SetKeepAlive"}, | ||||||
|         {0x00390000, &HTTP_C::Finalize, "Finalize"}, |         {IPC::MakeHeader(0x0038, 3, 0), nullptr, "SetPostDataTypeSize"}, | ||||||
|  |         {IPC::MakeHeader(0x0039, 0, 0), &HTTP_C::Finalize, "Finalize"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -180,10 +180,12 @@ IR_RST::IR_RST(Core::System& system) : ServiceFramework("ir:rst", 1), system(sys | |||||||
|         }); |         }); | ||||||
|  |  | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010000, &IR_RST::GetHandles, "GetHandles"}, |         // clang-format off | ||||||
|         {0x00020080, &IR_RST::Initialize, "Initialize"}, |         {IPC::MakeHeader(0x0001, 0, 0), &IR_RST::GetHandles, "GetHandles"}, | ||||||
|         {0x00030000, &IR_RST::Shutdown, "Shutdown"}, |         {IPC::MakeHeader(0x0002, 2, 0), &IR_RST::Initialize, "Initialize"}, | ||||||
|         {0x00090000, nullptr, "WriteToTwoFields"}, |         {IPC::MakeHeader(0x0003, 0, 0), &IR_RST::Shutdown, "Shutdown"}, | ||||||
|  |         {IPC::MakeHeader(0x0009, 0, 0), nullptr, "WriteToTwoFields"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,24 +11,26 @@ namespace Service::IR { | |||||||
|  |  | ||||||
| IR_U::IR_U() : ServiceFramework("ir:u", 1) { | IR_U::IR_U() : ServiceFramework("ir:u", 1) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010000, nullptr, "Initialize"}, |         // clang-format off | ||||||
|         {0x00020000, nullptr, "Shutdown"}, |         {IPC::MakeHeader(0x0001, 0, 0), nullptr, "Initialize"}, | ||||||
|         {0x00030042, nullptr, "StartSendTransfer"}, |         {IPC::MakeHeader(0x0002, 0, 0), nullptr, "Shutdown"}, | ||||||
|         {0x00040000, nullptr, "WaitSendTransfer"}, |         {IPC::MakeHeader(0x0003, 1, 2), nullptr, "StartSendTransfer"}, | ||||||
|         {0x000500C2, nullptr, "StartRecvTransfer"}, |         {IPC::MakeHeader(0x0004, 0, 0), nullptr, "WaitSendTransfer"}, | ||||||
|         {0x00060000, nullptr, "WaitRecvTransfer"}, |         {IPC::MakeHeader(0x0005, 3, 2), nullptr, "StartRecvTransfer"}, | ||||||
|         {0x00070080, nullptr, "GetRecvTransferCount"}, |         {IPC::MakeHeader(0x0006, 0, 0), nullptr, "WaitRecvTransfer"}, | ||||||
|         {0x00080000, nullptr, "GetSendState"}, |         {IPC::MakeHeader(0x0007, 2, 0), nullptr, "GetRecvTransferCount"}, | ||||||
|         {0x00090040, nullptr, "SetBitRate"}, |         {IPC::MakeHeader(0x0008, 0, 0), nullptr, "GetSendState"}, | ||||||
|         {0x000A0000, nullptr, "GetBitRate"}, |         {IPC::MakeHeader(0x0009, 1, 0), nullptr, "SetBitRate"}, | ||||||
|         {0x000B0040, nullptr, "SetIRLEDState"}, |         {IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetBitRate"}, | ||||||
|         {0x000C0000, nullptr, "GetIRLEDRecvState"}, |         {IPC::MakeHeader(0x000B, 1, 0), nullptr, "SetIRLEDState"}, | ||||||
|         {0x000D0000, nullptr, "GetSendFinishedEvent"}, |         {IPC::MakeHeader(0x000C, 0, 0), nullptr, "GetIRLEDRecvState"}, | ||||||
|         {0x000E0000, nullptr, "GetRecvFinishedEvent"}, |         {IPC::MakeHeader(0x000D, 0, 0), nullptr, "GetSendFinishedEvent"}, | ||||||
|         {0x000F0000, nullptr, "GetTransferState"}, |         {IPC::MakeHeader(0x000E, 0, 0), nullptr, "GetRecvFinishedEvent"}, | ||||||
|         {0x00100000, nullptr, "GetErrorStatus"}, |         {IPC::MakeHeader(0x000F, 0, 0), nullptr, "GetTransferState"}, | ||||||
|         {0x00110040, nullptr, "SetSleepModeActive"}, |         {IPC::MakeHeader(0x0010, 0, 0), nullptr, "GetErrorStatus"}, | ||||||
|         {0x00120040, nullptr, "SetSleepModeState"}, |         {IPC::MakeHeader(0x0011, 1, 0), nullptr, "SetSleepModeActive"}, | ||||||
|  |         {IPC::MakeHeader(0x0012, 1, 0), nullptr, "SetSleepModeState"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -425,32 +425,34 @@ void IR_USER::ReleaseReceivedData(Kernel::HLERequestContext& ctx) { | |||||||
|  |  | ||||||
| IR_USER::IR_USER(Core::System& system) : ServiceFramework("ir:USER", 1) { | IR_USER::IR_USER(Core::System& system) : ServiceFramework("ir:USER", 1) { | ||||||
|     const FunctionInfo functions[] = { |     const FunctionInfo functions[] = { | ||||||
|         {0x00010182, nullptr, "InitializeIrNop"}, |         // clang-format off | ||||||
|         {0x00020000, &IR_USER::FinalizeIrNop, "FinalizeIrNop"}, |         {IPC::MakeHeader(0x0001, 6, 2), nullptr, "InitializeIrNop"}, | ||||||
|         {0x00030000, nullptr, "ClearReceiveBuffer"}, |         {IPC::MakeHeader(0x0002, 0, 0), &IR_USER::FinalizeIrNop, "FinalizeIrNop"}, | ||||||
|         {0x00040000, nullptr, "ClearSendBuffer"}, |         {IPC::MakeHeader(0x0003, 0, 0), nullptr, "ClearReceiveBuffer"}, | ||||||
|         {0x000500C0, nullptr, "WaitConnection"}, |         {IPC::MakeHeader(0x0004, 0, 0), nullptr, "ClearSendBuffer"}, | ||||||
|         {0x00060040, &IR_USER::RequireConnection, "RequireConnection"}, |         {IPC::MakeHeader(0x0005, 3, 0), nullptr, "WaitConnection"}, | ||||||
|         {0x000702C0, nullptr, "AutoConnection"}, |         {IPC::MakeHeader(0x0006, 1, 0), &IR_USER::RequireConnection, "RequireConnection"}, | ||||||
|         {0x00080000, nullptr, "AnyConnection"}, |         {IPC::MakeHeader(0x0007, 11, 0), nullptr, "AutoConnection"}, | ||||||
|         {0x00090000, &IR_USER::Disconnect, "Disconnect"}, |         {IPC::MakeHeader(0x0008, 0, 0), nullptr, "AnyConnection"}, | ||||||
|         {0x000A0000, &IR_USER::GetReceiveEvent, "GetReceiveEvent"}, |         {IPC::MakeHeader(0x0009, 0, 0), &IR_USER::Disconnect, "Disconnect"}, | ||||||
|         {0x000B0000, &IR_USER::GetSendEvent, "GetSendEvent"}, |         {IPC::MakeHeader(0x000A, 0, 0), &IR_USER::GetReceiveEvent, "GetReceiveEvent"}, | ||||||
|         {0x000C0000, &IR_USER::GetConnectionStatusEvent, "GetConnectionStatusEvent"}, |         {IPC::MakeHeader(0x000B, 0, 0), &IR_USER::GetSendEvent, "GetSendEvent"}, | ||||||
|         {0x000D0042, &IR_USER::SendIrNop, "SendIrNop"}, |         {IPC::MakeHeader(0x000C, 0, 0), &IR_USER::GetConnectionStatusEvent, "GetConnectionStatusEvent"}, | ||||||
|         {0x000E0042, nullptr, "SendIrNopLarge"}, |         {IPC::MakeHeader(0x000D, 1, 2), &IR_USER::SendIrNop, "SendIrNop"}, | ||||||
|         {0x000F0040, nullptr, "ReceiveIrnop"}, |         {IPC::MakeHeader(0x000E, 1, 2), nullptr, "SendIrNopLarge"}, | ||||||
|         {0x00100042, nullptr, "ReceiveIrnopLarge"}, |         {IPC::MakeHeader(0x000F, 1, 0), nullptr, "ReceiveIrnop"}, | ||||||
|         {0x00110040, nullptr, "GetLatestReceiveErrorResult"}, |         {IPC::MakeHeader(0x0010, 1, 2), nullptr, "ReceiveIrnopLarge"}, | ||||||
|         {0x00120040, nullptr, "GetLatestSendErrorResult"}, |         {IPC::MakeHeader(0x0011, 1, 0), nullptr, "GetLatestReceiveErrorResult"}, | ||||||
|         {0x00130000, nullptr, "GetConnectionStatus"}, |         {IPC::MakeHeader(0x0012, 1, 0), nullptr, "GetLatestSendErrorResult"}, | ||||||
|         {0x00140000, nullptr, "GetTryingToConnectStatus"}, |         {IPC::MakeHeader(0x0013, 0, 0), nullptr, "GetConnectionStatus"}, | ||||||
|         {0x00150000, nullptr, "GetReceiveSizeFreeAndUsed"}, |         {IPC::MakeHeader(0x0014, 0, 0), nullptr, "GetTryingToConnectStatus"}, | ||||||
|         {0x00160000, nullptr, "GetSendSizeFreeAndUsed"}, |         {IPC::MakeHeader(0x0015, 0, 0), nullptr, "GetReceiveSizeFreeAndUsed"}, | ||||||
|         {0x00170000, nullptr, "GetConnectionRole"}, |         {IPC::MakeHeader(0x0016, 0, 0), nullptr, "GetSendSizeFreeAndUsed"}, | ||||||
|         {0x00180182, &IR_USER::InitializeIrNopShared, "InitializeIrNopShared"}, |         {IPC::MakeHeader(0x0017, 0, 0), nullptr, "GetConnectionRole"}, | ||||||
|         {0x00190040, &IR_USER::ReleaseReceivedData, "ReleaseReceivedData"}, |         {IPC::MakeHeader(0x0018, 6, 2), &IR_USER::InitializeIrNopShared, "InitializeIrNopShared"}, | ||||||
|         {0x001A0040, nullptr, "SetOwnMachineId"}, |         {IPC::MakeHeader(0x0019, 1, 0), &IR_USER::ReleaseReceivedData, "ReleaseReceivedData"}, | ||||||
|  |         {IPC::MakeHeader(0x001A, 1, 0), nullptr, "SetOwnMachineId"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -516,15 +516,17 @@ void RO::Shutdown(Kernel::HLERequestContext& ctx) { | |||||||
|  |  | ||||||
| RO::RO(Core::System& system) : ServiceFramework("ldr:ro", 2), system(system) { | RO::RO(Core::System& system) : ServiceFramework("ldr:ro", 2), system(system) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x000100C2, &RO::Initialize, "Initialize"}, |         // clang-format off | ||||||
|         {0x00020082, &RO::LoadCRR, "LoadCRR"}, |         {IPC::MakeHeader(0x0001, 3, 2), &RO::Initialize, "Initialize"}, | ||||||
|         {0x00030042, &RO::UnloadCRR, "UnloadCRR"}, |         {IPC::MakeHeader(0x0002, 2, 2), &RO::LoadCRR, "LoadCRR"}, | ||||||
|         {0x000402C2, &RO::LoadCRO<false>, "LoadCRO"}, |         {IPC::MakeHeader(0x0003, 1, 2), &RO::UnloadCRR, "UnloadCRR"}, | ||||||
|         {0x000500C2, &RO::UnloadCRO, "UnloadCRO"}, |         {IPC::MakeHeader(0x0004, 11, 2), &RO::LoadCRO<false>, "LoadCRO"}, | ||||||
|         {0x00060042, &RO::LinkCRO, "LinkCRO"}, |         {IPC::MakeHeader(0x0005, 3, 2), &RO::UnloadCRO, "UnloadCRO"}, | ||||||
|         {0x00070042, &RO::UnlinkCRO, "UnlinkCRO"}, |         {IPC::MakeHeader(0x0006, 1, 2), &RO::LinkCRO, "LinkCRO"}, | ||||||
|         {0x00080042, &RO::Shutdown, "Shutdown"}, |         {IPC::MakeHeader(0x0007, 1, 2), &RO::UnlinkCRO, "UnlinkCRO"}, | ||||||
|         {0x000902C2, &RO::LoadCRO<true>, "LoadCRO_New"}, |         {IPC::MakeHeader(0x0008, 1, 2), &RO::Shutdown, "Shutdown"}, | ||||||
|  |         {IPC::MakeHeader(0x0009, 11, 2), &RO::LoadCRO<true>, "LoadCRO_New"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -488,22 +488,24 @@ void MIC_U::SetClientVersion(Kernel::HLERequestContext& ctx) { | |||||||
| MIC_U::MIC_U(Core::System& system) | MIC_U::MIC_U(Core::System& system) | ||||||
|     : ServiceFramework{"mic:u", 1}, impl{std::make_unique<Impl>(system)} { |     : ServiceFramework{"mic:u", 1}, impl{std::make_unique<Impl>(system)} { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010042, &MIC_U::MapSharedMem, "MapSharedMem"}, |         // clang-format off | ||||||
|         {0x00020000, &MIC_U::UnmapSharedMem, "UnmapSharedMem"}, |         {IPC::MakeHeader(0x0001, 1, 2), &MIC_U::MapSharedMem, "MapSharedMem"}, | ||||||
|         {0x00030140, &MIC_U::StartSampling, "StartSampling"}, |         {IPC::MakeHeader(0x0002, 0, 0), &MIC_U::UnmapSharedMem, "UnmapSharedMem"}, | ||||||
|         {0x00040040, &MIC_U::AdjustSampling, "AdjustSampling"}, |         {IPC::MakeHeader(0x0003, 5, 0), &MIC_U::StartSampling, "StartSampling"}, | ||||||
|         {0x00050000, &MIC_U::StopSampling, "StopSampling"}, |         {IPC::MakeHeader(0x0004, 1, 0), &MIC_U::AdjustSampling, "AdjustSampling"}, | ||||||
|         {0x00060000, &MIC_U::IsSampling, "IsSampling"}, |         {IPC::MakeHeader(0x0005, 0, 0), &MIC_U::StopSampling, "StopSampling"}, | ||||||
|         {0x00070000, &MIC_U::GetBufferFullEvent, "GetBufferFullEvent"}, |         {IPC::MakeHeader(0x0006, 0, 0), &MIC_U::IsSampling, "IsSampling"}, | ||||||
|         {0x00080040, &MIC_U::SetGain, "SetGain"}, |         {IPC::MakeHeader(0x0007, 0, 0), &MIC_U::GetBufferFullEvent, "GetBufferFullEvent"}, | ||||||
|         {0x00090000, &MIC_U::GetGain, "GetGain"}, |         {IPC::MakeHeader(0x0008, 1, 0), &MIC_U::SetGain, "SetGain"}, | ||||||
|         {0x000A0040, &MIC_U::SetPower, "SetPower"}, |         {IPC::MakeHeader(0x0009, 0, 0), &MIC_U::GetGain, "GetGain"}, | ||||||
|         {0x000B0000, &MIC_U::GetPower, "GetPower"}, |         {IPC::MakeHeader(0x000A, 1, 0), &MIC_U::SetPower, "SetPower"}, | ||||||
|         {0x000C0042, &MIC_U::SetIirFilterMic, "SetIirFilterMic"}, |         {IPC::MakeHeader(0x000B, 0, 0), &MIC_U::GetPower, "GetPower"}, | ||||||
|         {0x000D0040, &MIC_U::SetClamp, "SetClamp"}, |         {IPC::MakeHeader(0x000C, 1, 2), &MIC_U::SetIirFilterMic, "SetIirFilterMic"}, | ||||||
|         {0x000E0000, &MIC_U::GetClamp, "GetClamp"}, |         {IPC::MakeHeader(0x000D, 1, 0), &MIC_U::SetClamp, "SetClamp"}, | ||||||
|         {0x000F0040, &MIC_U::SetAllowShellClosed, "SetAllowShellClosed"}, |         {IPC::MakeHeader(0x000E, 0, 0), &MIC_U::GetClamp, "GetClamp"}, | ||||||
|         {0x00100040, &MIC_U::SetClientVersion, "SetClientVersion"}, |         {IPC::MakeHeader(0x000F, 1, 0), &MIC_U::SetAllowShellClosed, "SetAllowShellClosed"}, | ||||||
|  |         {IPC::MakeHeader(0x0010, 1, 0), &MIC_U::SetClientVersion, "SetClientVersion"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     impl->CreateMic(); |     impl->CreateMic(); | ||||||
|   | |||||||
| @@ -13,18 +13,18 @@ namespace Service::MVD { | |||||||
| MVD_STD::MVD_STD() : ServiceFramework("mvd:std", 1) { | MVD_STD::MVD_STD() : ServiceFramework("mvd:std", 1) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010082, nullptr, "Initialize"}, |         {IPC::MakeHeader(0x0001, 2, 2), nullptr, "Initialize"}, | ||||||
|         {0x00020000, nullptr, "Shutdown"}, |         {IPC::MakeHeader(0x0002, 0, 0), nullptr, "Shutdown"}, | ||||||
|         {0x00030300, nullptr, "CalculateWorkBufSize"}, |         {IPC::MakeHeader(0x0003, 12, 0), nullptr, "CalculateWorkBufSize"}, | ||||||
|         {0x000400C0, nullptr, "CalculateImageSize"}, |         {IPC::MakeHeader(0x0004, 3, 0), nullptr, "CalculateImageSize"}, | ||||||
|         {0x00080142, nullptr, "ProcessNALUnit"}, |         {IPC::MakeHeader(0x0008, 5, 2), nullptr, "ProcessNALUnit"}, | ||||||
|         {0x00090042, nullptr, "ControlFrameRendering"}, |         {IPC::MakeHeader(0x0009, 1, 2), nullptr, "ControlFrameRendering"}, | ||||||
|         {0x000A0000, nullptr, "GetStatus"}, |         {IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetStatus"}, | ||||||
|         {0x000B0000, nullptr, "GetStatusOther"}, |         {IPC::MakeHeader(0x000B, 0, 0), nullptr, "GetStatusOther"}, | ||||||
|         {0x001D0042, nullptr, "GetConfig"}, |         {IPC::MakeHeader(0x001D, 1, 2), nullptr, "GetConfig"}, | ||||||
|         {0x001E0044, nullptr, "SetConfig"}, |         {IPC::MakeHeader(0x001E, 1, 4), nullptr, "SetConfig"}, | ||||||
|         {0x001F0902, nullptr, "SetOutputBuffer"}, |         {IPC::MakeHeader(0x001F, 36, 2), nullptr, "SetOutputBuffer"}, | ||||||
|         {0x00210100, nullptr, "OverrideOutputBuffers"} |         {IPC::MakeHeader(0x0021, 4, 0), nullptr, "OverrideOutputBuffers"} | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -212,29 +212,31 @@ void NDM_U::ClearHalfAwakeMacFilter(Kernel::HLERequestContext& ctx) { | |||||||
|  |  | ||||||
| NDM_U::NDM_U() : ServiceFramework("ndm:u", 6) { | NDM_U::NDM_U() : ServiceFramework("ndm:u", 6) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010042, &NDM_U::EnterExclusiveState, "EnterExclusiveState"}, |         // clang-format off | ||||||
|         {0x00020002, &NDM_U::LeaveExclusiveState, "LeaveExclusiveState"}, |         {IPC::MakeHeader(0x0001, 1, 2), &NDM_U::EnterExclusiveState, "EnterExclusiveState"}, | ||||||
|         {0x00030000, &NDM_U::QueryExclusiveMode, "QueryExclusiveMode"}, |         {IPC::MakeHeader(0x0002, 0, 2), &NDM_U::LeaveExclusiveState, "LeaveExclusiveState"}, | ||||||
|         {0x00040002, &NDM_U::LockState, "LockState"}, |         {IPC::MakeHeader(0x0003, 0, 0), &NDM_U::QueryExclusiveMode, "QueryExclusiveMode"}, | ||||||
|         {0x00050002, &NDM_U::UnlockState, "UnlockState"}, |         {IPC::MakeHeader(0x0004, 0, 2), &NDM_U::LockState, "LockState"}, | ||||||
|         {0x00060040, &NDM_U::SuspendDaemons, "SuspendDaemons"}, |         {IPC::MakeHeader(0x0005, 0, 2), &NDM_U::UnlockState, "UnlockState"}, | ||||||
|         {0x00070040, &NDM_U::ResumeDaemons, "ResumeDaemons"}, |         {IPC::MakeHeader(0x0006, 1, 0), &NDM_U::SuspendDaemons, "SuspendDaemons"}, | ||||||
|         {0x00080040, &NDM_U::SuspendScheduler, "SuspendScheduler"}, |         {IPC::MakeHeader(0x0007, 1, 0), &NDM_U::ResumeDaemons, "ResumeDaemons"}, | ||||||
|         {0x00090000, &NDM_U::ResumeScheduler, "ResumeScheduler"}, |         {IPC::MakeHeader(0x0008, 1, 0), &NDM_U::SuspendScheduler, "SuspendScheduler"}, | ||||||
|         {0x000A0000, nullptr, "GetCurrentState"}, |         {IPC::MakeHeader(0x0009, 0, 0), &NDM_U::ResumeScheduler, "ResumeScheduler"}, | ||||||
|         {0x000B0000, nullptr, "GetTargetState"}, |         {IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetCurrentState"}, | ||||||
|         {0x000C0000, nullptr, "<Stubbed>"}, |         {IPC::MakeHeader(0x000B, 0, 0), nullptr, "GetTargetState"}, | ||||||
|         {0x000D0040, &NDM_U::QueryStatus, "QueryStatus"}, |         {IPC::MakeHeader(0x000C, 0, 0), nullptr, "<Stubbed>"}, | ||||||
|         {0x000E0040, &NDM_U::GetDaemonDisableCount, "GetDaemonDisableCount"}, |         {IPC::MakeHeader(0x000D, 1, 0), &NDM_U::QueryStatus, "QueryStatus"}, | ||||||
|         {0x000F0000, &NDM_U::GetSchedulerDisableCount, "GetSchedulerDisableCount"}, |         {IPC::MakeHeader(0x000E, 1, 0), &NDM_U::GetDaemonDisableCount, "GetDaemonDisableCount"}, | ||||||
|         {0x00100040, &NDM_U::SetScanInterval, "SetScanInterval"}, |         {IPC::MakeHeader(0x000F, 0, 0), &NDM_U::GetSchedulerDisableCount, "GetSchedulerDisableCount"}, | ||||||
|         {0x00110000, &NDM_U::GetScanInterval, "GetScanInterval"}, |         {IPC::MakeHeader(0x0010, 1, 0), &NDM_U::SetScanInterval, "SetScanInterval"}, | ||||||
|         {0x00120040, &NDM_U::SetRetryInterval, "SetRetryInterval"}, |         {IPC::MakeHeader(0x0011, 0, 0), &NDM_U::GetScanInterval, "GetScanInterval"}, | ||||||
|         {0x00130000, &NDM_U::GetRetryInterval, "GetRetryInterval"}, |         {IPC::MakeHeader(0x0012, 1, 0), &NDM_U::SetRetryInterval, "SetRetryInterval"}, | ||||||
|         {0x00140040, &NDM_U::OverrideDefaultDaemons, "OverrideDefaultDaemons"}, |         {IPC::MakeHeader(0x0013, 0, 0), &NDM_U::GetRetryInterval, "GetRetryInterval"}, | ||||||
|         {0x00150000, &NDM_U::ResetDefaultDaemons, "ResetDefaultDaemons"}, |         {IPC::MakeHeader(0x0014, 1, 0), &NDM_U::OverrideDefaultDaemons, "OverrideDefaultDaemons"}, | ||||||
|         {0x00160000, &NDM_U::GetDefaultDaemons, "GetDefaultDaemons"}, |         {IPC::MakeHeader(0x0015, 0, 0), &NDM_U::ResetDefaultDaemons, "ResetDefaultDaemons"}, | ||||||
|         {0x00170000, &NDM_U::ClearHalfAwakeMacFilter, "ClearHalfAwakeMacFilter"}, |         {IPC::MakeHeader(0x0016, 0, 0), &NDM_U::GetDefaultDaemons, "GetDefaultDaemons"}, | ||||||
|  |         {IPC::MakeHeader(0x0017, 0, 0), &NDM_U::ClearHalfAwakeMacFilter, "ClearHalfAwakeMacFilter"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -23,19 +23,21 @@ void NEWS_S::GetTotalNotifications(Kernel::HLERequestContext& ctx) { | |||||||
|  |  | ||||||
| NEWS_S::NEWS_S() : ServiceFramework("news:s", 2) { | NEWS_S::NEWS_S() : ServiceFramework("news:s", 2) { | ||||||
|     const FunctionInfo functions[] = { |     const FunctionInfo functions[] = { | ||||||
|         {0x000100C6, nullptr, "AddNotification"}, |         // clang-format off | ||||||
|         {0x00050000, &NEWS_S::GetTotalNotifications, "GetTotalNotifications"}, |         {IPC::MakeHeader(0x0001, 3, 6), nullptr, "AddNotification"}, | ||||||
|         {0x00060042, nullptr, "SetNewsDBHeader"}, |         {IPC::MakeHeader(0x0005, 0, 0), &NEWS_S::GetTotalNotifications, "GetTotalNotifications"}, | ||||||
|         {0x00070082, nullptr, "SetNotificationHeader"}, |         {IPC::MakeHeader(0x0006, 1, 2), nullptr, "SetNewsDBHeader"}, | ||||||
|         {0x00080082, nullptr, "SetNotificationMessage"}, |         {IPC::MakeHeader(0x0007, 2, 2), nullptr, "SetNotificationHeader"}, | ||||||
|         {0x00090082, nullptr, "SetNotificationImage"}, |         {IPC::MakeHeader(0x0008, 2, 2), nullptr, "SetNotificationMessage"}, | ||||||
|         {0x000A0042, nullptr, "GetNewsDBHeader"}, |         {IPC::MakeHeader(0x0009, 2, 2), nullptr, "SetNotificationImage"}, | ||||||
|         {0x000B0082, nullptr, "GetNotificationHeader"}, |         {IPC::MakeHeader(0x000A, 1, 2), nullptr, "GetNewsDBHeader"}, | ||||||
|         {0x000C0082, nullptr, "GetNotificationMessage"}, |         {IPC::MakeHeader(0x000B, 2, 2), nullptr, "GetNotificationHeader"}, | ||||||
|         {0x000D0082, nullptr, "GetNotificationImage"}, |         {IPC::MakeHeader(0x000C, 2, 2), nullptr, "GetNotificationMessage"}, | ||||||
|         {0x000E0040, nullptr, "SetInfoLEDPattern"}, |         {IPC::MakeHeader(0x000D, 2, 2), nullptr, "GetNotificationImage"}, | ||||||
|         {0x00120082, nullptr, "GetNotificationHeaderOther"}, |         {IPC::MakeHeader(0x000E, 1, 0), nullptr, "SetInfoLEDPattern"}, | ||||||
|         {0x00130000, nullptr, "WriteNewsDBSavedata"}, |         {IPC::MakeHeader(0x0012, 2, 2), nullptr, "GetNotificationHeaderOther"}, | ||||||
|  |         {IPC::MakeHeader(0x0013, 0, 0), nullptr, "WriteNewsDBSavedata"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,7 +11,9 @@ namespace Service::NEWS { | |||||||
|  |  | ||||||
| NEWS_U::NEWS_U() : ServiceFramework("news:u", 1) { | NEWS_U::NEWS_U() : ServiceFramework("news:u", 1) { | ||||||
|     const FunctionInfo functions[] = { |     const FunctionInfo functions[] = { | ||||||
|         {0x000100C8, nullptr, "AddNotification"}, |         // clang-format off | ||||||
|  |         {IPC::MakeHeader(0x0001, 3, 8), nullptr, "AddNotification"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,35 +11,35 @@ namespace Service::NFC { | |||||||
|  |  | ||||||
| NFC_M::NFC_M(std::shared_ptr<Module> nfc) : Module::Interface(std::move(nfc), "nfc:m", 1) { | NFC_M::NFC_M(std::shared_ptr<Module> nfc) : Module::Interface(std::move(nfc), "nfc:m", 1) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |  | ||||||
|         // nfc:u shared commands |         // nfc:u shared commands | ||||||
|         {0x00010040, &NFC_M::Initialize, "Initialize"}, |         // clang-format off | ||||||
|         {0x00020040, &NFC_M::Shutdown, "Shutdown"}, |         {IPC::MakeHeader(0x0001, 1, 0), &NFC_M::Initialize, "Initialize"}, | ||||||
|         {0x00030000, &NFC_M::StartCommunication, "StartCommunication"}, |         {IPC::MakeHeader(0x0002, 1, 0), &NFC_M::Shutdown, "Shutdown"}, | ||||||
|         {0x00040000, &NFC_M::StopCommunication, "StopCommunication"}, |         {IPC::MakeHeader(0x0003, 0, 0), &NFC_M::StartCommunication, "StartCommunication"}, | ||||||
|         {0x00050040, &NFC_M::StartTagScanning, "StartTagScanning"}, |         {IPC::MakeHeader(0x0004, 0, 0), &NFC_M::StopCommunication, "StopCommunication"}, | ||||||
|         {0x00060000, &NFC_M::StopTagScanning, "StopTagScanning"}, |         {IPC::MakeHeader(0x0005, 1, 0), &NFC_M::StartTagScanning, "StartTagScanning"}, | ||||||
|         {0x00070000, &NFC_M::LoadAmiiboData, "LoadAmiiboData"}, |         {IPC::MakeHeader(0x0006, 0, 0), &NFC_M::StopTagScanning, "StopTagScanning"}, | ||||||
|         {0x00080000, &NFC_M::ResetTagScanState, "ResetTagScanState"}, |         {IPC::MakeHeader(0x0007, 0, 0), &NFC_M::LoadAmiiboData, "LoadAmiiboData"}, | ||||||
|         {0x00090002, nullptr, "UpdateStoredAmiiboData"}, |         {IPC::MakeHeader(0x0008, 0, 0), &NFC_M::ResetTagScanState, "ResetTagScanState"}, | ||||||
|         {0x000B0000, &NFC_M::GetTagInRangeEvent, "GetTagInRangeEvent"}, |         {IPC::MakeHeader(0x0009, 0, 2), nullptr, "UpdateStoredAmiiboData"}, | ||||||
|         {0x000C0000, &NFC_M::GetTagOutOfRangeEvent, "GetTagOutOfRangeEvent"}, |         {IPC::MakeHeader(0x000B, 0, 0), &NFC_M::GetTagInRangeEvent, "GetTagInRangeEvent"}, | ||||||
|         {0x000D0000, &NFC_M::GetTagState, "GetTagState"}, |         {IPC::MakeHeader(0x000C, 0, 0), &NFC_M::GetTagOutOfRangeEvent, "GetTagOutOfRangeEvent"}, | ||||||
|         {0x000F0000, &NFC_M::CommunicationGetStatus, "CommunicationGetStatus"}, |         {IPC::MakeHeader(0x000D, 0, 0), &NFC_M::GetTagState, "GetTagState"}, | ||||||
|         {0x00100000, nullptr, "GetTagInfo2"}, |         {IPC::MakeHeader(0x000F, 0, 0), &NFC_M::CommunicationGetStatus, "CommunicationGetStatus"}, | ||||||
|         {0x00110000, &NFC_M::GetTagInfo, "GetTagInfo"}, |         {IPC::MakeHeader(0x0010, 0, 0), nullptr, "GetTagInfo2"}, | ||||||
|         {0x00120000, nullptr, "CommunicationGetResult"}, |         {IPC::MakeHeader(0x0011, 0, 0), &NFC_M::GetTagInfo, "GetTagInfo"}, | ||||||
|         {0x00130040, nullptr, "OpenAppData"}, |         {IPC::MakeHeader(0x0012, 0, 0), nullptr, "CommunicationGetResult"}, | ||||||
|         {0x00140384, nullptr, "InitializeWriteAppData"}, |         {IPC::MakeHeader(0x0013, 1, 0), nullptr, "OpenAppData"}, | ||||||
|         {0x00150040, nullptr, "ReadAppData"}, |         {IPC::MakeHeader(0x0014, 14, 4), nullptr, "InitializeWriteAppData"}, | ||||||
|         {0x00160242, nullptr, "WriteAppData"}, |         {IPC::MakeHeader(0x0015, 1, 0), nullptr, "ReadAppData"}, | ||||||
|         {0x00170000, nullptr, "GetAmiiboSettings"}, |         {IPC::MakeHeader(0x0016, 9, 2), nullptr, "WriteAppData"}, | ||||||
|         {0x00180000, &NFC_M::GetAmiiboConfig, "GetAmiiboConfig"}, |         {IPC::MakeHeader(0x0017, 0, 0), nullptr, "GetAmiiboSettings"}, | ||||||
|         {0x00190000, nullptr, "GetAppDataInitStruct"}, |         {IPC::MakeHeader(0x0018, 0, 0), &NFC_M::GetAmiiboConfig, "GetAmiiboConfig"}, | ||||||
|         {0x001A0000, &NFC_M::Unknown0x1A, "Unknown0x1A"}, |         {IPC::MakeHeader(0x0019, 0, 0), nullptr, "GetAppDataInitStruct"}, | ||||||
|         {0x001B0000, &NFC_M::GetIdentificationBlock, "GetIdentificationBlock"}, |         {IPC::MakeHeader(0x001A, 0, 0), &NFC_M::Unknown0x1A, "Unknown0x1A"}, | ||||||
|  |         {IPC::MakeHeader(0x001B, 0, 0), &NFC_M::GetIdentificationBlock, "GetIdentificationBlock"}, | ||||||
|         // nfc:m |         // nfc:m | ||||||
|         {0x04040A40, nullptr, "SetAmiiboSettings"} |         {IPC::MakeHeader(0x0404, 41, 0), nullptr, "SetAmiiboSettings"} | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
|   | |||||||
| @@ -12,31 +12,31 @@ namespace Service::NFC { | |||||||
| NFC_U::NFC_U(std::shared_ptr<Module> nfc) : Module::Interface(std::move(nfc), "nfc:u", 1) { | NFC_U::NFC_U(std::shared_ptr<Module> nfc) : Module::Interface(std::move(nfc), "nfc:u", 1) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010040, &NFC_U::Initialize, "Initialize"}, |         {IPC::MakeHeader(0x0001, 1, 0), &NFC_U::Initialize, "Initialize"}, | ||||||
|         {0x00020040, &NFC_U::Shutdown, "Shutdown"}, |         {IPC::MakeHeader(0x0002, 1, 0), &NFC_U::Shutdown, "Shutdown"}, | ||||||
|         {0x00030000, &NFC_U::StartCommunication, "StartCommunication"}, |         {IPC::MakeHeader(0x0003, 0, 0), &NFC_U::StartCommunication, "StartCommunication"}, | ||||||
|         {0x00040000, &NFC_U::StopCommunication, "StopCommunication"}, |         {IPC::MakeHeader(0x0004, 0, 0), &NFC_U::StopCommunication, "StopCommunication"}, | ||||||
|         {0x00050040, &NFC_U::StartTagScanning, "StartTagScanning"}, |         {IPC::MakeHeader(0x0005, 1, 0), &NFC_U::StartTagScanning, "StartTagScanning"}, | ||||||
|         {0x00060000, &NFC_U::StopTagScanning, "StopTagScanning"}, |         {IPC::MakeHeader(0x0006, 0, 0), &NFC_U::StopTagScanning, "StopTagScanning"}, | ||||||
|         {0x00070000, &NFC_U::LoadAmiiboData, "LoadAmiiboData"}, |         {IPC::MakeHeader(0x0007, 0, 0), &NFC_U::LoadAmiiboData, "LoadAmiiboData"}, | ||||||
|         {0x00080000, &NFC_U::ResetTagScanState, "ResetTagScanState"}, |         {IPC::MakeHeader(0x0008, 0, 0), &NFC_U::ResetTagScanState, "ResetTagScanState"}, | ||||||
|         {0x00090002, nullptr, "UpdateStoredAmiiboData"}, |         {IPC::MakeHeader(0x0009, 0, 2), nullptr, "UpdateStoredAmiiboData"}, | ||||||
|         {0x000B0000, &NFC_U::GetTagInRangeEvent, "GetTagInRangeEvent"}, |         {IPC::MakeHeader(0x000B, 0, 0), &NFC_U::GetTagInRangeEvent, "GetTagInRangeEvent"}, | ||||||
|         {0x000C0000, &NFC_U::GetTagOutOfRangeEvent, "GetTagOutOfRangeEvent"}, |         {IPC::MakeHeader(0x000C, 0, 0), &NFC_U::GetTagOutOfRangeEvent, "GetTagOutOfRangeEvent"}, | ||||||
|         {0x000D0000, &NFC_U::GetTagState, "GetTagState"}, |         {IPC::MakeHeader(0x000D, 0, 0), &NFC_U::GetTagState, "GetTagState"}, | ||||||
|         {0x000F0000, &NFC_U::CommunicationGetStatus, "CommunicationGetStatus"}, |         {IPC::MakeHeader(0x000F, 0, 0), &NFC_U::CommunicationGetStatus, "CommunicationGetStatus"}, | ||||||
|         {0x00100000, nullptr, "GetTagInfo2"}, |         {IPC::MakeHeader(0x0010, 0, 0), nullptr, "GetTagInfo2"}, | ||||||
|         {0x00110000, &NFC_U::GetTagInfo, "GetTagInfo"}, |         {IPC::MakeHeader(0x0011, 0, 0), &NFC_U::GetTagInfo, "GetTagInfo"}, | ||||||
|         {0x00120000, nullptr, "CommunicationGetResult"}, |         {IPC::MakeHeader(0x0012, 0, 0), nullptr, "CommunicationGetResult"}, | ||||||
|         {0x00130040, nullptr, "OpenAppData"}, |         {IPC::MakeHeader(0x0013, 1, 0), nullptr, "OpenAppData"}, | ||||||
|         {0x00140384, nullptr, "InitializeWriteAppData"}, |         {IPC::MakeHeader(0x0014, 14, 4), nullptr, "InitializeWriteAppData"}, | ||||||
|         {0x00150040, nullptr, "ReadAppData"}, |         {IPC::MakeHeader(0x0015, 1, 0), nullptr, "ReadAppData"}, | ||||||
|         {0x00160242, nullptr, "WriteAppData"}, |         {IPC::MakeHeader(0x0016, 9, 2), nullptr, "WriteAppData"}, | ||||||
|         {0x00170000, nullptr, "GetAmiiboSettings"}, |         {IPC::MakeHeader(0x0017, 0, 0), nullptr, "GetAmiiboSettings"}, | ||||||
|         {0x00180000, &NFC_U::GetAmiiboConfig, "GetAmiiboConfig"}, |         {IPC::MakeHeader(0x0018, 0, 0), &NFC_U::GetAmiiboConfig, "GetAmiiboConfig"}, | ||||||
|         {0x00190000, nullptr, "GetAppDataInitStruct"}, |         {IPC::MakeHeader(0x0019, 0, 0), nullptr, "GetAppDataInitStruct"}, | ||||||
|         {0x001A0000, &NFC_U::Unknown0x1A, "Unknown0x1A"}, |         {IPC::MakeHeader(0x001A, 0, 0), &NFC_U::Unknown0x1A, "Unknown0x1A"}, | ||||||
|         {0x001B0000, &NFC_U::GetIdentificationBlock, "GetIdentificationBlock"}, |         {IPC::MakeHeader(0x001B, 0, 0), &NFC_U::GetIdentificationBlock, "GetIdentificationBlock"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
|   | |||||||
| @@ -11,14 +11,16 @@ namespace Service::NIM { | |||||||
|  |  | ||||||
| NIM_AOC::NIM_AOC() : ServiceFramework("nim:aoc", 2) { | NIM_AOC::NIM_AOC() : ServiceFramework("nim:aoc", 2) { | ||||||
|     const FunctionInfo functions[] = { |     const FunctionInfo functions[] = { | ||||||
|         {0x00030042, nullptr, "SetApplicationId"}, |         // clang-format off | ||||||
|         {0x00040042, nullptr, "SetTin"}, |         {IPC::MakeHeader(0x0003, 1, 2), nullptr, "SetApplicationId"}, | ||||||
|         {0x000902D0, nullptr, "ListContentSetsEx"}, |         {IPC::MakeHeader(0x0004, 1, 2), nullptr, "SetTin"}, | ||||||
|         {0x00180000, nullptr, "GetBalance"}, |         {IPC::MakeHeader(0x0009, 11, 16), nullptr, "ListContentSetsEx"}, | ||||||
|         {0x001D0000, nullptr, "GetCustomerSupportCode"}, |         {IPC::MakeHeader(0x0018, 0, 0), nullptr, "GetBalance"}, | ||||||
|         {0x00210000, nullptr, "Initialize"}, |         {IPC::MakeHeader(0x001D, 0, 0), nullptr, "GetCustomerSupportCode"}, | ||||||
|         {0x00240282, nullptr, "CalculateContentsRequiredSize"}, |         {IPC::MakeHeader(0x0021, 0, 0), nullptr, "Initialize"}, | ||||||
|         {0x00250000, nullptr, "RefreshServerTime"}, |         {IPC::MakeHeader(0x0024, 10, 2), nullptr, "CalculateContentsRequiredSize"}, | ||||||
|  |         {IPC::MakeHeader(0x0025, 0, 0), nullptr, "RefreshServerTime"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,11 +11,13 @@ namespace Service::NIM { | |||||||
|  |  | ||||||
| NIM_S::NIM_S() : ServiceFramework("nim:s", 1) { | NIM_S::NIM_S() : ServiceFramework("nim:s", 1) { | ||||||
|     const FunctionInfo functions[] = { |     const FunctionInfo functions[] = { | ||||||
|         {0x000A0000, nullptr, "CheckSysupdateAvailableSOAP"}, |         // clang-format off | ||||||
|         {0x0016020A, nullptr, "ListTitles"}, |         {IPC::MakeHeader(0x000A, 0, 0), nullptr, "CheckSysupdateAvailableSOAP"}, | ||||||
|         {0x00290000, nullptr, "AccountCheckBalanceSOAP"}, |         {IPC::MakeHeader(0x0016, 8, 10), nullptr, "ListTitles"}, | ||||||
|         {0x002D0042, nullptr, "DownloadTickets"}, |         {IPC::MakeHeader(0x0029, 0, 0), nullptr, "AccountCheckBalanceSOAP"}, | ||||||
|         {0x00420240, nullptr, "StartDownload"}, |         {IPC::MakeHeader(0x002D, 1, 2), nullptr, "DownloadTickets"}, | ||||||
|  |         {IPC::MakeHeader(0x0042, 9, 0), nullptr, "StartDownload"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -125,54 +125,54 @@ static_assert(sizeof(AutoDbgDat) == 0x108, "AutoDbgDat structure size is wrong") | |||||||
|  |  | ||||||
| NIM_U::NIM_U(Core::System& system) : ServiceFramework("nim:u", 2) { | NIM_U::NIM_U(Core::System& system) : ServiceFramework("nim:u", 2) { | ||||||
|     const FunctionInfo functions[] = { |     const FunctionInfo functions[] = { | ||||||
|         {0x00010000, &NIM_U::StartNetworkUpdate, "StartNetworkUpdate"}, |         // clang-format off | ||||||
|         {0x00020000, &NIM_U::GetProgress, "GetProgress"}, |         {IPC::MakeHeader(0x0001, 0, 0), &NIM_U::StartNetworkUpdate, "StartNetworkUpdate"}, | ||||||
|         {0x00030000, &NIM_U::Cancel, "Cancel"}, |         {IPC::MakeHeader(0x0002, 0, 0), &NIM_U::GetProgress, "GetProgress"}, | ||||||
|         {0x00040000, &NIM_U::CommitSystemTitles, "CommitSystemTitles"}, |         {IPC::MakeHeader(0x0003, 0, 0), &NIM_U::Cancel, "Cancel"}, | ||||||
|         {0x00050000, &NIM_U::GetBackgroundEventForMenu, "GetBackgroundEventForMenu"}, |         {IPC::MakeHeader(0x0004, 0, 0), &NIM_U::CommitSystemTitles, "CommitSystemTitles"}, | ||||||
|         {0x00060000, &NIM_U::GetBackgroundEventForNews, "GetBackgroundEventForNews"}, |         {IPC::MakeHeader(0x0005, 0, 0), &NIM_U::GetBackgroundEventForMenu, "GetBackgroundEventForMenu"}, | ||||||
|         {0x00070000, &NIM_U::FormatSaveData, "FormatSaveData"}, |         {IPC::MakeHeader(0x0006, 0, 0), &NIM_U::GetBackgroundEventForNews, "GetBackgroundEventForNews"}, | ||||||
|         {0x00080000, &NIM_U::GetCustomerSupportCode, "GetCustomerSupportCode"}, |         {IPC::MakeHeader(0x0007, 0, 0), &NIM_U::FormatSaveData, "FormatSaveData"}, | ||||||
|         {0x00090000, &NIM_U::IsCommittableAllSystemTitles, "IsCommittableAllSystemTitles"}, |         {IPC::MakeHeader(0x0008, 0, 0), &NIM_U::GetCustomerSupportCode, "GetCustomerSupportCode"}, | ||||||
|         {0x000A0000, &NIM_U::GetBackgroundProgress, "GetBackgroundProgress"}, |         {IPC::MakeHeader(0x0009, 0, 0), &NIM_U::IsCommittableAllSystemTitles, "IsCommittableAllSystemTitles"}, | ||||||
|         {0x000B0000, &NIM_U::GetSavedHash, "GetSavedHash"}, |         {IPC::MakeHeader(0x000A, 0, 0), &NIM_U::GetBackgroundProgress, "GetBackgroundProgress"}, | ||||||
|         {0x000C0082, &NIM_U::UnregisterTask, "UnregisterTask"}, |         {IPC::MakeHeader(0x000B, 0, 0), &NIM_U::GetSavedHash, "GetSavedHash"}, | ||||||
|         {0x000D0080, &NIM_U::IsRegistered, "IsRegistered"}, |         {IPC::MakeHeader(0x000C, 2, 2), &NIM_U::UnregisterTask, "UnregisterTask"}, | ||||||
|         {0x000E0080, &NIM_U::FindTaskInfo, "FindTaskInfo"}, |         {IPC::MakeHeader(0x000D, 2, 0), &NIM_U::IsRegistered, "IsRegistered"}, | ||||||
|         {0x000F0042, &NIM_U::GetTaskInfos, "GetTaskInfos"}, |         {IPC::MakeHeader(0x000E, 2, 0), &NIM_U::FindTaskInfo, "FindTaskInfo"}, | ||||||
|         {0x00100000, &NIM_U::DeleteUnmanagedContexts, "DeleteUnmanagedContexts"}, |         {IPC::MakeHeader(0x000F, 1, 2), &NIM_U::GetTaskInfos, "GetTaskInfos"}, | ||||||
|         {0x00110000, &NIM_U::UpdateAutoTitleDownloadTasksAsync, |         {IPC::MakeHeader(0x0010, 0, 0), &NIM_U::DeleteUnmanagedContexts, "DeleteUnmanagedContexts"}, | ||||||
|          "UpdateAutoTitleDownloadTasksAsync"}, |         {IPC::MakeHeader(0x0011, 0, 0), &NIM_U::UpdateAutoTitleDownloadTasksAsync, "UpdateAutoTitleDownloadTasksAsync"}, | ||||||
|         {0x00120000, &NIM_U::StartPendingAutoTitleDownloadTasksAsync, |         {IPC::MakeHeader(0x0012, 0, 0), &NIM_U::StartPendingAutoTitleDownloadTasksAsync, "StartPendingAutoTitleDownloadTasksAsync"}, | ||||||
|          "StartPendingAutoTitleDownloadTasksAsync"}, |         {IPC::MakeHeader(0x0013, 0, 0), &NIM_U::GetAsyncResult, "GetAsyncResult"}, | ||||||
|         {0x00130000, &NIM_U::GetAsyncResult, "GetAsyncResult"}, |         {IPC::MakeHeader(0x0014, 0, 0), &NIM_U::CancelAsyncCall, "CancelAsyncCall"}, | ||||||
|         {0x00140000, &NIM_U::CancelAsyncCall, "CancelAsyncCall"}, |         {IPC::MakeHeader(0x0015, 0, 0), &NIM_U::IsPendingAutoTitleDownloadTasks, "IsPendingAutoTitleDownloadTasks"}, | ||||||
|         {0x00150000, &NIM_U::IsPendingAutoTitleDownloadTasks, "IsPendingAutoTitleDownloadTasks"}, |         {IPC::MakeHeader(0x0016, 0, 0), &NIM_U::GetNumAutoTitleDownloadTasks, "GetNumAutoTitleDownloadTasks"}, | ||||||
|         {0x00160000, &NIM_U::GetNumAutoTitleDownloadTasks, "GetNumAutoTitleDownloadTasks"}, |         {IPC::MakeHeader(0x0017, 1, 2), &NIM_U::GetAutoTitleDownloadTaskInfos, "GetAutoTitleDownloadTaskInfos"}, | ||||||
|         {0x00170042, &NIM_U::GetAutoTitleDownloadTaskInfos, "GetAutoTitleDownloadTaskInfos"}, |         {IPC::MakeHeader(0x0018, 2, 0), &NIM_U::CancelAutoTitleDownloadTask, "CancelAutoTitleDownloadTask"}, | ||||||
|         {0x00180080, &NIM_U::CancelAutoTitleDownloadTask, "CancelAutoTitleDownloadTask"}, |         {IPC::MakeHeader(0x0019, 0, 2), &NIM_U::SetAutoDbgDat, "SetAutoDbgDat"}, | ||||||
|         {0x00190002, &NIM_U::SetAutoDbgDat, "SetAutoDbgDat"}, |         {IPC::MakeHeader(0x001A, 0, 2), &NIM_U::GetAutoDbgDat, "GetAutoDbgDat"}, | ||||||
|         {0x001A0002, &NIM_U::GetAutoDbgDat, "GetAutoDbgDat"}, |         {IPC::MakeHeader(0x001B, 1, 2), &NIM_U::SetDbgTasks, "SetDbgTasks"}, | ||||||
|         {0x001B0042, &NIM_U::SetDbgTasks, "SetDbgTasks"}, |         {IPC::MakeHeader(0x001C, 1, 2), &NIM_U::GetDbgTasks, "GetDbgTasks"}, | ||||||
|         {0x001C0042, &NIM_U::GetDbgTasks, "GetDbgTasks"}, |         {IPC::MakeHeader(0x001D, 0, 0), &NIM_U::DeleteDbgData, "DeleteDbgData"}, | ||||||
|         {0x001D0000, &NIM_U::DeleteDbgData, "DeleteDbgData"}, |         {IPC::MakeHeader(0x001E, 1, 2), &NIM_U::SetTslXml, "SetTslXml"}, | ||||||
|         {0x001E0042, &NIM_U::SetTslXml, "SetTslXml"}, |         {IPC::MakeHeader(0x001F, 0, 0), &NIM_U::GetTslXmlSize, "GetTslXmlSize"}, | ||||||
|         {0x001F0000, &NIM_U::GetTslXmlSize, "GetTslXmlSize"}, |         {IPC::MakeHeader(0x0020, 1, 2), &NIM_U::GetTslXml, "GetTslXml"}, | ||||||
|         {0x00200042, &NIM_U::GetTslXml, "GetTslXml"}, |         {IPC::MakeHeader(0x0021, 0, 0), &NIM_U::DeleteTslXml, "DeleteTslXml"}, | ||||||
|         {0x00210000, &NIM_U::DeleteTslXml, "DeleteTslXml"}, |         {IPC::MakeHeader(0x0022, 1, 2), &NIM_U::SetDtlXml, "SetDtlXml"}, | ||||||
|         {0x00220042, &NIM_U::SetDtlXml, "SetDtlXml"}, |         {IPC::MakeHeader(0x0023, 0, 0), &NIM_U::GetDtlXmlSize, "GetDtlXmlSize"}, | ||||||
|         {0x00230000, &NIM_U::GetDtlXmlSize, "GetDtlXmlSize"}, |         {IPC::MakeHeader(0x0024, 1, 2), &NIM_U::GetDtlXml, "GetDtlXml"}, | ||||||
|         {0x00240042, &NIM_U::GetDtlXml, "GetDtlXml"}, |         {IPC::MakeHeader(0x0025, 0, 0), &NIM_U::UpdateAccountStatus, "UpdateAccountStatus"}, | ||||||
|         {0x00250000, &NIM_U::UpdateAccountStatus, "UpdateAccountStatus"}, |         {IPC::MakeHeader(0x0026, 6, 0), &NIM_U::StartTitleDownload, "StartTitleDownload"}, | ||||||
|         {0x00260180, &NIM_U::StartTitleDownload, "StartTitleDownload"}, |         {IPC::MakeHeader(0x0027, 0, 0), &NIM_U::StopTitleDownload, "StopTitleDownload"}, | ||||||
|         {0x00270000, &NIM_U::StopTitleDownload, "StopTitleDownload"}, |         {IPC::MakeHeader(0x0028, 0, 0), &NIM_U::GetTitleDownloadProgress, "GetTitleDownloadProgress"}, | ||||||
|         {0x00280000, &NIM_U::GetTitleDownloadProgress, "GetTitleDownloadProgress"}, |         {IPC::MakeHeader(0x0029, 9, 6), &NIM_U::RegisterTask, "RegisterTask"}, | ||||||
|         {0x00290246, &NIM_U::RegisterTask, "RegisterTask"}, |         {IPC::MakeHeader(0x002A, 0, 0), &NIM_U::IsSystemUpdateAvailable, "IsSystemUpdateAvailable"}, | ||||||
|         {0x002A0000, &NIM_U::IsSystemUpdateAvailable, "IsSystemUpdateAvailable"}, |         {IPC::MakeHeader(0x002B, 0, 0), &NIM_U::Unknown2B, "Unknown2B"}, | ||||||
|         {0x002B0000, &NIM_U::Unknown2B, "Unknown2B"}, |         {IPC::MakeHeader(0x002C, 0, 0), &NIM_U::UpdateTickets, "UpdateTickets"}, | ||||||
|         {0x002C0000, &NIM_U::UpdateTickets, "UpdateTickets"}, |         {IPC::MakeHeader(0x002D, 3, 0), &NIM_U::DownloadTitleSeedAsync, "DownloadTitleSeedAsync"}, | ||||||
|         {0x002D00C0, &NIM_U::DownloadTitleSeedAsync, "DownloadTitleSeedAsync"}, |         {IPC::MakeHeader(0x002E, 0, 0), &NIM_U::DownloadMissingTitleSeedsAsync, "DownloadMissingTitleSeedsAsync"}, | ||||||
|         {0x002E0000, &NIM_U::DownloadMissingTitleSeedsAsync, "DownloadMissingTitleSeedsAsync"}, |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
|     nim_system_update_event_for_menu = |     nim_system_update_event_for_menu = | ||||||
|   | |||||||
| @@ -11,7 +11,9 @@ namespace Service::NWM { | |||||||
|  |  | ||||||
| NWM_CEC::NWM_CEC() : ServiceFramework("nwm::CEC") { | NWM_CEC::NWM_CEC() : ServiceFramework("nwm::CEC") { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x000D0082, nullptr, "SendProbeRequest"}, |         // clang-format off | ||||||
|  |         {IPC::MakeHeader(0x000D, 2, 2), nullptr, "SendProbeRequest"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,7 +11,9 @@ namespace Service::NWM { | |||||||
|  |  | ||||||
| NWM_EXT::NWM_EXT() : ServiceFramework("nwm::EXT") { | NWM_EXT::NWM_EXT() : ServiceFramework("nwm::EXT") { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00080040, nullptr, "ControlWirelessEnabled"}, |         // clang-format off | ||||||
|  |         {IPC::MakeHeader(0x0008, 1, 0), nullptr, "ControlWirelessEnabled"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,9 +11,11 @@ namespace Service::NWM { | |||||||
|  |  | ||||||
| NWM_INF::NWM_INF() : ServiceFramework("nwm::INF") { | NWM_INF::NWM_INF() : ServiceFramework("nwm::INF") { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x000603C4, nullptr, "RecvBeaconBroadcastData"}, |         // clang-format off | ||||||
|         {0x00070742, nullptr, "ConnectToEncryptedAP"}, |         {IPC::MakeHeader(0x0006, 15, 4), nullptr, "RecvBeaconBroadcastData"}, | ||||||
|         {0x00080302, nullptr, "ConnectToAP"}, |         {IPC::MakeHeader(0x0007, 29, 2), nullptr, "ConnectToEncryptedAP"}, | ||||||
|  |         {IPC::MakeHeader(0x0008, 12, 2), nullptr, "ConnectToAP"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1467,35 +1467,37 @@ void NWM_UDS::BeaconBroadcastCallback(std::uintptr_t user_data, s64 cycles_late) | |||||||
|  |  | ||||||
| NWM_UDS::NWM_UDS(Core::System& system) : ServiceFramework("nwm::UDS"), system(system) { | NWM_UDS::NWM_UDS(Core::System& system) : ServiceFramework("nwm::UDS"), system(system) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x000102C2, &NWM_UDS::InitializeDeprecated, "Initialize (deprecated)"}, |         // clang-format off | ||||||
|         {0x00020000, nullptr, "Scrap"}, |         {IPC::MakeHeader(0x0001, 11, 2), &NWM_UDS::InitializeDeprecated, "Initialize (deprecated)"}, | ||||||
|         {0x00030000, &NWM_UDS::Shutdown, "Shutdown"}, |         {IPC::MakeHeader(0x0002, 0, 0), nullptr, "Scrap"}, | ||||||
|         {0x00040402, &NWM_UDS::BeginHostingNetworkDeprecated, "BeginHostingNetwork (deprecated)"}, |         {IPC::MakeHeader(0x0003, 0, 0), &NWM_UDS::Shutdown, "Shutdown"}, | ||||||
|         {0x00050040, &NWM_UDS::EjectClient, "EjectClient"}, |         {IPC::MakeHeader(0x0004, 16, 2), &NWM_UDS::BeginHostingNetworkDeprecated, "BeginHostingNetwork (deprecated)"}, | ||||||
|         {0x00060000, nullptr, "EjectSpectator"}, |         {IPC::MakeHeader(0x0005, 1, 0), &NWM_UDS::EjectClient, "EjectClient"}, | ||||||
|         {0x00070080, &NWM_UDS::UpdateNetworkAttribute, "UpdateNetworkAttribute"}, |         {IPC::MakeHeader(0x0006, 0, 0), nullptr, "EjectSpectator"}, | ||||||
|         {0x00080000, &NWM_UDS::DestroyNetwork, "DestroyNetwork"}, |         {IPC::MakeHeader(0x0007, 2, 0), &NWM_UDS::UpdateNetworkAttribute, "UpdateNetworkAttribute"}, | ||||||
|         {0x00090442, &NWM_UDS::ConnectToNetworkDeprecated, "ConnectToNetwork (deprecated)"}, |         {IPC::MakeHeader(0x0008, 0, 0), &NWM_UDS::DestroyNetwork, "DestroyNetwork"}, | ||||||
|         {0x000A0000, &NWM_UDS::DisconnectNetwork, "DisconnectNetwork"}, |         {IPC::MakeHeader(0x0009, 17, 2), &NWM_UDS::ConnectToNetworkDeprecated, "ConnectToNetwork (deprecated)"}, | ||||||
|         {0x000B0000, &NWM_UDS::GetConnectionStatus, "GetConnectionStatus"}, |         {IPC::MakeHeader(0x000A, 0, 0), &NWM_UDS::DisconnectNetwork, "DisconnectNetwork"}, | ||||||
|         {0x000D0040, &NWM_UDS::GetNodeInformation, "GetNodeInformation"}, |         {IPC::MakeHeader(0x000B, 0, 0), &NWM_UDS::GetConnectionStatus, "GetConnectionStatus"}, | ||||||
|         {0x000E0006, &NWM_UDS::DecryptBeaconData<0x0E>, "DecryptBeaconData (deprecated)"}, |         {IPC::MakeHeader(0x000D, 1, 0), &NWM_UDS::GetNodeInformation, "GetNodeInformation"}, | ||||||
|         {0x000F0404, &NWM_UDS::RecvBeaconBroadcastData, "RecvBeaconBroadcastData"}, |         {IPC::MakeHeader(0x000E, 0, 6), &NWM_UDS::DecryptBeaconData<0x0E>, "DecryptBeaconData (deprecated)"}, | ||||||
|         {0x00100042, &NWM_UDS::SetApplicationData, "SetApplicationData"}, |         {IPC::MakeHeader(0x000F, 16, 4), &NWM_UDS::RecvBeaconBroadcastData, "RecvBeaconBroadcastData"}, | ||||||
|         {0x00110040, &NWM_UDS::GetApplicationData, "GetApplicationData"}, |         {IPC::MakeHeader(0x0010, 1, 2), &NWM_UDS::SetApplicationData, "SetApplicationData"}, | ||||||
|         {0x00120100, &NWM_UDS::Bind, "Bind"}, |         {IPC::MakeHeader(0x0011, 1, 0), &NWM_UDS::GetApplicationData, "GetApplicationData"}, | ||||||
|         {0x00130040, &NWM_UDS::Unbind, "Unbind"}, |         {IPC::MakeHeader(0x0012, 4, 0), &NWM_UDS::Bind, "Bind"}, | ||||||
|         {0x001400C0, &NWM_UDS::PullPacket, "PullPacket"}, |         {IPC::MakeHeader(0x0013, 1, 0), &NWM_UDS::Unbind, "Unbind"}, | ||||||
|         {0x00150080, nullptr, "SetMaxSendDelay"}, |         {IPC::MakeHeader(0x0014, 3, 0), &NWM_UDS::PullPacket, "PullPacket"}, | ||||||
|         {0x00170182, &NWM_UDS::SendTo, "SendTo"}, |         {IPC::MakeHeader(0x0015, 2, 0), nullptr, "SetMaxSendDelay"}, | ||||||
|         {0x001A0000, &NWM_UDS::GetChannel, "GetChannel"}, |         {IPC::MakeHeader(0x0017, 6, 2), &NWM_UDS::SendTo, "SendTo"}, | ||||||
|         {0x001B0302, &NWM_UDS::InitializeWithVersion, "InitializeWithVersion"}, |         {IPC::MakeHeader(0x001A, 0, 0), &NWM_UDS::GetChannel, "GetChannel"}, | ||||||
|         {0x001D0044, &NWM_UDS::BeginHostingNetwork, "BeginHostingNetwork"}, |         {IPC::MakeHeader(0x001B, 12, 2), &NWM_UDS::InitializeWithVersion, "InitializeWithVersion"}, | ||||||
|         {0x001E0084, &NWM_UDS::ConnectToNetwork, "ConnectToNetwork"}, |         {IPC::MakeHeader(0x001D, 1, 4), &NWM_UDS::BeginHostingNetwork, "BeginHostingNetwork"}, | ||||||
|         {0x001F0006, &NWM_UDS::DecryptBeaconData<0x1F>, "DecryptBeaconData"}, |         {IPC::MakeHeader(0x001E, 2, 4), &NWM_UDS::ConnectToNetwork, "ConnectToNetwork"}, | ||||||
|         {0x00200040, nullptr, "Flush"}, |         {IPC::MakeHeader(0x001F, 0, 6), &NWM_UDS::DecryptBeaconData<0x1F>, "DecryptBeaconData"}, | ||||||
|         {0x00210080, nullptr, "SetProbeResponseParam"}, |         {IPC::MakeHeader(0x0020, 1, 0), nullptr, "Flush"}, | ||||||
|         {0x00220402, nullptr, "ScanOnConnection"}, |         {IPC::MakeHeader(0x0021, 2, 0), nullptr, "SetProbeResponseParam"}, | ||||||
|  |         {IPC::MakeHeader(0x0022, 16, 2), nullptr, "ScanOnConnection"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     connection_status_event = |     connection_status_event = | ||||||
|         system.Kernel().CreateEvent(Kernel::ResetType::OneShot, "NWM::connection_status_event"); |         system.Kernel().CreateEvent(Kernel::ResetType::OneShot, "NWM::connection_status_event"); | ||||||
|   | |||||||
| @@ -47,19 +47,21 @@ PAddr PLG_LDR::plugin_fb_addr = 0; | |||||||
|  |  | ||||||
| PLG_LDR::PLG_LDR() : ServiceFramework{"plg:ldr", 1} { | PLG_LDR::PLG_LDR() : ServiceFramework{"plg:ldr", 1} { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {IPC::MakeHeader(1, 0, 2), nullptr, "LoadPlugin"}, |         // clang-format off | ||||||
|         {IPC::MakeHeader(2, 0, 0), &PLG_LDR::IsEnabled, "IsEnabled"}, |         {IPC::MakeHeader(0x0001, 0, 2), nullptr, "LoadPlugin"}, | ||||||
|         {IPC::MakeHeader(3, 1, 0), &PLG_LDR::SetEnabled, "SetEnabled"}, |         {IPC::MakeHeader(0x0002, 0, 0), &PLG_LDR::IsEnabled, "IsEnabled"}, | ||||||
|         {IPC::MakeHeader(4, 2, 4), &PLG_LDR::SetLoadSettings, "SetLoadSettings"}, |         {IPC::MakeHeader(0x0003, 1, 0), &PLG_LDR::SetEnabled, "SetEnabled"}, | ||||||
|         {IPC::MakeHeader(5, 1, 8), nullptr, "DisplayMenu"}, |         {IPC::MakeHeader(0x0004, 2, 4), &PLG_LDR::SetLoadSettings, "SetLoadSettings"}, | ||||||
|         {IPC::MakeHeader(6, 0, 4), nullptr, "DisplayMessage"}, |         {IPC::MakeHeader(0x0005, 1, 8), nullptr, "DisplayMenu"}, | ||||||
|         {IPC::MakeHeader(7, 1, 4), &PLG_LDR::DisplayErrorMessage, "DisplayErrorMessage"}, |         {IPC::MakeHeader(0x0006, 0, 4), nullptr, "DisplayMessage"}, | ||||||
|         {IPC::MakeHeader(8, 0, 0), &PLG_LDR::GetPLGLDRVersion, "GetPLGLDRVersion"}, |         {IPC::MakeHeader(0x0007, 1, 4), &PLG_LDR::DisplayErrorMessage, "DisplayErrorMessage"}, | ||||||
|         {IPC::MakeHeader(9, 0, 0), &PLG_LDR::GetArbiter, "GetArbiter"}, |         {IPC::MakeHeader(0x0008, 0, 0), &PLG_LDR::GetPLGLDRVersion, "GetPLGLDRVersion"}, | ||||||
|         {IPC::MakeHeader(10, 0, 2), &PLG_LDR::GetPluginPath, "GetPluginPath"}, |         {IPC::MakeHeader(0x0009, 0, 0), &PLG_LDR::GetArbiter, "GetArbiter"}, | ||||||
|         {IPC::MakeHeader(11, 1, 0), nullptr, "SetRosalinaMenuBlock"}, |         {IPC::MakeHeader(0x000A, 0, 2), &PLG_LDR::GetPluginPath, "GetPluginPath"}, | ||||||
|         {IPC::MakeHeader(12, 2, 4), nullptr, "SetSwapParam"}, |         {IPC::MakeHeader(0x000B, 1, 0), nullptr, "SetRosalinaMenuBlock"}, | ||||||
|         {IPC::MakeHeader(13, 1, 2), nullptr, "SetLoadExeParam"}, |         {IPC::MakeHeader(0x000C, 2, 4), nullptr, "SetSwapParam"}, | ||||||
|  |         {IPC::MakeHeader(0x000D, 1, 2), nullptr, "SetLoadExeParam"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
|     plgldr_context.memory_changed_handle = 0; |     plgldr_context.memory_changed_handle = 0; | ||||||
|   | |||||||
| @@ -13,19 +13,19 @@ namespace Service::PM { | |||||||
| PM_APP::PM_APP() : ServiceFramework("pm:app", 3) { | PM_APP::PM_APP() : ServiceFramework("pm:app", 3) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010140, nullptr, "LaunchTitle"}, |         {IPC::MakeHeader(0x0001, 5, 0), nullptr, "LaunchTitle"}, | ||||||
|         {0x00020082, nullptr, "LaunchFIRM"}, |         {IPC::MakeHeader(0x0002, 2, 2), nullptr, "LaunchFIRM"}, | ||||||
|         {0x00030080, nullptr, "TerminateApplication"}, |         {IPC::MakeHeader(0x0003, 2, 0), nullptr, "TerminateApplication"}, | ||||||
|         {0x00040100, nullptr, "TerminateTitle"}, |         {IPC::MakeHeader(0x0004, 4, 0), nullptr, "TerminateTitle"}, | ||||||
|         {0x000500C0, nullptr, "TerminateProcess"}, |         {IPC::MakeHeader(0x0005, 3, 0), nullptr, "TerminateProcess"}, | ||||||
|         {0x00060082, nullptr, "PrepareForReboot"}, |         {IPC::MakeHeader(0x0006, 2, 2), nullptr, "PrepareForReboot"}, | ||||||
|         {0x00070042, nullptr, "GetFIRMLaunchParams"}, |         {IPC::MakeHeader(0x0007, 1, 2), nullptr, "GetFIRMLaunchParams"}, | ||||||
|         {0x00080100, nullptr, "GetTitleExheaderFlags"}, |         {IPC::MakeHeader(0x0008, 4, 0), nullptr, "GetTitleExheaderFlags"}, | ||||||
|         {0x00090042, nullptr, "SetFIRMLaunchParams"}, |         {IPC::MakeHeader(0x0009, 1, 2), nullptr, "SetFIRMLaunchParams"}, | ||||||
|         {0x000A0140, nullptr, "SetAppResourceLimit"}, |         {IPC::MakeHeader(0x000A, 5, 0), nullptr, "SetAppResourceLimit"}, | ||||||
|         {0x000B0140, nullptr, "GetAppResourceLimit"}, |         {IPC::MakeHeader(0x000B, 5, 0), nullptr, "GetAppResourceLimit"}, | ||||||
|         {0x000C0080, nullptr, "UnregisterProcess"}, |         {IPC::MakeHeader(0x000C, 2, 0), nullptr, "UnregisterProcess"}, | ||||||
|         {0x000D0240, nullptr, "LaunchTitleUpdate"}, |         {IPC::MakeHeader(0x000D, 9, 0), nullptr, "LaunchTitleUpdate"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -13,9 +13,9 @@ namespace Service::PM { | |||||||
| PM_DBG::PM_DBG() : ServiceFramework("pm:dbg", 3) { | PM_DBG::PM_DBG() : ServiceFramework("pm:dbg", 3) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010140, nullptr, "LaunchAppDebug"}, |         {IPC::MakeHeader(0x0001, 5, 0), nullptr, "LaunchAppDebug"}, | ||||||
|         {0x00020140, nullptr, "LaunchApp"}, |         {IPC::MakeHeader(0x0002, 5, 0), nullptr, "LaunchApp"}, | ||||||
|         {0x00030000, nullptr, "RunQueuedProcess"}, |         {IPC::MakeHeader(0x0003, 0, 0), nullptr, "RunQueuedProcess"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -149,22 +149,22 @@ void PS_PS::EncryptDecryptAes(Kernel::HLERequestContext& ctx) { | |||||||
| PS_PS::PS_PS() : ServiceFramework("ps:ps", DefaultMaxSessions) { | PS_PS::PS_PS() : ServiceFramework("ps:ps", DefaultMaxSessions) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |         // clang-format off | ||||||
|         {0x00010244, nullptr, "SignRsaSha256"}, |         {IPC::MakeHeader(0x0001, 9, 4), nullptr, "SignRsaSha256"}, | ||||||
|         {0x00020244, nullptr, "VerifyRsaSha256"}, |         {IPC::MakeHeader(0x0002, 9, 4), nullptr, "VerifyRsaSha256"}, | ||||||
|         {0x00040204, &PS_PS::EncryptDecryptAes, "EncryptDecryptAes"}, |         {IPC::MakeHeader(0x0004, 8, 4), &PS_PS::EncryptDecryptAes, "EncryptDecryptAes"}, | ||||||
|         {0x00050284, nullptr, "EncryptSignDecryptVerifyAesCcm"}, |         {IPC::MakeHeader(0x0005, 10, 4), nullptr, "EncryptSignDecryptVerifyAesCcm"}, | ||||||
|         {0x00060040, nullptr, "GetRomId"}, |         {IPC::MakeHeader(0x0006, 1, 0), nullptr, "GetRomId"}, | ||||||
|         {0x00070040, nullptr, "GetRomId2"}, |         {IPC::MakeHeader(0x0007, 1, 0), nullptr, "GetRomId2"}, | ||||||
|         {0x00080040, nullptr, "GetRomMakerCode"}, |         {IPC::MakeHeader(0x0008, 1, 0), nullptr, "GetRomMakerCode"}, | ||||||
|         {0x00090000, nullptr, "GetCTRCardAutoStartupBit"}, |         {IPC::MakeHeader(0x0009, 0, 0), nullptr, "GetCTRCardAutoStartupBit"}, | ||||||
|         {0x000A0000, nullptr, "GetLocalFriendCodeSeed"}, |         {IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetLocalFriendCodeSeed"}, | ||||||
|         {0x000B0000, nullptr, "GetDeviceId"}, |         {IPC::MakeHeader(0x000B, 0, 0), nullptr, "GetDeviceId"}, | ||||||
|         {0x000C0000, nullptr, "SeedRNG"}, |         {IPC::MakeHeader(0x000C, 0, 0), nullptr, "SeedRNG"}, | ||||||
|         {0x000D0042, nullptr, "GenerateRandomBytes"}, |         {IPC::MakeHeader(0x000D, 1, 2), nullptr, "GenerateRandomBytes"}, | ||||||
|         {0x000E0082, nullptr, "InterfaceForPXI_0x04010084"}, |         {IPC::MakeHeader(0x000E, 2, 2), nullptr, "InterfaceForPXI_0x04010084"}, | ||||||
|         {0x000F0082, nullptr, "InterfaceForPXI_0x04020082"}, |         {IPC::MakeHeader(0x000F, 2, 2), nullptr, "InterfaceForPXI_0x04020082"}, | ||||||
|         {0x00100042, nullptr, "InterfaceForPXI_0x04030044"}, |         {IPC::MakeHeader(0x0010, 1, 2), nullptr, "InterfaceForPXI_0x04030044"}, | ||||||
|         {0x00110042, nullptr, "InterfaceForPXI_0x04040044"}, |         {IPC::MakeHeader(0x0011, 1, 2), nullptr, "InterfaceForPXI_0x04040044"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -13,23 +13,25 @@ PTM_Gets::PTM_Gets(std::shared_ptr<Module> ptm) | |||||||
|     : Module::Interface(std::move(ptm), "ptm:gets", 26) { |     : Module::Interface(std::move(ptm), "ptm:gets", 26) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // ptm:u common commands |         // ptm:u common commands | ||||||
|         {0x00010002, nullptr, "RegisterAlarmClient"}, |         // clang-format off | ||||||
|         {0x00020080, nullptr, "SetRtcAlarm"}, |         {IPC::MakeHeader(0x0001, 0, 2), nullptr, "RegisterAlarmClient"}, | ||||||
|         {0x00030000, nullptr, "GetRtcAlarm"}, |         {IPC::MakeHeader(0x0002, 2, 0), nullptr, "SetRtcAlarm"}, | ||||||
|         {0x00040000, nullptr, "CancelRtcAlarm"}, |         {IPC::MakeHeader(0x0003, 0, 0), nullptr, "GetRtcAlarm"}, | ||||||
|         {0x00050000, &PTM_Gets::GetAdapterState, "GetAdapterState"}, |         {IPC::MakeHeader(0x0004, 0, 0), nullptr, "CancelRtcAlarm"}, | ||||||
|         {0x00060000, &PTM_Gets::GetShellState, "GetShellState"}, |         {IPC::MakeHeader(0x0005, 0, 0), &PTM_Gets::GetAdapterState, "GetAdapterState"}, | ||||||
|         {0x00070000, &PTM_Gets::GetBatteryLevel, "GetBatteryLevel"}, |         {IPC::MakeHeader(0x0006, 0, 0), &PTM_Gets::GetShellState, "GetShellState"}, | ||||||
|         {0x00080000, &PTM_Gets::GetBatteryChargeState, "GetBatteryChargeState"}, |         {IPC::MakeHeader(0x0007, 0, 0), &PTM_Gets::GetBatteryLevel, "GetBatteryLevel"}, | ||||||
|         {0x00090000, nullptr, "GetPedometerState"}, |         {IPC::MakeHeader(0x0008, 0, 0), &PTM_Gets::GetBatteryChargeState, "GetBatteryChargeState"}, | ||||||
|         {0x000A0042, nullptr, "GetStepHistoryEntry"}, |         {IPC::MakeHeader(0x0009, 0, 0), nullptr, "GetPedometerState"}, | ||||||
|         {0x000B00C2, &PTM_Gets::GetStepHistory, "GetStepHistory"}, |         {IPC::MakeHeader(0x000A, 1, 2), nullptr, "GetStepHistoryEntry"}, | ||||||
|         {0x000C0000, &PTM_Gets::GetTotalStepCount, "GetTotalStepCount"}, |         {IPC::MakeHeader(0x000B, 3, 2), &PTM_Gets::GetStepHistory, "GetStepHistory"}, | ||||||
|         {0x000D0040, nullptr, "SetPedometerRecordingMode"}, |         {IPC::MakeHeader(0x000C, 0, 0), &PTM_Gets::GetTotalStepCount, "GetTotalStepCount"}, | ||||||
|         {0x000E0000, nullptr, "GetPedometerRecordingMode"}, |         {IPC::MakeHeader(0x000D, 1, 0), nullptr, "SetPedometerRecordingMode"}, | ||||||
|         {0x000F0084, nullptr, "GetStepHistoryAll"}, |         {IPC::MakeHeader(0x000E, 0, 0), nullptr, "GetPedometerRecordingMode"}, | ||||||
|  |         {IPC::MakeHeader(0x000F, 2, 4), nullptr, "GetStepHistoryAll"}, | ||||||
|         // ptm:gets |         // ptm:gets | ||||||
|         {0x04010000, nullptr, "GetSystemTime"}, |         {IPC::MakeHeader(0x0401, 0, 0), nullptr, "GetSystemTime"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -13,26 +13,28 @@ PTM_Play::PTM_Play(std::shared_ptr<Module> ptm) | |||||||
|     : Module::Interface(std::move(ptm), "ptm:play", 26) { |     : Module::Interface(std::move(ptm), "ptm:play", 26) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // ptm:u common commands |         // ptm:u common commands | ||||||
|         {0x00010002, nullptr, "RegisterAlarmClient"}, |         // clang-format off | ||||||
|         {0x00020080, nullptr, "SetRtcAlarm"}, |         {IPC::MakeHeader(0x0001, 0, 2), nullptr, "RegisterAlarmClient"}, | ||||||
|         {0x00030000, nullptr, "GetRtcAlarm"}, |         {IPC::MakeHeader(0x0002, 2, 0), nullptr, "SetRtcAlarm"}, | ||||||
|         {0x00040000, nullptr, "CancelRtcAlarm"}, |         {IPC::MakeHeader(0x0003, 0, 0), nullptr, "GetRtcAlarm"}, | ||||||
|         {0x00050000, &PTM_Play::GetAdapterState, "GetAdapterState"}, |         {IPC::MakeHeader(0x0004, 0, 0), nullptr, "CancelRtcAlarm"}, | ||||||
|         {0x00060000, &PTM_Play::GetShellState, "GetShellState"}, |         {IPC::MakeHeader(0x0005, 0, 0), &PTM_Play::GetAdapterState, "GetAdapterState"}, | ||||||
|         {0x00070000, &PTM_Play::GetBatteryLevel, "GetBatteryLevel"}, |         {IPC::MakeHeader(0x0006, 0, 0), &PTM_Play::GetShellState, "GetShellState"}, | ||||||
|         {0x00080000, &PTM_Play::GetBatteryChargeState, "GetBatteryChargeState"}, |         {IPC::MakeHeader(0x0007, 0, 0), &PTM_Play::GetBatteryLevel, "GetBatteryLevel"}, | ||||||
|         {0x00090000, nullptr, "GetPedometerState"}, |         {IPC::MakeHeader(0x0008, 0, 0), &PTM_Play::GetBatteryChargeState, "GetBatteryChargeState"}, | ||||||
|         {0x000A0042, nullptr, "GetStepHistoryEntry"}, |         {IPC::MakeHeader(0x0009, 0, 0), nullptr, "GetPedometerState"}, | ||||||
|         {0x000B00C2, &PTM_Play::GetStepHistory, "GetStepHistory"}, |         {IPC::MakeHeader(0x000A, 1, 2), nullptr, "GetStepHistoryEntry"}, | ||||||
|         {0x000C0000, &PTM_Play::GetTotalStepCount, "GetTotalStepCount"}, |         {IPC::MakeHeader(0x000B, 3, 2), &PTM_Play::GetStepHistory, "GetStepHistory"}, | ||||||
|         {0x000D0040, nullptr, "SetPedometerRecordingMode"}, |         {IPC::MakeHeader(0x000C, 0, 0), &PTM_Play::GetTotalStepCount, "GetTotalStepCount"}, | ||||||
|         {0x000E0000, nullptr, "GetPedometerRecordingMode"}, |         {IPC::MakeHeader(0x000D, 1, 0), nullptr, "SetPedometerRecordingMode"}, | ||||||
|         {0x000F0084, nullptr, "GetStepHistoryAll"}, |         {IPC::MakeHeader(0x000E, 0, 0), nullptr, "GetPedometerRecordingMode"}, | ||||||
|  |         {IPC::MakeHeader(0x000F, 2, 4), nullptr, "GetStepHistoryAll"}, | ||||||
|         // ptm:play |         // ptm:play | ||||||
|         {0x08070082, nullptr, "GetPlayHistory"}, |         {IPC::MakeHeader(0x0807, 2, 2), nullptr, "GetPlayHistory"}, | ||||||
|         {0x08080000, nullptr, "GetPlayHistoryStart"}, |         {IPC::MakeHeader(0x0808, 0, 0), nullptr, "GetPlayHistoryStart"}, | ||||||
|         {0x08090000, nullptr, "GetPlayHistoryLength"}, |         {IPC::MakeHeader(0x0809, 0, 0), nullptr, "GetPlayHistoryLength"}, | ||||||
|         {0x080B0080, nullptr, "CalcPlayHistoryStart"}, |         {IPC::MakeHeader(0x080B, 2, 0), nullptr, "CalcPlayHistoryStart"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -12,7 +12,9 @@ namespace Service::PTM { | |||||||
| PTM_Sets::PTM_Sets(std::shared_ptr<Module> ptm) : Module::Interface(std::move(ptm), "ptm:sets", 1) { | PTM_Sets::PTM_Sets(std::shared_ptr<Module> ptm) : Module::Interface(std::move(ptm), "ptm:sets", 1) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // Note that this service does not have access to ptm:u's common commands |         // Note that this service does not have access to ptm:u's common commands | ||||||
|         {0x00010080, nullptr, "SetSystemTime"}, |         // clang-format off | ||||||
|  |         {IPC::MakeHeader(0x0001, 2, 0), nullptr, "SetSystemTime"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -14,53 +14,55 @@ PTM_S_Common::PTM_S_Common(std::shared_ptr<Module> ptm, const char* name) | |||||||
|     : Module::Interface(std::move(ptm), name, 26) { |     : Module::Interface(std::move(ptm), name, 26) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // ptm:u common commands |         // ptm:u common commands | ||||||
|         {0x00010002, nullptr, "RegisterAlarmClient"}, |         // clang-format off | ||||||
|         {0x00020080, nullptr, "SetRtcAlarm"}, |         {IPC::MakeHeader(0x0001, 0, 2), nullptr, "RegisterAlarmClient"}, | ||||||
|         {0x00030000, nullptr, "GetRtcAlarm"}, |         {IPC::MakeHeader(0x0002, 2, 0), nullptr, "SetRtcAlarm"}, | ||||||
|         {0x00040000, nullptr, "CancelRtcAlarm"}, |         {IPC::MakeHeader(0x0003, 0, 0), nullptr, "GetRtcAlarm"}, | ||||||
|         {0x00050000, &PTM_S_Common::GetAdapterState, "GetAdapterState"}, |         {IPC::MakeHeader(0x0004, 0, 0), nullptr, "CancelRtcAlarm"}, | ||||||
|         {0x00060000, &PTM_S_Common::GetShellState, "GetShellState"}, |         {IPC::MakeHeader(0x0005, 0, 0), &PTM_S_Common::GetAdapterState, "GetAdapterState"}, | ||||||
|         {0x00070000, &PTM_S_Common::GetBatteryLevel, "GetBatteryLevel"}, |         {IPC::MakeHeader(0x0006, 0, 0), &PTM_S_Common::GetShellState, "GetShellState"}, | ||||||
|         {0x00080000, &PTM_S_Common::GetBatteryChargeState, "GetBatteryChargeState"}, |         {IPC::MakeHeader(0x0007, 0, 0), &PTM_S_Common::GetBatteryLevel, "GetBatteryLevel"}, | ||||||
|         {0x00090000, nullptr, "GetPedometerState"}, |         {IPC::MakeHeader(0x0008, 0, 0), &PTM_S_Common::GetBatteryChargeState, "GetBatteryChargeState"}, | ||||||
|         {0x000A0042, nullptr, "GetStepHistoryEntry"}, |         {IPC::MakeHeader(0x0009, 0, 0), nullptr, "GetPedometerState"}, | ||||||
|         {0x000B00C2, &PTM_S_Common::GetStepHistory, "GetStepHistory"}, |         {IPC::MakeHeader(0x000A, 1, 2), nullptr, "GetStepHistoryEntry"}, | ||||||
|         {0x000C0000, &PTM_S_Common::GetTotalStepCount, "GetTotalStepCount"}, |         {IPC::MakeHeader(0x000B, 3, 2), &PTM_S_Common::GetStepHistory, "GetStepHistory"}, | ||||||
|         {0x000D0040, nullptr, "SetPedometerRecordingMode"}, |         {IPC::MakeHeader(0x000C, 0, 0), &PTM_S_Common::GetTotalStepCount, "GetTotalStepCount"}, | ||||||
|         {0x000E0000, nullptr, "GetPedometerRecordingMode"}, |         {IPC::MakeHeader(0x000D, 1, 0), nullptr, "SetPedometerRecordingMode"}, | ||||||
|         {0x000F0084, nullptr, "GetStepHistoryAll"}, |         {IPC::MakeHeader(0x000E, 0, 0), nullptr, "GetPedometerRecordingMode"}, | ||||||
|  |         {IPC::MakeHeader(0x000F, 2, 4), nullptr, "GetStepHistoryAll"}, | ||||||
|         // ptm:sysm & ptm:s |         // ptm:sysm & ptm:s | ||||||
|         {0x040100C0, nullptr, "SetRtcAlarmEx"}, |         {IPC::MakeHeader(0x0401, 3, 0), nullptr, "SetRtcAlarmEx"}, | ||||||
|         {0x04020042, nullptr, "ReplySleepQuery"}, |         {IPC::MakeHeader(0x0402, 1, 2), nullptr, "ReplySleepQuery"}, | ||||||
|         {0x04030042, nullptr, "NotifySleepPreparationComplete"}, |         {IPC::MakeHeader(0x0403, 1, 2), nullptr, "NotifySleepPreparationComplete"}, | ||||||
|         {0x04040102, nullptr, "SetWakeupTrigger"}, |         {IPC::MakeHeader(0x0404, 4, 2), nullptr, "SetWakeupTrigger"}, | ||||||
|         {0x04050000, nullptr, "GetAwakeReason"}, |         {IPC::MakeHeader(0x0405, 0, 0), nullptr, "GetAwakeReason"}, | ||||||
|         {0x04060000, nullptr, "RequestSleep"}, |         {IPC::MakeHeader(0x0406, 0, 0), nullptr, "RequestSleep"}, | ||||||
|         {0x040700C0, nullptr, "ShutdownAsync"}, |         {IPC::MakeHeader(0x0407, 3, 0), nullptr, "ShutdownAsync"}, | ||||||
|         {0x04080000, nullptr, "Awake"}, |         {IPC::MakeHeader(0x0408, 0, 0), nullptr, "Awake"}, | ||||||
|         {0x04090080, nullptr, "RebootAsync"}, |         {IPC::MakeHeader(0x0409, 2, 0), nullptr, "RebootAsync"}, | ||||||
|         {0x040A0000, &PTM_S_Common::CheckNew3DS, "CheckNew3DS"}, |         {IPC::MakeHeader(0x040A, 0, 0), &PTM_S_Common::CheckNew3DS, "CheckNew3DS"}, | ||||||
|         {0x08010640, nullptr, "SetInfoLEDPattern"}, |         {IPC::MakeHeader(0x0801, 25, 0), nullptr, "SetInfoLEDPattern"}, | ||||||
|         {0x08020040, nullptr, "SetInfoLEDPatternHeader"}, |         {IPC::MakeHeader(0x0802, 1, 0), nullptr, "SetInfoLEDPatternHeader"}, | ||||||
|         {0x08030000, nullptr, "GetInfoLEDStatus"}, |         {IPC::MakeHeader(0x0803, 0, 0), nullptr, "GetInfoLEDStatus"}, | ||||||
|         {0x08040040, nullptr, "SetBatteryEmptyLEDPattern"}, |         {IPC::MakeHeader(0x0804, 1, 0), nullptr, "SetBatteryEmptyLEDPattern"}, | ||||||
|         {0x08050000, nullptr, "ClearStepHistory"}, |         {IPC::MakeHeader(0x0805, 0, 0), nullptr, "ClearStepHistory"}, | ||||||
|         {0x080600C2, nullptr, "SetStepHistory"}, |         {IPC::MakeHeader(0x0806, 3, 2), nullptr, "SetStepHistory"}, | ||||||
|         {0x08070082, nullptr, "GetPlayHistory"}, |         {IPC::MakeHeader(0x0807, 2, 2), nullptr, "GetPlayHistory"}, | ||||||
|         {0x08080000, nullptr, "GetPlayHistoryStart"}, |         {IPC::MakeHeader(0x0808, 0, 0), nullptr, "GetPlayHistoryStart"}, | ||||||
|         {0x08090000, nullptr, "GetPlayHistoryLength"}, |         {IPC::MakeHeader(0x0809, 0, 0), nullptr, "GetPlayHistoryLength"}, | ||||||
|         {0x080A0000, nullptr, "ClearPlayHistory"}, |         {IPC::MakeHeader(0x080A, 0, 0), nullptr, "ClearPlayHistory"}, | ||||||
|         {0x080B0080, nullptr, "CalcPlayHistoryStart"}, |         {IPC::MakeHeader(0x080B, 2, 0), nullptr, "CalcPlayHistoryStart"}, | ||||||
|         {0x080C0080, nullptr, "SetUserTime"}, |         {IPC::MakeHeader(0x080C, 2, 0), nullptr, "SetUserTime"}, | ||||||
|         {0x080D0000, nullptr, "InvalidateSystemTime"}, |         {IPC::MakeHeader(0x080D, 0, 0), nullptr, "InvalidateSystemTime"}, | ||||||
|         {0x080E0140, nullptr, "NotifyPlayEvent"}, |         {IPC::MakeHeader(0x080E, 5, 0), nullptr, "NotifyPlayEvent"}, | ||||||
|         {0x080F0000, &PTM_S_Common::GetSoftwareClosedFlag, "GetSoftwareClosedFlag"}, |         {IPC::MakeHeader(0x080F, 0, 0), &PTM_S_Common::GetSoftwareClosedFlag, "GetSoftwareClosedFlag"}, | ||||||
|         {0x08100000, nullptr, "ClearSoftwareClosedFlag"}, |         {IPC::MakeHeader(0x0810, 0, 0), nullptr, "ClearSoftwareClosedFlag"}, | ||||||
|         {0x08110000, &PTM_S_Common::GetShellState, "GetShellState"}, |         {IPC::MakeHeader(0x0811, 0, 0), &PTM_S_Common::GetShellState, "GetShellState"}, | ||||||
|         {0x08120000, nullptr, "IsShutdownByBatteryEmpty"}, |         {IPC::MakeHeader(0x0812, 0, 0), nullptr, "IsShutdownByBatteryEmpty"}, | ||||||
|         {0x08130000, nullptr, "FormatSavedata"}, |         {IPC::MakeHeader(0x0813, 0, 0), nullptr, "FormatSavedata"}, | ||||||
|         {0x08140000, nullptr, "GetLegacyJumpProhibitedFlag"}, |         {IPC::MakeHeader(0x0814, 0, 0), nullptr, "GetLegacyJumpProhibitedFlag"}, | ||||||
|         {0x08180040, nullptr, "ConfigureNew3DSCPU"}, |         {IPC::MakeHeader(0x0818, 1, 0), nullptr, "ConfigureNew3DSCPU"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,21 +11,23 @@ namespace Service::PTM { | |||||||
|  |  | ||||||
| PTM_U::PTM_U(std::shared_ptr<Module> ptm) : Module::Interface(std::move(ptm), "ptm:u", 26) { | PTM_U::PTM_U(std::shared_ptr<Module> ptm) : Module::Interface(std::move(ptm), "ptm:u", 26) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010002, nullptr, "RegisterAlarmClient"}, |         // clang-format off | ||||||
|         {0x00020080, nullptr, "SetRtcAlarm"}, |         {IPC::MakeHeader(0x0001, 0, 2), nullptr, "RegisterAlarmClient"}, | ||||||
|         {0x00030000, nullptr, "GetRtcAlarm"}, |         {IPC::MakeHeader(0x0002, 2, 0), nullptr, "SetRtcAlarm"}, | ||||||
|         {0x00040000, nullptr, "CancelRtcAlarm"}, |         {IPC::MakeHeader(0x0003, 0, 0), nullptr, "GetRtcAlarm"}, | ||||||
|         {0x00050000, &PTM_U::GetAdapterState, "GetAdapterState"}, |         {IPC::MakeHeader(0x0004, 0, 0), nullptr, "CancelRtcAlarm"}, | ||||||
|         {0x00060000, &PTM_U::GetShellState, "GetShellState"}, |         {IPC::MakeHeader(0x0005, 0, 0), &PTM_U::GetAdapterState, "GetAdapterState"}, | ||||||
|         {0x00070000, &PTM_U::GetBatteryLevel, "GetBatteryLevel"}, |         {IPC::MakeHeader(0x0006, 0, 0), &PTM_U::GetShellState, "GetShellState"}, | ||||||
|         {0x00080000, &PTM_U::GetBatteryChargeState, "GetBatteryChargeState"}, |         {IPC::MakeHeader(0x0007, 0, 0), &PTM_U::GetBatteryLevel, "GetBatteryLevel"}, | ||||||
|         {0x00090000, &PTM_U::GetPedometerState, "GetPedometerState"}, |         {IPC::MakeHeader(0x0008, 0, 0), &PTM_U::GetBatteryChargeState, "GetBatteryChargeState"}, | ||||||
|         {0x000A0042, nullptr, "GetStepHistoryEntry"}, |         {IPC::MakeHeader(0x0009, 0, 0), &PTM_U::GetPedometerState, "GetPedometerState"}, | ||||||
|         {0x000B00C2, &PTM_U::GetStepHistory, "GetStepHistory"}, |         {IPC::MakeHeader(0x000A, 1, 2), nullptr, "GetStepHistoryEntry"}, | ||||||
|         {0x000C0000, &PTM_U::GetTotalStepCount, "GetTotalStepCount"}, |         {IPC::MakeHeader(0x000B, 3, 2), &PTM_U::GetStepHistory, "GetStepHistory"}, | ||||||
|         {0x000D0040, nullptr, "SetPedometerRecordingMode"}, |         {IPC::MakeHeader(0x000C, 0, 0), &PTM_U::GetTotalStepCount, "GetTotalStepCount"}, | ||||||
|         {0x000E0000, nullptr, "GetPedometerRecordingMode"}, |         {IPC::MakeHeader(0x000D, 1, 0), nullptr, "SetPedometerRecordingMode"}, | ||||||
|         {0x000F0084, nullptr, "GetStepHistoryAll"}, |         {IPC::MakeHeader(0x000E, 0, 0), nullptr, "GetPedometerRecordingMode"}, | ||||||
|  |         {IPC::MakeHeader(0x000F, 2, 4), nullptr, "GetStepHistoryAll"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -12,21 +12,23 @@ namespace Service::PXI { | |||||||
| DEV::DEV() : ServiceFramework("pxi:dev", 1) { | DEV::DEV() : ServiceFramework("pxi:dev", 1) { | ||||||
|     // clang-format off |     // clang-format off | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x000101C2, nullptr, "ReadHostIO"}, |         // clang-format off | ||||||
|         {0x000201C2, nullptr, "WriteHostIO"}, |         {IPC::MakeHeader(0x0001, 7, 2), nullptr, "ReadHostIO"}, | ||||||
|         {0x00030102, nullptr, "ReadHostEx"}, |         {IPC::MakeHeader(0x0002, 7, 2), nullptr, "WriteHostIO"}, | ||||||
|         {0x00040102, nullptr, "WriteHostEx"}, |         {IPC::MakeHeader(0x0003, 4, 2), nullptr, "ReadHostEx"}, | ||||||
|         {0x00050102, nullptr, "WriteHostExStart"}, |         {IPC::MakeHeader(0x0004, 4, 2), nullptr, "WriteHostEx"}, | ||||||
|         {0x00060102, nullptr, "WriteHostExChunk"}, |         {IPC::MakeHeader(0x0005, 4, 2), nullptr, "WriteHostExStart"}, | ||||||
|         {0x00070000, nullptr, "WriteHostExEnd"}, |         {IPC::MakeHeader(0x0006, 4, 2), nullptr, "WriteHostExChunk"}, | ||||||
|         {0x00080000, nullptr, "InitializeMIDI"}, |         {IPC::MakeHeader(0x0007, 0, 0), nullptr, "WriteHostExEnd"}, | ||||||
|         {0x00090000, nullptr, "FinalizeMIDI"}, |         {IPC::MakeHeader(0x0008, 0, 0), nullptr, "InitializeMIDI"}, | ||||||
|         {0x000A0000, nullptr, "GetMIDIInfo"}, |         {IPC::MakeHeader(0x0009, 0, 0), nullptr, "FinalizeMIDI"}, | ||||||
|         {0x000B0000, nullptr, "GetMIDIBufferSize"}, |         {IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetMIDIInfo"}, | ||||||
|         {0x000C0042, nullptr, "ReadMIDI"}, |         {IPC::MakeHeader(0x000B, 0, 0), nullptr, "GetMIDIBufferSize"}, | ||||||
|         {0x000D0688, nullptr, "SPIMultiWriteRead"}, |         {IPC::MakeHeader(0x000C, 1, 2), nullptr, "ReadMIDI"}, | ||||||
|         {0x000E0284, nullptr, "SPIWriteRead"}, |         {IPC::MakeHeader(0x000D, 26, 8), nullptr, "SPIMultiWriteRead"}, | ||||||
|         {0x000F0000, nullptr, "GetCardDevice"}, |         {IPC::MakeHeader(0x000E, 10, 4), nullptr, "SPIWriteRead"}, | ||||||
|  |         {IPC::MakeHeader(0x000F, 0, 0), nullptr, "GetCardDevice"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     // clang-format on |     // clang-format on | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
|   | |||||||
| @@ -12,10 +12,10 @@ namespace Service::QTM { | |||||||
|  |  | ||||||
| QTM_C::QTM_C() : ServiceFramework("qtm:c", 2) { | QTM_C::QTM_C() : ServiceFramework("qtm:c", 2) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |  | ||||||
|         // qtm calibration commands |         // qtm calibration commands | ||||||
|         {0x00010000, nullptr, "InitializeHardwareCheck"}, |         // clang-format off | ||||||
|         {0x00050040, nullptr, "SetIrLedCheck"}, |         {IPC::MakeHeader(0x0001, 0, 0), nullptr, "InitializeHardwareCheck"}, | ||||||
|  |         {IPC::MakeHeader(0x0005, 1, 0), nullptr, "SetIrLedCheck"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -12,10 +12,10 @@ namespace Service::QTM { | |||||||
|  |  | ||||||
| QTM_S::QTM_S() : ServiceFramework("qtm:s", 2) { | QTM_S::QTM_S() : ServiceFramework("qtm:s", 2) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |  | ||||||
|         // qtm common commands |         // qtm common commands | ||||||
|         {0x00010080, nullptr, "GetHeadtrackingInfoRaw"}, |         // clang-format off | ||||||
|         {0x00020080, nullptr, "GetHeadtrackingInfo"}, |         {IPC::MakeHeader(0x0001, 2, 0), nullptr, "GetHeadtrackingInfoRaw"}, | ||||||
|  |         {IPC::MakeHeader(0x0002, 2, 0), nullptr, "GetHeadtrackingInfo"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -12,10 +12,10 @@ namespace Service::QTM { | |||||||
|  |  | ||||||
| QTM_SP::QTM_SP() : ServiceFramework("qtm:sp", 2) { | QTM_SP::QTM_SP() : ServiceFramework("qtm:sp", 2) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |  | ||||||
|         // qtm common commands |         // qtm common commands | ||||||
|         {0x00010080, nullptr, "GetHeadtrackingInfoRaw"}, |         // clang-format off | ||||||
|         {0x00020080, nullptr, "GetHeadtrackingInfo"}, |         {IPC::MakeHeader(0x0001, 2, 0), nullptr, "GetHeadtrackingInfoRaw"}, | ||||||
|  |         {IPC::MakeHeader(0x0002, 2, 0), nullptr, "GetHeadtrackingInfo"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -12,10 +12,10 @@ namespace Service::QTM { | |||||||
|  |  | ||||||
| QTM_U::QTM_U() : ServiceFramework("qtm:u", 2) { | QTM_U::QTM_U() : ServiceFramework("qtm:u", 2) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         // clang-format off |  | ||||||
|         // qtm common commands |         // qtm common commands | ||||||
|         {0x00010080, nullptr, "GetHeadtrackingInfoRaw"}, |         // clang-format off | ||||||
|         {0x00020080, nullptr, "GetHeadtrackingInfo"}, |         {IPC::MakeHeader(0x0001, 2, 0), nullptr, "GetHeadtrackingInfoRaw"}, | ||||||
|  |         {IPC::MakeHeader(0x0002, 2, 0), nullptr, "GetHeadtrackingInfo"}, | ||||||
|         // clang-format on |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -152,8 +152,10 @@ void ServiceFrameworkBase::ReportUnimplementedFunction(u32* cmd_buf, const Funct | |||||||
|     int num_params = header.normal_params_size + header.translate_params_size; |     int num_params = header.normal_params_size + header.translate_params_size; | ||||||
|     std::string function_name = info == nullptr ? fmt::format("{:#08x}", cmd_buf[0]) : info->name; |     std::string function_name = info == nullptr ? fmt::format("{:#08x}", cmd_buf[0]) : info->name; | ||||||
|  |  | ||||||
|     std::string result = fmt::format("function '{}': port='{}' cmd_buf={{[0]={:#x}", function_name, |     std::string result = | ||||||
|                                      service_name, cmd_buf[0]); |         fmt::format("function '{}': port='{}' cmd_buf={{[0]={:#x} (0x{:04X}, {}, {})", | ||||||
|  |                     function_name, service_name, header.raw, header.command_id, | ||||||
|  |                     header.normal_params_size, header.translate_params_size); | ||||||
|     for (int i = 1; i <= num_params; ++i) { |     for (int i = 1; i <= num_params; ++i) { | ||||||
|         result += fmt::format(", [{}]={:#x}", i, cmd_buf[i]); |         result += fmt::format(", [{}]={:#x}", i, cmd_buf[i]); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -288,20 +288,22 @@ void SRV::RegisterService(Kernel::HLERequestContext& ctx) { | |||||||
|  |  | ||||||
| SRV::SRV(Core::System& system) : ServiceFramework("srv:", 4), system(system) { | SRV::SRV(Core::System& system) : ServiceFramework("srv:", 4), system(system) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010002, &SRV::RegisterClient, "RegisterClient"}, |         // clang-format off | ||||||
|         {0x00020000, &SRV::EnableNotification, "EnableNotification"}, |         {IPC::MakeHeader(0x0001, 0, 2), &SRV::RegisterClient, "RegisterClient"}, | ||||||
|         {0x00030100, &SRV::RegisterService, "RegisterService"}, |         {IPC::MakeHeader(0x0002, 0, 0), &SRV::EnableNotification, "EnableNotification"}, | ||||||
|         {0x000400C0, nullptr, "UnregisterService"}, |         {IPC::MakeHeader(0x0003, 4, 0), &SRV::RegisterService, "RegisterService"}, | ||||||
|         {0x00050100, &SRV::GetServiceHandle, "GetServiceHandle"}, |         {IPC::MakeHeader(0x0004, 3, 0), nullptr, "UnregisterService"}, | ||||||
|         {0x000600C2, nullptr, "RegisterPort"}, |         {IPC::MakeHeader(0x0005, 4, 0), &SRV::GetServiceHandle, "GetServiceHandle"}, | ||||||
|         {0x000700C0, nullptr, "UnregisterPort"}, |         {IPC::MakeHeader(0x0006, 3, 2), nullptr, "RegisterPort"}, | ||||||
|         {0x00080100, nullptr, "GetPort"}, |         {IPC::MakeHeader(0x0007, 3, 0), nullptr, "UnregisterPort"}, | ||||||
|         {0x00090040, &SRV::Subscribe, "Subscribe"}, |         {IPC::MakeHeader(0x0008, 4, 0), nullptr, "GetPort"}, | ||||||
|         {0x000A0040, &SRV::Unsubscribe, "Unsubscribe"}, |         {IPC::MakeHeader(0x0009, 1, 0), &SRV::Subscribe, "Subscribe"}, | ||||||
|         {0x000B0000, nullptr, "ReceiveNotification"}, |         {IPC::MakeHeader(0x000A, 1, 0), &SRV::Unsubscribe, "Unsubscribe"}, | ||||||
|         {0x000C0080, &SRV::PublishToSubscriber, "PublishToSubscriber"}, |         {IPC::MakeHeader(0x000B, 0, 0), nullptr, "ReceiveNotification"}, | ||||||
|         {0x000D0040, nullptr, "PublishAndGetSubscriber"}, |         {IPC::MakeHeader(0x000C, 2, 0), &SRV::PublishToSubscriber, "PublishToSubscriber"}, | ||||||
|         {0x000E00C0, nullptr, "IsServiceRegistered"}, |         {IPC::MakeHeader(0x000D, 1, 0), nullptr, "PublishAndGetSubscriber"}, | ||||||
|  |         {IPC::MakeHeader(0x000E, 3, 0), nullptr, "IsServiceRegistered"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -61,29 +61,31 @@ void SSL_C::GenerateRandomData(Kernel::HLERequestContext& ctx) { | |||||||
|  |  | ||||||
| SSL_C::SSL_C() : ServiceFramework("ssl:C") { | SSL_C::SSL_C() : ServiceFramework("ssl:C") { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010002, &SSL_C::Initialize, "Initialize"}, |         // clang-format off | ||||||
|         {0x000200C2, nullptr, "CreateContext"}, |         {IPC::MakeHeader(0x0001, 0, 2), &SSL_C::Initialize, "Initialize"}, | ||||||
|         {0x00030000, nullptr, "CreateRootCertChain"}, |         {IPC::MakeHeader(0x0002, 3, 2), nullptr, "CreateContext"}, | ||||||
|         {0x00040040, nullptr, "DestroyRootCertChain"}, |         {IPC::MakeHeader(0x0003, 0, 0), nullptr, "CreateRootCertChain"}, | ||||||
|         {0x00050082, nullptr, "AddTrustedRootCA"}, |         {IPC::MakeHeader(0x0004, 1, 0), nullptr, "DestroyRootCertChain"}, | ||||||
|         {0x00060080, nullptr, "RootCertChainAddDefaultCert"}, |         {IPC::MakeHeader(0x0005, 2, 2), nullptr, "AddTrustedRootCA"}, | ||||||
|         {0x00070080, nullptr, "RootCertChainRemoveCert"}, |         {IPC::MakeHeader(0x0006, 2, 0), nullptr, "RootCertChainAddDefaultCert"}, | ||||||
|         {0x000D0084, nullptr, "OpenClientCertContext"}, |         {IPC::MakeHeader(0x0007, 2, 0), nullptr, "RootCertChainRemoveCert"}, | ||||||
|         {0x000E0040, nullptr, "OpenDefaultClientCertContext"}, |         {IPC::MakeHeader(0x000D, 2, 4), nullptr, "OpenClientCertContext"}, | ||||||
|         {0x000F0040, nullptr, "CloseClientCertContext"}, |         {IPC::MakeHeader(0x000E, 1, 0), nullptr, "OpenDefaultClientCertContext"}, | ||||||
|         {0x00110042, &SSL_C::GenerateRandomData, "GenerateRandomData"}, |         {IPC::MakeHeader(0x000F, 1, 0), nullptr, "CloseClientCertContext"}, | ||||||
|         {0x00120042, nullptr, "InitializeConnectionSession"}, |         {IPC::MakeHeader(0x0011, 1, 2), &SSL_C::GenerateRandomData, "GenerateRandomData"}, | ||||||
|         {0x00130040, nullptr, "StartConnection"}, |         {IPC::MakeHeader(0x0012, 1, 2), nullptr, "InitializeConnectionSession"}, | ||||||
|         {0x00140040, nullptr, "StartConnectionGetOut"}, |         {IPC::MakeHeader(0x0013, 1, 0), nullptr, "StartConnection"}, | ||||||
|         {0x00150082, nullptr, "Read"}, |         {IPC::MakeHeader(0x0014, 1, 0), nullptr, "StartConnectionGetOut"}, | ||||||
|         {0x00160082, nullptr, "ReadPeek"}, |         {IPC::MakeHeader(0x0015, 2, 2), nullptr, "Read"}, | ||||||
|         {0x00170082, nullptr, "Write"}, |         {IPC::MakeHeader(0x0016, 2, 2), nullptr, "ReadPeek"}, | ||||||
|         {0x00180080, nullptr, "ContextSetRootCertChain"}, |         {IPC::MakeHeader(0x0017, 2, 2), nullptr, "Write"}, | ||||||
|         {0x00190080, nullptr, "ContextSetClientCert"}, |         {IPC::MakeHeader(0x0018, 2, 0), nullptr, "ContextSetRootCertChain"}, | ||||||
|         {0x001B0080, nullptr, "ContextClearOpt"}, |         {IPC::MakeHeader(0x0019, 2, 0), nullptr, "ContextSetClientCert"}, | ||||||
|         {0x001C00C4, nullptr, "ContextGetProtocolCipher"}, |         {IPC::MakeHeader(0x001B, 2, 0), nullptr, "ContextClearOpt"}, | ||||||
|         {0x001E0040, nullptr, "DestroyContext"}, |         {IPC::MakeHeader(0x001C, 3, 4), nullptr, "ContextGetProtocolCipher"}, | ||||||
|         {0x001F0082, nullptr, "ContextInitSharedmem"}, |         {IPC::MakeHeader(0x001E, 1, 0), nullptr, "DestroyContext"}, | ||||||
|  |         {IPC::MakeHeader(0x001F, 2, 2), nullptr, "ContextInitSharedmem"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
|   | |||||||
| @@ -647,51 +647,53 @@ void Y2R_U::GetPackageParameter(Kernel::HLERequestContext& ctx) { | |||||||
|  |  | ||||||
| Y2R_U::Y2R_U(Core::System& system) : ServiceFramework("y2r:u", 1), system(system) { | Y2R_U::Y2R_U(Core::System& system) : ServiceFramework("y2r:u", 1), system(system) { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {0x00010040, &Y2R_U::SetInputFormat, "SetInputFormat"}, |         // clang-format off | ||||||
|         {0x00020000, &Y2R_U::GetInputFormat, "GetInputFormat"}, |         {IPC::MakeHeader(0x0001, 1, 0), &Y2R_U::SetInputFormat, "SetInputFormat"}, | ||||||
|         {0x00030040, &Y2R_U::SetOutputFormat, "SetOutputFormat"}, |         {IPC::MakeHeader(0x0002, 0, 0), &Y2R_U::GetInputFormat, "GetInputFormat"}, | ||||||
|         {0x00040000, &Y2R_U::GetOutputFormat, "GetOutputFormat"}, |         {IPC::MakeHeader(0x0003, 1, 0), &Y2R_U::SetOutputFormat, "SetOutputFormat"}, | ||||||
|         {0x00050040, &Y2R_U::SetRotation, "SetRotation"}, |         {IPC::MakeHeader(0x0004, 0, 0), &Y2R_U::GetOutputFormat, "GetOutputFormat"}, | ||||||
|         {0x00060000, &Y2R_U::GetRotation, "GetRotation"}, |         {IPC::MakeHeader(0x0005, 1, 0), &Y2R_U::SetRotation, "SetRotation"}, | ||||||
|         {0x00070040, &Y2R_U::SetBlockAlignment, "SetBlockAlignment"}, |         {IPC::MakeHeader(0x0006, 0, 0), &Y2R_U::GetRotation, "GetRotation"}, | ||||||
|         {0x00080000, &Y2R_U::GetBlockAlignment, "GetBlockAlignment"}, |         {IPC::MakeHeader(0x0007, 1, 0), &Y2R_U::SetBlockAlignment, "SetBlockAlignment"}, | ||||||
|         {0x00090040, &Y2R_U::SetSpacialDithering, "SetSpacialDithering"}, |         {IPC::MakeHeader(0x0008, 0, 0), &Y2R_U::GetBlockAlignment, "GetBlockAlignment"}, | ||||||
|         {0x000A0000, &Y2R_U::GetSpacialDithering, "GetSpacialDithering"}, |         {IPC::MakeHeader(0x0009, 1, 0), &Y2R_U::SetSpacialDithering, "SetSpacialDithering"}, | ||||||
|         {0x000B0040, &Y2R_U::SetTemporalDithering, "SetTemporalDithering"}, |         {IPC::MakeHeader(0x000A, 0, 0), &Y2R_U::GetSpacialDithering, "GetSpacialDithering"}, | ||||||
|         {0x000C0000, &Y2R_U::GetTemporalDithering, "GetTemporalDithering"}, |         {IPC::MakeHeader(0x000B, 1, 0), &Y2R_U::SetTemporalDithering, "SetTemporalDithering"}, | ||||||
|         {0x000D0040, &Y2R_U::SetTransferEndInterrupt, "SetTransferEndInterrupt"}, |         {IPC::MakeHeader(0x000C, 0, 0), &Y2R_U::GetTemporalDithering, "GetTemporalDithering"}, | ||||||
|         {0x000E0000, &Y2R_U::GetTransferEndInterrupt, "GetTransferEndInterrupt"}, |         {IPC::MakeHeader(0x000D, 1, 0), &Y2R_U::SetTransferEndInterrupt, "SetTransferEndInterrupt"}, | ||||||
|         {0x000F0000, &Y2R_U::GetTransferEndEvent, "GetTransferEndEvent"}, |         {IPC::MakeHeader(0x000E, 0, 0), &Y2R_U::GetTransferEndInterrupt, "GetTransferEndInterrupt"}, | ||||||
|         {0x00100102, &Y2R_U::SetSendingY, "SetSendingY"}, |         {IPC::MakeHeader(0x000F, 0, 0), &Y2R_U::GetTransferEndEvent, "GetTransferEndEvent"}, | ||||||
|         {0x00110102, &Y2R_U::SetSendingU, "SetSendingU"}, |         {IPC::MakeHeader(0x0010, 4, 2), &Y2R_U::SetSendingY, "SetSendingY"}, | ||||||
|         {0x00120102, &Y2R_U::SetSendingV, "SetSendingV"}, |         {IPC::MakeHeader(0x0011, 4, 2), &Y2R_U::SetSendingU, "SetSendingU"}, | ||||||
|         {0x00130102, &Y2R_U::SetSendingYUYV, "SetSendingYUYV"}, |         {IPC::MakeHeader(0x0012, 4, 2), &Y2R_U::SetSendingV, "SetSendingV"}, | ||||||
|         {0x00140000, &Y2R_U::IsFinishedSendingYuv, "IsFinishedSendingYuv"}, |         {IPC::MakeHeader(0x0013, 4, 2), &Y2R_U::SetSendingYUYV, "SetSendingYUYV"}, | ||||||
|         {0x00150000, &Y2R_U::IsFinishedSendingY, "IsFinishedSendingY"}, |         {IPC::MakeHeader(0x0014, 0, 0), &Y2R_U::IsFinishedSendingYuv, "IsFinishedSendingYuv"}, | ||||||
|         {0x00160000, &Y2R_U::IsFinishedSendingU, "IsFinishedSendingU"}, |         {IPC::MakeHeader(0x0015, 0, 0), &Y2R_U::IsFinishedSendingY, "IsFinishedSendingY"}, | ||||||
|         {0x00170000, &Y2R_U::IsFinishedSendingV, "IsFinishedSendingV"}, |         {IPC::MakeHeader(0x0016, 0, 0), &Y2R_U::IsFinishedSendingU, "IsFinishedSendingU"}, | ||||||
|         {0x00180102, &Y2R_U::SetReceiving, "SetReceiving"}, |         {IPC::MakeHeader(0x0017, 0, 0), &Y2R_U::IsFinishedSendingV, "IsFinishedSendingV"}, | ||||||
|         {0x00190000, &Y2R_U::IsFinishedReceiving, "IsFinishedReceiving"}, |         {IPC::MakeHeader(0x0018, 4, 2), &Y2R_U::SetReceiving, "SetReceiving"}, | ||||||
|         {0x001A0040, &Y2R_U::SetInputLineWidth, "SetInputLineWidth"}, |         {IPC::MakeHeader(0x0019, 0, 0), &Y2R_U::IsFinishedReceiving, "IsFinishedReceiving"}, | ||||||
|         {0x001B0000, &Y2R_U::GetInputLineWidth, "GetInputLineWidth"}, |         {IPC::MakeHeader(0x001A, 1, 0), &Y2R_U::SetInputLineWidth, "SetInputLineWidth"}, | ||||||
|         {0x001C0040, &Y2R_U::SetInputLines, "SetInputLines"}, |         {IPC::MakeHeader(0x001B, 0, 0), &Y2R_U::GetInputLineWidth, "GetInputLineWidth"}, | ||||||
|         {0x001D0000, &Y2R_U::GetInputLines, "GetInputLines"}, |         {IPC::MakeHeader(0x001C, 1, 0), &Y2R_U::SetInputLines, "SetInputLines"}, | ||||||
|         {0x001E0100, &Y2R_U::SetCoefficient, "SetCoefficient"}, |         {IPC::MakeHeader(0x001D, 0, 0), &Y2R_U::GetInputLines, "GetInputLines"}, | ||||||
|         {0x001F0000, &Y2R_U::GetCoefficient, "GetCoefficient"}, |         {IPC::MakeHeader(0x001E, 4, 0), &Y2R_U::SetCoefficient, "SetCoefficient"}, | ||||||
|         {0x00200040, &Y2R_U::SetStandardCoefficient, "SetStandardCoefficient"}, |         {IPC::MakeHeader(0x001F, 0, 0), &Y2R_U::GetCoefficient, "GetCoefficient"}, | ||||||
|         {0x00210040, &Y2R_U::GetStandardCoefficient, "GetStandardCoefficient"}, |         {IPC::MakeHeader(0x0020, 1, 0), &Y2R_U::SetStandardCoefficient, "SetStandardCoefficient"}, | ||||||
|         {0x00220040, &Y2R_U::SetAlpha, "SetAlpha"}, |         {IPC::MakeHeader(0x0021, 1, 0), &Y2R_U::GetStandardCoefficient, "GetStandardCoefficient"}, | ||||||
|         {0x00230000, &Y2R_U::GetAlpha, "GetAlpha"}, |         {IPC::MakeHeader(0x0022, 1, 0), &Y2R_U::SetAlpha, "SetAlpha"}, | ||||||
|         {0x00240200, &Y2R_U::SetDitheringWeightParams, "SetDitheringWeightParams"}, |         {IPC::MakeHeader(0x0023, 0, 0), &Y2R_U::GetAlpha, "GetAlpha"}, | ||||||
|         {0x00250000, &Y2R_U::GetDitheringWeightParams, "GetDitheringWeightParams"}, |         {IPC::MakeHeader(0x0024, 8, 0), &Y2R_U::SetDitheringWeightParams, "SetDitheringWeightParams"}, | ||||||
|         {0x00260000, &Y2R_U::StartConversion, "StartConversion"}, |         {IPC::MakeHeader(0x0025, 0, 0), &Y2R_U::GetDitheringWeightParams, "GetDitheringWeightParams"}, | ||||||
|         {0x00270000, &Y2R_U::StopConversion, "StopConversion"}, |         {IPC::MakeHeader(0x0026, 0, 0), &Y2R_U::StartConversion, "StartConversion"}, | ||||||
|         {0x00280000, &Y2R_U::IsBusyConversion, "IsBusyConversion"}, |         {IPC::MakeHeader(0x0027, 0, 0), &Y2R_U::StopConversion, "StopConversion"}, | ||||||
|         {0x002901C0, &Y2R_U::SetPackageParameter, "SetPackageParameter"}, |         {IPC::MakeHeader(0x0028, 0, 0), &Y2R_U::IsBusyConversion, "IsBusyConversion"}, | ||||||
|         {0x002A0000, &Y2R_U::PingProcess, "PingProcess"}, |         {IPC::MakeHeader(0x0029, 7, 0), &Y2R_U::SetPackageParameter, "SetPackageParameter"}, | ||||||
|         {0x002B0000, &Y2R_U::DriverInitialize, "DriverInitialize"}, |         {IPC::MakeHeader(0x002A, 0, 0), &Y2R_U::PingProcess, "PingProcess"}, | ||||||
|         {0x002C0000, &Y2R_U::DriverFinalize, "DriverFinalize"}, |         {IPC::MakeHeader(0x002B, 0, 0), &Y2R_U::DriverInitialize, "DriverInitialize"}, | ||||||
|         {0x002D0000, &Y2R_U::GetPackageParameter, "GetPackageParameter"}, |         {IPC::MakeHeader(0x002C, 0, 0), &Y2R_U::DriverFinalize, "DriverFinalize"}, | ||||||
|  |         {IPC::MakeHeader(0x002D, 0, 0), &Y2R_U::GetPackageParameter, "GetPackageParameter"}, | ||||||
|  |         // clang-format on | ||||||
|     }; |     }; | ||||||
|     RegisterHandlers(functions); |     RegisterHandlers(functions); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 PabloMK7
					PabloMK7