Skip to content

Cordio Documentation: Explain how to tests and what tools are available. #7417

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Aug 24, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 22 additions & 22 deletions features/FEATURE_BLE/targets/TARGET_CORDIO/doc/HCIAbstraction.md
Original file line number Diff line number Diff line change
@@ -1,44 +1,44 @@
# HCI abstraction architecture

The HCI driver is split into two interfaces:
* `CordioHCIDriver`: It is the driver for a BLE controller. It contains
the primitive necessary to start and initialize the controller.
* `CordioHCITransport`: It is the transport interface which is used by the HCI
* `CordioHCIDriver`: It is the driver for a BLE controller. It contains
the primitive necessary to start and initialize the controller.
* `CordioHCITransport`: It is the transport interface which is used by the HCI
driver to communicate with the controller.

A `CordioHCITransport` is injected into a `CordioHCIDriver` at construction
A `CordioHCITransport` is injected into a `CordioHCIDriver` at construction
time. A `CordioHCIDriver` is also injected at construction time of a `BLECordio`
instance.
instance.

This can be summarized in the following diagram:
This can be summarized in the following diagram:

![](resources/architecture.png)

## CordioHCITransportDriver

The single responsabilities of this a driver is to handle the communication with
the Bluetooth module. Basically, sending and reading bytes.
The single responsibility of this driver is to handle the communication with
the Bluetooth module. Basically, sending and reading bytes.

Given that the Bluetooth specification define standard transport interface, an
implementation of the H4 interface is bundled in this port. It might be extended
in the future with an implementation of the H5 interface. However there is no
Given that the Bluetooth specification defines standard transport interface, an
implementation of the H4 interface is bundled in this port. It might be extended
in the future with an implementation of the H5 interface. However, there is no
plan to provide the SDIO implementation at the moment.

This interface is defined in the header file
This interface is defined in the header file
[CordioHCITransportDriver.h](../driver/CordioHCITransportDriver.h)

## CordioHCIDriver

The responsibilities of this driver are:
* Provide the memory which will used by the Bluetooth stack.
* Initialize the bluetooth controller.
* Handle the reset/startup sequence of the bluetooth controller.
The responsibilities of this driver are:
* Provide the memory which will used by the Bluetooth stack.
* Initialize the Bluetooth controller.
* Handle the reset/startup sequence of the Bluetooth controller.

This interface is defined in the header file
This interface is defined in the header file
[CordioHCIDriver.h](../driver/CordioHCIDriver.h)

A partial implementation is present in the file
[CordioHCIDriver.cpp](../driver/CordioHCIDriver.cpp). It defines the function
delivering memory to the stack and a complete reset sequence. However it does
not define any initialization for the Bluetooth controller, this part being
specific to the controller used.
A partial implementation is present in the file
[CordioHCIDriver.cpp](../driver/CordioHCIDriver.cpp). It defines the function
delivering memory to the stack and a complete reset sequence. However, it does
not define any initialization for the Bluetooth controller, this part being
specific to the controller used.
Loading