USB services: Difference between revisions

Official symbols
No edit summary
Line 1: Line 1:
One symbol in USB-sysmodule is: "vtable for nn::usb::detail::UsbComplexTegra21x".
One symbol in USB-sysmodule is: "vtable for nn::usb::detail::UsbComplexTegra21x".


=usb:ds=
= usb:ds =
Used for Switch<>PC USB comms, aka Switch-as-device.
Used for Switch<>PC USB comms, aka Switch-as-device.
This service is used during [[Factory Setup|factory setup]] by [[Manu Services|manu]].
This service is used during [[Factory Setup|factory setup]] by [[Manu Services|manu]].
Line 9: Line 9:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || BindComplex
| 0 || [[#BindComplex]]
|-
|-
| 1 || BindClientProcess
| 1 || [[#BindClientProcess]]
|-
|-
| 2 || GetDsInterface
| 2 || [[#GetDsInterface]]
|-
|-
| 3 || GetStateChangeEvent
| 3 || [[#GetStateChangeEvent]]
|-
|-
| 4 ||  
| 4 ||  
|-
|-
| 5 || SetVidPidBcd
| 5 || [[#SetVidPidBcd]]
|}
|}
== BindComplex ==
Takes an u32 ('''complexId'''). [[Manu_Services|Manu]] sends 0x02.
== BindClientProcess ==
Takes 1 copy-handle for the current process (0xFFFF8001).
== GetDsInterface ==
Takes 2 type-5 buffers and returns an [[#IDsInterface]]. [[Manu_Services|Manu]] sends a 0x09-byte command (e.g.: 0x09, 0x04, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00) in the first buffer and a string ("usb") in the second buffer.
== GetStateChangeEvent ==
Returns an event handle for state changes.
== SetVidPidBcd ==
Takes a type-5 buffer with 0x66 bytes of USB descriptor data (see [[Manu_Services#manu|manu]]).


== IDsInterface ==
== IDsInterface ==
Line 27: Line 42:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || GetDsEndpoint
| 0 || [[#GetDsEndpoint]]
|-
|-
| 1 || GetSetupEvent
| 1 || [[#GetSetupEvent]]
|-
|-
| 2 ||  
| 2 ||  
|-
|-
| 3 || EnableInterface
| 3 || [[#EnableInterface]]
|-
|-
| 4 || DisableInterface
| 4 || [[#DisableInterface]]
|-
|-
| 5 ||  
| 5 ||  
Line 41: Line 56:
| 6 ||  
| 6 ||  
|-
|-
| 7 || GetCtrlInCompletionEvent
| 7 || [[#GetCtrlInCompletionEvent]]
|-
|-
| 8 ||  
| 8 ||  
|-
|-
| 9 || GetCtrlOutCompletionEvent
| 9 || [[#GetCtrlOutCompletionEvent]]
|-
|-
| 10 ||  
| 10 ||  
Line 51: Line 66:
| 11 ||  
| 11 ||  
|}
|}
=== GetDsEndpoint ===
Takes a type-5 buffer and returns an [[#IDsEndpoint]]. [[Manu_Services|Manu]] sends a 0x07-byte command (e.g.: 0x07, 0x05, 0x80, 0x02, 0x00, 0x02, 0x00) in the first buffer.
=== GetSetupEvent ===
Returns an event handle for interface setup changes.
=== EnableInterface ===
Takes no arguments. Enables the current interface.
=== DisableInterface ===
Takes no arguments. Disables the current interface.
=== GetCtrlInCompletionEvent ===
Returns an event handle for polling the completion of input control commands.
=== GetCtrlOutCompletionEvent ===
Returns an event handle for polling the completion of output control commands.


=== IDsEndpoint ===
=== IDsEndpoint ===
Line 57: Line 90:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || PostBufferAsync
| 0 || [[#PostBufferAsync]]
|-
|-
| 1 ||  
| 1 ||  
Line 63: Line 96:
| 2 ||  
| 2 ||  
|-
|-
| 3 || GetReportData
| 3 || [[#GetReportData]]
|-
|-
| 4 ||  
| 4 ||  
Line 70: Line 103:
|}
|}


=usb:hs=
==== PostBufferAsync ====
Takes an u32 ('''size''') and an u64 ('''buffer''').
 
==== GetReportData ====
Returns 0x84 bytes of report data from the endpoint.
 
= usb:hs =
General USB devices usage, used by hid-sysmodule and bsdsockets-sysmodule.
General USB devices usage, used by hid-sysmodule and bsdsockets-sysmodule.


=usb:pd=
= usb:pd =
Only system-titles with access to this are [[PTM_services|PTM]] and [[AM_services|AM]].
Only system-titles with access to this are [[PTM_services|PTM]] and [[AM_services|AM]].


=usb:pd:c=
= usb:pd:c =
USB-sysmodule symbols for this refer to "Cradle", which is the [[Dock]].
USB-sysmodule symbols for this refer to "Cradle", which is the [[Dock]].


=usb:pm=
= usb:pm =
Presumably Power Management, only system-title using this is [[PTM_services|PTM]].
Presumably Power Management, only system-title using this is [[PTM_services|PTM]].