Changes

1,556 bytes added ,  20:43, 20 November 2024
no edit summary
Line 1: Line 1: −
This implements the MTP PTP protocol[https://www.usb.org/document-library/media-transfer-protocol-v11-spec-and-mtp-v11-adopters-agreement].
+
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 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 16: 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]].