mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-10 15:40:11 +00:00
manual: added references to figures
This commit is contained in:
parent
522eb16b98
commit
b51d662ece
@ -17,7 +17,7 @@ the architecture follows these fundamental design guidelines:
|
||||
- *Statically bounded memory (optionally)* - The number of maximum
|
||||
connections/channels/services can be configured.
|
||||
|
||||
Figure [below](#fig:BTstackArchitecture) shows the general architecture of a
|
||||
Figure {@fig:BTstackArchitecture} shows the general architecture of a
|
||||
BTstack-based single-threaded application that includes the BTstack run loop.
|
||||
The Main Application contains the application logic, e.g., reading a sensor value and
|
||||
providing it via the Communication Logic as a SPP Server. The
|
||||
@ -28,7 +28,7 @@ for providing timers and processing incoming data.
|
||||
|
||||
<a name="fig:BTstackArchitecture"></a>
|
||||
|
||||
![Architecture of a BTstack-based application.](picts/btstack-architecture.png)
|
||||
![Architecture of a BTstack-based application.](picts/btstack-architecture.png) {#fig:BTstackArchitecture}
|
||||
|
||||
## Single threaded design
|
||||
|
||||
|
@ -91,7 +91,7 @@ before its event handler callback is executed. If you need a periodic
|
||||
timer, you can re-register the same timer source in the callback
|
||||
function, as shown in Listing [PeriodicTimerHandler]. Note that BTstack
|
||||
expects to get called periodically to keep its time, see Section
|
||||
[section:timeAbstraction] for more on the tick hardware abstraction.
|
||||
[on time abstraction](#section:test) for more on the tick hardware abstraction.
|
||||
|
||||
The run loop is set up by calling *run_loop_init* function for
|
||||
embedded systems:
|
||||
@ -111,7 +111,7 @@ communication over the UART.
|
||||
|
||||
<a nam="sec:btstack_initialization"></a>
|
||||
|
||||
## BTstack initialization
|
||||
## BTstack initialization {#section:test}
|
||||
|
||||
To initialize BTstack you need to [initialize the memory](#section:memory_configuration)
|
||||
and [the run loop](#section:run_loop) respectively, then setup HCI and all needed higher
|
||||
|
@ -17,11 +17,10 @@ Communication Logic for its Bluetooth communication.
|
||||
|
||||
|
||||
In a single-threaded environment, all application components run on the
|
||||
same (single) thread and use direct function calls as shown in Figure [below](#fig:BTstackSingle).
|
||||
same (single) thread and use direct function calls as shown in
|
||||
Figure {@fig:BTstackSingle}.
|
||||
|
||||
<a name="fig:BTstackSingle"></a>
|
||||
|
||||
![BTstack in single-threaded environment](picts/singlethreading-btstack.png)
|
||||
![BTstack in single-threaded environment.](picts/singlethreading-btstack.png) {#fig:BTstackSingle}
|
||||
|
||||
BTstack provides a basic run loop that supports the concept of data
|
||||
sources and timers, which can be registered centrally. This works well
|
||||
@ -57,16 +56,17 @@ common options:
|
||||
- The Communication Logic is implemented on a dedicated BTstack
|
||||
thread, and the Main Application communicates with the BTstack
|
||||
thread via application-specific messages over an Interprocess
|
||||
Communication (IPC). This option results in less code and quick
|
||||
adaption.
|
||||
Communication (IPC) as depicted in Figure {@fig:MTMonolithic}.
|
||||
This option results in less code and quick adaption.
|
||||
|
||||
![](picts/multithreading-monolithic.png)
|
||||
![BTstack in multi-threaded environment - monolithic solution.](picts/multithreading-monolithic.png) {#fig:MTMonolithic}
|
||||
|
||||
- BTstack must be extended to run standalone, i.e, as a Daemon, on a
|
||||
dedicated thread and the Main Application controls this daemon via
|
||||
BTstack extended HCI command over IPC - this is used for the
|
||||
non-embedded version of BTstack e.g., on the iPhone.
|
||||
This option requires more code but provides more flexibility.
|
||||
non-embedded version of BTstack e.g., on the iPhone and it is depicted
|
||||
in Figure {@fig:MTDaemon}. This option requires more code but provides
|
||||
more flexibility.
|
||||
|
||||
![](picts/multithreading-btdaemon.png)
|
||||
![BTstack in multi-threaded environment - solution with daemon.](picts/multithreading-btdaemon.png) {#fig:MTDaemon}
|
||||
|
@ -1,7 +1,7 @@
|
||||
In this section, we highlight the BTstack components that need to be
|
||||
adjusted for different hardware platforms.
|
||||
|
||||
<a name="sec:timeAbstraction"></a>
|
||||
<a name="section:timeAbstraction"></a>
|
||||
|
||||
## Time Abstraction Layer
|
||||
|
||||
@ -11,9 +11,8 @@ system clock with millisecond resolution. BTstack’s timing requirements
|
||||
are quite low as only Bluetooth timeouts in the second range need to be
|
||||
handled.
|
||||
|
||||
<a name="sec:tickAbstraction"></a>
|
||||
|
||||
### Tick Hardware Abstraction
|
||||
### Tick Hardware Abstraction ### {#section:tickAbstraction}
|
||||
|
||||
|
||||
If your platform doesn’t require a system clock or if you already have a
|
||||
|
@ -34,12 +34,12 @@ between a peripheral and iOS device, the iAP1 and iAP2 protocols of the
|
||||
Made for iPhone program can be used instead of GATT. Please contact us
|
||||
directly for information on BTstack and MFi.
|
||||
|
||||
Figure {@fig:BTstackProtocolArchitecture} depicts Bluetooth protocols
|
||||
and profiles that are currently implemented by BTstack.
|
||||
In the following, we first explain how the various Bluetooth protocols
|
||||
are used in BTstack. In the next chapter, we go over the profiles.
|
||||
are used in BTstack. In the next chapter, we go over the profiles.
|
||||
|
||||
<a name="fig:BTstackProtocolArchitecture"></a>
|
||||
|
||||
![Architecture of a BTstack-based application.](picts/btstack-protocols.png)
|
||||
![Architecture of a BTstack-based application.](picts/btstack-protocols.png) {#fig:BTstackProtocolArchitecture}
|
||||
|
||||
|
||||
## HCI - Host Controller Interface
|
||||
|
Loading…
x
Reference in New Issue
Block a user