Changes

Jump to navigation Jump to search
1,192 bytes added ,  18:07, 12 February 2021
no edit summary
Line 661: Line 661:     
This uses the same func internally as [[#PostBufferAsync_2|#PostBufferAsync]] except multiple urbs are specified by the user: the input buffer contains an array of u32s for the size of each urb, where '''urbCount''' is the total number of entries in this array. With [[#PostBufferAsync_2|#PostBufferAsync]] the last 2 params passed to the internal func are hard-coded to 0, while with this command it's '''unk1''' and '''unk2'''.
 
This uses the same func internally as [[#PostBufferAsync_2|#PostBufferAsync]] except multiple urbs are specified by the user: the input buffer contains an array of u32s for the size of each urb, where '''urbCount''' is the total number of entries in this array. With [[#PostBufferAsync_2|#PostBufferAsync]] the last 2 params passed to the internal func are hard-coded to 0, while with this command it's '''unk1''' and '''unk2'''.
 +
 +
= usb:pd =
 +
This is "nn::usb::pd::detail::IPdManager".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#OpenSession]]
 +
|}
 +
 +
Only system-titles with access to this are [[PTM_services|ptm]] and [[AM_services|am]].
 +
 +
== OpenSession ==
 +
No input. Returns an [[#IPdSession]].
 +
 +
== IPdSession ==
 +
This is "nn::usb::pd::detail::IPdSession".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || BindNoticeEvent
 +
|-
 +
| 1 || UnbindNoticeEvent
 +
|-
 +
| 2 || GetStatus
 +
|-
 +
| 3 || GetNotice
 +
|-
 +
| 4 || EnablePowerRequestNotice
 +
|-
 +
| 5 || DisablePowerRequestNotice
 +
|-
 +
| 6 || ReplyPowerRequest
 +
|}
 +
 +
= usb:pd:c =
 +
This is "nn::usb::pd::detail::IPdCradleManager".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#OpenCradleSession]]
 +
|}
 +
 +
USB-sysmodule symbols for this refer to "Cradle", which is the [[Dock]].
 +
 +
== OpenCradleSession ==
 +
No input. Returns an [[#IPdCradleSession]].
 +
 +
== IPdCradleSession ==
 +
This is "nn::usb::pd::detail::IPdCradleSession".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#AccessCradleVdoWithWriteRequest]]
 +
|-
 +
| 1 || [[#AccessCradleVdoWithReadRequest]]
 +
|-
 +
| 2 || Vdm20Init || No input/output.
 +
If Cradle or RelayBox is connected, caches result of VDM 0x20.
 +
|-
 +
| 3 || [2.0.0+] GetFwType
 +
|-
 +
| 4 || [2.0.0+] GetFwRevision
 +
|-
 +
| 5 || [2.0.0+] GetManufacturerId
 +
|-
 +
| 6 || [2.0.0+] GetDeviceId
 +
|-
 +
| 7 || [3.0.0+]
 +
|-
 +
| 8 || [3.0.0+]
 +
|}
 +
 +
=== AccessCradleVdoWithWriteRequest ===
 +
Takes two input u32s '''Value''' and '''UserId'''. No output.
 +
 +
'''UserId''' is translated to the actual [[#VdmCommand]] to send.
 +
 +
=== AccessCradleVdoWithReadRequest ===
 +
Takes an input u32 '''UserId'''. Returns an u32 '''Value'''.
 +
 +
'''UserId''' is translated to the actual [[#VdmCommand]] to send.
 +
 +
=== GetFwType ===
 +
No input. Returns an output u16.
 +
 +
=== GetFwRevision ===
 +
No input. Returns an output u16.
 +
 +
=== GetManufacturerId ===
 +
No input. Returns an output u16.
 +
 +
=== GetDeviceId ===
 +
No input. Returns an output u16.
 +
 +
= usb:pd:m =
 +
This is "nn::usb::pd::detail::IPdManufactureManager".
 +
 +
[2.0.0+] This service was merged into [[#usb:pd:c|usb:pd:c]].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#OpenManufactureSession]]
 +
|}
 +
 +
== OpenManufactureSession ==
 +
No input. Returns an [[#IPdManufactureSession]].
 +
 +
== IPdManufactureSession ==
 +
This is "nn::usb::pd::detail::IPdManufactureSession".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || GetFwType
 +
|-
 +
| 1 || GetFwRevision
 +
|-
 +
| 2 || GetManufacturerId
 +
|-
 +
| 3 || GetDeviceId
 +
|}
 +
 +
= usb:pm =
 +
This is "nn::usb::pm::IPmService".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 ||
 +
|-
 +
| 1 ||
 +
|-
 +
| 2 ||
 +
|-
 +
| 3 ||
 +
|-
 +
| 4 ||
 +
|-
 +
| 5 ||
 +
|}
 +
 +
USB Port Manager, only system-title using this is [[PTM_services|ptm]].
 +
 +
= usb:qdb =
 +
Added with [[7.0.0]].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 ||
 +
|-
 +
| 1 ||
 +
|}
 +
 +
== Cmd0 ==
 +
No input/output, takes a type-0x5 input buffer.
 +
 +
This loads data for [[#HidGamepad]] with the input .json.
 +
 +
== Cmd1 ==
 +
Takes 6-bytes of input (u16s '''vid''', '''pid''', '''bcdDevice''') and a type-0x5 input buffer, returns an output u8 bool indicating success.
 +
 +
Locates an entry in the [[#HidGamepad]] state with the input u16s, and checks for a '''quirks''' array entry where '''name''' matches the input buffer string. Returns 1 when found, 0 otherwise.
 +
 +
= usb:obsv =
 +
Added with [8.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 ||
 +
|-
 +
| 1 ||
 +
|}
    
= UsbHsInterface =
 
= UsbHsInterface =
Line 780: Line 968:  
Official sw only uses the Result/size fields.
 
Official sw only uses the Result/size fields.
   −
= usb:pd =
+
= VdmCommand =
This is "nn::usb::pd::detail::IPdManager".
  −
 
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name
+
! Value || UserId || Name
 
|-
 
|-
| 0 || GetPdSession
+
| 0 || - || None
|}
  −
 
  −
Only system-titles with access to this are [[PTM_services|ptm]] and [[AM_services|am]].
  −
 
  −
== IPdSession ==
  −
This is "nn::usb::pd::detail::IPdSession".
  −
 
  −
{| class="wikitable" border="1"
  −
|-
  −
! Cmd || Name
  −
|-
  −
| 0 || BindNoticeEvent
  −
|-
  −
| 1 || UnbindNoticeEvent
  −
|-
  −
| 2 || GetStatus
  −
|-
  −
| 3 || GetNotice
   
|-
 
|-
| 4 || EnablePowerRequestNotice
+
| 1 || 0 || LedControlRequest
|-
  −
| 5 || DisablePowerRequestNotice
  −
|-
  −
| 6 || ReplyPowerRequest
  −
|}
  −
 
  −
= usb:pd:c =
  −
This is "nn::usb::pd::detail::IPdCradleManager".
  −
 
  −
{| class="wikitable" border="1"
  −
|-
  −
! Cmd || Name || Notes
  −
|-
  −
| 0 || GetPdCradleSession || Returns a session handle for the below.
  −
|}
  −
 
  −
USB-sysmodule symbols for this refer to "Cradle", which is the [[Dock]].
  −
 
  −
== IPdCradleSession ==
  −
This is "nn::usb::pd::detail::IPdCradleSession".
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name || Notes
+
| 2 || - || SleepButtonNotice
 
|-
 
|-
| 0 || VdmUserWrite || Input { u32 value; u32 VdmUserId; }. Output {}.
+
| 3 || 10 || DeviceTypeRequest
If Cradle or RelayBox is connected, issues given VDM with value.
   
|-
 
|-
| 1 || VdmUserRead || Input { u32 VdmUserId; }. Output { u32 value; }.
+
| 4 || - || DeviceTypeReply
If Cradle or RelayBox is connected, returns u32 response from issuing given VDM.
   
|-
 
|-
| 2 || Vdm20Init || No input/output.
+
| 5 || - || UsbPowerErrorNotice
If Cradle or RelayBox is connected, caches result of VDM 0x20.
   
|-
 
|-
| 3 || [2.0.0+] GetFwType || No input. Returns an output u16.
+
| 6 || 1 || Dp2HdmiFwVerRequest
 
|-
 
|-
| 4 || [2.0.0+] GetFwRevision || No input. Returns an output u16.
+
| 7 || - || Dp2HdmiFwVerReply
 
|-
 
|-
| 5 || [2.0.0+] GetManufacturerId || No input. Returns an output u16.
+
| 8 || - || Dp2HdmiFwUpdateRequest
 
|-
 
|-
| 6 || [2.0.0+] GetDeviceId || No input. Returns an output u16.
+
| 9 || - || Dp2HdmiFwUpdateReply
 
|-
 
|-
| 7 || [3.0.0+] ||
+
| 10 || - || Dp2HdmiFwUpdateNotice
 
|-
 
|-
| 8 || [3.0.0+] ||
+
| 11 || 2 || PdcHFwVerRequest
|}
  −
 
  −
Note: The VdmUserId given to VdmUserRead/VdmUserWrite is translated from the given (enum) value to the actual cmd to send.
  −
 
  −
= usb:pd:m =
  −
This is "nn::usb::pd::detail::IPdManufactureManager". This is only available on 1.0.0.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name || Notes
+
| 12 || - || PdcHFwVerReply
 
|-
 
|-
| 0 || || No input, returns an [[#IPdManufactureSession]].
+
| 13 || - || PdcHFwUpdateRequest
|}
  −
 
  −
== IPdManufactureSession ==
  −
This is "nn::usb::pd::detail::IPdManufactureSession".
  −
 
  −
These commands just load the u16 from global state.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name || Notes
+
| 14 || - || PdcHFwUpdateReply
 
|-
 
|-
| 0 || || No input, returns an output u16.
+
| 15 || - || PdcHFwUpdateNotice
 
|-
 
|-
| 1 || || No input, returns an output u16.
+
| 16 || 3 || PdcAFwVerRequest
 
|-
 
|-
| 2 || || No input, returns an output u16.
+
| 17 || - || PdcAFwVerReply
 
|-
 
|-
| 3 || || No input, returns an output u16.
+
| 18 || - || PdcAFwUpdateRequest
 
|-
 
|-
|}
+
| 19 || - || PdcAFwUpdateReply
 
  −
= usb:pm =
  −
This is "nn::usb::pm::IPmService".
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name
+
| 20 || - || PdcAFwUpdateNotice
 
|-
 
|-
| 0 ||
+
| 21 || - || DeviceErrorNotice
 
|-
 
|-
| 1 ||
+
| 22 || 4 || DeviceStateRequest
 
|-
 
|-
| 2 ||
+
| 23 || || DeviceStateReply
 
|-
 
|-
| 3 ||
+
| 24 || 5 || McuFwVerRequest
 
|-
 
|-
| 4 ||
+
| 25 || || McuFwVerReply
 
|-
 
|-
| 5 ||
+
| 26 || 6 || McuFwUpdateRequest
|}
  −
 
  −
USB Port Manager, only system-title using this is [[PTM_services|ptm]].
  −
 
  −
= usb:qdb =
  −
Added with [[7.0.0]].
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name
+
| 27 || || McuFwUpdateReply
 
|-
 
|-
| 0 ||  
+
| 28 || 7 || McuFwUpdateNotice
 
|-
 
|-
| 1 ||  
+
| 29 || - ||  
|}
  −
 
  −
== Cmd0 ==
  −
No input/output, takes a type-0x5 input buffer.
  −
 
  −
This loads data for [[#HidGamepad]] with the input .json.
  −
 
  −
== Cmd1 ==
  −
Takes 6-bytes of input (u16s '''vid''', '''pid''', '''bcdDevice''') and a type-0x5 input buffer, returns an output u8 bool indicating success.
  −
 
  −
Locates an entry in the [[#HidGamepad]] state with the input u16s, and checks for a '''quirks''' array entry where '''name''' matches the input buffer string. Returns 1 when found, 0 otherwise.
  −
 
  −
= usb:obsv =
  −
Added with [8.0.0+].
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name
+
| 30 || 8 ||  
 
|-
 
|-
| 0 ||  
+
| 31 || - ||  
 
|-
 
|-
| 1 ||  
+
| 32 || 9 ||  
 
|}
 
|}
  

Navigation menu