summaryrefslogtreecommitdiffstats
path: root/bluez.tex
blob: a2e4d5c3ea1adbaf391219e7a27f821fbb32e3b7 (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
87
\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}

The 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 run over Low Energy transport only.
However, BlueZ architecture supports to run GATT services over both transports:
BR/EDR and Low Energy.

For BR/EDR, L2CAP PSM 0x001F is reserved for ATT. For Low Energy, the fixed
L2CAP channel ID 0x0004 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.
Roughly speaking, GAttrib is a command/response queue shared between multiple
local GATT profiles (server and/or client roles).

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

\section{Contact channels}

\end{document}