Bus services: Difference between revisions

Line 443: Line 443:
| 0 || [[#HasPort]]
| 0 || [[#HasPort]]
|-
|-
| 1 || HasPortForDev
| 1 || [[#HasPortForDev]]
|-
|-
| 2 || [[#IsSupportedBaudRate]]
| 2 || [[#IsSupportedBaudRate]]
|-
|-
| 3 || IsSupportedBaudRateForDev
| 3 || [[#IsSupportedBaudRateForDev]]
|-
|-
| 4 || [[#IsSupportedFlowControlMode]]
| 4 || [[#IsSupportedFlowControlMode]]
|-
|-
| 5 || IsSupportedFlowControlModeForDev
| 5 || [[#IsSupportedFlowControlModeForDev]]
|-
|-
| 6 || [[#CreatePortSession]]
| 6 || [[#CreatePortSession]]
|-
|-
| 7 || IsSupportedPortEvent
| 7 || [[#IsSupportedPortEvent]]
|-
|-
| 8 || IsSupportedPortEventForDev
| 8 || [[#IsSupportedPortEventForDev]]
|-
|-
| 9 || [7.0.0+] IsSupportedUnknown
| 9 || [7.0.0+] [[#IsSupportedDevice]]
|-
|-
| 10 || [7.0.0+] IsSupportedUnknownForDev
| 10 || [7.0.0+] [[#IsSupportedDeviceForDev]]
|}
|}


== HasPort ==
== HasPort ==
Takes a u32 [[#UartPort]] and returns boolean success value.
Takes an u32 [[#UartPort]]. Returns a boolean success value.
 
== HasPortForDev ==
Takes an u32 [[#UartPortForDev]]. Returns a boolean success value.


== IsSupportedBaudRate ==
== IsSupportedBaudRate ==
Takes a u32 [[#UartPort]] and a u32 baudrate and returns boolean success value.
Takes an u32 [[#UartPort]] and an u32 '''baudrate'''. Returns a boolean success value.
 
Supported baud rates are 57600, 115200, 1000000 and 3000000.
 
== IsSupportedBaudRateForDev ==
Takes an u32 [[#UartPortForDev]] and an u32 '''baudrate'''. Returns a boolean success value.
 
Supported baud rates are 57600, 115200, 1000000 and 3000000.


== IsSupportedFlowControlMode ==
== IsSupportedFlowControlMode ==
Takes a u32 [[#UartPort]] and returns boolean success value.
Takes an u32 [[#UartPort]] and an u32 '''mode'''. Returns a boolean success value.
 
Supported modes are 0 (RTS) and 1 (CTS).
 
== IsSupportedFlowControlModeForDev ==
Takes an u32 [[#UartPortForDev]] and an u32 '''mode'''. Returns a boolean success value.
 
Supported modes are 0 (RTS) and 1 (CTS).


== CreatePortSession ==
== CreatePortSession ==
Takes a u32 [[#UartPort]] and returns an [[#IPortSession]].
No input. Returns an [[#IPortSession]].
 
== IsSupportedPortEvent ==
Takes an u32 [[#UartPort]] and an u32 '''event'''. Returns a boolean success value.
 
Supported events are 0 (data), 1 (break), 2 (unknown) and 3 (unknown).
 
== IsSupportedPortEventForDev ==
Takes an u32 [[#UartPortForDev]] and an u32 '''event'''. Returns a boolean success value.
 
Supported events are 0 (data), 1 (break), 2 (unknown) and 3 (unknown).
 
== IsSupportedDevice ==
Takes an u32 [[#UartPort]] and an u32 '''device'''. Returns a boolean success value.
 
Supported devices are 0 (Bluetooth) for UART-D, 0 (Joy-Con(R)) for UART-B, 0 (Joy-Con(L)) and 1 (MCU) for UART-C.
 
== IsSupportedDeviceForDev ==
Takes an u32 [[#UartPortForDev]] and an u32 '''device'''. Returns a boolean success value.
 
Supported devices are 0 (Bluetooth) for UART-D, 0 (Joy-Con(R)) for UART-B, 0 (Joy-Con(L)) and 1 (MCU) for UART-C.


== UartPort ==
== UartPort ==
{| class="wikitable sortable" border="1"
{| class="wikitable sortable" border="1"
|-
|-
! Name || DeviceCode || Port || Usage
! Name || DeviceCode (internal) || DeviceCode (mapped) || Port || Usage
|-
| 0 || 0x03000001 || || UART-A || Invalid
|-
| 1 || 0x03000004 || 0x37000001 || UART-D || Bluetooth
|-
| 2 || 0x03000002 || 0x35000405 || UART-B || Joy-Con(R)
|-
| 3 || 0x03000003 || 0x3500040F || UART-C || Joy-Con(L)
|-
| 4 || 0x03000003 || 0x35000419 || UART-C || MCU
|}
 
== UartPortForDev ==
{| class="wikitable sortable" border="1"
|-
! Name || DeviceCode (internal) || DeviceCode (mapped) || Port || Usage
|-
|-
| 1 || 0x37000001 || UART-D || Bluetooth
| 0 || 0x03000001 || || UART-A || Invalid
|-
|-
| 2 || 0x35000405 || UART-B || Joy-Con(R)
| 1 || 0x03000002 || 0x35000405 || UART-B || Joy-Con(R)
|-
|-
| 3 || 0x3500040F || UART-C || Joy-Con(L)
| 2 || 0x03000003 || 0x3500040F || UART-C || Joy-Con(L)
|-
|-
| 4 || 0x35000419 || UART-B || MCU
| 3 || 0x03000004 || 0x37000001 || UART-D || Bluetooth
|}
|}


Line 497: Line 550:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || OpenPort
| 0 || [[#OpenPort]]
|-
|-
| 1 || OpenPortForDev
| 1 || [[#OpenPortForDev]]
|-
|-
| 2 || GetWritableLength
| 2 || GetWritableLength
Line 514: Line 567:
|}
|}


[7.0.0+] OpenPort/OpenPortForDev now takes an additional 0x8-bytes of input.
=== OpenPort ===
Takes an u32 [[#UartPort]], 3 u32s, 2 copy handles and 4 u8s. Returns a boolean success value.
 
[7.0.0+] Now takes an additional u64.


=== Port Mapping ===
=== OpenPortForDev ===
OpenPort translates user IDs to to the [[#UartPort]] index.
Takes an u32 [[#UartPortForDev]], 3 u32s, 2 copy handles and 4 u8s. Returns a boolean success value.


OpenPortForDev takes the port index verbatim.
[7.0.0+] Now takes an additional u64.


= pwm =
= pwm =