Line 1: |
Line 1: |
| + | This implements the MTP PTP [https://www.usb.org/document-library/media-transfer-protocol-v11-spec-and-mtp-v11-adopters-agreement protocol]. This was added with [[11.0.0]]. |
| + | |
| = capmtp = | | = capmtp = |
− | This implements the MTP PTP protocol[https://www.usb.org/document-library/media-transfer-protocol-v11-spec-and-mtp-v11-adopters-agreement]. | + | This is "nn::capmtp::ICapmtpRootSession". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Cmd || Name || Notes | + | ! Cmd || Name |
− | |-
| |
− | | 0 || || No input. Returns a session of [[#ICapmtpInterface]]
| |
| |- | | |- |
| + | | 0 || [[#CreateInterface]] |
| |} | | |} |
| + | |
| + | == CreateInterface == |
| + | No input. Returns an [[#ICapmtpInterface]]. |
| | | |
| == ICapmtpInterface == | | == ICapmtpInterface == |
Line 15: |
Line 19: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Cmd || Name || Notes | + | ! Cmd || Name |
− | |-
| |
− | | 0 || ||
| |
| |- | | |- |
− | | 1 || || | + | | 0 || [[#Initialize]] |
| |- | | |- |
− | | 2 || || No input or output. Starts MTP command handler "nn.capmtp.CapmtpCommandLoop". | + | | 1 || [[#Finalize]] |
| |- | | |- |
− | | 3 || || No input or output. Stops "nn.capmtp.CapmtpCommandLoop". | + | | 2 || [[#Enable]] |
| |- | | |- |
− | | 4 || || No input. Returns true if "nn.capmtp.CapmtpCommandLoop" is running. | + | | 3 || [[#Disable]] |
| |- | | |- |
− | | 5 || || | + | | 4 || [[#GetConnectionStateChangeEvent]] |
| |- | | |- |
− | | 6 || || | + | | 5 || [[#IsEnabled]] |
| |- | | |- |
− | | 7 || || | + | | 6 || [[#IsConnected]] |
| |- | | |- |
− | | 8 || || | + | | 7 || [[#GetUpdatedErrorEvent]] |
| |- | | |- |
| + | | 8 || [[#GetLastError]] |
| |} | | |} |
| | | |
− | == Notes == | + | === Initialize === |
− | Only operation calls 0x1001-0x100A are available. | + | Takes a u32 max folder count, a u32 max image count, a u32 max video count, a transfer memory handle + u32 size and a type-0x5 buffer translated "Other" utf-16 string. |
| + | |
| + | === Finalize === |
| + | No input/output. |
| + | |
| + | Unmaps transfer memory from [[#Initialize]], stops "nn.capmtp.CapmtpCommandLoop". |
| + | |
| + | === Enable === |
| + | No input/output. |
| + | |
| + | Starts MTP command handler thread "nn.capmtp.CapmtpCommandLoop". |
| + | |
| + | === Disable === |
| + | No input/output. |
| + | |
| + | Stops "nn.capmtp.CapmtpCommandLoop". |
| + | |
| + | === GetConnectionStateChangeEvent === |
| + | No input. Returns readable event handle. |
| + | |
| + | Signaled when the USB connection status changes. |
| + | |
| + | === IsEnabled === |
| + | No input. Returns an output bool. |
| + | |
| + | Returns true if "nn.capmtp.CapmtpCommandLoop" is running. |
| + | |
| + | === IsConnected === |
| + | No input. Returns an output bool. |
| + | |
| + | Returns true if a USB connection is established. |
| + | |
| + | === GetUpdatedErrorEvent === |
| + | No input. Returns readable event handle. |
| + | |
| + | Signaled when an error occurred during album scan. |
| + | |
| + | === GetLastError === |
| + | No input/output. |
| + | |
| + | Returns the album scan Result. |
| + | |
| + | = Notes = |
| + | Only PTP operations 0x1001-0x100A are available. |
| + | |
| + | * OpenSession/CloseSession only allow a maximum of 1 session to be opened. |
| + | * DeviceInfo: Serial Number is set to the output from [[Settings_services#GetSerialNumber|GetSerialNumber]]. Device Version is set to the [[System_Version_Title|SystemVersion]] DisplayVersion. |
| + | |
| + | While this has access to [[Filesystem_services#fsp-srv|fsp-srv]] it remains unused. |
| + | Images and Videos are loaded with [[Capture_services#caps:a|caps:a]]. |
| + | |
| + | Program names are loaded with [[NS_Services|ns]] using the transfer memory from [[#Initialize]]. |