2010-09-20 15:41:35 +08:00
|
|
|
|
Bluetooth Management API
|
|
|
|
|
*************************
|
|
|
|
|
|
|
|
|
|
Copyright (C) 2008-2009 Marcel Holtmann <marcel@holtmann.org>
|
|
|
|
|
|
|
|
|
|
|
2014-01-29 10:30:53 +08:00
|
|
|
|
Overview
|
|
|
|
|
========
|
|
|
|
|
|
2013-02-18 16:32:25 +08:00
|
|
|
|
This document describes the format of data used for communicating with
|
|
|
|
|
the kernel using a so-called Bluetooth Management sockets. These sockets
|
2014-01-29 10:30:53 +08:00
|
|
|
|
are available starting with Linux kernel version 3.4
|
|
|
|
|
|
2014-03-10 06:17:07 +08:00
|
|
|
|
The following kernel versions introduced new commands, new events or
|
|
|
|
|
important fixes to the Bluetooth Management API:
|
2014-01-29 10:30:53 +08:00
|
|
|
|
|
|
|
|
|
Linux kernel v3.4 Version 1.0
|
|
|
|
|
Linux kernel v3.5 Version 1.1
|
|
|
|
|
Linux kernel v3.7 Version 1.2
|
|
|
|
|
Linux kernel v3.9 Version 1.3
|
|
|
|
|
Linux kernel v3.13 Version 1.4
|
2014-06-09 03:11:58 +08:00
|
|
|
|
Linux kernel v3.15 Version 1.5
|
2014-08-07 00:19:25 +08:00
|
|
|
|
Linux kernel v3.16 Version 1.6
|
2014-10-09 23:12:14 +08:00
|
|
|
|
Linux kernel v3.17 Version 1.7
|
2015-02-09 21:41:44 +08:00
|
|
|
|
Linux kernel v3.19 Version 1.8
|
2014-01-29 10:30:53 +08:00
|
|
|
|
|
2014-03-10 06:17:07 +08:00
|
|
|
|
Version 1.1 introduces Set Device ID command.
|
|
|
|
|
|
|
|
|
|
Version 1.2 introduces Passkey Notify event.
|
|
|
|
|
|
|
|
|
|
Version 1.3 does not introduce any new command or event.
|
|
|
|
|
|
|
|
|
|
Version 1.4 introduces Set Advertising, Set BR/EDR, Set Static Address
|
2014-07-24 04:37:28 +08:00
|
|
|
|
and Set Scan Parameters commands. The existing Set Discoverable command
|
|
|
|
|
gained an extra setting for limited discoverable mode. The device name
|
|
|
|
|
is now provided in the scan response data for Low Energy.
|
2014-03-10 06:17:07 +08:00
|
|
|
|
|
2014-04-05 01:18:36 +08:00
|
|
|
|
Version 1.5 introduces Set Secure Connections, Set Debug Keys, Set Privacy
|
|
|
|
|
and Load Identity Resolving Keys commands. It also introduces New Identity
|
|
|
|
|
Resolving Key and New Signature Resolving Key events.
|
|
|
|
|
|
2014-06-09 03:11:58 +08:00
|
|
|
|
Version 1.6 introduces Get Connection Information command. It also updates
|
|
|
|
|
the Device Found event to combine advertising data and scan response data
|
|
|
|
|
into a single event.
|
|
|
|
|
|
2014-07-04 00:50:36 +08:00
|
|
|
|
Version 1.7 introduces Get Clock Information, Add Device, Remove Device,
|
2014-07-05 01:25:05 +08:00
|
|
|
|
Load Connection Parameters, Read Unconfigured Index List, Read Controller
|
|
|
|
|
Configuration Information, Set External Configuration and Set Public Address
|
|
|
|
|
commands. It also introduces Device Added, Device Removed, New Connection
|
|
|
|
|
Parameter, Unconfigured Index Added, Unconfigured Index Removed and New
|
|
|
|
|
Configuration Options events. The existing Set Debug Keys command gained
|
|
|
|
|
an extra setting for enabling SSP debug mode.
|
2014-06-30 05:42:01 +08:00
|
|
|
|
|
2014-12-05 21:23:48 +08:00
|
|
|
|
Version 1.8 introduces Start Service Discovery command. It also adds new
|
|
|
|
|
Long Term Key types for LE Secure Connection feature.
|
2014-12-04 07:21:26 +08:00
|
|
|
|
|
2014-01-29 10:30:53 +08:00
|
|
|
|
|
|
|
|
|
Example
|
|
|
|
|
=======
|
|
|
|
|
|
|
|
|
|
The Bluetooth management sockets can be created by setting the hci_channel
|
|
|
|
|
member of struct sockaddr_hci to HCI_CHANNEL_CONTROL (3) when creating a
|
|
|
|
|
raw HCI socket. In C the needed code would look something like the following:
|
2013-02-18 16:32:25 +08:00
|
|
|
|
|
|
|
|
|
int mgmt_create(void)
|
|
|
|
|
{
|
|
|
|
|
struct sockaddr_hci addr;
|
|
|
|
|
int fd;
|
|
|
|
|
|
|
|
|
|
fd = socket(PF_BLUETOOTH, SOCK_RAW | SOCK_CLOEXEC | SOCK_NONBLOCK,
|
|
|
|
|
BTPROTO_HCI);
|
|
|
|
|
if (fd < 0)
|
|
|
|
|
return -errno;
|
|
|
|
|
|
|
|
|
|
memset(&addr, 0, sizeof(addr));
|
|
|
|
|
addr.hci_family = AF_BLUETOOTH;
|
|
|
|
|
addr.hci_dev = HCI_DEV_NONE;
|
|
|
|
|
addr.hci_channel = HCI_CHANNEL_CONTROL;
|
|
|
|
|
|
|
|
|
|
if (bind(fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
|
|
|
|
|
int err = -errno;
|
|
|
|
|
close(fd);
|
|
|
|
|
return err;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return fd;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
The process creating the mgmt socket is required to have the
|
|
|
|
|
CAP_NET_ADMIN capability (e.g. root would have this).
|
|
|
|
|
|
|
|
|
|
|
2010-09-20 15:41:35 +08:00
|
|
|
|
Packet Structures
|
|
|
|
|
=================
|
|
|
|
|
|
|
|
|
|
Commands:
|
|
|
|
|
|
2011-02-24 01:39:21 +08:00
|
|
|
|
0 4 8 12 16 22 24 28 31 35 39 43 47
|
|
|
|
|
+-------------------+-------------------+-------------------+
|
|
|
|
|
| Command Code | Controller Index | Parameter Length |
|
|
|
|
|
+-------------------+-------------------+-------------------+
|
|
|
|
|
| |
|
2010-09-20 15:41:35 +08:00
|
|
|
|
|
|
|
|
|
Events:
|
|
|
|
|
|
2011-02-24 01:39:21 +08:00
|
|
|
|
0 4 8 12 16 22 24 28 31 35 39 43 47
|
|
|
|
|
+-------------------+-------------------+-------------------+
|
|
|
|
|
| Event Code | Controller Index | Parameter Length |
|
|
|
|
|
+-------------------+-------------------+-------------------+
|
|
|
|
|
| |
|
|
|
|
|
|
2012-01-19 17:52:30 +08:00
|
|
|
|
All fields are in little-endian byte order (least significant byte first).
|
|
|
|
|
|
2011-02-24 01:39:21 +08:00
|
|
|
|
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
|
2010-09-20 15:41:35 +08:00
|
|
|
|
|
|
|
|
|
|
2012-03-01 02:59:31 +08:00
|
|
|
|
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
|
2012-10-01 15:49:22 +08:00
|
|
|
|
0x10 Cancelled
|
|
|
|
|
0x11 Invalid Index
|
2012-03-01 02:59:31 +08:00
|
|
|
|
|
2014-11-19 18:22:25 +08:00
|
|
|
|
As a general rule all commands generate the events as specified below,
|
|
|
|
|
however invalid lengths or unknown commands will always generate a
|
|
|
|
|
Command Status response (with Unknown Command or Invalid Parameters
|
|
|
|
|
status). Sending a command with an invalid Controller Index value will
|
|
|
|
|
also always generate a Command Status event with the Invalid Index
|
|
|
|
|
status code.
|
|
|
|
|
|
2012-03-01 02:59:31 +08:00
|
|
|
|
|
2010-09-20 15:41:35 +08:00
|
|
|
|
Read Management Version Information Command
|
|
|
|
|
===========================================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0001
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <non-controller>
|
2010-09-20 15:41:35 +08:00
|
|
|
|
Command Parameters:
|
2010-11-02 03:24:23 +08:00
|
|
|
|
Return Parameters: Version (1 Octets)
|
2010-09-20 15:41:35 +08:00
|
|
|
|
Revision (2 Octets)
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command returns the Management version and revision.
|
|
|
|
|
Besides, being informational the information can be used to
|
|
|
|
|
determine whether certain behavior has changed or bugs fixed
|
|
|
|
|
when interacting with the kernel.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2010-11-08 04:08:23 +08:00
|
|
|
|
|
2012-02-10 00:18:12 +08:00
|
|
|
|
Read Management Supported Commands Command
|
2010-09-20 15:41:35 +08:00
|
|
|
|
==========================================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0002
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <non-controller>
|
2010-09-20 15:41:35 +08:00
|
|
|
|
Command Parameters:
|
2012-02-10 00:18:12 +08:00
|
|
|
|
Return Parameters: Num_Of_Commands (2 Octets)
|
2012-02-10 18:18:12 +08:00
|
|
|
|
Num_Of_Events (2 Octets)
|
2012-02-10 00:18:12 +08:00
|
|
|
|
Command1 (2 Octets)
|
|
|
|
|
Command2 (2 Octets)
|
|
|
|
|
...
|
|
|
|
|
Event1 (2 Octets)
|
|
|
|
|
Event2 (2 Octets)
|
|
|
|
|
...
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command returns the list of supported Management commands
|
|
|
|
|
and events.
|
|
|
|
|
|
2012-02-10 00:18:12 +08:00
|
|
|
|
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.
|
2010-09-20 15:41:35 +08:00
|
|
|
|
|
2012-02-21 04:07:30 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2010-11-08 04:08:23 +08:00
|
|
|
|
|
2010-09-20 15:41:35 +08:00
|
|
|
|
Read Controller Index List Command
|
|
|
|
|
==================================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0003
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <non-controller>
|
2010-09-20 15:41:35 +08:00
|
|
|
|
Command Parameters:
|
2011-07-19 02:00:09 +08:00
|
|
|
|
Return Parameters: Num_Controllers (2 Octets)
|
2010-09-20 15:41:35 +08:00
|
|
|
|
Controller_Index[i] (2 Octets)
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command returns the list of currently known controllers.
|
|
|
|
|
Controllers added or removed after calling this command can be
|
|
|
|
|
monitored using the Index Added and Index Removed events.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2010-11-08 04:08:23 +08:00
|
|
|
|
|
2010-09-20 15:41:35 +08:00
|
|
|
|
Read Controller Information Command
|
|
|
|
|
===================================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0004
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters:
|
2011-10-24 20:14:16 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Bluetooth_Version (1 Octet)
|
2010-11-09 03:42:58 +08:00
|
|
|
|
Manufacturer (2 Octets)
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Supported_Settings (4 Octets)
|
|
|
|
|
Current_Settings (4 Octets)
|
|
|
|
|
Class_Of_Device (3 Octets)
|
2011-03-16 01:30:11 +08:00
|
|
|
|
Name (249 Octets)
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Short_Name (11 Octets)
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to retreive the current state and basic
|
|
|
|
|
information of a controller. It is typically used right after
|
|
|
|
|
getting the response to the Read Controller Index List command
|
|
|
|
|
or an Index Added event.
|
|
|
|
|
|
2014-06-23 14:56:15 +08:00
|
|
|
|
The Address parameter describes the controllers public address
|
|
|
|
|
and it can be expected that it is set. However in case of single
|
|
|
|
|
mode Low Energy only controllers it can be 00:00:00:00:00:00. To
|
|
|
|
|
power on the controller in this case, it is required to configure
|
|
|
|
|
a static address using Set Static Address command first.
|
|
|
|
|
|
|
|
|
|
If the public address is set, then it will be used as identity
|
|
|
|
|
address for the controller. If no public address is available,
|
|
|
|
|
then the configured static address will be used as identity
|
|
|
|
|
address.
|
|
|
|
|
|
|
|
|
|
If no short name is set the Short_Name parameter will be empty
|
2011-12-08 22:10:10 +08:00
|
|
|
|
(begin with a nul byte).
|
|
|
|
|
|
2014-06-23 14:56:15 +08:00
|
|
|
|
Current_Settings and Supported_Settings is a bitmask with
|
2011-12-08 22:10:10 +08:00
|
|
|
|
currently the following available bits:
|
2010-09-20 15:41:35 +08:00
|
|
|
|
|
2014-05-14 21:18:00 +08:00
|
|
|
|
0 Powered
|
|
|
|
|
1 Connectable
|
|
|
|
|
2 Fast Connectable
|
|
|
|
|
3 Discoverable
|
2014-07-30 15:33:46 +08:00
|
|
|
|
4 Bondable
|
2014-05-14 21:18:00 +08:00
|
|
|
|
5 Link Level Security (Sec. mode 3)
|
|
|
|
|
6 Secure Simple Pairing
|
|
|
|
|
7 Basic Rate/Enhanced Data Rate
|
|
|
|
|
8 High Speed
|
|
|
|
|
9 Low Energy
|
|
|
|
|
10 Advertising
|
|
|
|
|
11 Secure Connections
|
|
|
|
|
12 Debug Keys
|
|
|
|
|
13 Privacy
|
2014-07-02 07:45:11 +08:00
|
|
|
|
14 Controller Configuration
|
2010-09-20 15:41:35 +08:00
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2010-11-08 04:08:23 +08:00
|
|
|
|
|
2010-12-23 20:38:52 +08:00
|
|
|
|
Set Powered Command
|
|
|
|
|
===================
|
2010-09-20 15:41:35 +08:00
|
|
|
|
|
|
|
|
|
Command Code: 0x0005
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Powered (1 Octet)
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
2010-12-30 05:35:54 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to power on or off a controller. The
|
2013-01-10 14:59:34 +08:00
|
|
|
|
allowed Powered command parameter values are 0x00 and 0x01. All
|
|
|
|
|
other values will return Invalid Parameters.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
2012-02-21 21:09:14 +08:00
|
|
|
|
If discoverable setting is activated with a timeout, then
|
|
|
|
|
switching the controller off will expire this timeout and
|
|
|
|
|
disable discoverable.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2010-12-30 05:35:54 +08:00
|
|
|
|
|
|
|
|
|
Set Discoverable Command
|
|
|
|
|
========================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0006
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Discoverable (1 Octet)
|
2011-10-24 20:14:53 +08:00
|
|
|
|
Timeout (2 Octets)
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
2010-12-30 05:35:54 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to set the discoverable property of a
|
|
|
|
|
controller. The allowed Discoverable command parameter values
|
2013-10-16 06:09:17 +08:00
|
|
|
|
are 0x00, 0x01 and 0x02. All other values will return Invalid
|
|
|
|
|
Parameters.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
2012-02-21 21:09:14 +08:00
|
|
|
|
Timeout is the time in seconds and is only meaningful when
|
2013-10-16 06:09:17 +08:00
|
|
|
|
Discoverable is set to 0x01 or 0x02. Providing a timeout
|
|
|
|
|
with 0x00 return Invalid Parameters. For 0x02, the timeout
|
|
|
|
|
value is required.
|
|
|
|
|
|
|
|
|
|
The value 0x00 disables discoverable, the value 0x01 enables
|
|
|
|
|
general discoverable and the value 0x02 enables limited
|
|
|
|
|
discoverable.
|
2011-10-24 20:14:53 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is only available for BR/EDR capable controllers
|
2013-01-10 14:59:34 +08:00
|
|
|
|
(e.g. not for single-mode LE ones). It will return Not Supported
|
|
|
|
|
otherwise.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
2012-02-21 20:26:52 +08:00
|
|
|
|
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
|
2013-01-10 14:59:34 +08:00
|
|
|
|
return Not Powered error.
|
2012-02-21 20:26:52 +08:00
|
|
|
|
|
2012-02-21 21:09:14 +08:00
|
|
|
|
When switching discoverable on and the connectable setting is
|
2013-01-10 14:59:34 +08:00
|
|
|
|
off it will return Rejected error.
|
2012-02-21 21:09:14 +08:00
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Rejected
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2010-12-30 05:35:54 +08:00
|
|
|
|
|
|
|
|
|
Set Connectable Command
|
|
|
|
|
=======================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0007
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Connectable (1 Octet)
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
2010-12-23 20:38:52 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to set the connectable property of a
|
|
|
|
|
controller. The allowed Connectable command parameter values are
|
2013-01-10 14:59:34 +08:00
|
|
|
|
0x00 and 0x01. All other values will return Invalid Parameters.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
2013-10-16 06:12:13 +08:00
|
|
|
|
This command is available for BR/EDR, LE-only and also dual
|
|
|
|
|
mode controllers. For BR/EDR is changes the page scan setting
|
|
|
|
|
and for LE controllers it changes the advertising type. For
|
|
|
|
|
dual mode controllers it affects both settings.
|
|
|
|
|
|
2014-07-04 16:58:53 +08:00
|
|
|
|
For LE capable controllers the connectable setting takes affect
|
|
|
|
|
when advertising is enabled (peripheral) or when directed
|
|
|
|
|
advertising events are received (central).
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
2012-02-21 20:26:52 +08:00
|
|
|
|
This command can be used when the controller is not powered and
|
|
|
|
|
all settings will be programmed once powered.
|
|
|
|
|
|
2012-02-21 21:09:14 +08:00
|
|
|
|
When switching connectable off, it will also switch off the
|
2012-02-21 21:25:59 +08:00
|
|
|
|
discoverable setting. Switching connectable back on will not
|
|
|
|
|
restore a previous discoverable. It will stay off and needs
|
|
|
|
|
to be manually switched back on.
|
2012-02-21 21:09:14 +08:00
|
|
|
|
|
2012-02-21 21:25:59 +08:00
|
|
|
|
When switching connectable off, it will expire a discoverable
|
2012-02-21 21:09:14 +08:00
|
|
|
|
setting with a timeout.
|
|
|
|
|
|
2014-07-24 00:48:49 +08:00
|
|
|
|
This setting does not affect known devices from Add Device
|
|
|
|
|
command. These devices are always allowed to connect.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2010-09-20 15:41:35 +08:00
|
|
|
|
|
2011-12-09 19:11:58 +08:00
|
|
|
|
Set Fast Connectable Command
|
|
|
|
|
============================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0008
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Enable (1 Octet)
|
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to set the controller into a connectable
|
|
|
|
|
state where the page scan parameters have been set in a way to
|
|
|
|
|
favor faster connect times with the expense of higher power
|
|
|
|
|
consumption.
|
|
|
|
|
|
|
|
|
|
The allowed values of the Enable command parameter are 0x00 and
|
2013-01-10 14:59:34 +08:00
|
|
|
|
0x01. All other values will return Invalid Parameters.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
|
|
|
|
This command is only available for BR/EDR capable controllers
|
2013-01-10 14:59:34 +08:00
|
|
|
|
(e.g. not for single-mode LE ones). It will return Not Supported
|
|
|
|
|
otherwise.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
2013-01-10 14:59:34 +08:00
|
|
|
|
This command can only be used when the controller is powered on
|
|
|
|
|
and will return Not Powerd otherwise.
|
2012-02-21 20:26:52 +08:00
|
|
|
|
|
2013-01-10 14:59:34 +08:00
|
|
|
|
If connectable is not set, then this command will fail with
|
|
|
|
|
Rejected error.
|
2012-02-21 21:09:14 +08:00
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Failed
|
|
|
|
|
Busy
|
|
|
|
|
Rejected
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-12-09 19:11:58 +08:00
|
|
|
|
|
2014-07-30 15:33:46 +08:00
|
|
|
|
Set Bondable Command
|
2010-12-30 21:03:57 +08:00
|
|
|
|
====================
|
|
|
|
|
|
2011-12-09 19:11:58 +08:00
|
|
|
|
Command Code: 0x0009
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
2014-07-30 15:33:46 +08:00
|
|
|
|
Command Parameters: Bondable (1 Octet)
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
|
|
|
|
|
2014-07-30 15:33:46 +08:00
|
|
|
|
This command is used to set the bondable property of an
|
|
|
|
|
controller. The allowed values for the Bondable command
|
2013-01-10 14:59:34 +08:00
|
|
|
|
parameter are 0x00 and 0x01. All other values will return
|
|
|
|
|
Invalid Parameters.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
2012-02-21 20:26:52 +08:00
|
|
|
|
This command can be used when the controller is not powered and
|
|
|
|
|
all settings will be programmed once powered.
|
|
|
|
|
|
2014-07-30 15:33:46 +08:00
|
|
|
|
Turning bondable on will not automatically switch the controller
|
2012-02-21 21:09:14 +08:00
|
|
|
|
into connectable mode. That needs to be done separately.
|
|
|
|
|
|
|
|
|
|
The setting will be remembered during power down/up toggles.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-12-08 22:10:10 +08:00
|
|
|
|
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Set Link Security Command
|
|
|
|
|
=========================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x000A
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Link_Security (1 Octet)
|
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to either enable or disable link level
|
|
|
|
|
security for an controller (also known as Security Mode 3). The
|
|
|
|
|
allowed values for the Link_Security command parameter are 0x00
|
2013-01-10 14:59:34 +08:00
|
|
|
|
and 0x01. All other values will return Invalid Parameters.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
|
|
|
|
This command is only available for BR/EDR capable controllers
|
2013-01-10 14:59:34 +08:00
|
|
|
|
(e.g. not for single-mode LE ones). It will return Not Supported
|
|
|
|
|
otherwise.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
2012-02-21 20:26:52 +08:00
|
|
|
|
This command can be used when the controller is not powered and
|
|
|
|
|
all settings will be programmed once powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-12-14 20:10:11 +08:00
|
|
|
|
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Set Secure Simple Pairing Command
|
|
|
|
|
=================================
|
|
|
|
|
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Command Code: 0x000B
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Secure_Simple_Pairing (1 Octet)
|
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to enable/disable Secure Simple Pairing
|
|
|
|
|
support for a controller. The allowed values for the
|
2013-01-10 14:59:34 +08:00
|
|
|
|
Secure_Simple_Pairing command parameter are 0x00 and 0x01. All
|
|
|
|
|
other values will return Invalid Parameters.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
|
|
|
|
This command is only available for BR/EDR capable controllers
|
|
|
|
|
supporting the core specification version 2.1 or greater
|
|
|
|
|
(e.g. not for single-mode LE controllers or pre-2.1 ones).
|
|
|
|
|
|
2012-02-21 20:26:52 +08:00
|
|
|
|
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,
|
2013-01-10 14:59:34 +08:00
|
|
|
|
the command will fail regardless with Not Supported error.
|
2012-02-21 20:26:52 +08:00
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
2011-12-08 22:10:10 +08:00
|
|
|
|
|
|
|
|
|
Set High Speed Command
|
|
|
|
|
======================
|
|
|
|
|
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Command Code: 0x000C
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: High_Speed (1 Octet)
|
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to enable/disable Bluetooth High Speed
|
|
|
|
|
support for a controller. The allowed values for the High_Speed
|
2013-01-10 14:59:34 +08:00
|
|
|
|
command parameter are 0x00 and 0x01. All other values will
|
|
|
|
|
return Invalid Parameters.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
|
|
|
|
This command is only available for BR/EDR capable controllers
|
|
|
|
|
(e.g. not for single-mode LE ones).
|
|
|
|
|
|
2012-02-21 20:26:52 +08:00
|
|
|
|
This command can be used when the controller is not powered and
|
|
|
|
|
all settings will be programmed once powered.
|
|
|
|
|
|
2013-10-10 19:13:07 +08:00
|
|
|
|
To enable High Speed support, it is required that Secure Simple
|
|
|
|
|
Pairing support is enabled first. High Speed support is not
|
|
|
|
|
possible for connections without Secure Simple Pairing.
|
|
|
|
|
|
|
|
|
|
When switching Secure Simple Pairing off, the support for High
|
|
|
|
|
Speed will be switched off as well. Switching Secure Simple
|
|
|
|
|
Pairing back on, will not re-enable High Speed support. That
|
|
|
|
|
needs to be done manually.
|
2012-02-21 20:26:52 +08:00
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-12-08 22:10:10 +08:00
|
|
|
|
|
|
|
|
|
Set Low Energy Command
|
|
|
|
|
======================
|
|
|
|
|
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Command Code: 0x000D
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Controller Index: <controller id>
|
2012-11-09 18:05:24 +08:00
|
|
|
|
Command Parameters: Low_Energy (1 Octet)
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
2010-12-30 21:03:57 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to enable/disable Low Energy support for a
|
|
|
|
|
controller. The allowed values of the Low_Energy command
|
2013-01-10 14:59:34 +08:00
|
|
|
|
parameter are 0x00 and 0x01. All other values will return
|
|
|
|
|
Invalid Parameters.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
|
|
|
|
This command is only available for LE capable controllers and
|
2013-01-10 14:59:34 +08:00
|
|
|
|
will yield in a Not Supported error otherwise.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
2012-02-21 20:26:52 +08:00
|
|
|
|
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.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-09-25 18:45:52 +08:00
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Not Supported
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Set Device Class
|
2011-01-04 04:17:32 +08:00
|
|
|
|
================
|
|
|
|
|
|
2011-12-09 19:11:58 +08:00
|
|
|
|
Command Code: 0x000E
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Command Parameters: Major_Class (1 Octet)
|
|
|
|
|
Minor_Class (1 Octet)
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Return Parameters: Class_Of_Device (3 Octets)
|
2011-01-04 04:17:32 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to set the major and minor device class for
|
|
|
|
|
BR/EDR capable controllers.
|
|
|
|
|
|
2011-12-14 20:10:11 +08:00
|
|
|
|
This command will also implicitly disable caching of pending CoD
|
|
|
|
|
and EIR updates.
|
2010-11-08 04:08:23 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is only available for BR/EDR capable controllers
|
|
|
|
|
(e.g. not for single-mode LE ones).
|
|
|
|
|
|
2012-02-23 04:03:22 +08:00
|
|
|
|
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.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-12-15 05:03:35 +08:00
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to set the local name of a controller. The
|
|
|
|
|
command parameters also include a short name which will be used
|
|
|
|
|
in case the full name doesn't fit within EIR/AD data.
|
|
|
|
|
|
2012-04-12 23:03:09 +08:00
|
|
|
|
The name parameters need to always end with a null byte (failure
|
2011-12-15 05:03:35 +08:00
|
|
|
|
to do so will cause the command to fail).
|
|
|
|
|
|
2012-02-23 03:51:42 +08:00
|
|
|
|
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.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-12-15 05:03:35 +08:00
|
|
|
|
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Add UUID Command
|
2011-01-15 05:14:13 +08:00
|
|
|
|
================
|
|
|
|
|
|
2011-12-15 05:03:35 +08:00
|
|
|
|
Command Code: 0x0010
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Command Parameters: UUID (16 Octets)
|
|
|
|
|
SVC_Hint (1 Octet)
|
2011-12-08 22:10:10 +08:00
|
|
|
|
Return Parameters: Class_Of_Device (3 Octets)
|
2011-01-15 05:14:13 +08:00
|
|
|
|
|
2014-12-23 15:38:17 +08:00
|
|
|
|
This command is used to add a UUID to be published in EIR data.
|
|
|
|
|
The accompanied SVC_Hint parameter is used to tell the kernel
|
|
|
|
|
whether the service class bits of the Class of Device value need
|
|
|
|
|
modifying due to this UUID.
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
2012-02-23 04:03:22 +08:00
|
|
|
|
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.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-01-15 05:14:13 +08:00
|
|
|
|
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Remove UUID Command
|
|
|
|
|
===================
|
2011-01-15 05:14:13 +08:00
|
|
|
|
|
2011-12-15 05:03:35 +08:00
|
|
|
|
Command Code: 0x0011
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Command Parameters: UUID (16 Octets)
|
2011-12-09 19:11:58 +08:00
|
|
|
|
Return Parameters: Class_Of_Device (3 Octets)
|
2011-01-15 05:14:13 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to remove a UUID previously added using the
|
|
|
|
|
Add UUID command.
|
|
|
|
|
|
2012-02-23 04:25:19 +08:00
|
|
|
|
When the UUID parameter is an empty UUID (16 x 0x00), then all
|
|
|
|
|
previously loaded UUIDs will be removed.
|
|
|
|
|
|
2012-02-23 04:03:22 +08:00
|
|
|
|
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.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-01-15 05:14:13 +08:00
|
|
|
|
|
2011-10-24 20:24:53 +08:00
|
|
|
|
Load Link Keys Command
|
|
|
|
|
======================
|
2011-01-21 10:49:42 +08:00
|
|
|
|
|
2011-12-15 05:03:35 +08:00
|
|
|
|
Command Code: 0x0012
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Debug_Keys (1 Octet)
|
2011-01-21 10:49:42 +08:00
|
|
|
|
Key_Count (2 Octets)
|
|
|
|
|
Key1 {
|
|
|
|
|
Address (6 Octets)
|
2012-02-17 19:41:14 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Key_Type (1 Octet)
|
2011-01-21 10:49:42 +08:00
|
|
|
|
Value (16 Octets)
|
|
|
|
|
PIN_Length (1 Octet)
|
|
|
|
|
}
|
|
|
|
|
Key2 { }
|
|
|
|
|
...
|
2011-07-19 02:00:09 +08:00
|
|
|
|
Return Parameters:
|
2011-01-21 10:49:42 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to feed the kernel with currently known
|
|
|
|
|
link keys. The command does not need to be called again upon the
|
2014-02-17 03:45:41 +08:00
|
|
|
|
receiption of New Link Key events since the kernel updates its
|
2013-01-08 21:52:04 +08:00
|
|
|
|
list automatically.
|
|
|
|
|
|
2013-01-18 18:56:15 +08:00
|
|
|
|
The Debug_Keys parameter is used to tell the kernel whether to
|
|
|
|
|
accept the usage of debug keys or not. The allowed values for
|
|
|
|
|
this parameter are 0x00 and 0x01. All other values will return
|
|
|
|
|
an Invalid Parameters response.
|
|
|
|
|
|
2014-04-06 02:35:09 +08:00
|
|
|
|
Usage of the Debug_Keys parameter is deprecated and has been
|
|
|
|
|
replaced with the Set Debug Keys command. When setting the
|
|
|
|
|
Debug_Keys option via Load Link Keys command it has the same
|
|
|
|
|
affect as setting it via Set Debug Keys and applies to all
|
|
|
|
|
keys in the system.
|
|
|
|
|
|
2014-02-17 04:10:28 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 Reserved (not in use)
|
|
|
|
|
2 Reserved (not in use)
|
|
|
|
|
|
|
|
|
|
Public and random LE addresses are not valid and will be rejected.
|
|
|
|
|
|
2014-02-01 09:41:07 +08:00
|
|
|
|
Currently defined Key_Type values are:
|
|
|
|
|
|
|
|
|
|
0x00 Combination key
|
|
|
|
|
0x01 Local Unit key
|
|
|
|
|
0x02 Remote Unit key
|
|
|
|
|
0x03 Debug Combination key
|
|
|
|
|
0x04 Unauthenticated Combination key from P-192
|
|
|
|
|
0x05 Authenticated Combination key from P-192
|
|
|
|
|
0x06 Changed Combination key
|
|
|
|
|
0x07 Unauthenticated Combination key from P-256
|
|
|
|
|
0x08 Authenticated Combination key from P-256
|
|
|
|
|
|
2012-02-23 04:03:22 +08:00
|
|
|
|
This command can be used when the controller is not powered.
|
|
|
|
|
|
2012-02-21 04:15:06 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
2012-02-17 22:31:48 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-01-21 10:49:42 +08:00
|
|
|
|
|
2012-02-02 05:14:28 +08:00
|
|
|
|
Load Long Term Keys Command
|
|
|
|
|
===========================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0013
|
|
|
|
|
Controller Index: <controller id>
|
2013-10-04 14:04:07 +08:00
|
|
|
|
Command Parameters: Key_Count (2 Octets)
|
2012-02-02 05:14:28 +08:00
|
|
|
|
Key1 {
|
|
|
|
|
Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2014-02-01 09:43:49 +08:00
|
|
|
|
Key_Type (1 Octet)
|
2012-02-02 05:14:28 +08:00
|
|
|
|
Master (1 Octet)
|
2013-10-04 14:04:07 +08:00
|
|
|
|
Encryption_Size (1 Octet)
|
|
|
|
|
Encryption_Diversifier (2 Octets)
|
|
|
|
|
Random_Number (8 Octets)
|
2012-02-02 05:14:28 +08:00
|
|
|
|
Value (16 Octets)
|
|
|
|
|
}
|
|
|
|
|
Key2 { }
|
|
|
|
|
...
|
2013-01-10 04:03:45 +08:00
|
|
|
|
Return Parameters:
|
2012-02-02 05:14:28 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to feed the kernel with currently known
|
|
|
|
|
(SMP) Long Term Keys. The command does not need to be called
|
2014-02-17 03:45:41 +08:00
|
|
|
|
again upon the receiption of New Long Term Key events since the
|
2013-01-08 21:52:04 +08:00
|
|
|
|
kernel updates its list automatically.
|
|
|
|
|
|
2014-02-18 15:24:43 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 Reserved (not in use)
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
The provided Address and Address_Type are the identity of
|
|
|
|
|
a device. So either its public address or static random address.
|
|
|
|
|
|
|
|
|
|
Unresolvable random addresses and resolvable random addresses are
|
|
|
|
|
not valid and will be rejected.
|
|
|
|
|
|
2014-02-01 09:43:49 +08:00
|
|
|
|
Currently defined Key_Type values are:
|
|
|
|
|
|
|
|
|
|
0x00 Unauthenticated key
|
|
|
|
|
0x01 Authenticated key
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can be used when the controller is not powered.
|
|
|
|
|
|
2012-02-21 04:15:06 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
2012-02-17 22:31:48 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2012-02-02 05:14:28 +08:00
|
|
|
|
|
2011-01-21 16:05:24 +08:00
|
|
|
|
Disconnect Command
|
|
|
|
|
==================
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Code: 0x0014
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-07-19 02:00:09 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-01-21 16:05:24 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to force the disconnection of a currently
|
|
|
|
|
connected device.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Not Connected
|
|
|
|
|
Busy
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-01-21 19:55:44 +08:00
|
|
|
|
Get Connections Command
|
|
|
|
|
=======================
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Code: 0x0015
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters:
|
2011-07-19 02:00:09 +08:00
|
|
|
|
Return Parameters: Connection_Count (2 Octets)
|
2011-11-07 19:21:13 +08:00
|
|
|
|
Address1 {
|
|
|
|
|
Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-11-07 19:21:13 +08:00
|
|
|
|
}
|
|
|
|
|
Address2 { }
|
2011-01-21 19:55:44 +08:00
|
|
|
|
...
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to retreive a list of currently connected
|
|
|
|
|
devices.
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
2011-11-07 19:21:13 +08:00
|
|
|
|
0 BR/EDR
|
2011-12-08 22:10:10 +08:00
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
2011-11-07 19:21:13 +08:00
|
|
|
|
|
2014-02-19 02:39:36 +08:00
|
|
|
|
For devices using resolvable random addresses with a known
|
|
|
|
|
identity resolving key, the Address and Address_Type will
|
|
|
|
|
contain the identity information.
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-21 04:07:30 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
2012-02-17 22:31:48 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-01-24 17:50:34 +08:00
|
|
|
|
PIN Code Reply Command
|
|
|
|
|
=======================
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Code: 0x0016
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
2012-02-17 21:55:37 +08:00
|
|
|
|
Command Parameters: Address (6 Octets)
|
2012-02-17 19:41:14 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-01-24 17:50:34 +08:00
|
|
|
|
PIN_Length (1 Octet)
|
|
|
|
|
PIN_Code (16 Octets)
|
2012-02-17 21:55:37 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2011-01-24 17:50:34 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to respond to a PIN Code request event.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Not Connected
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-01-24 17:50:34 +08:00
|
|
|
|
|
|
|
|
|
PIN Code Negative Reply Command
|
|
|
|
|
===============================
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Code: 0x0017
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
2012-02-17 21:55:37 +08:00
|
|
|
|
Command Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2011-07-19 02:00:09 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
2012-02-17 19:41:14 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-01-21 19:55:44 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to return a negative response to a PIN Code
|
|
|
|
|
Request event.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Not Connected
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-01-21 16:05:24 +08:00
|
|
|
|
|
2011-01-25 19:45:24 +08:00
|
|
|
|
Set IO Capability Command
|
|
|
|
|
=========================
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Code: 0x0018
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: IO_Capability (1 Octet)
|
2011-07-19 02:00:09 +08:00
|
|
|
|
Return Parameters:
|
2011-01-25 19:45:24 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to set the IO Capability used for pairing.
|
2014-06-17 19:55:07 +08:00
|
|
|
|
The command accepts both SSP and SMP values.
|
|
|
|
|
|
|
|
|
|
Possible values for the IO_Capability parameter:
|
|
|
|
|
0 DisplayOnly
|
|
|
|
|
1 DisplayYesNo
|
|
|
|
|
2 KeyboardOnly
|
|
|
|
|
3 NoInputNoOutput
|
|
|
|
|
4 KeyboardDisplay
|
|
|
|
|
|
|
|
|
|
Passing a value 4 (KeyboardDisplay) will cause the kernel to
|
|
|
|
|
convert it to 1 (DisplayYesNo) in the case of a BR/EDR
|
|
|
|
|
connection (as KeyboardDisplay is specific to SMP).
|
2013-01-08 21:52:04 +08:00
|
|
|
|
|
2012-02-23 04:03:22 +08:00
|
|
|
|
This command can be used when the controller is not powered.
|
|
|
|
|
|
2012-02-21 04:15:06 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
2012-02-17 22:31:48 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Invalid Index
|
2011-01-25 19:45:24 +08:00
|
|
|
|
|
2013-10-04 14:04:07 +08:00
|
|
|
|
|
2011-02-09 03:13:20 +08:00
|
|
|
|
Pair Device Command
|
|
|
|
|
===================
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Code: 0x0019
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
2011-11-11 05:22:32 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-02-09 03:13:20 +08:00
|
|
|
|
IO_Capability (1 Octet)
|
2011-07-19 02:00:09 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
2011-11-11 05:22:32 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-02-09 03:13:20 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to trigger pairing with a remote device.
|
|
|
|
|
The IO_Capability command parameter is used to temporarily (for
|
|
|
|
|
this pairing event only) override the global IO Capaility (set
|
|
|
|
|
using the Set IO Capability command).
|
|
|
|
|
|
2011-11-11 05:22:32 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2014-06-17 19:55:07 +08:00
|
|
|
|
Possible values for the IO_Capability parameter:
|
|
|
|
|
0 DisplayOnly
|
|
|
|
|
1 DisplayYesNo
|
|
|
|
|
2 KeyboardOnly
|
|
|
|
|
3 NoInputNoOutput
|
|
|
|
|
4 KeyboardDisplay
|
|
|
|
|
|
|
|
|
|
Passing a value 4 (KeyboardDisplay) will cause the kernel to
|
|
|
|
|
convert it to 1 (DisplayYesNo) in the case of a BR/EDR
|
|
|
|
|
connection (as KeyboardDisplay is specific to SMP).
|
|
|
|
|
|
2014-02-19 02:39:36 +08:00
|
|
|
|
The Address and Address_Type of the return parameters will
|
2014-07-24 06:48:16 +08:00
|
|
|
|
return the identity address if known. In case of resolvable
|
2014-02-19 02:39:36 +08:00
|
|
|
|
random address given as command parameters and the remote
|
|
|
|
|
provides an identity resolving key, the return parameters
|
|
|
|
|
will provide the resolved address.
|
|
|
|
|
|
|
|
|
|
To allow tracking of which resolvable random address changed
|
|
|
|
|
into which identity address, the New Identity Resolving Key
|
|
|
|
|
event will be send before receiving Command Complete event
|
|
|
|
|
for this command.
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2015-02-11 19:32:12 +08:00
|
|
|
|
Reject status is used when requested transport is not enabled.
|
|
|
|
|
|
|
|
|
|
Not Supported status is used if controller is not capable with
|
|
|
|
|
requested transport.
|
|
|
|
|
|
|
|
|
|
Possible errors: Rejected
|
|
|
|
|
Not Supported
|
|
|
|
|
Connect Failed
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Busy
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-02-09 03:13:20 +08:00
|
|
|
|
|
2014-07-24 06:52:30 +08:00
|
|
|
|
Cancel Pair Device Command
|
|
|
|
|
==========================
|
2012-02-02 05:12:22 +08:00
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Code: 0x001A
|
2012-02-02 05:12:22 +08:00
|
|
|
|
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.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2012-02-02 05:12:22 +08:00
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
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.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
The Disconnect parameter tells the kernel whether to forcefully
|
2012-02-17 21:57:37 +08:00
|
|
|
|
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.
|
|
|
|
|
|
2014-02-19 02:39:36 +08:00
|
|
|
|
When unpairing a device its link key, long term key and if
|
|
|
|
|
provided identity resolving key will be purged.
|
|
|
|
|
|
|
|
|
|
For devices using resolvable random addresses where the identity
|
|
|
|
|
resolving key was available, after this command they will now no
|
|
|
|
|
longer be resolved. The device will essentially become private
|
|
|
|
|
again.
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Not Paired
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
|
2011-02-17 04:46:20 +08:00
|
|
|
|
User Confirmation Reply Command
|
|
|
|
|
===============================
|
|
|
|
|
|
2012-02-02 05:14:28 +08:00
|
|
|
|
Command Code: 0x001C
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-07-19 02:00:09 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-02-17 04:46:20 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to respond to a User Confirmation Request
|
|
|
|
|
event.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Not Connected
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-02-17 04:46:20 +08:00
|
|
|
|
|
|
|
|
|
User Confirmation Negative Reply Command
|
|
|
|
|
========================================
|
|
|
|
|
|
2012-02-02 05:14:28 +08:00
|
|
|
|
Command Code: 0x001D
|
2011-02-24 01:39:21 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-07-19 02:00:09 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-02-17 04:46:20 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to return a negative response to a User
|
|
|
|
|
Confirmation Request event.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Not Connected
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-10-24 20:25:34 +08:00
|
|
|
|
|
|
|
|
|
User Passkey Reply Command
|
|
|
|
|
==========================
|
|
|
|
|
|
2012-02-02 05:14:28 +08:00
|
|
|
|
Command Code: 0x001E
|
2011-10-24 20:25:34 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-10-24 20:25:34 +08:00
|
|
|
|
Passkey (4 Octets)
|
|
|
|
|
Return Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-10-24 20:25:34 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to respond to a User Confirmation Passkey
|
|
|
|
|
Request event.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Not Connected
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-10-24 20:25:34 +08:00
|
|
|
|
|
|
|
|
|
User Passkey Negative Reply Command
|
|
|
|
|
===================================
|
|
|
|
|
|
2012-02-02 05:14:28 +08:00
|
|
|
|
Command Code: 0x001F
|
2011-10-24 20:25:34 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-10-24 20:25:34 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-10-24 20:25:34 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to return a negative response to a User
|
|
|
|
|
Passkey Request event.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Not Connected
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-03-26 19:27:10 +08:00
|
|
|
|
Read Local Out Of Band Data Command
|
2011-12-14 20:10:11 +08:00
|
|
|
|
===================================
|
2011-03-26 19:27:10 +08:00
|
|
|
|
|
2012-02-02 05:14:28 +08:00
|
|
|
|
Command Code: 0x0020
|
2011-03-26 19:27:10 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters:
|
2014-01-10 18:02:28 +08:00
|
|
|
|
Return Parameters: Hash_192 (16 Octets)
|
|
|
|
|
Randomizer_192 (16 Octets)
|
|
|
|
|
Hash_256 (16 Octets, Optional)
|
|
|
|
|
Randomizer_256 (16 Octets, Optional)
|
2011-03-26 19:27:10 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to read the local Out of Band data.
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2014-01-10 18:02:28 +08:00
|
|
|
|
If Secure Connections support is enabled, then this command
|
2014-01-12 06:09:52 +08:00
|
|
|
|
will return P-192 versions of hash and randomizer as well as
|
|
|
|
|
P-256 versions of both.
|
2014-01-10 18:02:28 +08:00
|
|
|
|
|
2015-01-23 04:28:39 +08:00
|
|
|
|
Values returned by this command become invalid when the controller
|
|
|
|
|
is powered down. After each power-cycle it is required to call
|
|
|
|
|
this command again to get updated values.
|
|
|
|
|
|
2012-02-21 04:07:30 +08:00
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
2012-02-17 22:31:48 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Not Supported
|
|
|
|
|
Busy
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-03-26 19:27:10 +08:00
|
|
|
|
|
|
|
|
|
Add Remote Out Of Band Data Command
|
2011-12-14 20:10:11 +08:00
|
|
|
|
===================================
|
2011-03-26 19:27:10 +08:00
|
|
|
|
|
2012-02-02 05:14:28 +08:00
|
|
|
|
Command Code: 0x0021
|
2011-03-26 19:27:10 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2014-01-10 18:02:28 +08:00
|
|
|
|
Hash_192 (16 Octets)
|
|
|
|
|
Randomizer_192 (16 Octets)
|
|
|
|
|
Hash_256 (16 Octets, Optional)
|
|
|
|
|
Randomizer_256 (16 Octets, Optional)
|
2012-02-17 21:58:38 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2011-03-26 19:27:10 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to provide Out of Band data for a remote
|
|
|
|
|
device.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2012-12-13 22:10:52 +08:00
|
|
|
|
Provided Out Of Band data is persistent over power down/up toggles.
|
2012-02-23 04:43:04 +08:00
|
|
|
|
|
2014-01-10 18:02:28 +08:00
|
|
|
|
This command also accept optional P-256 versions of hash and
|
|
|
|
|
randomizer. If they are not provided, then they are set to
|
|
|
|
|
zero value.
|
|
|
|
|
|
|
|
|
|
The P-256 versions of both can also be provided when the
|
|
|
|
|
support for Secure Connections is not enabled. However in
|
|
|
|
|
that case they will never be used.
|
|
|
|
|
|
|
|
|
|
To only provide the P-256 versions of hash and randomizer,
|
|
|
|
|
it is valid to leave both P-192 fields as zero values. If
|
|
|
|
|
Secure Connections is disabled, then of course this is the
|
2014-01-12 06:09:52 +08:00
|
|
|
|
same as not providing any data at all.
|
2014-01-10 18:02:28 +08:00
|
|
|
|
|
2015-01-23 13:17:15 +08:00
|
|
|
|
When providing data for remote LE devices, then the Hash_192 field
|
|
|
|
|
is used to provide the Security Manager TK Value. The Randomizer_192
|
|
|
|
|
field is not used and shall be set to zero. The Hash_192 value can
|
|
|
|
|
also be set to zero and that means that no Out Of Band data for
|
|
|
|
|
LE legacy pairing is provided.
|
|
|
|
|
|
|
|
|
|
The Hash_256 and Randomizer_256 fields can be used for LE secure
|
|
|
|
|
connections Out Of Band data. If only LE secure connections data
|
|
|
|
|
is provided the Hash_P192 and Randomizer_P192 fields can be set
|
|
|
|
|
to zero.
|
2015-01-23 04:28:39 +08:00
|
|
|
|
|
2015-01-28 04:42:29 +08:00
|
|
|
|
If Secure Connections Only mode has been enabled, then providing
|
|
|
|
|
Hash_P192 and Randomizer_P192 is not allowed. They are required
|
|
|
|
|
to be set to zero values.
|
|
|
|
|
|
2014-11-15 11:58:25 +08:00
|
|
|
|
This command can be used when the controller is not powered and
|
|
|
|
|
all settings will be programmed once powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Failed
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-03-26 19:27:10 +08:00
|
|
|
|
|
|
|
|
|
Remove Remote Out Of Band Data Command
|
2012-02-23 04:03:22 +08:00
|
|
|
|
======================================
|
2011-03-26 19:27:10 +08:00
|
|
|
|
|
2012-02-02 05:14:28 +08:00
|
|
|
|
Command Code: 0x0022
|
2011-03-26 19:27:10 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2012-02-17 21:58:38 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2011-03-26 19:27:10 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to remove data added using the Add Remote
|
|
|
|
|
Out Of Band Data command.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2014-11-15 11:58:25 +08:00
|
|
|
|
When the Address parameter is 00:00:00:00:00:00, then all
|
|
|
|
|
previously added data will be removed.
|
|
|
|
|
|
|
|
|
|
This command can be used when the controller is not powered and
|
|
|
|
|
all settings will be programmed once powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-03-31 19:26:20 +08:00
|
|
|
|
Start Discovery Command
|
|
|
|
|
=======================
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Code: 0x0023
|
2011-03-31 19:26:20 +08:00
|
|
|
|
Controller Index: <controller id>
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Parameters: Address_Type (1 Octet)
|
2012-02-17 21:51:51 +08:00
|
|
|
|
Return Parameters: Address_Type (1 Octet)
|
2011-03-31 19:26:20 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to start the process of discovering remote
|
|
|
|
|
devices. A Device Found event will be sent for each discovered
|
|
|
|
|
device.
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Possible values for the Address_Type parameter are a bit-wise or
|
|
|
|
|
of the following bits:
|
2011-11-09 18:57:00 +08:00
|
|
|
|
|
2014-05-14 21:18:00 +08:00
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
2011-11-09 18:57:00 +08:00
|
|
|
|
|
|
|
|
|
By combining these e.g. the following values are possible:
|
|
|
|
|
|
|
|
|
|
1 BR/EDR
|
|
|
|
|
6 LE (public & random)
|
|
|
|
|
7 BR/EDR/LE (interleaved discovery)
|
2011-10-25 00:09:01 +08:00
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-03-31 19:26:20 +08:00
|
|
|
|
Stop Discovery Command
|
|
|
|
|
======================
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Code: 0x0024
|
2011-03-31 19:26:20 +08:00
|
|
|
|
Controller Index: <controller id>
|
2012-02-21 04:19:25 +08:00
|
|
|
|
Command Parameters: Address_Type (1 Octet)
|
|
|
|
|
Return Parameters: Address_Type (1 Octet)
|
2011-03-26 19:27:10 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to stop the discovery process started using
|
|
|
|
|
the Start Discovery command.
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Rejected
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Confirm Name Command
|
2011-06-15 17:02:03 +08:00
|
|
|
|
====================
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Code: 0x0025
|
2011-06-15 17:02:03 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
2012-02-17 19:41:14 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Name_Known (1 Octet)
|
2011-12-19 20:14:30 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
2012-02-17 19:41:14 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2011-12-14 20:10:11 +08:00
|
|
|
|
|
|
|
|
|
This command is only valid during device discovery and is
|
|
|
|
|
expected for each Device Found event with the Confirm Name
|
|
|
|
|
flag set.
|
2011-06-15 17:02:03 +08:00
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2014-02-15 02:22:17 +08:00
|
|
|
|
The Name_Known parameter should be set to 0x01 if user space
|
|
|
|
|
knows the name for the device and 0x00 if it doesn't. If set to
|
|
|
|
|
0x00 the kernel will perform a name resolving procedure for the
|
|
|
|
|
device in question.
|
|
|
|
|
|
2012-02-23 04:43:04 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Failed
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Block Device Command
|
|
|
|
|
====================
|
2011-06-15 17:02:03 +08:00
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Code: 0x0026
|
2011-10-24 18:56:55 +08:00
|
|
|
|
Controller Index: <controller id>
|
2011-12-09 19:11:58 +08:00
|
|
|
|
Command Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2012-02-17 22:00:31 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2011-06-17 17:44:13 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to add a device to the list of devices
|
|
|
|
|
which should be blocked from being connect to the local
|
|
|
|
|
controller.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2014-07-04 18:15:02 +08:00
|
|
|
|
For Low Energy devices, the blocking of a device take presedence
|
|
|
|
|
over auto-connection actions provided by Add Device. Blocked
|
|
|
|
|
devices will not be auto-connected or even reported when found
|
|
|
|
|
during background scanning. If the controller is connectable
|
|
|
|
|
direct advertising from blocked devices will also be ignored.
|
|
|
|
|
|
|
|
|
|
Connections created from advertising of the controller will
|
|
|
|
|
be dropped if the device is blocked.
|
|
|
|
|
|
2012-02-23 04:03:22 +08:00
|
|
|
|
This command can be used when the controller is not powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Failed
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Unblock Device Command
|
|
|
|
|
======================
|
2011-10-24 18:16:18 +08:00
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Command Code: 0x0027
|
2011-10-24 18:16:18 +08:00
|
|
|
|
Controller Index: <controller id>
|
2011-12-14 20:10:11 +08:00
|
|
|
|
Command Parameters: Address (6 Octets)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Address_Type (1 Octet)
|
2012-02-17 22:00:31 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2011-10-24 18:16:18 +08:00
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
This command is used to remove a device from the list of blocked
|
|
|
|
|
devices (where it was added to using the Block Device command).
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2014-07-04 18:15:02 +08:00
|
|
|
|
When the Address parameter is 00:00:00:00:00:00, then all
|
|
|
|
|
previously blocked devices will be unblocked.
|
|
|
|
|
|
2012-02-23 04:03:22 +08:00
|
|
|
|
This command can be used when the controller is not powered.
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2012-02-17 22:31:48 +08:00
|
|
|
|
|
2012-02-21 07:05:56 +08:00
|
|
|
|
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:
|
|
|
|
|
|
2012-02-21 20:26:52 +08:00
|
|
|
|
This command can be used when the controller is not powered and
|
|
|
|
|
all settings will be programmed once powered.
|
|
|
|
|
|
2012-02-21 07:05:56 +08:00
|
|
|
|
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.
|
|
|
|
|
|
2013-01-08 21:52:04 +08:00
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2013-09-25 17:34:07 +08:00
|
|
|
|
Set Advertising Command
|
|
|
|
|
=======================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0029
|
|
|
|
|
Controller Index: <controller id>
|
2013-10-14 16:47:01 +08:00
|
|
|
|
Command Parameters: Advertising (1 Octet)
|
2013-09-25 17:34:07 +08:00
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
|
|
|
|
|
|
|
|
|
This command is used to enable LE advertising on a controller
|
2013-09-26 00:32:04 +08:00
|
|
|
|
that supports it. The allowed values for the Advertising
|
|
|
|
|
command parameter are 0x00 and 0x01. All other values will
|
|
|
|
|
return Invalid Parameters.
|
|
|
|
|
|
|
|
|
|
A pre-requisite is that LE is already enabled, otherwise
|
|
|
|
|
this command will return a "rejected" response.
|
2013-09-25 17:34:07 +08:00
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success or a
|
|
|
|
|
Command Status event on failure.
|
|
|
|
|
|
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Rejected
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
2013-09-26 00:32:04 +08:00
|
|
|
|
|
2013-10-02 17:16:43 +08:00
|
|
|
|
Set BR/EDR Command
|
2013-10-02 19:01:54 +08:00
|
|
|
|
==================
|
2013-10-02 17:16:43 +08:00
|
|
|
|
|
|
|
|
|
Command Code: 0x002A
|
|
|
|
|
Controller Index: <controller id>
|
2013-10-14 16:47:01 +08:00
|
|
|
|
Command Parameters: BR/EDR (1 Octet)
|
2013-10-02 17:16:43 +08:00
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
|
|
|
|
|
|
|
|
|
This command is used to enable or disable BR/EDR support
|
|
|
|
|
on a dual-mode controller. The allowed values for the Advertising
|
|
|
|
|
command parameter are 0x00 and 0x01. All other values will
|
|
|
|
|
return Invalid Parameters.
|
|
|
|
|
|
|
|
|
|
A pre-requisite is that LE is already enabled, otherwise
|
|
|
|
|
this command will return a "rejected" response. Enabling BR/EDR
|
|
|
|
|
can be done both when powered on and powered off, however
|
|
|
|
|
disabling it can only be done when powered off (otherwise the
|
|
|
|
|
command will again return "rejected"). Disabling BR/EDR will
|
|
|
|
|
automatically disable all other BR/EDR related settings.
|
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success or a
|
|
|
|
|
Command Status event on failure.
|
|
|
|
|
|
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Rejected
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2013-10-04 00:14:07 +08:00
|
|
|
|
Set Static Address Command
|
|
|
|
|
==========================
|
2013-10-02 21:21:42 +08:00
|
|
|
|
|
|
|
|
|
Command Code: 0x002B
|
|
|
|
|
Controller Index: <controller id>
|
2013-10-14 16:47:01 +08:00
|
|
|
|
Command Parameters: Address (6 Octets)
|
2013-10-02 21:21:42 +08:00
|
|
|
|
Return Parameters:
|
|
|
|
|
|
|
|
|
|
This command allows for setting the static random address. It is
|
|
|
|
|
only supported on controllers with LE support. The static random
|
|
|
|
|
address is suppose to be valid for the lifetime of the
|
|
|
|
|
controller or at least until the next power cycle. To ensure
|
|
|
|
|
such behavior, setting of the address is limited to when the
|
|
|
|
|
controller is powered off.
|
|
|
|
|
|
|
|
|
|
The special BDADDR_ANY address (00:00:00:00:00:00) can be used
|
|
|
|
|
to disable the static address.
|
|
|
|
|
|
2014-02-18 15:24:43 +08:00
|
|
|
|
When a controller has a public address (which is required for
|
|
|
|
|
all dual-mode controllers), this address is not used. Only when
|
|
|
|
|
the controller information reports BDADDR_ANY (00:00:00:00:00:00),
|
|
|
|
|
it is required to configure a static address first.
|
|
|
|
|
|
|
|
|
|
If privacy mode is enabled and the controller is single mode
|
|
|
|
|
LE only without a public address, the static random address is
|
|
|
|
|
used as identity address.
|
|
|
|
|
|
2013-10-02 21:21:42 +08:00
|
|
|
|
This command generates a Command Complete event on success or a
|
|
|
|
|
Command Status event on failure.
|
|
|
|
|
|
|
|
|
|
Possible errors: Rejected
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2013-10-14 16:20:33 +08:00
|
|
|
|
Set Scan Parameters Command
|
|
|
|
|
===========================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x002C
|
|
|
|
|
Controller Index: <controller id>
|
2013-10-14 16:47:01 +08:00
|
|
|
|
Command Parameters: Interval (2 Octets)
|
2013-10-14 16:20:33 +08:00
|
|
|
|
Window (2 Octets)
|
|
|
|
|
Return Parameters:
|
|
|
|
|
|
|
|
|
|
This command allows for setting the Low Energy scan parameters
|
|
|
|
|
used for connection establishment and passive scanning. It is
|
|
|
|
|
only supported on controllers with LE support.
|
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success or a
|
|
|
|
|
Command Status event on failure.
|
|
|
|
|
|
|
|
|
|
Possible errors: Rejected
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2014-01-10 18:02:28 +08:00
|
|
|
|
Set Secure Connections Command
|
|
|
|
|
==============================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x002D
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Secure_Connections (1 Octet)
|
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
|
|
|
|
|
|
|
|
|
This command is used to enable/disable Secure Connections
|
|
|
|
|
support for a controller. The allowed values for the
|
2014-01-12 06:12:13 +08:00
|
|
|
|
Secure_Connections command parameter are 0x00, 0x01 and 0x02.
|
|
|
|
|
All other values will return Invalid Parameters.
|
|
|
|
|
|
|
|
|
|
The value 0x00 disables Secure Connections, the value 0x01
|
|
|
|
|
enables Secure Connections and the value 0x02 enables Secure
|
|
|
|
|
Connections Only mode.
|
2014-01-10 18:02:28 +08:00
|
|
|
|
|
2014-12-02 19:51:32 +08:00
|
|
|
|
This command is only available for LE capable controllers as
|
|
|
|
|
well as controllers supporting the core specification version
|
|
|
|
|
4.1 or greater.
|
2014-01-10 18:02:28 +08:00
|
|
|
|
|
|
|
|
|
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 Connections
|
|
|
|
|
the command will fail regardless with Not Supported error.
|
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2014-02-01 04:19:28 +08:00
|
|
|
|
Set Debug Keys Command
|
|
|
|
|
======================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x002E
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Debug_Keys (1 Octet)
|
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
|
|
|
|
|
2014-02-15 18:49:59 +08:00
|
|
|
|
This command is used to tell the kernel whether to accept the
|
2014-02-01 04:19:28 +08:00
|
|
|
|
usage of debug keys or not. The allowed values for this parameter
|
2014-06-21 10:21:08 +08:00
|
|
|
|
are 0x00, 0x01 and 0x02. All other values will return an Invalid
|
|
|
|
|
Parameters response.
|
|
|
|
|
|
|
|
|
|
With a value of 0x00 any generated debug key will be discarded
|
|
|
|
|
as soon as the connection terminates.
|
|
|
|
|
|
|
|
|
|
With a value of 0x01 generated debug keys will be kept and can
|
|
|
|
|
be used for future connections. However debug keys are always
|
|
|
|
|
marked as non persistent and should not be stored. This means
|
|
|
|
|
a reboot or changing the value back to 0x00 will delete them.
|
|
|
|
|
|
|
|
|
|
With a value of 0x02 generated debug keys will be kept and can
|
|
|
|
|
be used for future connections. This has the same affect as
|
|
|
|
|
with value 0x01. However in addition this value will also
|
|
|
|
|
enter the controller mode to generate debug keys for each
|
|
|
|
|
new pairing. Changing the value back to 0x01 or 0x00 will
|
|
|
|
|
disable the controller mode for generating debug keys.
|
2014-02-01 04:19:28 +08:00
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2014-02-18 15:24:43 +08:00
|
|
|
|
Set Privacy Command
|
|
|
|
|
===================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x002F
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Privacy (1 Octet)
|
|
|
|
|
Identity_Resolving_Key (16 Octets)
|
|
|
|
|
Return Parameters: Current_Settings (4 Octets)
|
|
|
|
|
|
|
|
|
|
This command is used to enable Low Energy Privacy feature using
|
|
|
|
|
resolvable private addresses.
|
|
|
|
|
|
2014-06-23 04:05:51 +08:00
|
|
|
|
The value 0x00 disables privacy mode, the values 0x01 and 0x02
|
|
|
|
|
enable privacy mode.
|
|
|
|
|
|
|
|
|
|
With value 0x01 the kernel will always use the privacy mode. This
|
|
|
|
|
means resolvable private address is used when the controller is
|
|
|
|
|
discoverable and also when pairing is initiated.
|
|
|
|
|
|
|
|
|
|
With value 0x02 the kernel will use privacy mode with resolvable
|
2014-07-30 15:33:46 +08:00
|
|
|
|
private address. In case the conroller is bondable and discoverable
|
2014-06-23 04:05:51 +08:00
|
|
|
|
the identity address is used. Also when pairing is initiated, the
|
|
|
|
|
connection will be established with the identity address.
|
|
|
|
|
|
2014-07-30 15:33:46 +08:00
|
|
|
|
Exposing the identity address when bondable and discoverable or
|
2014-06-23 04:05:51 +08:00
|
|
|
|
during initated pairing can be a privacy issue. For dual-mode
|
|
|
|
|
controllers this can be neglected since its public address will
|
|
|
|
|
be exposed over BR/EDR anyway. The benefit of exposing the
|
|
|
|
|
identity address for pairing purposes is that it makes matching
|
|
|
|
|
up devices with dual-mode topology during device discovery now
|
|
|
|
|
possible.
|
|
|
|
|
|
|
|
|
|
If the privacy value 0x02 is used, then also the GATT database
|
|
|
|
|
should expose the Privacy Characteristic so that remote devices
|
|
|
|
|
can determine if the privacy feature is in use or not.
|
2014-02-18 15:24:43 +08:00
|
|
|
|
|
|
|
|
|
When the controller has a public address (mandatory for dual-mode
|
|
|
|
|
controllers) it is used as identity address. In case the controller
|
|
|
|
|
is single mode LE only without a public address, it is required
|
|
|
|
|
to configure a static random andress first. The privacy mode can
|
|
|
|
|
only be enabled when an identity address is available.
|
|
|
|
|
|
|
|
|
|
The Identity_Resolving_Key is the local key assigned for the local
|
|
|
|
|
resolvable private address.
|
|
|
|
|
|
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load Identity Resolving Keys Command
|
|
|
|
|
====================================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0030
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Key_Count (2 Octets)
|
|
|
|
|
Key1 {
|
|
|
|
|
Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Value (16 Octets)
|
|
|
|
|
}
|
|
|
|
|
Key2 { }
|
|
|
|
|
...
|
|
|
|
|
Return Parameters:
|
|
|
|
|
|
|
|
|
|
This command is used to feed the kernel with currently known
|
|
|
|
|
identity resolving keys. The command does not need to be called
|
|
|
|
|
again upon the receiption of New Identity Resolving Key events
|
|
|
|
|
since the kernel updates its list automatically.
|
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 Reserved (not in use)
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
The provided Address and Address_Type are the identity of
|
|
|
|
|
a device. So either its public address or static random address.
|
|
|
|
|
|
|
|
|
|
Unresolvable random addresses and resolvable random addresses are
|
|
|
|
|
not valid and will be rejected.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2014-05-14 21:28:26 +08:00
|
|
|
|
Get Connection Information Command
|
|
|
|
|
==================================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0031
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Return Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
RSSI (1 Octet)
|
|
|
|
|
TX_Power (1 Octet)
|
|
|
|
|
Max_TX_Power (1 Octet)
|
|
|
|
|
|
|
|
|
|
This command is used to get connection information.
|
|
|
|
|
|
2014-06-27 17:44:39 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2014-05-14 21:28:26 +08:00
|
|
|
|
TX_Power and Max_TX_Power can be set to 127 if values are invalid or
|
2014-12-05 20:20:18 +08:00
|
|
|
|
unknown. A value of 127 for RSSI indicates that it is not available.
|
2014-05-14 21:28:26 +08:00
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success and
|
|
|
|
|
on failure. In case of failure only Address and Address_Type fields
|
|
|
|
|
are valid and values of remaining parameters are considered invalid
|
|
|
|
|
and shall be ignored.
|
|
|
|
|
|
|
|
|
|
Possible errors: Not Connected
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2014-06-29 19:51:42 +08:00
|
|
|
|
Get Clock Information Command
|
|
|
|
|
=============================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0032
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Return Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Local_Clock (4 Octets)
|
|
|
|
|
Piconet_Clock (4 Octets)
|
|
|
|
|
Accuracy (2 Octets)
|
|
|
|
|
|
|
|
|
|
This command is used to get local and piconet clock information.
|
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 Reserved (not in use)
|
|
|
|
|
2 Reserved (not in use)
|
|
|
|
|
|
|
|
|
|
The Accuracy can be set to 0xffff which means the value is unknown.
|
|
|
|
|
|
|
|
|
|
If the Address is set to 00:00:00:00:00:00, then only the
|
|
|
|
|
Local_Clock field has a valid value. The Piconet_Clock and
|
|
|
|
|
Accuracy fields are invalid and shall be ignored.
|
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success and
|
|
|
|
|
on failure. In case of failure only Address and Address_Type fields
|
|
|
|
|
are valid and values of remaining parameters are considered invalid
|
|
|
|
|
and shall be ignored.
|
|
|
|
|
|
|
|
|
|
Possible errors: Not Connected
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2014-06-29 19:54:35 +08:00
|
|
|
|
Add Device Command
|
|
|
|
|
==================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0033
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Action (1 Octet)
|
2014-06-30 01:40:58 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2014-06-29 19:54:35 +08:00
|
|
|
|
|
|
|
|
|
This command is used to add a device to the action list. The
|
2014-07-24 00:48:49 +08:00
|
|
|
|
action list allows scanning for devices and enables incoming
|
|
|
|
|
connections from known devices.
|
2014-06-29 19:54:35 +08:00
|
|
|
|
|
2014-06-30 01:40:58 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
2014-07-24 00:48:49 +08:00
|
|
|
|
0 BR/EDR
|
2014-06-30 01:40:58 +08:00
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2014-06-29 19:54:35 +08:00
|
|
|
|
Possible values for the Action parameter:
|
|
|
|
|
0 Background scan for device
|
2014-07-24 00:48:49 +08:00
|
|
|
|
1 Allow incoming connection
|
2014-07-24 04:04:42 +08:00
|
|
|
|
2 Auto-connect remote device
|
2014-06-29 19:54:35 +08:00
|
|
|
|
|
|
|
|
|
With the Action 0, when the device is found, a new Device Found
|
2014-07-24 00:48:49 +08:00
|
|
|
|
event will be send indicating this device is available. This
|
|
|
|
|
action is only valid for LE Public and LE Random address types.
|
2014-06-29 19:54:35 +08:00
|
|
|
|
|
2014-07-24 00:48:49 +08:00
|
|
|
|
With the Action 1, the device is allowed to connect. For BR/EDR
|
|
|
|
|
address type this means an incoming connection. For LE Public
|
2014-07-24 04:04:42 +08:00
|
|
|
|
and LE Random address types, a connection will be established
|
|
|
|
|
to devices using directed advertising. If successful a Device
|
|
|
|
|
Connected event will be send.
|
|
|
|
|
|
|
|
|
|
With the Action 2, when the device is found, it will be connected
|
|
|
|
|
and if successful a Device Connected event will be send. This
|
|
|
|
|
action is only valid for LE Public and LE Random address types.
|
2014-07-04 16:58:53 +08:00
|
|
|
|
|
2014-07-04 18:15:02 +08:00
|
|
|
|
When a device is blocked using Block Device command, then it is
|
|
|
|
|
valid to add the device here, but all actions will be ignored
|
|
|
|
|
until the device is unblocked.
|
|
|
|
|
|
2014-07-24 00:48:49 +08:00
|
|
|
|
Devices added with Action 1 are allowed to connect even if the
|
|
|
|
|
connectable setting is off. This acts as list of known trusted
|
|
|
|
|
devices.
|
|
|
|
|
|
2014-06-29 19:54:35 +08:00
|
|
|
|
This command can be used when the controller is not powered and
|
|
|
|
|
all settings will be programmed once powered.
|
|
|
|
|
|
2014-06-30 02:29:34 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
2014-06-29 19:54:35 +08:00
|
|
|
|
|
2014-06-30 01:40:58 +08:00
|
|
|
|
Possible errors: Failed
|
2014-06-29 19:54:35 +08:00
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Remove Device Command
|
|
|
|
|
=====================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0034
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2014-06-30 01:40:58 +08:00
|
|
|
|
Return Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2014-06-29 19:54:35 +08:00
|
|
|
|
|
|
|
|
|
This command is used to remove a device from the action list
|
|
|
|
|
previously added by using the Add Device command.
|
|
|
|
|
|
2014-06-30 01:40:58 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
2014-07-24 00:48:49 +08:00
|
|
|
|
0 BR/EDR
|
2014-06-30 01:40:58 +08:00
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2014-06-29 19:54:35 +08:00
|
|
|
|
When the Address parameter is 00:00:00:00:00:00, then all
|
2014-07-04 18:15:02 +08:00
|
|
|
|
previously added devices will be removed.
|
2014-06-29 19:54:35 +08:00
|
|
|
|
|
|
|
|
|
This command can be used when the controller is not powered and
|
|
|
|
|
all settings will be programmed once powered.
|
|
|
|
|
|
2014-06-30 02:29:34 +08:00
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
2014-06-29 19:54:35 +08:00
|
|
|
|
|
2014-06-30 01:40:58 +08:00
|
|
|
|
Possible errors: Invalid Parameters
|
2014-06-29 19:54:35 +08:00
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2014-06-23 04:00:42 +08:00
|
|
|
|
Load Connection Parameters Command
|
|
|
|
|
==================================
|
|
|
|
|
|
2014-06-29 19:55:08 +08:00
|
|
|
|
Command Code: 0x0035
|
2014-06-23 04:00:42 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Param_Count (2 Octets)
|
|
|
|
|
Param1 {
|
|
|
|
|
Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Min_Connection_Interval (2 Octets)
|
|
|
|
|
Max_Connection_Interval (2 Octes)
|
|
|
|
|
Connection_Latency (2 Octets)
|
|
|
|
|
Supervision_Timeout (2 Octets)
|
|
|
|
|
}
|
|
|
|
|
Param2 { }
|
|
|
|
|
...
|
|
|
|
|
Return Parameters:
|
|
|
|
|
|
|
|
|
|
This command is used to load connection parameters from several
|
|
|
|
|
devices into kernel. Currently this is only supported on controllers
|
|
|
|
|
with Low Energy support.
|
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 Reserved (not in use)
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
The provided Address and Address_Type are the identity of
|
|
|
|
|
a device. So either its public address or static random address.
|
|
|
|
|
|
|
|
|
|
The Min_Connection_Interval, Max_Connection_Interval,
|
|
|
|
|
Connection_Latency and Supervision_Timeout parameters should
|
|
|
|
|
be configured as described in Core 4.1 spec, Vol 2, 7.8.12.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
Not Supported
|
|
|
|
|
|
|
|
|
|
|
2014-07-02 07:45:11 +08:00
|
|
|
|
Read Unconfigured Controller Index List Command
|
|
|
|
|
===============================================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0036
|
|
|
|
|
Controller Index: <non-controller>
|
|
|
|
|
Command Parameters:
|
|
|
|
|
Return Parameters: Num_Controllers (2 Octets)
|
|
|
|
|
Controller_Index[i] (2 Octets)
|
|
|
|
|
|
|
|
|
|
This command returns the list of currently unconfigured controllers.
|
|
|
|
|
Unconfigured controllers added after calling this command can be
|
|
|
|
|
monitored using the Unconfigured Index Added event.
|
|
|
|
|
|
|
|
|
|
An unconfigured controller can either move to a configured state
|
2014-07-03 03:43:00 +08:00
|
|
|
|
by indicating Unconfigured Index Removed event followed by an
|
|
|
|
|
Index Added event; or it can be removed from the system which
|
|
|
|
|
would be indicated by the Unconfigured Index Removed event.
|
2014-07-02 07:45:11 +08:00
|
|
|
|
|
|
|
|
|
Only controllers that require configuration will be listed with
|
|
|
|
|
this command. A controller that is fully configured will not
|
|
|
|
|
be listed even if it supports configuration changes.
|
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Read Controller Configuration Information Command
|
|
|
|
|
=================================================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0037
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters:
|
|
|
|
|
Return Parameters: Manufacturer (2 Octets)
|
2014-07-04 05:51:49 +08:00
|
|
|
|
Supported_Options (4 Octets)
|
|
|
|
|
Missing_Options (4 Octets)
|
2014-07-02 07:45:11 +08:00
|
|
|
|
|
|
|
|
|
This command is used to retreive the supported configuration
|
|
|
|
|
options of a controller and the missing configuration options.
|
|
|
|
|
|
|
|
|
|
The missing options are required to be configured before the
|
|
|
|
|
controller is considered fully configured and ready for standard
|
|
|
|
|
operation. The command is typically used right after getting the
|
|
|
|
|
response to Read Unconfigured Controller Index List command or
|
|
|
|
|
Unconfigured Index Added event.
|
|
|
|
|
|
2014-07-04 05:51:49 +08:00
|
|
|
|
Supported_Options and Missing_Options is a bitmask with currently
|
|
|
|
|
the following available bits:
|
2014-07-02 07:45:11 +08:00
|
|
|
|
|
2014-07-04 18:54:34 +08:00
|
|
|
|
0 External configuration
|
|
|
|
|
1 Bluetooth public address configuration
|
2014-07-02 07:45:11 +08:00
|
|
|
|
|
|
|
|
|
It is valid to call this command on controllers that do not
|
|
|
|
|
require any configuration. It is possible that a fully configured
|
|
|
|
|
controller offers additional support for configuration.
|
|
|
|
|
|
|
|
|
|
For example a controller may contain a valid Bluetooth public
|
|
|
|
|
device address, but also allows to configure it from the host
|
|
|
|
|
stack. In this case the general support for configurations will
|
|
|
|
|
be indicated by the Controller Configuration settings. For
|
|
|
|
|
controllers where no configuration options are available that
|
|
|
|
|
setting option will not be present.
|
|
|
|
|
|
|
|
|
|
When all configurations have been completed and as a result the
|
2014-07-04 05:51:49 +08:00
|
|
|
|
Missing_Options mask would become empty, then the now ready
|
|
|
|
|
controller will be announced via Index Added event.
|
2014-07-02 07:45:11 +08:00
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
|
|
|
|
Possible errors: Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2014-07-04 18:54:34 +08:00
|
|
|
|
Set External Configuration Command
|
|
|
|
|
==================================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x0038
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Configuration (1 Octet)
|
|
|
|
|
Return Parameters: Missing_Options (4 Octets)
|
|
|
|
|
|
|
|
|
|
This command allows to change external configuration option to
|
|
|
|
|
indicate that a controller is now configured or unconfigured.
|
|
|
|
|
|
|
|
|
|
The value 0x00 sets unconfigured state and the value 0x01 sets
|
|
|
|
|
configured state of the controller.
|
|
|
|
|
|
|
|
|
|
It is not mandatory that this configuration option is provided
|
|
|
|
|
by a controller. If it is provided, the configuration has to
|
|
|
|
|
happen externally using user channel operation or via vendor
|
|
|
|
|
specific methods.
|
|
|
|
|
|
|
|
|
|
Setting this option and when Missing_Options returns zero, this
|
|
|
|
|
means that the controller will switch to configured state and it
|
|
|
|
|
can be expected that it will be announced via Index Added event.
|
|
|
|
|
|
|
|
|
|
Wrongly configured controllers might still cause an error when
|
|
|
|
|
trying to power them via Set Powered commmand.
|
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success or a
|
|
|
|
|
Command Status event on failure.
|
|
|
|
|
|
|
|
|
|
Possible errors: Rejected
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2014-07-02 07:45:11 +08:00
|
|
|
|
Set Public Address Command
|
|
|
|
|
==========================
|
|
|
|
|
|
2014-07-04 18:54:34 +08:00
|
|
|
|
Command Code: 0x0039
|
2014-07-02 07:45:11 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address (6 Octets)
|
2014-07-04 05:51:49 +08:00
|
|
|
|
Return Parameters: Missing_Options (4 Octets)
|
2014-07-02 07:45:11 +08:00
|
|
|
|
|
|
|
|
|
This command allows configuration of public address. Since a vendor
|
|
|
|
|
specific procedure is required, this command might not be supported
|
|
|
|
|
by all controllers. Actually most likely only a handful embedded
|
|
|
|
|
controllers will offer support for this command.
|
|
|
|
|
|
|
|
|
|
When the support for Bluetooth public address configuration is
|
2014-07-04 05:51:49 +08:00
|
|
|
|
indicated in the supported options mask, then this command
|
2014-07-02 07:45:11 +08:00
|
|
|
|
can be used to configure the public address.
|
|
|
|
|
|
|
|
|
|
It is only possible to configure the public address when the
|
|
|
|
|
controller is powered off.
|
|
|
|
|
|
2014-07-04 05:51:49 +08:00
|
|
|
|
For an unconfigured controller and when Missing_Options returns
|
|
|
|
|
an empty mask, this means that a Index Added event for the now
|
|
|
|
|
fully configured controller can be expected.
|
2014-07-02 07:45:11 +08:00
|
|
|
|
|
|
|
|
|
For a fully configured controller, the current controller index
|
2014-07-03 03:43:00 +08:00
|
|
|
|
will become invalid and an Unconfigured Index Removed event will
|
|
|
|
|
be send. Once the address has been successfully changed an Index
|
|
|
|
|
Added event will be send. There is no guarantee that the controller
|
|
|
|
|
index stays the same.
|
2014-07-02 07:45:11 +08:00
|
|
|
|
|
|
|
|
|
All previous configured parameters and settings are lost when
|
|
|
|
|
this command succeeds. The controller has to be treated as new
|
|
|
|
|
one. Use this command for a fully configured controller only when
|
|
|
|
|
you really know what you are doing.
|
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success or a
|
|
|
|
|
Command Status event on failure.
|
|
|
|
|
|
|
|
|
|
Possible errors: Rejected
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2014-11-23 18:46:25 +08:00
|
|
|
|
Start Service Discovery Command
|
|
|
|
|
===============================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x003a
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address_Type (1 Octet)
|
|
|
|
|
RSSI_Threshold (1 Octet)
|
2014-11-27 18:55:22 +08:00
|
|
|
|
UUID_Count (1 Octet)
|
2014-11-23 18:46:25 +08:00
|
|
|
|
UUID[i] (16 Octets)
|
|
|
|
|
Return Parameters: Address_Type (1 Octet)
|
|
|
|
|
|
|
|
|
|
This command is used to start the process of discovering remote
|
|
|
|
|
devices with a specific UUID. A Device Found event will be sent
|
|
|
|
|
for each discovered device.
|
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter are a bit-wise or
|
|
|
|
|
of the following bits:
|
|
|
|
|
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 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)
|
|
|
|
|
|
|
|
|
|
The service discovery uses active scanning for Low Energy scanning
|
|
|
|
|
and will search for UUID in both advertising data and scan response
|
|
|
|
|
data.
|
|
|
|
|
|
|
|
|
|
Found devices that have a RSSI value smaller than RSSI_Threshold
|
|
|
|
|
are not reported via DeviceFound event. Setting a value of 127
|
|
|
|
|
will cause all devices to be reported.
|
|
|
|
|
|
|
|
|
|
The list of UUIDs identifies a logical OR. Only one of the UUIDs
|
|
|
|
|
have to match to cause a DeviceFound event. Providing an empty
|
|
|
|
|
list of UUIDs with Num_UUID set to 0 which means that DeviceFound
|
|
|
|
|
events are send out for all devices above the RSSI_Threshold.
|
|
|
|
|
|
2014-11-27 18:55:22 +08:00
|
|
|
|
In case RSSI_Threshold is set to 127 and UUID_Count is 0, then
|
|
|
|
|
this command behaves exactly the same as Start Discovery.
|
2014-11-23 18:46:25 +08:00
|
|
|
|
|
|
|
|
|
When the discovery procedure starts the Discovery event will
|
|
|
|
|
notify this similar to Start Discovery.
|
|
|
|
|
|
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success
|
|
|
|
|
or failure.
|
|
|
|
|
|
|
|
|
|
Possible errors: Busy
|
|
|
|
|
Not Supported
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2015-01-23 13:17:15 +08:00
|
|
|
|
Read Local Out Of Band Extended Data Command
|
|
|
|
|
============================================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x003b
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Command Parameters: Address_Type (1 Octet)
|
|
|
|
|
Return Parameters: Address_Type (1 Octet)
|
|
|
|
|
EIR_Data_Length (2 Octets)
|
|
|
|
|
EIR_Data (0-65535 Octets)
|
|
|
|
|
|
|
|
|
|
This command is used to read the local Out of Band data
|
|
|
|
|
information and provide them encoded as extended inquiry
|
|
|
|
|
response information or advertising data.
|
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter are a bit-wise or
|
|
|
|
|
of the following bits:
|
|
|
|
|
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
By combining these e.g. the following values are possible:
|
|
|
|
|
|
|
|
|
|
1 BR/EDR
|
|
|
|
|
6 LE (public & random)
|
|
|
|
|
7 Reserved (not in use)
|
|
|
|
|
|
|
|
|
|
For BR/EDR controller (Address_Type 1) the returned information
|
|
|
|
|
will contain the following information:
|
|
|
|
|
|
|
|
|
|
Class of Device
|
2015-01-26 05:16:32 +08:00
|
|
|
|
Simple Pairing Hash C-192 (optional)
|
|
|
|
|
Simple Pairing Randomizer R-192 (optional)
|
2015-01-23 13:17:15 +08:00
|
|
|
|
Simple Pairing Hash C-256 (optional)
|
|
|
|
|
Simple Pairing Randomizer R-256 (optional)
|
|
|
|
|
Service Class UUID (optional)
|
|
|
|
|
Bluetooth Local Name (optional)
|
|
|
|
|
|
|
|
|
|
The Simple Pairing Hash C-256 and Simple Pairing Randomizer R-256
|
|
|
|
|
fields are only included when secure connections has been enabled.
|
|
|
|
|
|
|
|
|
|
The Device Address (BD_ADDR) is not included in the EIR_Data and
|
|
|
|
|
needs to be taken from controller information.
|
|
|
|
|
|
|
|
|
|
For LE controller (Address_Type 6) the returned information
|
|
|
|
|
will contain the following information:
|
|
|
|
|
|
|
|
|
|
LE Bluetooth Device Address
|
|
|
|
|
LE Role
|
2015-01-26 05:16:32 +08:00
|
|
|
|
Security Manager TK Value (optional)
|
2015-01-24 04:27:08 +08:00
|
|
|
|
LE Secure Connections Confirmation Value (optional)
|
|
|
|
|
LE Secure Connections Random Value (optional)
|
2015-01-23 13:17:15 +08:00
|
|
|
|
Appearance (optional)
|
|
|
|
|
Local Name (optional)
|
|
|
|
|
Flags
|
|
|
|
|
|
2015-01-24 04:27:08 +08:00
|
|
|
|
The LE Secure Connections Confirmation Value and LE Secure Connections
|
|
|
|
|
Random Value fields are only included when secure connections has been
|
|
|
|
|
enabled.
|
2015-01-23 13:17:15 +08:00
|
|
|
|
|
|
|
|
|
The returned information from BR/EDR controller and LE controller
|
|
|
|
|
types are not related to each other. Once they have been used
|
|
|
|
|
over an Out Of Band link, a new set of information shall be
|
|
|
|
|
requested.
|
|
|
|
|
|
2015-01-26 05:16:32 +08:00
|
|
|
|
When Secure Connections Only mode has been enabled, then the fields
|
|
|
|
|
for Simple Pairing Hash C-192, Simple Pairing Randomizer R-192 and
|
|
|
|
|
Security Manager TK Value are not returned. Only the fields for
|
|
|
|
|
the strong secure connections pairing are included.
|
|
|
|
|
|
2015-01-23 13:17:15 +08:00
|
|
|
|
This command can only be used when the controller is powered.
|
|
|
|
|
|
|
|
|
|
Values returned by this command become invalid when the controller
|
|
|
|
|
is powered down. After each power-cycle it is required to call
|
|
|
|
|
this command again to get updated information.
|
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
|
|
|
|
Possible errors: Not Supported
|
|
|
|
|
Busy
|
|
|
|
|
Invalid Parameters
|
|
|
|
|
Not Powered
|
|
|
|
|
Invalid Index
|
|
|
|
|
|
|
|
|
|
|
2015-01-25 07:38:29 +08:00
|
|
|
|
Read Extended Controller Index List Command
|
|
|
|
|
===========================================
|
|
|
|
|
|
|
|
|
|
Command Code: 0x003c
|
|
|
|
|
Controller Index: <non-controller>
|
|
|
|
|
Command Parameters:
|
|
|
|
|
Return Parameters: Num_Controllers (2 Octets)
|
|
|
|
|
Controller_Index[i] (2 Octets)
|
|
|
|
|
Controller_Type[i] (1 Octet)
|
|
|
|
|
|
|
|
|
|
This command returns the list of currently known controllers. It
|
|
|
|
|
includes configured, unconfigured and alternate controllers.
|
|
|
|
|
|
|
|
|
|
Controllers added or removed after calling this command can be
|
|
|
|
|
be monitored using the Extended Index Added and Extended Index
|
|
|
|
|
Removed events.
|
|
|
|
|
|
|
|
|
|
The existing Index Added, Index Removed, Unconfigured Index Added
|
|
|
|
|
and Unconfigured Index Removed are no longer sent after this command
|
|
|
|
|
has been used at least once.
|
|
|
|
|
|
|
|
|
|
Instead of calling Read Controller Index List and Read Unconfigured
|
|
|
|
|
Controller Index List, this command combines all the information
|
|
|
|
|
and can be used to retrieve the controller list.
|
|
|
|
|
|
|
|
|
|
The Controller_Type parameter has these values:
|
|
|
|
|
|
|
|
|
|
0x00 Primary Controller (BR/EDR and/or LE)
|
|
|
|
|
0x01 Unconfigured Controller (BR/EDR and/or LE)
|
|
|
|
|
0x02 Alternate MAC/PHY Controller (AMP)
|
|
|
|
|
|
|
|
|
|
The 0x00 and 0x01 types indiciate a primary BR/EDR and/or LE
|
|
|
|
|
controller. The difference is just if they need extra configuration
|
|
|
|
|
or if they are fully configured.
|
|
|
|
|
|
|
|
|
|
Controllers in configured state will be listed as 0x00 and controllers
|
|
|
|
|
in unconfigured state will be listed as 0x01. A controller that is
|
|
|
|
|
fully configured and supports configuration changes will be listed
|
|
|
|
|
as 0x00.
|
|
|
|
|
|
|
|
|
|
Alternate MAC/PHY controllers will be listed as 0x02. They do not
|
|
|
|
|
support the difference between configured and unconfigured state.
|
|
|
|
|
|
|
|
|
|
Controllers marked as RAW only operation are currently not listed
|
|
|
|
|
by this command.
|
|
|
|
|
|
|
|
|
|
This command generates a Command Complete event on success or
|
|
|
|
|
a Command Status event on failure.
|
|
|
|
|
|
|
|
|
|
|
2010-09-20 15:41:35 +08:00
|
|
|
|
Command Complete Event
|
|
|
|
|
======================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0001
|
|
|
|
|
Controller Index: <controller id> or <non-controller>
|
|
|
|
|
Event Parameters: Command_Opcode (2 Octets)
|
|
|
|
|
Status (1 Octet)
|
|
|
|
|
Return_Parameters
|
2010-09-20 15:41:35 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event is an indication that a command has completed. The
|
|
|
|
|
fixed set of parameters includes the opcode to identify the
|
|
|
|
|
command that completed as well as a status value to indicate
|
|
|
|
|
success or failure. The rest of the parameters are command
|
|
|
|
|
specific and documented in the section for each command
|
|
|
|
|
separately.
|
|
|
|
|
|
2010-09-20 15:41:35 +08:00
|
|
|
|
|
|
|
|
|
Command Status Event
|
|
|
|
|
====================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0002
|
|
|
|
|
Controller Index: <controller id> or <non-controller>
|
|
|
|
|
Event Parameters: Command_Opcode (2 Octets)
|
|
|
|
|
Status (1 Octet)
|
2010-09-20 15:41:35 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
The command status event is used to indicate an early status for
|
|
|
|
|
a pending command. In the case that the status indicates failure
|
|
|
|
|
(anything else except success status) this also means that the
|
|
|
|
|
command has finished executing.
|
|
|
|
|
|
2012-02-24 17:06:11 +08:00
|
|
|
|
|
2010-09-20 15:41:35 +08:00
|
|
|
|
Controller Error Event
|
|
|
|
|
======================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0003
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Error_Code (1 Octet)
|
2010-11-08 04:08:23 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event maps straight to the HCI Hardware Error event and is
|
|
|
|
|
used to indicate something wrong with the controller hardware.
|
|
|
|
|
|
2010-11-08 04:08:23 +08:00
|
|
|
|
|
|
|
|
|
Index Added Event
|
|
|
|
|
=================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0004
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters:
|
2010-11-08 04:08:23 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that a new controller has been added to the
|
|
|
|
|
system. It is usually followed by a Read Controller Information
|
|
|
|
|
command.
|
|
|
|
|
|
2015-01-25 07:38:29 +08:00
|
|
|
|
Once the Read Extended Controller Index List command has been
|
|
|
|
|
used at least once, the Extended Index Added event will be
|
|
|
|
|
send instead of this one.
|
|
|
|
|
|
2010-11-08 04:08:23 +08:00
|
|
|
|
|
|
|
|
|
Index Removed Event
|
|
|
|
|
===================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0005
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters:
|
2010-12-16 06:41:41 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that a controller has been removed from the
|
|
|
|
|
system.
|
|
|
|
|
|
2015-01-25 07:38:29 +08:00
|
|
|
|
Once the Read Extended Controller Index List command has been
|
|
|
|
|
used at least once, the Extended Index Removed event will be
|
|
|
|
|
send instead of this one.
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-12-08 22:10:10 +08:00
|
|
|
|
New Settings Event
|
|
|
|
|
==================
|
2010-12-16 06:41:41 +08:00
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0006
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Current_Settings (4 Octets)
|
2011-01-21 10:49:42 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that one or more of the settings for a
|
|
|
|
|
controller has changed.
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-12-09 19:11:58 +08:00
|
|
|
|
Class Of Device Changed Event
|
|
|
|
|
=============================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0007
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Class_Of_Device (3 Octets)
|
2011-12-09 19:11:58 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that the Class of Device value for the
|
|
|
|
|
controller has changed. When the controller is powered off the
|
|
|
|
|
Class of Device value will always be reported as zero.
|
|
|
|
|
|
2011-12-09 19:11:58 +08:00
|
|
|
|
|
|
|
|
|
Local Name Changed Event
|
|
|
|
|
========================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0008
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Name (249 Octets)
|
|
|
|
|
Short_Name (11 Octets)
|
2011-12-09 19:11:58 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that the local name of the controller has
|
|
|
|
|
changed.
|
|
|
|
|
|
2011-12-09 19:11:58 +08:00
|
|
|
|
|
2011-10-24 20:24:53 +08:00
|
|
|
|
New Link Key Event
|
|
|
|
|
==================
|
2011-01-21 10:49:42 +08:00
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0009
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Store_Hint (1 Octet)
|
|
|
|
|
Key {
|
|
|
|
|
Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Key_Type (1 Octet)
|
|
|
|
|
Value (16 Octets)
|
|
|
|
|
PIN_Length (1 Octet)
|
|
|
|
|
}
|
2011-01-21 13:03:02 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that a new link key has bee generated for a
|
2014-02-01 09:41:07 +08:00
|
|
|
|
remote device.
|
|
|
|
|
|
|
|
|
|
The Store_Hint parameter indicates whether the host is expected
|
|
|
|
|
to store the key persistently or not (e.g. this would not be set
|
|
|
|
|
if the authentication requirement was "No Bonding").
|
|
|
|
|
|
2014-02-17 04:10:28 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 Reserved (not in use)
|
|
|
|
|
2 Reserved (not in use)
|
|
|
|
|
|
|
|
|
|
Public and random LE addresses are not valid and will be rejected.
|
|
|
|
|
|
2014-02-01 09:41:07 +08:00
|
|
|
|
Currently defined Key_Type values are:
|
|
|
|
|
|
|
|
|
|
0x00 Combination key
|
|
|
|
|
0x01 Local Unit key
|
|
|
|
|
0x02 Remote Unit key
|
|
|
|
|
0x03 Debug Combination key
|
|
|
|
|
0x04 Unauthenticated Combination key from P-192
|
|
|
|
|
0x05 Authenticated Combination key from P-192
|
|
|
|
|
0x06 Changed Combination key
|
|
|
|
|
0x07 Unauthenticated Combination key from P-256
|
|
|
|
|
0x08 Authenticated Combination key from P-256
|
2013-01-09 02:50:14 +08:00
|
|
|
|
|
2014-02-17 05:05:08 +08:00
|
|
|
|
Receiving this event indicates that a pairing procecure has
|
|
|
|
|
been completed.
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2012-02-02 06:31:59 +08:00
|
|
|
|
New Long Term Key Event
|
|
|
|
|
=======================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x000A
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Store_Hint (1 Octet)
|
|
|
|
|
Key {
|
|
|
|
|
Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Key_Type (1 Octet)
|
|
|
|
|
Master (1 Octet)
|
|
|
|
|
Encryption Size (1 Octet)
|
|
|
|
|
Enc. Diversifier (2 Octets)
|
|
|
|
|
Random Number (8 Octets)
|
|
|
|
|
Value (16 Octets)
|
|
|
|
|
}
|
2012-02-02 06:31:59 +08:00
|
|
|
|
|
2014-02-15 18:49:59 +08:00
|
|
|
|
This event indicates that a new long term key has been generated
|
2014-02-01 09:43:49 +08:00
|
|
|
|
for a remote device.
|
|
|
|
|
|
|
|
|
|
The Store_Hint parameter indicates whether the host is expected
|
|
|
|
|
to store the key persistently or not (e.g. this would not be set
|
|
|
|
|
if the authentication requirement was "No Bonding").
|
|
|
|
|
|
2014-02-18 15:24:43 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 Reserved (not in use)
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
The provided Address and Address_Type are the identity of
|
|
|
|
|
a device. So either its public address or static random address.
|
|
|
|
|
|
|
|
|
|
For unresolvable random addresses and resolvable random addresses
|
|
|
|
|
without identity information and identity resolving key, the
|
|
|
|
|
Store_Hint will be set to not store the long term key.
|
|
|
|
|
|
2014-02-01 09:43:49 +08:00
|
|
|
|
Currently defined Key_Type values are:
|
|
|
|
|
|
2014-12-02 19:49:46 +08:00
|
|
|
|
0x00 Unauthenticated legacy key
|
|
|
|
|
0x01 Authenticated legacy key
|
|
|
|
|
0x02 Unauthenticated key from P-256
|
|
|
|
|
0x03 Authenticated key from P-256
|
|
|
|
|
0x04 Debug key from P-256
|
2013-01-09 02:50:14 +08:00
|
|
|
|
|
2014-02-17 05:05:08 +08:00
|
|
|
|
Receiving this event indicates that a pairing procecure has
|
|
|
|
|
been completed.
|
|
|
|
|
|
2012-02-02 06:31:59 +08:00
|
|
|
|
|
2011-01-21 13:03:02 +08:00
|
|
|
|
Device Connected Event
|
|
|
|
|
======================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
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)
|
2011-10-24 20:25:58 +08:00
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
This event indicates that a successful baseband connection has
|
|
|
|
|
been created to the remote device.
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
2011-10-24 20:25:58 +08:00
|
|
|
|
0 BR/EDR
|
2011-11-09 18:57:00 +08:00
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
2011-10-24 20:25:58 +08:00
|
|
|
|
|
2014-02-19 02:39:36 +08:00
|
|
|
|
For devices using resolvable random addresses with a known
|
|
|
|
|
identity resolving key, the Address and Address_Type will
|
|
|
|
|
contain the identity information.
|
|
|
|
|
|
|
|
|
|
It is possible that devices get connected via its resolvable
|
|
|
|
|
random address and after New Identity Resolving Key event
|
|
|
|
|
start using its identity.
|
|
|
|
|
|
2012-02-24 03:51:40 +08:00
|
|
|
|
The following bits are defined for the Flags parameter:
|
|
|
|
|
0 Reserved (not in use)
|
|
|
|
|
1 Legacy Pairing
|
2014-07-01 18:58:08 +08:00
|
|
|
|
2 Reserved (not in use)
|
2012-02-24 03:51:40 +08:00
|
|
|
|
|
2011-01-21 13:03:02 +08:00
|
|
|
|
|
|
|
|
|
Device Disconnected Event
|
|
|
|
|
=========================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x000C
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Reason (1 Octet)
|
2011-10-24 20:25:58 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that the baseband connection was lost to a
|
|
|
|
|
remote device.
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
2011-10-24 20:25:58 +08:00
|
|
|
|
0 BR/EDR
|
2011-11-09 18:57:00 +08:00
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
2011-10-24 20:25:58 +08:00
|
|
|
|
|
2014-02-19 02:39:36 +08:00
|
|
|
|
For devices using resolvable random addresses with a known
|
|
|
|
|
identity resolving key, the Address and Address_Type will
|
|
|
|
|
contain the identity information.
|
|
|
|
|
|
2012-08-17 17:10:55 +08:00
|
|
|
|
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.
|
|
|
|
|
|
2011-01-21 16:57:09 +08:00
|
|
|
|
|
|
|
|
|
Connect Failed Event
|
|
|
|
|
====================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x000D
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Status (1 Octet)
|
2011-01-24 17:50:34 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that a connection attempt failed to a
|
|
|
|
|
remote device.
|
|
|
|
|
|
2012-02-17 19:41:02 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
2011-11-07 19:21:13 +08:00
|
|
|
|
0 BR/EDR
|
2011-11-09 18:57:00 +08:00
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2014-02-19 02:39:36 +08:00
|
|
|
|
For devices using resolvable random addresses with a known
|
|
|
|
|
identity resolving key, the Address and Address_Type will
|
|
|
|
|
contain the identity information.
|
|
|
|
|
|
2011-12-09 19:11:58 +08:00
|
|
|
|
|
2011-01-24 17:50:34 +08:00
|
|
|
|
PIN Code Request Event
|
|
|
|
|
======================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x000E
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Secure (1 Octet)
|
2011-02-17 04:46:20 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event is used to request a PIN Code reply from user space.
|
|
|
|
|
The reply should either be returned using the PIN Code Reply or
|
|
|
|
|
the PIN Code Negative Reply command.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2011-05-04 16:54:00 +08:00
|
|
|
|
Secure: 0x01 secure PIN code required
|
|
|
|
|
0x00 secure PIN code not required
|
2011-02-17 04:46:20 +08:00
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-02-17 04:46:20 +08:00
|
|
|
|
User Confirmation Request Event
|
|
|
|
|
===============================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x000F
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Confirm_Hint (1 Octet)
|
|
|
|
|
Value (4 Octets)
|
2011-02-19 03:52:59 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event is used to request a user confirmation request from
|
2014-02-18 01:55:15 +08:00
|
|
|
|
user space.
|
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
If the Confirm_Hint parameter value is 0x01 this means that
|
|
|
|
|
a simple "Yes/No" confirmation should be presented to the user
|
|
|
|
|
instead of a full numerical confirmation (in which case the
|
|
|
|
|
parameter value will be 0x00).
|
2013-01-09 02:50:14 +08:00
|
|
|
|
|
|
|
|
|
User space should respond to this command either using the User
|
|
|
|
|
Confirmation Reply or the User Confirmation Negative Reply
|
|
|
|
|
command.
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-10-24 20:25:34 +08:00
|
|
|
|
User Passkey Request Event
|
|
|
|
|
==========================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0010
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2011-02-19 03:52:59 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event is used to request a passkey from user space. The
|
|
|
|
|
response to this event should either be the User Passkey Reply
|
|
|
|
|
command or the User Passkey Negative Reply command.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-02-19 03:52:59 +08:00
|
|
|
|
Authentication Failed Event
|
|
|
|
|
===========================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0011
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Status (1 Octet)
|
2011-03-16 01:31:15 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that there was an authentication failure
|
|
|
|
|
with a remote device.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-03-30 18:21:25 +08:00
|
|
|
|
Device Found Event
|
|
|
|
|
==================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
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)
|
2011-03-30 18:21:25 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that a device was found during device
|
|
|
|
|
discovery.
|
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
2011-10-24 20:25:58 +08:00
|
|
|
|
0 BR/EDR
|
2011-11-09 18:57:00 +08:00
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
2011-10-24 20:25:58 +08:00
|
|
|
|
|
2012-01-13 19:59:49 +08:00
|
|
|
|
The following bits are defined for the Flags parameter:
|
|
|
|
|
0 Confirm name
|
|
|
|
|
1 Legacy Pairing
|
2014-07-01 18:58:08 +08:00
|
|
|
|
2 Not Connectable
|
2011-03-31 19:36:43 +08:00
|
|
|
|
|
2014-12-05 20:20:18 +08:00
|
|
|
|
For the RSSI field a value of 127 indicates that the RSSI is
|
|
|
|
|
not available. That can happen with Bluetooth 1.1 and earlier
|
|
|
|
|
controllers or with bad radio conditions.
|
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
The Confirm name flag indicates that the kernel wants to know
|
|
|
|
|
whether user space knows the name for this device or not. If
|
|
|
|
|
this flag is set user space should respond to it using the
|
|
|
|
|
Confirm Name command.
|
|
|
|
|
|
|
|
|
|
The Legacy Pairing flag indicates that Legacy Pairing is likely
|
|
|
|
|
to occur when pairing with this device. An application could use
|
|
|
|
|
this information to optimize the pairing process by locally
|
|
|
|
|
pre-generating a PIN code and thereby eliminate the risk of
|
|
|
|
|
local input timeout when pairing. Note that there is a risk of
|
|
|
|
|
false-positives for this flag so user space should be able to
|
|
|
|
|
handle getting something else as a PIN Request when pairing.
|
|
|
|
|
|
2014-07-01 18:58:08 +08:00
|
|
|
|
The Not Connectable flag indicates that the device will not
|
|
|
|
|
accept any connections. This can be indicated by Low Energy
|
|
|
|
|
devices that are in broadcaster role.
|
|
|
|
|
|
2011-03-31 19:36:43 +08:00
|
|
|
|
|
|
|
|
|
Discovering Event
|
|
|
|
|
=================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0013
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address_Type (1 Octet)
|
|
|
|
|
Discovering (1 Octet)
|
2011-09-23 16:57:02 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that the controller has started discovering
|
|
|
|
|
devices. This discovering state can come and go multiple times
|
2014-11-23 18:46:25 +08:00
|
|
|
|
between a Start Discovery and a Stop Discovery commands.
|
|
|
|
|
|
2014-11-27 16:13:00 +08:00
|
|
|
|
The Start Service Discovery command will also trigger this event.
|
2013-01-09 02:50:14 +08:00
|
|
|
|
|
|
|
|
|
The valid values for the Discovering parameter are 0x01
|
|
|
|
|
(enabled) and 0x00 (disabled).
|
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-09-23 16:57:02 +08:00
|
|
|
|
Device Blocked Event
|
|
|
|
|
====================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0014
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2011-09-23 16:57:02 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that a device has been blocked using the
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Block Device command.
|
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
The event will only be sent to Management sockets other than the
|
|
|
|
|
one through which the command was sent.
|
2013-01-09 02:50:14 +08:00
|
|
|
|
|
2011-10-25 04:48:14 +08:00
|
|
|
|
|
2011-09-23 16:57:02 +08:00
|
|
|
|
Device Unblocked Event
|
|
|
|
|
======================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0015
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2012-02-06 18:03:11 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that a device has been unblocked using the
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Unblock Device command.
|
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
The event will only be sent to Management sockets other than the
|
|
|
|
|
one through which the command was sent.
|
2013-01-09 02:50:14 +08:00
|
|
|
|
|
2012-02-06 18:03:11 +08:00
|
|
|
|
|
2012-02-21 04:10:09 +08:00
|
|
|
|
Device Unpaired Event
|
|
|
|
|
=====================
|
2012-02-06 18:03:11 +08:00
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0016
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2012-09-04 18:52:20 +08:00
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
This event indicates that a device has been unpaired (i.e. all
|
|
|
|
|
its keys have been removed from the kernel) using the Unpair
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Device command.
|
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2014-02-19 02:39:36 +08:00
|
|
|
|
For devices using resolvable random addresses with a known
|
|
|
|
|
identity resolving key, the event paramters will contain
|
|
|
|
|
the identity. After receiving this event, the device will
|
|
|
|
|
become essentially private again.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
The event will only be sent to Management sockets other than the
|
|
|
|
|
one through which the Unpair Device command was sent.
|
2013-01-09 02:50:14 +08:00
|
|
|
|
|
2012-09-04 18:52:20 +08:00
|
|
|
|
|
|
|
|
|
Passkey Notify Event
|
|
|
|
|
====================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0017
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Passkey (4 Octets)
|
|
|
|
|
Entered (1 Octet)
|
2013-01-09 02:50:14 +08:00
|
|
|
|
|
|
|
|
|
This event is used to request passkey notification to the user.
|
|
|
|
|
Unlike the other authentication events it does not need
|
|
|
|
|
responding to using any Management command.
|
|
|
|
|
|
2014-02-18 01:55:15 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 BR/EDR
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
2013-01-09 02:50:14 +08:00
|
|
|
|
The Passkey parameter indicates the passkey to be shown to the
|
|
|
|
|
user whereas the Entered parameter indicates how many characters
|
|
|
|
|
the user has entered on the remote side.
|
2014-02-18 15:24:43 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
New Identity Resolving Key Event
|
|
|
|
|
================================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0018
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Store_Hint (1 Octet)
|
|
|
|
|
Random_Address (6 Octets)
|
|
|
|
|
Key {
|
|
|
|
|
Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Value (16 Octets)
|
|
|
|
|
}
|
2014-02-18 15:24:43 +08:00
|
|
|
|
|
|
|
|
|
This event indicates that a new identity resolving key has been
|
|
|
|
|
generated for a remote device.
|
|
|
|
|
|
|
|
|
|
The Store_Hint parameter indicates whether the host is expected
|
|
|
|
|
to store the key persistently or not.
|
|
|
|
|
|
|
|
|
|
The Random_Address provides the resolvable random address that
|
|
|
|
|
was resolved into an identity. A value of 00:00:00:00:00:00
|
|
|
|
|
indicates that the identity resolving key was provided for
|
|
|
|
|
a public address or static random address.
|
|
|
|
|
|
|
|
|
|
Once this event has been send for a resolvable random address,
|
|
|
|
|
all further events mapping this device will send out using the
|
|
|
|
|
identity address information.
|
|
|
|
|
|
|
|
|
|
This event also indicates that now the identity address should
|
|
|
|
|
be used for commands instead of the resolvable random address.
|
|
|
|
|
|
2014-06-23 04:05:51 +08:00
|
|
|
|
It is possible that some devices allow discovering via its
|
|
|
|
|
identity address, but after pairing using resolvable private
|
|
|
|
|
address only. In such a case Store_Hint will be 0x00 and the
|
|
|
|
|
Random_Address will indicate 00:00:00:00:00:00. For these devices,
|
|
|
|
|
the Privacy Characteristic of the remote GATT database should
|
|
|
|
|
be consulted to decide if the identity resolving key must be
|
|
|
|
|
stored persistently or not.
|
|
|
|
|
|
|
|
|
|
Devices using Set Privacy command with the option 0x02 would
|
|
|
|
|
be such type of device.
|
|
|
|
|
|
2014-02-18 15:24:43 +08:00
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 Reserved (not in use)
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
The provided Address and Address_Type are the identity of
|
|
|
|
|
a device. So either its public address or static random address.
|
2014-03-10 03:12:25 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
New Signature Resolving Key Event
|
|
|
|
|
=================================
|
|
|
|
|
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Event Code: 0x0019
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Store_Hint (1 Octet)
|
|
|
|
|
Key {
|
|
|
|
|
Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
2015-02-26 23:55:31 +08:00
|
|
|
|
Type (1 Octet)
|
2014-03-10 04:21:34 +08:00
|
|
|
|
Value (16 Octets)
|
|
|
|
|
}
|
2014-03-10 03:12:25 +08:00
|
|
|
|
|
|
|
|
|
This event indicates that a new signature resolving key has been
|
|
|
|
|
generated for either the master or slave device.
|
|
|
|
|
|
|
|
|
|
The Store_Hint parameter indicates whether the host is expected
|
|
|
|
|
to store the key persistently or not.
|
|
|
|
|
|
2015-02-26 23:55:31 +08:00
|
|
|
|
The Type parameter has the following possible values:
|
|
|
|
|
|
|
|
|
|
0x00 Unauthenticated local CSRK
|
|
|
|
|
0x01 Unauthenticated remote CSRK
|
|
|
|
|
0x02 Authenticated local CSRK
|
|
|
|
|
0x03 Authenticated remote CSRK
|
2014-03-10 03:12:25 +08:00
|
|
|
|
|
2015-02-26 23:55:31 +08:00
|
|
|
|
The local keys are used for signing data to be sent to the
|
|
|
|
|
remote device, whereas the remote keys are used to verify
|
|
|
|
|
signatures received from the remote device.
|
2014-03-10 03:12:25 +08:00
|
|
|
|
|
|
|
|
|
The local signature resolving key will be generated with each
|
2015-02-26 23:55:31 +08:00
|
|
|
|
pairing request. Only after receiving this event with the Type
|
|
|
|
|
indicating a local key is it possible to use ATT Signed Write
|
2014-03-10 03:12:25 +08:00
|
|
|
|
procedures.
|
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 Reserved (not in use)
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
The provided Address and Address_Type are the identity of
|
|
|
|
|
a device. So either its public address or static random address.
|
2014-06-23 04:00:42 +08:00
|
|
|
|
|
|
|
|
|
|
2014-06-30 05:24:42 +08:00
|
|
|
|
Device Added Event
|
|
|
|
|
==================
|
|
|
|
|
|
|
|
|
|
Event Code: 0x001a
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Action (1 Octet)
|
|
|
|
|
|
|
|
|
|
This event indicates that a device has been added using the
|
|
|
|
|
Add Device command.
|
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter:
|
2014-07-24 00:48:49 +08:00
|
|
|
|
0 BR/EDR
|
2014-06-30 05:24:42 +08:00
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
The event will only be sent to management sockets other than the
|
|
|
|
|
one through which the command was sent.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Device Removed Event
|
|
|
|
|
====================
|
|
|
|
|
|
|
|
|
|
Event Code: 0x001b
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
|
|
|
|
|
This event indicates that a device has been removed using the
|
|
|
|
|
Remove Device command.
|
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter:
|
2014-07-24 00:48:49 +08:00
|
|
|
|
0 BR/EDR
|
2014-06-30 05:24:42 +08:00
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
The event will only be sent to management sockets other than the
|
|
|
|
|
one through which the command was sent.
|
|
|
|
|
|
|
|
|
|
|
2014-06-23 04:00:42 +08:00
|
|
|
|
New Connection Parameter Event
|
|
|
|
|
==============================
|
|
|
|
|
|
2014-06-30 05:25:38 +08:00
|
|
|
|
Event Code: 0x001c
|
2014-06-23 04:00:42 +08:00
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Store_Hint (1 Octet)
|
|
|
|
|
Param {
|
|
|
|
|
Address (6 Octets)
|
|
|
|
|
Address_Type (1 Octet)
|
|
|
|
|
Min_Connection_Interval (2 Octets)
|
|
|
|
|
Max_Connection_Interval (2 Octes)
|
|
|
|
|
Connection_Latency (2 Octets)
|
|
|
|
|
Supervision_Timeout (2 Octets)
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-23 13:05:13 +08:00
|
|
|
|
This event indicates a new set of connection parameters from
|
2014-06-23 04:00:42 +08:00
|
|
|
|
a peripheral device.
|
|
|
|
|
|
|
|
|
|
The Store_Hint parameter indicates whether the host is expected
|
2014-06-23 13:05:13 +08:00
|
|
|
|
to store this information persistently or not.
|
2014-06-23 04:00:42 +08:00
|
|
|
|
|
|
|
|
|
Possible values for the Address_Type parameter:
|
|
|
|
|
0 Reserved (not in use)
|
|
|
|
|
1 LE Public
|
|
|
|
|
2 LE Random
|
|
|
|
|
|
|
|
|
|
The Min_Connection_Interval, Max_Connection_Interval,
|
|
|
|
|
Connection_Latency and Supervision_Timeout parameters are
|
|
|
|
|
encoded as described in Core 4.1 spec, Vol 2, 7.7.65.3.
|
2014-07-02 07:45:11 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Unconfigured Index Added Event
|
|
|
|
|
==============================
|
|
|
|
|
|
|
|
|
|
Event Code: 0x001d
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters:
|
|
|
|
|
|
|
|
|
|
This event indicates that a new unconfigured controller has been
|
|
|
|
|
added to the system. It is usually followed by a Read Controller
|
|
|
|
|
Configuration Information command.
|
|
|
|
|
|
|
|
|
|
Only when a controller requires further configuration, it will
|
|
|
|
|
be announced with this event. If it supports configuration, but
|
|
|
|
|
does not require it, then an Index Added event will be used.
|
2014-07-03 03:43:00 +08:00
|
|
|
|
|
2015-01-25 07:38:29 +08:00
|
|
|
|
Once the Read Extended Controller Index List command has been
|
|
|
|
|
used at least once, the Extended Index Added event will be
|
|
|
|
|
send instead of this one.
|
|
|
|
|
|
2014-07-04 01:52:45 +08:00
|
|
|
|
|
2014-07-03 03:43:00 +08:00
|
|
|
|
Unconfigured Index Removed Event
|
|
|
|
|
================================
|
|
|
|
|
|
|
|
|
|
Event Code: 0x001e
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters:
|
|
|
|
|
|
|
|
|
|
This event indicates that an unconfigured controller has been
|
|
|
|
|
removed from the system.
|
2014-07-05 01:07:06 +08:00
|
|
|
|
|
2015-01-25 07:38:29 +08:00
|
|
|
|
Once the Read Extended Controller Index List command has been
|
|
|
|
|
used at least once, the Extended Index Removed event will be
|
|
|
|
|
send instead of this one.
|
|
|
|
|
|
2014-07-05 01:07:06 +08:00
|
|
|
|
|
|
|
|
|
New Configuration Options Event
|
|
|
|
|
===============================
|
|
|
|
|
|
|
|
|
|
Event Code: 0x001f
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Missing_Options (4 Octets)
|
|
|
|
|
|
|
|
|
|
This event indicates that one or more of the options for the
|
|
|
|
|
controller configuration has changed.
|
2015-01-25 07:38:29 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Extended Index Added Event
|
|
|
|
|
==========================
|
|
|
|
|
|
|
|
|
|
Event Code: 0x0020
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Controller_Type (1 Octet)
|
|
|
|
|
|
|
|
|
|
This event indicates that a new controller index has been
|
|
|
|
|
added to the system.
|
|
|
|
|
|
|
|
|
|
This event will only be used after Read Extended Controller Index
|
|
|
|
|
List has been used at least once. If it has not been used, then
|
|
|
|
|
Index Added and Unconfigured Index Added are send instead.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Extended Index Removed Event
|
|
|
|
|
============================
|
|
|
|
|
|
|
|
|
|
Event Code: 0x0021
|
|
|
|
|
Controller Index: <controller id>
|
|
|
|
|
Event Parameters: Controller_Type (1 Octet)
|
|
|
|
|
|
|
|
|
|
This event indicates that an existing controller index has been
|
|
|
|
|
removed from the system.
|
|
|
|
|
|
|
|
|
|
This event will only be used after Read Extended Controller Index
|
|
|
|
|
List has been used at least once. If it has not been used, then
|
|
|
|
|
Index Removed and Unconfigured Index Removed are send instead.
|