Difference between revisions of "Bluetooth Driver services"
Line 48: | Line 48: | ||
| 16 || [[#InitializeHid]] | | 16 || [[#InitializeHid]] | ||
|- | |- | ||
− | | 17 || OpenHidConnection | + | | 17 || [[#OpenHidConnection]] |
|- | |- | ||
− | | 18 || CloseHidConnection | + | | 18 || [[#CloseHidConnection]] |
|- | |- | ||
− | | 19 || WriteHidData | + | | 19 || [[#WriteHidData]] |
|- | |- | ||
− | | 20 || WriteHidData2 | + | | 20 || [[#WriteHidData2]] |
|- | |- | ||
− | | 21 || SetHidReport | + | | 21 || [[#SetHidReport]] |
|- | |- | ||
− | | 22 || GetHidReport | + | | 22 || [[#GetHidReport]] |
|- | |- | ||
− | | 23 || [[#TriggerConnection]] | + | | 23 || [[#TriggerConnection]] ([1.0.0-8.1.1] [[#HidWakeController]]) |
|- | |- | ||
| 24 || AddPairedDeviceInfo | | 24 || AddPairedDeviceInfo | ||
Line 281: | Line 281: | ||
Originally sdknso used an user-specified value for the u16, however with newer versions it uses hard-coded value 0x1 instead. | Originally sdknso used an user-specified value for the u16, however with newer versions it uses hard-coded value 0x1 instead. | ||
+ | |||
+ | == OpenHidConnection == | ||
+ | Takes an input [[#Address]], no output. | ||
+ | |||
+ | == CloseHidConnection == | ||
+ | Takes an input [[#Address]], no output. | ||
+ | |||
+ | == WriteHidData == | ||
+ | Takes an input [[#Address]] and a type-0x19 input buffer containing a [[#HidReport]], no output. | ||
+ | |||
+ | == WriteHidData2 == | ||
+ | Takes an input [[#Address]] and a type-0x9 input buffer, no output. | ||
+ | |||
+ | == SetHidReport == | ||
+ | Takes an input [[#Address]], a [[#BluetoothHhReportType]], a type-0x19 input buffer containing a [[#HidReport]], no output. | ||
+ | |||
+ | == GetHidReport == | ||
+ | Takes an input [[#Address]], an u8, a [[#BluetoothHhReportType]], no output. | ||
+ | |||
+ | == HidWakeController == | ||
+ | Takes an input [[#Address]], no output. | ||
== TriggerConnection == | == TriggerConnection == | ||
− | Takes | + | Takes an input [[#Address]] and an u16, no output. |
− | |||
− | [ | ||
== GetHidReportEventInfo == | == GetHidReportEventInfo == | ||
Line 334: | Line 353: | ||
| 9 || RegisterBleEvent | | 9 || RegisterBleEvent | ||
|} | |} | ||
− | |||
− | |||
− | |||
= BluetoothPropertyType = | = BluetoothPropertyType = | ||
This is u32 enum "nn::bluetooth::BluetoothPropertyType". | This is u32 enum "nn::bluetooth::BluetoothPropertyType". | ||
− | |||
− | |||
− | |||
= TransportType = | = TransportType = | ||
This is u32 enum "nn::bluetooth::TransportType". | This is u32 enum "nn::bluetooth::TransportType". | ||
− | |||
− | |||
− | |||
= BluetoothSspVariant = | = BluetoothSspVariant = | ||
Line 355: | Line 365: | ||
= EventType = | = EventType = | ||
This is u32 enum "nn::bluetooth::EventType". | This is u32 enum "nn::bluetooth::EventType". | ||
+ | |||
+ | = BluetoothHhReportType = | ||
+ | This is u32 enum "nn::bluetooth::BluetoothHhReportType". | ||
+ | |||
+ | = AdapterProperty = | ||
+ | This is "nn::bluetooth::AdapterProperty". | ||
+ | |||
+ | = Address = | ||
+ | This is "nn::bluetooth::Address". This is a 0x6-byte struct with 1-byte alignment. | ||
+ | |||
+ | = BluetoothPinCode = | ||
+ | This is "nn::bluetooth::BluetoothPinCode". This is a 0x10-byte struct with 1-byte alignment. | ||
+ | |||
+ | = HidReport = | ||
+ | This is "nn::bluetooth::HidReport". This is a 0x2BE-byte struct. | ||
[[Category:Services]] | [[Category:Services]] |
Revision as of 17:45, 8 July 2020
btdrv
This is "nn::bluetooth::IBluetoothDriver".
The bluetooth driver implements the bluetooth protocol over h4/uart.
It interfaces with the uart service to actually talk with the bluetooth hardware.
The code seems to be derived from a broadcom stack. A good starting point for similar source code can be found in the MICO project: https://github.com/yinhongxing/mico/tree/ea67ff3659f12d730d4dc3b8d547b093bd2ee2ee/MICO/bluetooth_bte Note that the library files contain many (symbolized) functions which match btdrv.
Support for "nn::bluetooth::*" was added to sdknso with 6.x.
Cmd | Name |
---|---|
0 | #InitializeBluetoothDriver |
1 | #InitializeBluetooth |
2 | #EnableBluetooth |
3 | #DisableBluetooth |
4 | #FinalizeBluetooth |
5 | #GetAdapterProperties |
6 | #GetAdapterProperty |
7 | #SetAdapterProperty |
8 | #StartInquiry |
9 | #StopInquiry |
10 | #CreateBond |
11 | #RemoveBond |
12 | #CancelBond |
13 | #RespondToPinRequest |
14 | #RespondToSspRequest |
15 | #GetEventInfo |
16 | #InitializeHid |
17 | #OpenHidConnection |
18 | #CloseHidConnection |
19 | #WriteHidData |
20 | #WriteHidData2 |
21 | #SetHidReport |
22 | #GetHidReport |
23 | #TriggerConnection ([1.0.0-8.1.1] #HidWakeController) |
24 | AddPairedDeviceInfo |
25 | GetPairedDeviceInfo |
26 | FinalizeHid |
27 | GetHidEventInfo |
28 | SetTsi |
29 | EnableBurstMode |
30 | SetZeroRetransmission |
31 | EnableMcMode |
32 | EnableLlrScan |
33 | DisableLlrScan |
34 | EnableRadio |
35 | SetVisibility |
36 | EnableTbfcScan |
37 | RegisterHidReportEvent |
38 | #GetHidReportEventInfo |
39 | GetLatestPlr |
40 | [3.0.0+] GetPendingConnections |
41 | [3.0.0+] GetChannelMap |
42 | [3.0.0+] EnableTxPowerBoostSetting |
43 | [3.0.0+] IsTxPowerBoostSettingEnabled |
44 | [3.0.0+] EnableAfhSetting |
45 | IsAfhSettingEnabled |
46 | [5.0.0+] InitializeBle |
47 | [5.0.0+] EnableBle |
48 | [5.0.0+] DisableBle |
49 | [5.0.0+] FinalizeBle |
50 | [5.0.0+] SetBleVisibility |
51 | [5.0.0+] SetBleConnectionParameter |
52 | [5.0.0+] #SetBleDefaultConnectionParameter |
53 | [5.0.0+] SetBleAdvertiseData |
54 | [5.0.0+] SetBleAdvertiseParameter |
55 | [5.0.0+] StartBleScan |
56 | [5.0.0+] StopBleScan |
57 | [5.0.0+] AddBleScanFilterCondition |
58 | [5.0.0+] DeleteBleScanFilterCondition |
59 | [5.0.0+] DeleteBleScanFilter |
60 | [5.0.0+] ClearBleScanFilters |
61 | [5.0.0+] EnableBleScanFilter |
62 | [5.0.0+] RegisterGattClient |
63 | [5.0.0+] UnregisterGattClient |
64 | [5.0.0+] UnregisterAllGattClients |
65 | [5.0.0+] ConnectGattServer |
66 | [5.1.0+] CancelConnectGattServer |
67 ([5.0.0-5.0.2] 66) | #DisconnectGattServer |
68 ([5.0.0-5.0.2] 67) | [5.0.0+] GetGattAttribute |
69 ([5.0.0-5.0.2] 68) | [5.0.0+] GetGattService |
70 ([5.0.0-5.0.2] 69) | [5.0.0+] ConfigureAttMtu |
71 ([5.0.0-5.0.2] 70) | [5.0.0+] RegisterGattServer |
72 ([5.0.0-5.0.2] 71) | [5.0.0+] UnregisterGattServer |
73 ([5.0.0-5.0.2] 72) | [5.0.0+] #ConnectGattClient |
74 ([5.0.0-5.0.2] 73) | [5.0.0+] DisconnectGattClient |
75 | [5.0.0+] AddGattService |
76 ([5.0.0-5.0.2] 74) | [5.0.0+] EnableGattService |
77 | [5.0.0+] AddGattCharacteristic |
78 ([5.0.0-5.0.2] 76) | [5.0.0+] AddGattDescriptor |
79 ([5.0.0-5.0.2] 78) | [5.0.0+] GetBleManagedEventInfo |
80 ([5.0.0-5.0.2] 79) | [5.0.0+] GetGattFirstCharacteristic |
81 ([5.0.0-5.0.2] 80) | [5.0.0+] GetGattNextCharacteristic |
82 ([5.0.0-5.0.2] 81) | [5.0.0+] GetGattFirstDescriptor |
83 ([5.0.0-5.0.2] 82) | [5.0.0+] GetGattNextDescriptor |
84 | [5.0.0+] RegisterGattManagedDataPath |
85 | [5.0.0+] UnregisterGattManagedDataPath |
86 | [5.0.0+] RegisterGattHidDataPath |
87 | [5.0.0+] UnregisterGattHidDataPath |
88 | [5.0.0+] RegisterGattDataPath |
89 ([5.0.0-5.0.2] 83) | [5.0.0+] UnregisterGattDataPath |
90 ([5.0.0-5.0.2] 89) | [5.0.0+] ReadGattCharacteristic |
91 ([5.0.0-5.0.2] 90) | [5.0.0+] ReadGattDescriptor |
92 ([5.0.0-5.0.2] 91) | [5.0.0+] WriteGattCharacteristic |
93 ([5.0.0-5.0.2] 92) | [5.0.0+] WriteGattDescriptor |
94 | [5.0.0+] RegisterGattNotification |
95 ([5.0.0-5.0.2] 93) | [5.0.0+] UnregisterGattNotification |
96 ([5.0.0-5.0.2] 95) | [5.0.0+] GetLeHidEventInfo |
97 ([5.0.0-5.0.2] 96) | [5.0.0+] RegisterBleHidEvent |
98 | [5.1.0+] SetBleScanParameter |
99 | [10.0.0+] MoveToSecondaryPiconet |
256 | [5.0.0+] IsManufacturingMode |
257 | [7.0.0+] EmulateBluetoothCrash |
258 | [9.0.0+] GetBleChannelMap |
Various cmdids were moved with [4.0.0+] and [5.0.0+].
InitializeBluetoothDriver
No input/output.
This is the first cmd used during service init.
InitializeBluetooth
No input, returns an output Event handle with EventClearMode=1.
EnableBluetooth
No input/output.
DisableBluetooth
No input/output.
FinalizeBluetooth
No input/output.
GetAdapterProperties
Takes a type-0x1A output buffer containing an #AdapterProperty.
GetAdapterProperty
Takes an input #BluetoothPropertyType and a type-0xA output buffer.
SetAdapterProperty
Takes an input #BluetoothPropertyType and a type-0x9 input buffer.
StartInquiry
No input/output.
StopInquiry
No input/output.
CreateBond
Takes an input #Address and a type-0x19 input buffer containing a #TransportType, no output.
[9.0.0+] Now only takes an #Address and a #TransportType without a buffer, no output.
RemoveBond
Takes an input #Address, no output.
CancelBond
Takes an input #Address, no output.
RespondToPinRequest
Takes an input #Address, a bool, an u8, a #BluetoothPinCode, no output.
sdknso uses an user-specified s32 for the u8.
RespondToSspRequest
Takes an input #Address, a #BluetoothSspVariant, a bool, an u32, no output.
GetEventInfo
Takes a type-0xA output buffer and returns an output #EventType.
InitializeHid
Takes an input u16, returns an output Event with EventClearMode=1.
Originally sdknso used an user-specified value for the u16, however with newer versions it uses hard-coded value 0x1 instead.
OpenHidConnection
Takes an input #Address, no output.
CloseHidConnection
Takes an input #Address, no output.
WriteHidData
Takes an input #Address and a type-0x19 input buffer containing a #HidReport, no output.
WriteHidData2
Takes an input #Address and a type-0x9 input buffer, no output.
SetHidReport
Takes an input #Address, a #BluetoothHhReportType, a type-0x19 input buffer containing a #HidReport, no output.
GetHidReport
Takes an input #Address, an u8, a #BluetoothHhReportType, no output.
HidWakeController
Takes an input #Address, no output.
TriggerConnection
Takes an input #Address and an u16, no output.
GetHidReportEventInfo
No input, takes a type-0xA output buffer and returns 4-bytes of output.
[7.0.0+] No longer takes a buffer or returns output, now returns an output handle.
SetBleDefaultConnectionParameter
Takes a total of 0x14-bytes of input, no output.
[9.0.0+] Now takes a total of 0xC-bytes of input, no output.
DisconnectGattServer
Takes a total of 0xC-bytes of input, no output.
[9.0.0+] Now takes a total of 0x4-bytes of input, no output.
ConnectGattClient
Takes a total of 0x7-bytes of input, no output.
[9.0.0+] Now takes a total of 1-byte of input, no output.
bt
This is "nn::bluetooth::IBluetoothUser".
Cmd | Name |
---|---|
0 | LeClientReadCharacteristic |
1 | LeClientReadDescriptor |
2 | LeClientWriteCharacteristic |
3 | LeClientWriteDescriptor |
4 | LeClientRegisterNotification |
5 | LeClientDeregisterNotification |
6 | SetLeResponse |
7 | LeSendIndication |
8 | GetLeEventInfo |
9 | RegisterBleEvent |
BluetoothPropertyType
This is u32 enum "nn::bluetooth::BluetoothPropertyType".
TransportType
This is u32 enum "nn::bluetooth::TransportType".
BluetoothSspVariant
This is u8 enum "nn::bluetooth::BluetoothSspVariant".
EventType
This is u32 enum "nn::bluetooth::EventType".
BluetoothHhReportType
This is u32 enum "nn::bluetooth::BluetoothHhReportType".
AdapterProperty
This is "nn::bluetooth::AdapterProperty".
Address
This is "nn::bluetooth::Address". This is a 0x6-byte struct with 1-byte alignment.
BluetoothPinCode
This is "nn::bluetooth::BluetoothPinCode". This is a 0x10-byte struct with 1-byte alignment.
HidReport
This is "nn::bluetooth::HidReport". This is a 0x2BE-byte struct.