Capmtp services: Difference between revisions
mNo edit summary |
No edit summary |
||
(11 intermediate revisions by 2 users not shown) | |||
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 | This is "nn::capmtp::ICapmtpRootSession". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || [[#CreateInterface]] | |||
|} | |} | ||
== CreateInterface == | |||
No input. Returns an [[#ICapmtpInterface]]. | |||
== ICapmtpInterface == | == ICapmtpInterface == | ||
Line 15: | Line 19: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| | | 0 || [[#Initialize]] | ||
|- | |- | ||
| | | 1 || [[#Finalize]] | ||
|- | |- | ||
| | | 2 || [[#Enable]] | ||
|- | |- | ||
| | | 3 || [[#Disable]] | ||
|- | |- | ||
| | | 4 || [[#GetConnectionStateChangeEvent]] | ||
|- | |- | ||
| | | 5 || [[#IsEnabled]] | ||
|- | |- | ||
| | | 6 || [[#IsConnected]] | ||
|- | |- | ||
| | | 7 || [[#GetUpdatedErrorEvent]] | ||
|- | |- | ||
| 8 || [[#GetLastError]] | |||
|} | |} | ||
== Notes | === Initialize === | ||
Only | 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]]. |