mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-11-29 15:14:31 +08:00
b27b7757d4
It's still not decided how this will be exposed in the end but most likely it wont be through mgmt (e.g. socket-based enabling is a probable choice).
1126 lines
27 KiB
Plaintext
1126 lines
27 KiB
Plaintext
Bluetooth Management API
|
||
*************************
|
||
|
||
Copyright (C) 2008-2009 Marcel Holtmann <marcel@holtmann.org>
|
||
|
||
|
||
Packet Structures
|
||
=================
|
||
|
||
Commands:
|
||
|
||
0 4 8 12 16 22 24 28 31 35 39 43 47
|
||
+-------------------+-------------------+-------------------+
|
||
| Command Code | Controller Index | Parameter Length |
|
||
+-------------------+-------------------+-------------------+
|
||
| |
|
||
|
||
Events:
|
||
|
||
0 4 8 12 16 22 24 28 31 35 39 43 47
|
||
+-------------------+-------------------+-------------------+
|
||
| Event Code | Controller Index | Parameter Length |
|
||
+-------------------+-------------------+-------------------+
|
||
| |
|
||
|
||
All fields are in little-endian byte order (least significant byte first).
|
||
|
||
Controller Index can have a special value <non-controller> to indicate that
|
||
command or event is not related to any controller. Possible values:
|
||
|
||
<controller id> 0x0000 to 0xFFFE
|
||
<non-controller> 0xFFFF
|
||
|
||
|
||
Error Codes
|
||
===========
|
||
|
||
The following values have been defined for use with the Command Status
|
||
and Command Complete events:
|
||
|
||
0x00 Success
|
||
0x01 Unknown Command
|
||
0x02 Not Connected
|
||
0x03 Failed
|
||
0x04 Connect Failed
|
||
0x05 Authentication Failed
|
||
0x06 Not Paired
|
||
0x07 No Resources
|
||
0x08 Timeout
|
||
0x09 Already Connected
|
||
0x0A Busy
|
||
0x0B Rejected
|
||
0x0C Not Supported
|
||
0x0D Invalid Parameters
|
||
0x0E Disconnected
|
||
0x0F Not Powered
|
||
0x10 Cancelled
|
||
0x11 Invalid Index
|
||
|
||
|
||
Read Management Version Information Command
|
||
===========================================
|
||
|
||
Command Code: 0x0001
|
||
Controller Index: <non-controller>
|
||
Command Parameters:
|
||
Return Parameters: Version (1 Octets)
|
||
Revision (2 Octets)
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Read Management Supported Commands Command
|
||
==========================================
|
||
|
||
Command Code: 0x0002
|
||
Controller Index: <non-controller>
|
||
Command Parameters:
|
||
Return Parameters: Num_Of_Commands (2 Octets)
|
||
Num_Of_Events (2 Octets)
|
||
Command1 (2 Octets)
|
||
Command2 (2 Octets)
|
||
...
|
||
Event1 (2 Octets)
|
||
Event2 (2 Octets)
|
||
...
|
||
|
||
The commands Read Management Version Information and Read
|
||
management Supported Commands are not included in this list.
|
||
Both commands are always supported and mandatory.
|
||
|
||
The events Command Status and Command Complete are not included
|
||
in this list. Both are implicit and mandatory.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Read Controller Index List Command
|
||
==================================
|
||
|
||
Command Code: 0x0003
|
||
Controller Index: <non-controller>
|
||
Command Parameters:
|
||
Return Parameters: Num_Controllers (2 Octets)
|
||
Controller_Index[i] (2 Octets)
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Read Controller Information Command
|
||
===================================
|
||
|
||
Command Code: 0x0004
|
||
Controller Index: <controller id>
|
||
Command Parameters:
|
||
Return Parameters: Address (6 Octets)
|
||
Bluetooth_Version (1 Octet)
|
||
Manufacturer (2 Octets)
|
||
Supported_Settings (4 Octets)
|
||
Current_Settings (4 Octets)
|
||
Class_Of_Device (3 Octets)
|
||
Name (249 Octets)
|
||
Short_Name (11 Octets)
|
||
|
||
If not short name is set the Short_Name parameter will be empty
|
||
(begin with a nul byte).
|
||
|
||
Current_Settings & Supported_Settings is a bitmask with
|
||
currently the following available bits:
|
||
|
||
1 Powered
|
||
2 Connectable
|
||
3 Fast Connectable
|
||
4 Discoverable
|
||
5 Pairable
|
||
6 Link Level Security (Sec. mode 3)
|
||
7 Secure Simple Pairing
|
||
8 Basic Rate/Enhanced Data Rate
|
||
9 High Speed
|
||
10 Low Energy
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Set Powered Command
|
||
===================
|
||
|
||
Command Code: 0x0005
|
||
Controller Index: <controller id>
|
||
Command Parameters: Powered (1 Octet)
|
||
Return Parameters: Current_Settings (4 Octets)
|
||
|
||
If discoverable setting is activated with a timeout, then
|
||
switching the controller off will expire this timeout and
|
||
disable discoverable.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Set Discoverable Command
|
||
========================
|
||
|
||
Command Code: 0x0006
|
||
Controller Index: <controller id>
|
||
Command Parameters: Discoverable (1 Octet)
|
||
Timeout (2 Octets)
|
||
Return Parameters: Current_Settings (4 Octets)
|
||
|
||
Timeout is the time in seconds and is only meaningful when
|
||
Discoverable is set to 1.
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
However using a timeout when the controller is not powered will
|
||
return an error.
|
||
|
||
When switching discoverable on and the connectable setting is
|
||
off it will return an error.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Set Connectable Command
|
||
=======================
|
||
|
||
Command Code: 0x0007
|
||
Controller Index: <controller id>
|
||
Command Parameters: Connectable (1 Octet)
|
||
Return Parameters: Current_Settings (4 Octets)
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
When switching connectable off, it will also switch off the
|
||
discoverable setting. Switching connectable back on will not
|
||
restore a previous discoverable. It will stay off and needs
|
||
to be manually switched back on.
|
||
|
||
When switching connectable off, it will expire a discoverable
|
||
setting with a timeout.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Set Fast Connectable Command
|
||
============================
|
||
|
||
Command Code: 0x0008
|
||
Controller Index: <controller id>
|
||
Command Parameters: Enable (1 Octet)
|
||
Return Parameters: Current_Settings (4 Octets)
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
If connectable is not set, then this command will fail.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Set Pairable Command
|
||
====================
|
||
|
||
Command Code: 0x0009
|
||
Controller Index: <controller id>
|
||
Command Parameters: Pairable (1 Octet)
|
||
Return Parameters: Current_Settings (4 Octets)
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
Turning pairable on will not automatically switch the controller
|
||
into connectable mode. That needs to be done separately.
|
||
|
||
The setting will be remembered during power down/up toggles.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Set Link Security Command
|
||
=========================
|
||
|
||
Command Code: 0x000A
|
||
Controller Index: <controller id>
|
||
Command Parameters: Link_Security (1 Octet)
|
||
Return Parameters: Current_Settings (4 Octets)
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Set Secure Simple Pairing Command
|
||
=================================
|
||
|
||
Command Code: 0x000B
|
||
Controller Index: <controller id>
|
||
Command Parameters: Secure_Simple_Pairing (1 Octet)
|
||
Return Parameters: Current_Settings (4 Octets)
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
In case the controller does not support Secure Simple Pairing,
|
||
the command will fail regardless.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Set High Speed Command
|
||
======================
|
||
|
||
Command Code: 0x000C
|
||
Controller Index: <controller id>
|
||
Command Parameters: High_Speed (1 Octet)
|
||
Return Parameters: Current_Settings (4 Octets)
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
In case the kernel subsystem does not support High Speed, the
|
||
command will fail regardless.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Set Low Energy Command
|
||
======================
|
||
|
||
Command Code: 0x000D
|
||
Controller Index: <controller id>
|
||
Command Parameters: Low_Energy (1 Octet)
|
||
Return Parameters: Current_Settings (4 Octets)
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
In case the kernel subsystem does not support Low Energy or the
|
||
controller does not either, the command will fail regardless.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Set Device Class
|
||
================
|
||
|
||
Command Code: 0x000E
|
||
Controller Index: <controller id>
|
||
Command Parameters: Major_Class (1 Octet)
|
||
Minor_Class (1 Octet)
|
||
Return Parameters: Class_Of_Device (3 Octets)
|
||
|
||
This command will also implicitly disable caching of pending CoD
|
||
and EIR updates.
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
In case the controller is powered off, 0x000000 will be returned
|
||
for the class of device parameter. And after power on the new
|
||
value will be announced via class of device changed event.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Set Local Name Command
|
||
======================
|
||
|
||
Command Code: 0x000F
|
||
Controller Index: <controller id>
|
||
Command Parameters: Name (249 Octets)
|
||
Short_Name (11 Octets)
|
||
Return Parameters: Name (249 Octets)
|
||
Short_Name (11 Octets)
|
||
|
||
The name parameters need to always end with a null byte (failure
|
||
to do so will cause the command to fail).
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
The values of name and short name will be remembered when
|
||
switching the controller off and back on again. So the name
|
||
and short name only have to be set once when a new controller
|
||
is found and will stay until removed.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Add UUID Command
|
||
================
|
||
|
||
Command Code: 0x0010
|
||
Controller Index: <controller id>
|
||
Command Parameters: UUID (16 Octets)
|
||
SVC_Hint (1 Octet)
|
||
Return Parameters: Class_Of_Device (3 Octets)
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
In case the controller is powered off, 0x000000 will be returned
|
||
for the class of device parameter. And after power on the new
|
||
value will be announced via class of device changed event.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Remove UUID Command
|
||
===================
|
||
|
||
Command Code: 0x0011
|
||
Controller Index: <controller id>
|
||
Command Parameters: UUID (16 Octets)
|
||
Return Parameters: Class_Of_Device (3 Octets)
|
||
|
||
When the UUID parameter is an empty UUID (16 x 0x00), then all
|
||
previously loaded UUIDs will be removed.
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
In case the controller is powered off, 0x000000 will be returned
|
||
for the class of device parameter. And after power on the new
|
||
value will be announced via class of device changed event.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Load Link Keys Command
|
||
======================
|
||
|
||
Command Code: 0x0012
|
||
Controller Index: <controller id>
|
||
Command Parameters: Debug_Keys (1 Octet)
|
||
Key_Count (2 Octets)
|
||
Key1 {
|
||
Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Key_Type (1 Octet)
|
||
Value (16 Octets)
|
||
PIN_Length (1 Octet)
|
||
}
|
||
Key2 { }
|
||
...
|
||
Return Parameters:
|
||
|
||
This command can be used when the controller is not powered.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Load Long Term Keys Command
|
||
===========================
|
||
|
||
Command Code: 0x0013
|
||
Controller Index: <controller id>
|
||
Command Parameters: Key Count (2 Octets)
|
||
Key1 {
|
||
Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Authenticated (1 Octet)
|
||
Master (1 Octet)
|
||
Encryption Size (1 Octet)
|
||
Enc. Diversifier (2 Octets)
|
||
Random Number (8 Octets)
|
||
Value (16 Octets)
|
||
}
|
||
Key2 { }
|
||
...
|
||
|
||
This command can be used when the controller is not powered.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Disconnect Command
|
||
==================
|
||
|
||
Command Code: 0x0014
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
Get Connections Command
|
||
=======================
|
||
|
||
Command Code: 0x0015
|
||
Controller Index: <controller id>
|
||
Command Parameters:
|
||
Return Parameters: Connection_Count (2 Octets)
|
||
Address1 {
|
||
Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
}
|
||
Address2 { }
|
||
...
|
||
|
||
Possible values for the Address_Type parameter:
|
||
0 BR/EDR
|
||
1 LE Public
|
||
2 LE Random
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
PIN Code Reply Command
|
||
=======================
|
||
|
||
Command Code: 0x0016
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
PIN_Length (1 Octet)
|
||
PIN_Code (16 Octets)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
PIN Code Negative Reply Command
|
||
===============================
|
||
|
||
Command Code: 0x0017
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
Set IO Capability Command
|
||
=========================
|
||
|
||
Command Code: 0x0018
|
||
Controller Index: <controller id>
|
||
Command Parameters: IO_Capability (1 Octet)
|
||
Return Parameters:
|
||
|
||
This command can be used when the controller is not powered.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Pair Device Command
|
||
===================
|
||
|
||
Command Code: 0x0019
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
IO_Capability (1 Octet)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
Possible values for the Address_Type parameter:
|
||
0 BR/EDR
|
||
1 LE Public
|
||
2 LE Random
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
Cancel Pair Device
|
||
==================
|
||
|
||
Command Code: 0x001A
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
The Address and Address_Type parameters should match what was
|
||
given to a preceding Pair Device command.
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
Unpair Device Command
|
||
=====================
|
||
|
||
Command Code: 0x001B
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Disconnect (1 Octet)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
Removes all keys associated with the remote device.
|
||
|
||
The Disconnect parameter tells the kernel whether to forcefully
|
||
disconnect any existing connections to the device. It should in
|
||
practice always be 1 except for some special GAP qualification
|
||
test-cases where a key removal without disconnecting is needed.
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
User Confirmation Reply Command
|
||
===============================
|
||
|
||
Command Code: 0x001C
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
User Confirmation Negative Reply Command
|
||
========================================
|
||
|
||
Command Code: 0x001D
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
User Passkey Reply Command
|
||
==========================
|
||
|
||
Command Code: 0x001E
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Passkey (4 Octets)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
User Passkey Negative Reply Command
|
||
===================================
|
||
|
||
Command Code: 0x001F
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
Read Local Out Of Band Data Command
|
||
===================================
|
||
|
||
Command Code: 0x0020
|
||
Controller Index: <controller id>
|
||
Command Parameters:
|
||
Return Parameters: Hash (16 Octets)
|
||
Randomizer (16 Octets)
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Add Remote Out Of Band Data Command
|
||
===================================
|
||
|
||
Command Code: 0x0021
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Hash (16 Octets)
|
||
Randomizer (16 Octets)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
Remove Remote Out Of Band Data Command
|
||
======================================
|
||
|
||
Command Code: 0x0022
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
Start Discovery Command
|
||
=======================
|
||
|
||
Command Code: 0x0023
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address_Type (1 Octet)
|
||
Return Parameters: Address_Type (1 Octet)
|
||
|
||
Possible values for the Address_Type parameter are a bit-wise or
|
||
of the following bits:
|
||
|
||
1 BR/EDR
|
||
2 LE Public
|
||
3 LE Random
|
||
|
||
By combining these e.g. the following values are possible:
|
||
|
||
1 BR/EDR
|
||
6 LE (public & random)
|
||
7 BR/EDR/LE (interleaved discovery)
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
Stop Discovery Command
|
||
======================
|
||
|
||
Command Code: 0x0024
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address_Type (1 Octet)
|
||
Return Parameters: Address_Type (1 Octet)
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
Confirm Name Command
|
||
====================
|
||
|
||
Command Code: 0x0025
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Name_Known (1 Octet)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
This command is only valid during device discovery and is
|
||
expected for each Device Found event with the Confirm Name
|
||
flag set.
|
||
|
||
This command can only be used when the controller is powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
Block Device Command
|
||
====================
|
||
|
||
Command Code: 0x0026
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
This command can be used when the controller is not powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
Unblock Device Command
|
||
======================
|
||
|
||
Command Code: 0x0027
|
||
Controller Index: <controller id>
|
||
Command Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Return Parameters: Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
This command can be used when the controller is not powered.
|
||
|
||
This command generates a Command Complete event on success
|
||
or failure.
|
||
|
||
|
||
Set Device ID Command
|
||
=====================
|
||
|
||
Command Code: 0x0028
|
||
Controller Index: <controller id>
|
||
Command Parameters: Source (2 Octets)
|
||
Vendor (2 Octets)
|
||
Product (2 Octets)
|
||
Version (2 Octets)
|
||
Return Parameters:
|
||
|
||
This command can be used when the controller is not powered and
|
||
all settings will be programmed once powered.
|
||
|
||
The Source parameter selects the organization that assigned the
|
||
Vendor parameter:
|
||
|
||
0x0000 Disable Device ID
|
||
0x0001 Bluetooth SIG
|
||
0x0002 USB Implementer’s Forum
|
||
|
||
The information are put into the EIR data. If the controller does
|
||
not support EIR or if SSP is disabled, this command will still
|
||
succeed. The information are stored for later use and will survive
|
||
toggling SSP on and off.
|
||
|
||
This command generates a Command Complete event on success or
|
||
a Command Status event on failure.
|
||
|
||
|
||
Command Complete Event
|
||
======================
|
||
|
||
Event Code 0x0001
|
||
Controller Index: <controller id> or <non-controller>
|
||
Event Parameters Command_Opcode (2 Octets)
|
||
Status (1 Octet)
|
||
Return_Parameters
|
||
|
||
|
||
Command Status Event
|
||
====================
|
||
|
||
Event Code 0x0002
|
||
Controller Index: <controller id> or <non-controller>
|
||
Event Parameters Command_Opcode (2 Octets)
|
||
Status (1 Octet)
|
||
|
||
|
||
Controller Error Event
|
||
======================
|
||
|
||
Event Code 0x0003
|
||
Controller Index: <controller id>
|
||
Event Parameters Error_Code (1 Octet)
|
||
|
||
|
||
Index Added Event
|
||
=================
|
||
|
||
Event Code 0x0004
|
||
Controller Index: <controller id>
|
||
Event Parameters
|
||
|
||
|
||
Index Removed Event
|
||
===================
|
||
|
||
Event Code 0x0005
|
||
Controller Index: <controller id>
|
||
Event Parameters
|
||
|
||
|
||
New Settings Event
|
||
==================
|
||
|
||
Event Code 0x0006
|
||
Controller Index: <controller id>
|
||
Event Parameters: Current_Settings (4 Octets)
|
||
|
||
|
||
Class Of Device Changed Event
|
||
=============================
|
||
|
||
Event Code 0x0007
|
||
Controller Index: <controller id>
|
||
Event Parameters: Class_Of_Device (3 Octets)
|
||
|
||
|
||
Local Name Changed Event
|
||
========================
|
||
|
||
Event Code 0x0008
|
||
Controller Index <controller id>
|
||
Event Parameters Name (249 Octets)
|
||
Short_Name (11 Octets)
|
||
|
||
|
||
New Link Key Event
|
||
==================
|
||
|
||
Event Code 0x0009
|
||
Controller Index: <controller id>
|
||
Event Parameters Key {
|
||
Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Key_Type (1 Octet)
|
||
Value (16 Octets)
|
||
PIN_Length (1 Octet)
|
||
}
|
||
|
||
|
||
New Long Term Key Event
|
||
=======================
|
||
|
||
Event Code 0x000A
|
||
Controller Index <controller id>
|
||
Event Parameters Store Hint (1 Octet)
|
||
Key {
|
||
Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Authenticated (1 Octet)
|
||
Master (1 Octet)
|
||
Encryption Size (1 Octet)
|
||
Enc. Diversifier (2 Octets)
|
||
Random Number (8 Octets)
|
||
Value (16 Octets)
|
||
}
|
||
|
||
|
||
Device Connected Event
|
||
======================
|
||
|
||
Event Code 0x000B
|
||
Controller Index: <controller id>
|
||
Event Parameters Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Flags (4 Octets)
|
||
EIR_Data_Length (2 Octets)
|
||
EIR_Data (0-65535 Octets)
|
||
|
||
Possible values for the Address_Type parameter:
|
||
0 BR/EDR
|
||
1 LE Public
|
||
2 LE Random
|
||
|
||
The following bits are defined for the Flags parameter:
|
||
0 Reserved (not in use)
|
||
1 Legacy Pairing
|
||
|
||
|
||
Device Disconnected Event
|
||
=========================
|
||
|
||
Event Code 0x000C
|
||
Controller Index: <controller id>
|
||
Event Parameters Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Reason (1 Octet)
|
||
|
||
Possible values for the Address_Type parameter:
|
||
0 BR/EDR
|
||
1 LE Public
|
||
2 LE Random
|
||
|
||
Possible values for the Reason parameter:
|
||
0 Unspecified
|
||
1 Connection timeout
|
||
2 Connection terminated by local host
|
||
3 Connection terminated by remote host
|
||
|
||
Note that the local/remote distinction just determines which side
|
||
terminated the low-level connection, regardless of the
|
||
disconnection of the higher-level profiles.
|
||
|
||
This can sometimes be misleading and thus must be used with care.
|
||
For example, some hardware combinations would report a locally
|
||
initiated disconnection even if the user turned Bluetooth off in
|
||
the remote side.
|
||
|
||
|
||
Connect Failed Event
|
||
====================
|
||
|
||
Event Code 0x000D
|
||
Controller Index: <controller id>
|
||
Event Parameters Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Status (1 Octet)
|
||
|
||
Possible values for the Address_Type parameter:
|
||
0 BR/EDR
|
||
1 LE Public
|
||
2 LE Random
|
||
|
||
|
||
PIN Code Request Event
|
||
======================
|
||
|
||
Event Code 0x000E
|
||
Controller Index: <controller id>
|
||
Event Parameters Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Secure (1 Octet)
|
||
|
||
Secure: 0x01 secure PIN code required
|
||
0x00 secure PIN code not required
|
||
|
||
|
||
User Confirmation Request Event
|
||
===============================
|
||
|
||
Event Code 0x000F
|
||
Controller Index: <controller id>
|
||
Event Parameters Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Confirm_Hint (1 Octet)
|
||
Value (4 Octets)
|
||
|
||
|
||
User Passkey Request Event
|
||
==========================
|
||
|
||
Event Code 0x0010
|
||
Controller Index: <controller id>
|
||
Event Parameters Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
|
||
Authentication Failed Event
|
||
===========================
|
||
|
||
Event Code 0x0011
|
||
Controller Index: <controller id>
|
||
Event Parameters Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Status (1 Octet)
|
||
|
||
|
||
Device Found Event
|
||
==================
|
||
|
||
Event Code 0x0012
|
||
Controller Index <controller id>
|
||
Event Parameters Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
RSSI (1 Octet)
|
||
Flags (4 Octets)
|
||
EIR_Data_Length (2 Octets)
|
||
EIR_Data (0-65535 Octets)
|
||
|
||
Possible values for the Address_Type parameter:
|
||
0 BR/EDR
|
||
1 LE Public
|
||
2 LE Random
|
||
|
||
The following bits are defined for the Flags parameter:
|
||
0 Confirm name
|
||
1 Legacy Pairing
|
||
|
||
|
||
Discovering Event
|
||
=================
|
||
|
||
Event Code 0x0013
|
||
Controller Index <controller id>
|
||
Event Parameters Address_Type (1 Octet)
|
||
Discovering (1 Octet)
|
||
|
||
|
||
Device Blocked Event
|
||
====================
|
||
|
||
Event Code 0x0014
|
||
Controller Index <controller id>
|
||
Event Parameters Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
|
||
Device Unblocked Event
|
||
======================
|
||
|
||
Event Code 0x0015
|
||
Controller Index <controller id>
|
||
Event Parameters Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
|
||
Device Unpaired Event
|
||
=====================
|
||
|
||
Event Code 0x0016
|
||
Controller Index <controller id>
|
||
Event Parameters Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
|
||
|
||
Passkey Notify Event
|
||
====================
|
||
|
||
Event Code 0x0017
|
||
Controller Index <controller id>
|
||
Event Parameters Address (6 Octets)
|
||
Address_Type (1 Octet)
|
||
Passkey (4 Octets)
|
||
Entered (1 Octet)
|