summaryrefslogtreecommitdiffstats
path: root/bluez.tex
blob: ff80b1fcd75d514ecb6d93ef82547db5c330d474 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{fancyhdr}

\pagestyle{fancy}
\lhead{}
\chead{}
\rhead{}
\fancyfoot[C] {This document is confidential}
\fancyfoot[R] {\thepage}
\fancyhead[C] {BlueZ Architecture}
\fancyhead[R] {\thepage}

\setlength{\parskip}{10pt}

\title{BlueZ Architecture}
		\author{João Paulo Rechi Vita \\
			jprvita@openbossa.org
		\and
		Claudio Takahasi \\
		claudio.takahasi@openbossa.org}

\begin{document}

\maketitle
\newpage

\tableofcontents
\newpage

\section{Introduction}

This document describes the BlueZ architecture. BlueZ is the official Linux
Bluetooth protocol stack. It is an Open Source project distributed under GNU
General Public License (GPL).


\section{Overview}

\section{Linux Bluetooth kernel architecture}

\section{Linux Bluetooth userspace architecture}

\subsection{core}

\subsection{libs}

\subsection{libs}

\subsection{Standard Bluetooth Services}

\subsubsection{audio}
\subsubsection{input}
\subsubsection{network}

\subsection{Services over GATT}

Generic Attribute Profile(GATT) defines a service framework for discovering
services, and reading and writing characteristics using Attribute Protocol.

A service is composed by service declaration and characteristic definitions.
Attribute is the basic element used to describe services and characteristics.

Currently, the adopted GATT based services runs over Low Energy transport only.
However, BlueZ architecture supports to run GATT service over both transports:
BR/EDR and Low Energy.

For BR/EDR GATT PSM 1 is reserved for ATT. For Low Energy the fixed L2CAP
channel 4 is reserved for ATT protocol.

ATT is a sequential request-response protocol. A client shall not send a
second request before receiving the response of the first request. In order
to manage the restrictions imposed by the protocol an abstraction called
GAttrib has been created allowing to share the same socket between multiple
services scenario. Roughly, GAttrib is command/response queue shared between
multiple local GATT profiles(server and/or client).

\subsubsection{Generic Attribute API}
\subsubsection{Proximity}
\subsubsection{Thermometer}
\subsubsection{Time}

\section{Contact channels}

\end{document}