Saturday, February 2, 2013

BLUETOOTH HOST CONTROLER

https://qualweb.bluetooth.org/Building/HowTechnologyWorks/Architecture/HCI.htm


Host Controller Interface (HCI)

General Description

The HCI provides a command interface to the baseband controller and link manager, and access to configuration parameters. This interface provides a uniform method of accessing the Bluetooth baseband capabilities.

Lower Layers of the Bluetooth Software Stack

 The figure to the left provides an overview of the lower software layers. The HCI firmware implements the HCI Commands for the Bluetooth hardware by accessing baseband commands, link manager commands, hardware status registers, control registers and event registers. Several layers may exist between the HCI driver on the host system and the HCI firmware in the Bluetooth hardware. These intermediate layers, the Host Controller Transport Layer, provide the ability to transfer data without intimate knowledge of the data.The HCI driver on the Host exchanges data and commands with the HCI firmware on the Bluetooth hardware. The Host Control Transport Layer (i.e. physical bus) driver provides both HCI layers with the ability to exchange information with each other. The Host will receive asynchronous notifications of HCI events independent of which Host Controller Transport Layer is used. HCI events are used for notifying the Host when something occurs. When the Host discovers that an event has occurred it will then parse the received event packet to determine which event occurred. 

Host Controller Transport Layer

The host driver stack has a transport layer between the Host Controller driver and the Host. The main goal of this transport layer is transparency. The Host Controller driver (which interfaces to the Controller) should be independent of the underlying transport technology. Nor should the transport require any visibility into the data that the Host Controller driver passes to the Controller. This allows the interface (HCI) or the Controller to be upgraded without affecting the transport layer.  




Overview of HCI Commands and Events

Generic Events

The generic events can occur due to multiple commands, or events that can occur at any time.

Device Setup

The device setup commands are used to place the Controller into a known state.

Controller Flow Control

The controller flow control commands and events are used to control data flow from the Host to the controller.

Controller Information

The controller information commands allow the Host to discover local information about the device.

Controller Configuration

The controller configuration commands and events allow the global configuration parameters to be configured.

Device Discovery

The device discovery commands and events allow a device to discover other devices in the surrounding area.

Connection Setup

The connection setup commands and events allow a device to make a connection to another device.

Remote Information

The remote information commands and events allow information about a remote device's configuration to be discovered.

Synchronous Connections

The synchronous connection commands and events allow synchronous connections to be created

Connection State

The connection state commands and events allow the configuration of a link, especially for low power operation.

Piconet Structure

The piconet structure commands and events allow the discovery and reconfiguration of piconet.

Quality of Service

The quality of service commands and events allow quality of service parameters to be specified.

Physical Links

The physical link commands and events allow the configuration of a physical link.

Host Flow Control

The Host flow control commands and events allow flow control to be used towards the Host.

Link Information

The link information commands and events allow information about a link to be read.

Authentication and Encryption

The authentication and encryption commands and events allow authentication of a remote device and then encryption of the link.

Testing

The testing commands and events allow a device to be placed into test mode.

 

HCI Flow Control

Host to Controller Data Flow Control

Flow control is used in the direction from the Host to the Controller to avoid overflowing the Controller data buffers with ACL data destined for a remote device (using a Connection Handle) that is not responding. The Host manages the data buffers of the Controller.

Controller to Host Data Flow Control

In some implementations, flow control may also be necessary in the direction from the Controller to the Host. The Set Host Controller To Host Flow Control command can be used to turn flow control on or off in that direction. 

No comments:

Post a Comment