Difference between revisions of "BTM services"
Line 430: | Line 430: | ||
=== BleGetPairedDevices === | === BleGetPairedDevices === | ||
Takes a type-0xA output buffer containing an array of [[Bluetooth_Driver_services#Address|Address]], a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], returns an output u8 total_out. | Takes a type-0xA output buffer containing an array of [[Bluetooth_Driver_services#Address|Address]], a [[Bluetooth_Driver_services#BleAdvertisePacketParameter|BleAdvertisePacketParameter]], returns an output u8 total_out. | ||
+ | |||
+ | The max array entries is 10. | ||
=== AcquireBleServiceDiscoveryEvent === | === AcquireBleServiceDiscoveryEvent === | ||
Line 438: | Line 440: | ||
=== GetGattServices === | === GetGattServices === | ||
Takes a PID, a type-0x6 output buffer containing an array of [[#GattService]], an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. | Takes a PID, a type-0x6 output buffer containing an array of [[#GattService]], an u32, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. | ||
+ | |||
+ | The u32 is handled the same as [[#BleDisconnect]]. The max array entries is 100. | ||
=== GetGattService === | === GetGattService === | ||
Takes a PID, a type-0x1A output buffer containing a [[#GattService]], an u32, a [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. | Takes a PID, a type-0x1A output buffer containing a [[#GattService]], an u32, a [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], returns an output u8 total_out. | ||
+ | |||
+ | The u32 is handled the same as [[#BleDisconnect]]. | ||
+ | |||
+ | Same as [[#GetGattServices]] except this only returns the [[#GattService]] which matches the input [[Bluetooth_Driver_services#GattAttributeUuid|GattAttributeUuid]]. | ||
=== GetGattIncludedServices === | === GetGattIncludedServices === |
Revision as of 01:07, 3 August 2020
btm
This is "nn::btm::IBtm".
Support for "nn::btm::*" was added to sdknso with 6.x.
This has max_sessions 6. IPC is handled by 2 threads shared with all services.
Cmd | Name |
---|---|
0 | GetState |
1 | GetHostDeviceProperty |
2 | AcquireDeviceConditionEvent |
3 | GetDeviceCondition |
4 | SetBurstMode |
5 | SetSlotMode |
6 | [1.0.0-8.1.0] SetBluetoothMode |
7 | SetWlanMode |
8 | AcquireDeviceInfoEvent |
9 | GetDeviceInfo |
10 | AddDeviceInfo |
11 | RemoveDeviceInfo |
12 | IncreaseDeviceInfoOrder |
13 | LlrNotify |
14 | EnableRadio |
15 | DisableRadio |
16 | HidDisconnect |
17 | HidSetRetransmissionMode |
18 | [2.0.0+] AcquireAwakeReqEvent |
19 | [4.0.0+] AcquireLlrStateEvent |
20 | [4.0.0+] IsLlrStarted |
21 | [4.0.0+] EnableSlotSaving |
22 | [5.0.0+] ProtectDeviceInfo |
23 | [5.0.0+] AcquireBleScanEvent |
24 | [5.0.0+] GetBleScanParameterGeneral |
25 | [5.0.0+] GetBleScanParameterSmartDevice |
26 | [5.0.0+] StartBleScanForGeneral |
27 | [5.0.0+] StopBleScanForGeneral |
28 | [5.0.0+] GetBleScanResultsForGeneral |
29 | [5.0.0+] StartBleScanForPairedDevice |
30 | [5.0.0+] StopBleScanForPairedDevice |
31 | [5.0.0+] StartBleScanForSmartDevice |
32 | [5.0.0+] StopBleScanForSmartDevice |
33 | [5.0.0+] GetBleScanResultsForSmartDevice |
34 | [5.0.0+] AcquireBleConnectionEvent |
35 | [5.0.0+] BleConnect |
36 | [5.0.0+] BleOverrideConnection |
37 | [5.0.0+] BleDisconnect |
38 | [5.0.0+] BleGetConnectionState |
39 | [5.0.0+] BleGetGattClientConditionList |
40 | [5.0.0+] AcquireBlePairingEvent |
41 | [5.0.0+] BlePairDevice |
42 | [5.0.0+] BleUnpairDeviceOnBoth |
43 | [5.1.0+] BleUnpairDevice |
44 | [5.1.0+] BleGetPairedAddresses |
45 | [5.1.0+] AcquireBleServiceDiscoveryEvent |
46 | [5.1.0+] GetGattServices |
47 | [5.1.0+] GetGattService |
48 | [5.1.0+] GetGattIncludedServices |
49 | [5.1.0+] GetBelongingService |
50 | [5.1.0+] GetGattCharacteristics |
51 | [5.1.0+] GetGattDescriptors |
52 | [5.1.0+] AcquireBleMtuConfigEvent |
53 | [5.1.0+] ConfigureBleMtu |
54 | [5.1.0+] GetBleMtu |
55 | [5.1.0+] RegisterBleGattDataPath |
56 | [5.1.0+] UnregisterBleGattDataPath |
57 | [5.1.0+] RegisterAppletResourceUserId |
58 | [5.1.0+] UnregisterAppletResourceUserId |
59 | [5.1.0+] SetAppletResourceUserId |
60 | [8.0.0+] |
61 | [8.0.0+] |
62 | [9.0.0+] |
63 | [9.0.0+] |
64 | [10.0.0+] |
[3.0.0+] RegisterSystemEventForConnectedDeviceCondition, RegisterSystemEventForRegisteredDeviceInfo, and cmd18 now returns an output u8.
With [5.1.0+] cmds 24-42 were moved/replaced/etc (input/output changed).
[9.0.0+] Cmd13 now takes 0xC-bytes of input and no output, instead of 0x6-bytes of input.
btm:dbg
This is "nn::btm::IBtmDebug".
This has max_sessions 6. IPC is handled by 2 threads shared with all services.
Cmd | Name |
---|---|
0 | AcquireDiscoveryEvent |
1 | StartDiscovery |
2 | CancelDiscovery |
3 | GetDeviceProperty |
4 | CreateBond |
5 | CancelBond |
6 | SetTsiMode |
7 | GeneralTest |
8 | HidConnect |
9 | [5.0.0+] GeneralGet |
10 | [5.1.0+] GetGattClientDisconnectionReason |
11 | [5.1.0+] GetBleConnectionParameter |
12 | [5.1.0+] GetBleConnectionParameterRequest |
[3.0.0+] RegisterSystemEventForDiscovery now returns an output u8.
btm:sys
This is "nn::btm::IBtmSystem".
This has max_sessions 6. IPC is handled by 2 threads shared with all services.
Cmd | Name |
---|---|
0 | #GetCore |
GetCore
No input, returns an output #IBtmSystemCore.
IBtmSystemCore
This is "nn::btm::IBtmSystemCore".
Cmd | Name |
---|---|
0 | #StartGamepadPairing |
1 | #CancelGamepadPairing |
2 | #ClearGamepadPairingDatabase |
3 | #GetPairedGamepadCount |
4 | #EnableRadio |
5 | #DisableRadio |
6 | #GetRadioOnOff |
7 | [3.0.0+] #AcquireRadioEvent |
8 | [3.0.0+] #AcquireGamepadPairingEvent |
9 | [3.0.0+] #IsGamepadPairingStarted |
StartGamepadPairing
No input/output.
CancelGamepadPairing
No input/output.
ClearGamepadPairingDatabase
No input/output.
GetPairedGamepadCount
No input, returns an output u8.
EnableRadio
No input/output.
DisableRadio
No input/output.
GetRadioOnOff
No input, returns an output bool.
AcquireRadioEvent
No input, returns an output bool and handle.
AcquireGamepadPairingEvent
No input, returns an output bool and handle.
IsGamepadPairingStarted
No input, returns an output bool.
btm:u
This is "nn::btm::IBtmUser".
This was added with [5.0.0+].
This has max_sessions 6. IPC is handled by 2 threads shared with all services.
Cmd | Name |
---|---|
0 | GetCore |
GetCore
No input, returns an output #IBtmUserCore.
IBtmUserCore
This is "nn::btm::IBtmUserCore".
AcquireBleScanEvent
No input, returns an output u8 and an Event handle with EventClearMode=1.
sdknso will Abort if the output u8 is value 0.
GetBleScanFilterParameter
Takes an input u16, returns a BleAdvertisePacketParameter.
The u16 must be value 0x1 or 0xFFFF.
GetBleScanFilterParameter2
Takes an input u16, returns a GattAttributeUuid.
The u16 must be value 0x2. The first 4-bytes of output is always 0 since it's not set.
StartBleScanForGeneral
Takes a PID, a BleAdvertisePacketParameter, an AppletResourceUserId, no output.
StopBleScanForGeneral
No input/output.
GetBleScanResultsForGeneral
Takes a PID, a type-0x6 output buffer containing an array of BleScanResult, an AppletResourceUserId, returns an output u8 total_out.
The max array entries is 10.
StartBleScanForPaired
Takes a PID, a BleAdvertisePacketParameter, an AppletResourceUserId, no output.
StopBleScanForPaired
No input/output.
StartBleScanForSmartDevice
Takes a PID, a GattAttributeUuid, an AppletResourceUserId, no output.
StopBleScanForSmartDevice
No input/output.
GetBleScanResultsForSmartDevice
Takes a PID, a type-0x6 output buffer containing an array of BleScanResult, an AppletResourceUserId, returns an output u8 total_out.
The max array entries is 10.
AcquireBleConnectionEvent
No input, returns an output u8 and an Event handle with EventClearMode=1.
sdknso will Abort if the output u8 is value 0.
BleConnect
Takes a PID, an Address, an AppletResourceUserId, no output.
An error is thrown if the Address is already connected (listed in the BleConnectionInfo from #BleGetConnectionState). An error is thrown if 4 devices are already connected.
BleDisconnect
Takes an input u32, no output.
The u32 must match an Id in a BleConnectionInfo from #BleGetConnectionState (0xFFFFFFFF is invalid). However, the error is immediately thrown on mismatch, therefore the Id has to match the first BleConnectionInfo.
BleGetConnectionState
Takes a PID, a type-0xA output buffer containing an array of BleConnectionInfo, an AppletResourceUserId, returns an output u8 total_out.
Other cmds which use this internally use arraycount=4.
AcquireBlePairingEvent
No input, returns an output u8 and an Event handle with EventClearMode=1.
sdknso will Abort if the output u8 is value 0.
BlePairDevice
Takes an input BleAdvertisePacketParameter and an u32, no output.
The u32 is handled the same as #BleDisconnect.
BleUnPairDevice
Takes an input BleAdvertisePacketParameter and an u32, no output.
The u32 is handled the same as #BleDisconnect.
BleUnPairDevice2
Takes an input Address and a BleAdvertisePacketParameter, no output.
BleGetPairedDevices
Takes a type-0xA output buffer containing an array of Address, a BleAdvertisePacketParameter, returns an output u8 total_out.
The max array entries is 10.
AcquireBleServiceDiscoveryEvent
No input, returns an output u8 and an Event handle with EventClearMode=1.
sdknso will Abort if the output u8 is value 0.
GetGattServices
Takes a PID, a type-0x6 output buffer containing an array of #GattService, an u32, an AppletResourceUserId, returns an output u8 total_out.
The u32 is handled the same as #BleDisconnect. The max array entries is 100.
GetGattService
Takes a PID, a type-0x1A output buffer containing a #GattService, an u32, a GattAttributeUuid, an AppletResourceUserId, returns an output u8 total_out.
The u32 is handled the same as #BleDisconnect.
Same as #GetGattServices except this only returns the #GattService which matches the input GattAttributeUuid.
GetGattIncludedServices
Takes a PID, a type-0x6 output buffer containing an array of #GattService, an u16, an u32, an AppletResourceUserId, returns an output u8.
The param for the output u8 is unused by the sysmodule, hence the output is always 0. However, a sdknso func which calls the nn::btm::* func for this expects this u8 to be set.
GetBelongingGattService
Takes a PID, a type-0x1A output buffer containing a #GattService, an u16, an u32, an AppletResourceUserId, returns an output u8 total_out.
GetGattCharacteristics
Takes a PID, a type-0x6 output buffer containing an array of #GattCharacteristic, an u16, an u32, an AppletResourceUserId, returns an output u8 total_out.
GetGattDescriptors
Takes a PID, a type-0x6 output buffer containing an array of #GattDescriptor, an u16, an u32, an AppletResourceUserId, returns an output u8 total_out.
AcquireBleMtuConfigEvent
No input, returns an output u8 and an Event handle with EventClearMode=1.
sdknso will Abort if the output u8 is value 0.
ConfigureBleMtu
Takes a PID, an u16, an u32, an AppletResourceUserId, no output.
sdknso will Abort if the user-specified u16 is <0x18 or >0x200.
GetBleMtu
Takes a PID, an u32, an AppletResourceUserId, returns an output u16.
RegisterBleGattDataPath
Takes a PID, a #BleDataPath, an AppletResourceUserId, no output.
UnregisterBleGattDataPath
Takes a PID, a #BleDataPath, an AppletResourceUserId, no output.
GattService
This is "nn::btm::user::GattService". This is a 0x24-byte struct.
GattCharacteristic
This is "nn::btm::user::GattCharacteristic". This is a 0x24-byte struct.
GattDescriptor
This is "nn::btm::user::GattDescriptor". This is a 0x20-byte struct.
BleDataPath
This is "nn::btm::user::BleDataPath". This is a 0x18-byte struct with 4-byte alignment.