diff options
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/service/apt/apt.h | 533 |
1 files changed, 0 insertions, 533 deletions
diff --git a/src/core/hle/service/apt/apt.h b/src/core/hle/service/apt/apt.h deleted file mode 100644 index 7b79e1f3e..000000000 --- a/src/core/hle/service/apt/apt.h +++ /dev/null @@ -1,533 +0,0 @@ -// Copyright 2015 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#pragma once - -#include <vector> -#include "common/common_funcs.h" -#include "common/common_types.h" -#include "common/swap.h" -#include "core/hle/kernel/kernel.h" - -namespace Service { - -class Interface; - -namespace APT { - -/// Each APT service can only have up to 2 sessions connected at the same time. -static const u32 MaxAPTSessions = 2; - -/// Holds information about the parameters used in Send/Glance/ReceiveParameter -struct MessageParameter { - u32 sender_id = 0; - u32 destination_id = 0; - u32 signal = 0; - Kernel::SharedPtr<Kernel::Object> object = nullptr; - std::vector<u8> buffer; -}; - -/// Holds information about the parameters used in StartLibraryApplet -struct AppletStartupParameter { - Kernel::SharedPtr<Kernel::Object> object = nullptr; - std::vector<u8> buffer; -}; - -/// Used by the application to pass information about the current framebuffer to applets. -struct CaptureBufferInfo { - u32_le size; - u8 is_3d; - INSERT_PADDING_BYTES(0x3); // Padding for alignment - u32_le top_screen_left_offset; - u32_le top_screen_right_offset; - u32_le top_screen_format; - u32_le bottom_screen_left_offset; - u32_le bottom_screen_right_offset; - u32_le bottom_screen_format; -}; -static_assert(sizeof(CaptureBufferInfo) == 0x20, "CaptureBufferInfo struct has incorrect size"); - -/// Signals used by APT functions -enum class SignalType : u32 { - None = 0x0, - Wakeup = 0x1, - Request = 0x2, - Response = 0x3, - Exit = 0x4, - Message = 0x5, - HomeButtonSingle = 0x6, - HomeButtonDouble = 0x7, - DspSleep = 0x8, - DspWakeup = 0x9, - WakeupByExit = 0xA, - WakeupByPause = 0xB, - WakeupByCancel = 0xC, - WakeupByCancelAll = 0xD, - WakeupByPowerButtonClick = 0xE, - WakeupToJumpHome = 0xF, - RequestForSysApplet = 0x10, - WakeupToLaunchApplication = 0x11, -}; - -/// App Id's used by APT functions -enum class AppletId : u32 { - None = 0, - AnySystemApplet = 0x100, - HomeMenu = 0x101, - AlternateMenu = 0x103, - Camera = 0x110, - FriendsList = 0x112, - GameNotes = 0x113, - InternetBrowser = 0x114, - InstructionManual = 0x115, - Notifications = 0x116, - Miiverse = 0x117, - MiiversePost = 0x118, - AmiiboSettings = 0x119, - AnySysLibraryApplet = 0x200, - SoftwareKeyboard1 = 0x201, - Ed1 = 0x202, - PnoteApp = 0x204, - SnoteApp = 0x205, - Error = 0x206, - Mint = 0x207, - Extrapad = 0x208, - Memolib = 0x209, - Application = 0x300, - AnyLibraryApplet = 0x400, - SoftwareKeyboard2 = 0x401, - Ed2 = 0x402, - PnoteApp2 = 0x404, - SnoteApp2 = 0x405, - Error2 = 0x406, - Mint2 = 0x407, - Extrapad2 = 0x408, - Memolib2 = 0x409, -}; - -enum class StartupArgumentType : u32 { - OtherApp = 0, - Restart = 1, - OtherMedia = 2, -}; - -enum class ScreencapPostPermission : u32 { - CleanThePermission = 0, // TODO(JamePeng): verify what "zero" means - NoExplicitSetting = 1, - EnableScreenshotPostingToMiiverse = 2, - DisableScreenshotPostingToMiiverse = 3 -}; - -namespace ErrCodes { -enum { - ParameterPresent = 2, - InvalidAppletSlot = 4, -}; -} // namespace ErrCodes - -/// Send a parameter to the currently-running application, which will read it via ReceiveParameter -void SendParameter(const MessageParameter& parameter); - -/** - * APT::Initialize service function - * Service function that initializes the APT process for the running application - * Outputs: - * 1 : Result of the function, 0 on success, otherwise error code - * 3 : Handle to the notification event - * 4 : Handle to the pause event - */ -void Initialize(Service::Interface* self); - -/** - * APT::GetSharedFont service function - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - * 2 : Virtual address of where shared font will be loaded in memory - * 4 : Handle to shared font memory - */ -void GetSharedFont(Service::Interface* self); - -/** - * APT::Wrap service function - * Inputs: - * 1 : Output buffer size - * 2 : Input buffer size - * 3 : Nonce offset to the input buffer - * 4 : Nonce size - * 5 : Buffer mapping descriptor ((input_buffer_size << 4) | 0xA) - * 6 : Input buffer address - * 7 : Buffer mapping descriptor ((input_buffer_size << 4) | 0xC) - * 8 : Output buffer address - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - * 2 : Buffer unmapping descriptor ((input_buffer_size << 4) | 0xA) - * 3 : Input buffer address - * 4 : Buffer unmapping descriptor ((input_buffer_size << 4) | 0xC) - * 5 : Output buffer address - */ -void Wrap(Service::Interface* self); - -/** - * APT::Unwrap service function - * Inputs: - * 1 : Output buffer size - * 2 : Input buffer size - * 3 : Nonce offset to the output buffer - * 4 : Nonce size - * 5 : Buffer mapping descriptor ((input_buffer_size << 4) | 0xA) - * 6 : Input buffer address - * 7 : Buffer mapping descriptor ((input_buffer_size << 4) | 0xC) - * 8 : Output buffer address - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - * 2 : Buffer unmapping descriptor ((input_buffer_size << 4) | 0xA) - * 3 : Input buffer address - * 4 : Buffer unmapping descriptor ((input_buffer_size << 4) | 0xC) - * 5 : Output buffer address - */ -void Unwrap(Service::Interface* self); - -/** - * APT::NotifyToWait service function - * Inputs: - * 1 : AppID - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - */ -void NotifyToWait(Service::Interface* self); - -/** - * APT::GetLockHandle service function - * Inputs: - * 1 : Applet attributes - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - * 2 : Applet attributes - * 3 : Power button state - * 4 : IPC handle descriptor - * 5 : APT mutex handle - */ -void GetLockHandle(Service::Interface* self); - -/** - * APT::Enable service function - * Inputs: - * 1 : Applet attributes - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - */ -void Enable(Service::Interface* self); - -/** - * APT::GetAppletManInfo service function. - * Inputs: - * 1 : Unknown - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - * 2 : Unknown u32 value - * 3 : Unknown u8 value - * 4 : Home Menu AppId - * 5 : AppID of currently active app - */ -void GetAppletManInfo(Service::Interface* self); - -/** - * APT::GetAppletInfo service function. - * Inputs: - * 1 : AppId - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - * 2-3 : Title ID - * 4 : Media Type - * 5 : Registered - * 6 : Loaded - * 7 : Attributes - */ -void GetAppletInfo(Service::Interface* self); - -/** - * APT::IsRegistered service function. This returns whether the specified AppID is registered with - * NS yet. An AppID is "registered" once the process associated with the AppID uses APT:Enable. Home - * Menu uses this command to determine when the launched process is running and to determine when to - * stop using GSP, etc., while displaying the "Nintendo 3DS" loading screen. - * - * Inputs: - * 1 : AppID - * Outputs: - * 0 : Return header - * 1 : Result of function, 0 on success, otherwise error code - * 2 : Output, 0 = not registered, 1 = registered. - */ -void IsRegistered(Service::Interface* self); - -void InquireNotification(Service::Interface* self); - -/** - * APT::SendParameter service function. This sets the parameter data state. - * Inputs: - * 1 : Source AppID - * 2 : Destination AppID - * 3 : Signal type - * 4 : Parameter buffer size, max size is 0x1000 (this can be zero) - * 5 : Value - * 6 : Handle to the destination process, likely used for shared memory (this can be zero) - * 7 : (Size<<14) | 2 - * 8 : Input parameter buffer ptr - * Outputs: - * 0 : Return Header - * 1 : Result of function, 0 on success, otherwise error code -*/ -void SendParameter(Service::Interface* self); - -/** - * APT::ReceiveParameter service function. This returns the current parameter data from NS state, - * from the source process which set the parameters. Once finished, NS will clear a flag in the NS - * state so that this command will return an error if this command is used again if parameters were - * not set again. This is called when the second Initialize event is triggered. It returns a signal - * type indicating why it was triggered. - * Inputs: - * 1 : AppID - * 2 : Parameter buffer size, max size is 0x1000 - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - * 2 : AppID of the process which sent these parameters - * 3 : Signal type - * 4 : Actual parameter buffer size, this is <= to the the input size - * 5 : Value - * 6 : Handle from the source process which set the parameters, likely used for shared memory - * 7 : Size - * 8 : Output parameter buffer ptr - */ -void ReceiveParameter(Service::Interface* self); - -/** - * APT::GlanceParameter service function. This is exactly the same as APT_U::ReceiveParameter - * (except for the word value prior to the output handle), except this will not clear the flag - * (except when responseword[3]==8 || responseword[3]==9) in NS state. - * Inputs: - * 1 : AppID - * 2 : Parameter buffer size, max size is 0x1000 - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - * 2 : Unknown, for now assume AppID of the process which sent these parameters - * 3 : Unknown, for now assume Signal type - * 4 : Actual parameter buffer size, this is <= to the the input size - * 5 : Value - * 6 : Handle from the source process which set the parameters, likely used for shared memory - * 7 : Size - * 8 : Output parameter buffer ptr - */ -void GlanceParameter(Service::Interface* self); - -/** - * APT::CancelParameter service function. When the parameter data is available, and when the above - * specified fields match the ones in NS state(for the ones where the checks are enabled), this - * clears the flag which indicates that parameter data is available - * (same flag cleared by APT:ReceiveParameter). - * Inputs: - * 1 : Flag, when non-zero NS will compare the word after this one with a field in the NS - * state. - * 2 : Unknown, this is the same as the first unknown field returned by APT:ReceiveParameter. - * 3 : Flag, when non-zero NS will compare the word after this one with a field in the NS - * state. - * 4 : AppID - * Outputs: - * 0 : Return header - * 1 : Result of function, 0 on success, otherwise error code - * 2 : Status flag, 0 = failure due to no parameter data being available, or the above enabled - * fields don't match the fields in NS state. 1 = success. - */ -void CancelParameter(Service::Interface* self); - -/** - * APT::PrepareToStartApplication service function. When the input title-info programID is zero, - * NS will load the actual program ID via AMNet:GetTitleIDList. After doing some checks with the - * programID, NS will then set a NS state flag to value 1, then set the programID for AppID - * 0x300(application) to the input program ID(or the one from GetTitleIDList). A media-type field - * in the NS state is also set to the input media-type value - * (other state fields are set at this point as well). With 8.0.0-18, NS will set an u8 NS state - * field to value 1 when input flags bit8 is set - * Inputs: - * 1-4 : 0x10-byte title-info struct - * 4 : Flags - * Outputs: - * 0 : Return header - * 1 : Result of function, 0 on success, otherwise error code - */ -void PrepareToStartApplication(Service::Interface* self); - -/** - * APT::StartApplication service function. Buf0 is copied to NS FIRMparams+0x0, then Buf1 is copied - * to the NS FIRMparams+0x480. Then the application is launched. - * Inputs: - * 1 : Buffer 0 size, max size is 0x300 - * 2 : Buffer 1 size, max size is 0x20 (this can be zero) - * 3 : u8 flag - * 4 : (Size0<<14) | 2 - * 5 : Buffer 0 pointer - * 6 : (Size1<<14) | 0x802 - * 7 : Buffer 1 pointer - * Outputs: - * 0 : Return Header - * 1 : Result of function, 0 on success, otherwise error code -*/ -void StartApplication(Service::Interface* self); - -/** - * APT::AppletUtility service function - * Inputs: - * 1 : Unknown, but clearly used for something - * 2 : Buffer 1 size (purpose is unknown) - * 3 : Buffer 2 size (purpose is unknown) - * 5 : Buffer 1 address (purpose is unknown) - * 65 : Buffer 2 address (purpose is unknown) - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - */ -void AppletUtility(Service::Interface* self); - -/** - * APT::SetAppCpuTimeLimit service function - * Inputs: - * 1 : Value, must be one - * 2 : Percentage of CPU time from 5 to 80 - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - */ -void SetAppCpuTimeLimit(Service::Interface* self); - -/** - * APT::GetAppCpuTimeLimit service function - * Inputs: - * 1 : Value, must be one - * Outputs: - * 0 : Return header - * 1 : Result of function, 0 on success, otherwise error code - * 2 : System core CPU time percentage - */ -void GetAppCpuTimeLimit(Service::Interface* self); - -/** - * APT::PrepareToStartLibraryApplet service function - * Inputs: - * 0 : Command header [0x00180040] - * 1 : Id of the applet to start - * Outputs: - * 0 : Return header - * 1 : Result of function, 0 on success, otherwise error code - */ -void PrepareToStartLibraryApplet(Service::Interface* self); - -/** - * APT::PrepareToStartNewestHomeMenu service function - * Inputs: - * 0 : Command header [0x001A0000] - * Outputs: - * 0 : Return header - * 1 : Result of function - */ -void PrepareToStartNewestHomeMenu(Service::Interface* self); - -/** - * APT::PreloadLibraryApplet service function - * Inputs: - * 0 : Command header [0x00160040] - * 1 : Id of the applet to start - * Outputs: - * 0 : Return header - * 1 : Result of function, 0 on success, otherwise error code - */ -void PreloadLibraryApplet(Service::Interface* self); - -/** - * APT::StartLibraryApplet service function - * Inputs: - * 0 : Command header [0x001E0084] - * 1 : Id of the applet to start - * 2 : Buffer size - * 3 : Always 0? - * 4 : Handle passed to the applet - * 5 : (Size << 14) | 2 - * 6 : Input buffer virtual address - * Outputs: - * 0 : Return header - * 1 : Result of function, 0 on success, otherwise error code - */ -void StartLibraryApplet(Service::Interface* self); - -/** - * APT::CancelLibraryApplet service function - * Inputs: - * 0 : Command header [0x003B0040] - * 1 : u8, Application exiting (0 = not exiting, 1 = exiting) - * Outputs: - * 0 : Header code - * 1 : Result code - */ -void CancelLibraryApplet(Service::Interface* self); - -/** - * APT::GetStartupArgument service function - * Inputs: - * 1 : Parameter Size (capped to 0x300) - * 2 : StartupArgumentType - * 65 : Output buffer for startup argument - * Outputs: - * 0 : Return header - * 1 : Result of function, 0 on success, otherwise error code - * 2 : u8, Exists (0 = does not exist, 1 = exists) - */ -void GetStartupArgument(Service::Interface* self); - -/** - * APT::SetScreenCapPostPermission service function - * Inputs: - * 0 : Header Code[0x00550040] - * 1 : u8 The screenshot posting permission - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - */ -void SetScreenCapPostPermission(Service::Interface* self); - -/** - * APT::GetScreenCapPostPermission service function - * Inputs: - * 0 : Header Code[0x00560000] - * Outputs: - * 1 : Result of function, 0 on success, otherwise error code - * 2 : u8 The screenshot posting permission - */ -void GetScreenCapPostPermission(Service::Interface* self); - -/** - * APT::CheckNew3DSApp service function - * Outputs: - * 1: Result code, 0 on success, otherwise error code - * 2: u8 output: 0 = Old3DS, 1 = New3DS. - * Note: - * This uses PTMSYSM:CheckNew3DS. - * When a certain NS state field is non-zero, the output value is zero, - * Otherwise the output is from PTMSYSM:CheckNew3DS. - * Normally this NS state field is zero, however this state field is set to 1 - * when APT:PrepareToStartApplication is used with flags bit8 is set. - */ -void CheckNew3DSApp(Service::Interface* self); - -/** - * Wrapper for PTMSYSM:CheckNew3DS - * APT::CheckNew3DS service function - * Outputs: - * 1: Result code, 0 on success, otherwise error code - * 2: u8 output: 0 = Old3DS, 1 = New3DS. - */ -void CheckNew3DS(Service::Interface* self); - -/// Initialize the APT service -void Init(); - -/// Shutdown the APT service -void Shutdown(); - -} // namespace APT -} // namespace Service |