HID services: Difference between revisions
Line 1,923: | Line 1,923: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || AcquireDevice | | 0 || [[#AcquireDevice]] | ||
|- | |- | ||
| 1 || ReleaseDevice | | 1 || [[#ReleaseDevice]] | ||
|- | |- | ||
| 2 || | | 2 || [[#GetCtrlSession]] | ||
|- | |- | ||
| 3 || | | 3 || [[#GetReadSession]] | ||
|- | |- | ||
| [1.0.0-2.3.0] | | 4 || [1.0.0-2.3.0] [[#GetWriteSession]] | ||
|} | |} | ||
== AcquireDevice == | |||
Takes an input s32, no output. | |||
== ReleaseDevice == | |||
Takes an input s32, no output. | |||
== GetCtrlSession == | |||
Takes an input u32, returns an [[#ICtrlSession]]. | |||
== GetReadSession == | |||
Takes an input u32, returns an [[#IReadSession]]. | |||
== GetWriteSession == | |||
Takes an input u32, returns an [[#IWriteSession]]. | |||
== ICtrlSession == | == ICtrlSession == | ||
Line 1,943: | Line 1,958: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || GetString | | 0 || GetString | ||
|- | |- | ||
| 1 || GetCodeBook | | 1 || GetCodeBook | ||
|- | |- | ||
| 2 || GetReport | | 2 || GetReport | ||
|- | |- | ||
| 3 || SetReport | | 3 || SetReport | ||
|- | |- | ||
| 4 || GetIdle | | 4 || GetIdle | ||
|- | |- | ||
| 5 || SetIdle | | 5 || SetIdle | ||
|- | |- | ||
| 6 || GetProtocol | | 6 || GetProtocol | ||
|- | |- | ||
| 7 || SetProtocol | | 7 || SetProtocol | ||
|- | |- | ||
| 8 || GetDescriptor | | 8 || GetDescriptor | ||
|- | |- | ||
| 9 || SetDescriptor | | 9 || SetDescriptor | ||
|- | |- | ||
| 10 || GetStateChangeEvent | | 10 || GetStateChangeEvent | ||
|- | |- | ||
| 11 || SignalStateChangeEvent | | 11 || SignalStateChangeEvent | ||
|- | |- | ||
| 12 || [3.0.0+] Write | | 12 || [3.0.0+] Write | ||
|} | |} | ||
All of these use USB [[USB_services|CtrlXfer]], except for | All of these use USB [[USB_services|CtrlXfer]], except for GetStateChangeEvent and SignalStateChangeEvent, and GetCodeBook which copies 0x4000-bytes from state to output. | ||
== IReadSession == | == IReadSession == | ||
Line 1,981: | Line 1,996: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || Read | | 0 || [[#Read]] | ||
|} | |} | ||
=== Read === | |||
Uses [[USB_services|PostBufferAsync]] etc with the INPUT endpoint. The size must be <=0x1000. The actual transfer size is returned in an output u64. The data is copied from the tmpbuf to the output buffer using the actual-transfer-size. | |||
[3.0.0+] | [3.0.0+] Now takes a total of 8-bytes of input. | ||
== IWriteSession == | == IWriteSession == | ||
Line 1,997: | Line 2,013: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || [[#Write]] | ||
|} | |} | ||
=== Write === | |||
This is the inverse of [[#IReadSession]] cmd0. Uses the OUTPUT endpoint with an input buffer. | |||
= ahid:hdr = | = ahid:hdr = |