+ 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
+
+
+Set Static Address Command
+==========================
+
+ Command Code: 0x002B
+ Controller Index: <controller id>
+ Command Parameters: Address (6 Octets)
+ Return Parameters: Current_Settings (4 Octets)
+
+ 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.
+
+ When a controller has a public address (which is required for
+ all dual-mode controllers), this address is not used. If a dual-mode
+ controller is configured as Low Energy only devices (BR/EDR has
+ been switched off), then the static address is 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.
+
+ The Static Address flag from the current settings can also be used
+ to determine if the configured static address is in use or not.
+
+ 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
+
+
+Set Scan Parameters Command
+===========================
+
+ Command Code: 0x002C
+ Controller Index: <controller id>
+ Command Parameters: Interval (2 Octets)
+ 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
+
+
+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
+ 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.
+
+ This command is only available for LE capable controllers as
+ well as controllers supporting the core specification version
+ 4.1 or greater.
+
+ 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
+
+
+Set Debug Keys Command
+======================
+
+ Command Code: 0x002E
+ Controller Index: <controller id>
+ Command Parameters: Debug_Keys (1 Octet)
+ Return Parameters: Current_Settings (4 Octets)
+
+ This command is used to tell the kernel whether to accept the
+ usage of debug keys or not. The allowed values for this parameter
+ 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.
+
+ 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
+
+
+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.
+
+ 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
+ private address. In case the conroller is bondable and discoverable
+ the identity address is used. Also when pairing is initiated, the
+ connection will be established with the identity address.
+
+ Exposing the identity address when bondable and discoverable or
+ 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.
+
+ 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
+
+#ifdef __TIZEN_PATCH__
+Generate Identity Resolving Key Command
+=======================================
+
+ Command Code: 0x00F6
+ Controller Index: <controller id>
+ Command Parameters:
+ Return Parameters:
+
+ This command is used to generate identity resolving key for the
+ local device, which will be used at the time of pairing for key
+ distribution and to generate resolvable private address for local device.
+
+ This command generates a Command Complete event on success
+ or a Command Status event on failure.
+
+ Possible errors: Failed
+ Invalid Index
+
+Generate Resolvable Private Address Command
+=======================================
+
+ Command Code: 0x00F5
+ Controller Index: <controller id>
+ Command Parameters:
+ Return Parameters: Resolvable Private Address (6 Octets)
+
+ This command is used to generate resolvable private address for the
+ local device when LE privacy is supported and device is having its IRK.
+
+ This command returns generated private address which is resolvable
+ by remote device on success.
+
+ This command generates a Command Complete event on success
+ or a Command Status event on failure.
+
+ Possible errors: Failed
+ Invalid Index
+
+Set Random Address Command
+==========================
+
+ Command Code: 0x00F4
+ Controller Index: <controller id>
+ Command Parameters: Resolvable Private Address (6 Octets)
+ Return Parameters:
+
+ This command is used to set the random address to local controller.
+ If local device supports LE Privacy then this command will be called to set
+ its Random address while active scanning remote devices and in the case of
+ advertising itself.
+
+ This command intern calls the HCI Set Random address command from kernel
+ space to set the RPA to controller.
+
+ This command generates a Command Complete event on success
+ or a Command Status event on failure.
+
+ Possible errors: Failed
+ Invalid Index
+
+#endif
+
+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.
+
+ Possible values for the Address_Type parameter:
+ 0 BR/EDR
+ 1 LE Public
+ 2 LE Random
+
+ TX_Power and Max_TX_Power can be set to 127 if values are invalid or
+ unknown. A value of 127 for RSSI indicates that it is not available.
+
+ 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
+
+
+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
+
+
+Add Device Command
+==================
+
+ Command Code: 0x0033
+ Controller Index: <controller id>
+ Command Parameters: Address (6 Octets)
+ Address_Type (1 Octet)
+ Action (1 Octet)
+ Return Parameters: Address (6 Octets)
+ Address_Type (1 Octet)
+
+ This command is used to add a device to the action list. The
+ action list allows scanning for devices and enables incoming
+ connections from known devices.
+
+ Possible values for the Address_Type parameter:
+ 0 BR/EDR
+ 1 LE Public
+ 2 LE Random
+
+ Possible values for the Action parameter:
+ 0 Background scan for device
+ 1 Allow incoming connection
+ 2 Auto-connect remote device
+
+ With the Action 0, when the device is found, a new Device Found
+ event will be send indicating this device is available. This
+ action is only valid for LE Public and LE Random address types.
+
+ With the Action 1, the device is allowed to connect. For BR/EDR
+ address type this means an incoming connection. For LE Public
+ 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.
+
+ 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.
+
+ Devices added with Action 1 are allowed to connect even if the
+ connectable setting is off. This acts as list of known trusted
+ devices.
+
+ This command can be used when the controller is not powered and
+ all settings will be programmed once powered.
+
+ This command generates a Command Complete event on success
+ or failure.
+
+ Possible errors: Failed
+ Invalid Parameters
+ Invalid Index
+
+
+Remove Device Command
+=====================
+
+ Command Code: 0x0034
+ Controller Index: <controller id>
+ Command Parameters: Address (6 Octets)
+ Address_Type (1 Octet)
+ Return Parameters: Address (6 Octets)
+ Address_Type (1 Octet)
+
+ This command is used to remove a device from the action list
+ previously added by using the Add Device command.
+
+ Possible values for the Address_Type parameter:
+ 0 BR/EDR
+ 1 LE Public
+ 2 LE Random
+
+ When the Address parameter is 00:00:00:00:00:00, then all
+ previously added devices will be removed.
+
+ This command can be used when the controller is not powered and
+ all settings will be programmed once powered.
+
+ This command generates a Command Complete event on success
+ or failure.
+
+ Possible errors: Invalid Parameters
+ Invalid Index
+
+
+Load Connection Parameters Command
+==================================
+
+ Command Code: 0x0035
+ 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
+
+
+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
+ 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.
+
+ 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)
+ Supported_Options (4 Octets)
+ Missing_Options (4 Octets)
+
+ 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.
+
+ Supported_Options and Missing_Options is a bitmask with currently
+ the following available bits:
+
+ 0 External configuration
+ 1 Bluetooth public address configuration
+
+ 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
+ Missing_Options mask would become empty, then the now ready
+ controller will be announced via Index Added event.
+
+ This command generates a Command Complete event on success or
+ a Command Status event on failure.
+
+ Possible errors: Invalid Parameters
+ Invalid Index
+
+
+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
+
+
+Set Public Address Command
+==========================
+
+ Command Code: 0x0039
+ Controller Index: <controller id>
+ Command Parameters: Address (6 Octets)
+ Return Parameters: Missing_Options (4 Octets)
+
+ 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
+ indicated in the supported options mask, then this command
+ can be used to configure the public address.
+
+ It is only possible to configure the public address when the
+ controller is powered off.
+
+ 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.
+
+ For a fully configured controller, the current controller index
+ 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.
+
+ 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
+
+
+Start Service Discovery Command
+===============================
+
+ Command Code: 0x003a
+ Controller Index: <controller id>
+ Command Parameters: Address_Type (1 Octet)
+ RSSI_Threshold (1 Octet)
+ UUID_Count (1 Octet)
+ 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.
+
+ In case RSSI_Threshold is set to 127 and UUID_Count is 0, then
+ this command behaves exactly the same as Start Discovery.
+
+ 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
+
+
+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
+ Simple Pairing Hash C-192 (optional)
+ Simple Pairing Randomizer R-192 (optional)
+ 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
+ Security Manager TK Value (optional)
+ LE Secure Connections Confirmation Value (optional)
+ LE Secure Connections Random Value (optional)
+ Appearance (optional)
+ Local Name (optional)
+ Flags
+
+ The LE Secure Connections Confirmation Value and LE Secure Connections
+ Random Value fields are only included when secure connections has been
+ enabled.
+
+ 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.
+
+ 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.
+
+ 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
+
+
+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.
+
+
+Command Complete Event
+======================
+
+ Event Code: 0x0001
+ Controller Index: <controller id> or <non-controller>
+ Event Parameters: Command_Opcode (2 Octets)
+ Status (1 Octet)
+ Return_Parameters
+
+ 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.
+
+
+Command Status Event
+====================
+
+ Event Code: 0x0002
+ Controller Index: <controller id> or <non-controller>
+ Event Parameters: Command_Opcode (2 Octets)
+ Status (1 Octet)
+
+ 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.
+
+
+Controller Error Event
+======================
+
+ Event Code: 0x0003
+ Controller Index: <controller id>
+ Event Parameters: Error_Code (1 Octet)
+
+ This event maps straight to the HCI Hardware Error event and is
+ used to indicate something wrong with the controller hardware.
+
+
+Index Added Event
+=================
+
+ Event Code: 0x0004
+ Controller Index: <controller id>
+ Event Parameters:
+
+ This event indicates that a new controller has been added to the
+ system. It is usually followed by a Read Controller Information
+ command.
+
+ 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.
+
+
+Index Removed Event