Capmtp services

Revision as of 02:31, 3 December 2020 by Behemoth (talk | contribs)

This implements the MTP PTP protocol[1].

capmtp

This is "nn::capmtp::ICapmtpRootSession".

Cmd Name Notes
0 No input. Returns a session of #ICapmtpInterface

ICapmtpInterface

This is "nn::capmtp::ICapmtpInterface".

Cmd Name Notes
0 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.
1 No input or output. Unmaps transfer memory from Cmd0, stops "nn.capmtp.CapmtpCommandLoop".
2 No input or output. Starts MTP command handler thread "nn.capmtp.CapmtpCommandLoop".
3 No input or output. Stops "nn.capmtp.CapmtpCommandLoop".
4 No input. Returns true if "nn.capmtp.CapmtpCommandLoop" is running.
5 No input. Returns readable event handle.
6 No input. Returns a boolean.
7 No input. Returns readable event handle.
8 No input or output.

Notes

Only PTP operation calls 0x1001-0x100A are available.

While this has access to fsp-srv it remains unused. Images and Videos are loaded with caps:a.

Program names are loaded with ns using the transfer memory from Cmd0.