Professional Documents
Culture Documents
Cenni storici
I primi studi sulla tecnologia Bluetooth partono nel 1994, quando la Ericsson Mobile
Communication intraprende una serie di studi allo scopo di trovare delle alternative
wireless per il collegamento tra telefoni e accessori (es. auricolari). Lo studio riguarda
un collegamento radio che, non essendo direzionale, non necessita della cosiddetta line
of sight, cio della visibilit diretta, ed ha quindi degli evidenti vantaggi rispetto alle
tecnologie infrarossi precedentemente utilizzate per collegare tra loro cellulari e
dispositivi vari.
Nel febbraio 1998 nasce il SIG (Special Interest Group), che un gruppo di compagnie
leader del settore delle telecomunicazioni e dellelettronica, tra cui Ericsson, Nokia,
Intel, IBM e Toshiba, che lavorano assieme per promuovere e definire le specifiche
Bluetooth. In seguito entrano a far parte del SIG anche Microsoft, Lucent, 3Com e
Motorola; al giorno doggi il SIG comprende pi di 2000 compagnie.
Nel luglio 1999 viene pubblicata la versione 1.0 delle specifiche Bluetooth, che viene
seguita nel dicembre 1999 dalla versione 1.0b. Nel febbraio 2001 esce la versione 1.1,
mentre sono ancora in fase di definizione le versioni 1.2 e 2.0.
BLUETOOTH
Generalit
Bluetooth una tecnologia radio studiata appositamente per trasmissioni a corto raggio
(tipicamente 10 m) ed caratterizzata da un bassissimo consumo di potenza, da un
basso costo e da una bassa complessit. Queste caratteristiche consentono a Bluetooth
di proporsi come la tecnologia del futuro nel campo delle comunicazioni wireless per
apparecchi di piccole dimensioni alimentati a batteria. Inoltre studiata anche per
connettere e fare interagire tra di loro dispositivi diversi (telefoni, stampanti, notebook,
PDA, impianti HiFi, TV, PC, cellulari, elettrodomestici, etc ), come riportato in Figura
1.
Bluetooth permette anche di accedere a reti locali (LAN) tramite dei dispositivi
denominati Access Point, nonch alla rete pubblica PSTN (Public Switched Telephon
Network) e alla rete di telefonia mobile.
Lo standard Bluetooth consente ai dispositivi di connettersi e comunicare tra loro in una
regione limitata attraverso una rete ad hoc chiamata piconet (Figura ), che costituita
da un massimo di otto dispositivi attivi, di cui uno il master, ossia colui che inizia lo
scambio di dati, e gli altri sette sono gli slave, che funzionano in risposta al master, e
non hanno altri collegamenti oltre a quello col master. Inoltre possibile avere fino a
200 dispositivi in modalit park, cio che non possono essere attivi nello scambio di
dati col master, ma che restano sincronizzati con esso.
48
BLUETOOTH
49
BLUETOOTH
della rete. Per fare un esempio concreto, se un telefonino Bluetooth vuole trasferire un
messaggio di testo a un PDA, potr interrogare questultimo per sapere se dotato di
funzionalit e-mail, o se in grado di ricevere un testo in altro modo. Quando un
dispositivo si inserisce per la prima volta in una piconet, inoltre, effettuer una
"scansione" di tutti i nodi presenti per capire come pu interagire con essi.
Altra caratteristica importante dei dispositivi Bluetooth quella di poter essere presenti
in pi di una piconet contemporaneamente, e di poter addirittura funzionare da master
in una piconet e da slave nellaltra. Un gruppo di piconet legate tra loro viene chiamata
scatternet (Figura 3).
Lo standard Bluetooth opera nella banda libera ISM (Industrial, Scientific and Medical)
centrata attorno ai 2.4 GHz. Questa banda occupata da un elevato numero di
emettitori RF, dalle applicazioni wireless proprietarie, allo standard Wireless Ethernet
(IEEE 802.11b), fino ad arrivare a generatori di rumore come i forni a microonde e le
lampade al sodio da strada. Ci ha reso necessario lutilizzo di una tecnica di
modulazione robusta alle interferenze: si scelto una 2-FSK con il frequency hopping
come tecnica di spread spectrum (FHSS).
Questo sistema di comunicazione funziona secondo uno schema Time Division
Multiplexing (TDM), dove lunit base di operazione uno slot di durata pari a 625 s.
Quando i dispositivi sono connessi, negli slot pari abilitato a trasmettere il master,
mentre negli slot dispari sono abilitati a rispondere gli slave, uno alla volta; in
50
BLUETOOTH
particolare pu rispondere lo slave che aveva ricevuto dati dal master nello slot
precedente. In Figura 4 mostrato un esempio di scambio di dati tra un master e 2
slave.
Lutilizzo della tecnica FHSS comporta che ogni time slot sia caratterizzato da una
frequenza di trasmissione differente, secondo una sequenza di valori frequenziali decisi
dal master seguendo un particolare algoritmo di calcolo del frequency hopping.
Il bitrate massimo raggiungibile in aria pari a 1 Mbps.
Lo stack Bluetooth
Una chiave delle specifiche Bluetooth il fatto che esse permettono a dispositivi di
diverse case di lavorare tra di loro, in quanto non definiscono solo un sistema di
trasmissione radio, ma definiscono uno stack software completo per consentire alle
applicazioni di trovare dispositivi Bluetooth nella zona, scoprirne i servizi offerti e
utilizzarli.
Lo stack Bluetooth definito da una serie di livelli, come si pu vedere in Figura 5:
51
BLUETOOTH
52
BLUETOOTH
La Figura 6 pu comunque aiutare per capire che tipo di relazione c tra un livello del
modello OSI e un livello dello stack Bluetooth.
Segue ora una descrizione dettagliata di ciascun livello dello stack Bluetooth, con
particolare attenzione rivolta al livello Radio, specialmente per i vari ritardi in
trasmissione e ricezione, e ai livelli HCI e L2CAP, ossia i livelli ai quali verr
sviluppato il software a microcontrollore per il controllo del modulo Bluetooth.
53
BLUETOOTH
Radio
Modulazione
Il ricetrasmettitore Bluetooth opera nella banda ISM centrata attorno ai 2.4 GHz.
Utilizza una modulazione di tipo 2-FSK, ossia una modulazione numerica che trasmette
una certa frequenza per il livello logico alto, e unaltra per il livello logico basso.
Linformazione digitale viene prefiltrata con un impulso Gaussiano, in modo che il
passaggio da una frequenza allaltra non avvenga in modo brusco e si ottenga, quindi,
una minore occupazione di banda. Essendo la banda ISM molto rumorosa, necessario
adottare delle tecniche di spread spectrum, in modo da limitare la probabilit derrore.
In particolare si utilizza la tecnica del frequency hopping (FHSS), che consiste nello
sparpagliare il segnale su una banda maggiore facendo cambiare in continuazione la
frequenza della portante.
In Figura 7 mostrato un esempio di trasmissione FHSS, dove ogni Th (tempo di hop)
cambia la frequenza della portante (fh1, fh2, ) e, a seconda che il simbolo dt da
trasmettere sia 0 o 1, viene trasmesso un segnale a una frequenza maggiore o minore
della portante di quellintervallo Th. Nello standard Bluetooth questo salto di frequenza
avviene 1600 volte al secondo (ogni 625 s, ossia un time slot del TDM), e i canali
sono fissati e variano a seconda della zona geografica.
54
BLUETOOTH
Nella maggior parte dei paesi la banda di frequenze va da 2400 MHz a 2483.5 MHz, e
si hanno 79 canali spaziati di 1 MHz luno dallaltro, a partire da 2402 MHz fino a
2480 MHz. In alcuni paesi, a causa delle limitazioni nazionali sulle banda ISM, stato
specificato uno speciale algoritmo di frequency hopping; un esempio la Francia, in
cui la banda va dai 2446.5 MHz ai 2483.5 MHz, con 23 canali disponibili, spaziati tra
loro di 1 MHz, a partire da 2454 MHz fino a 2476 MHz. La Figura 8 mostra le varie
bande di frequenza al variare delle zone geografiche; i valori sono espressi in GHz.
55
BLUETOOTH
BLUETOOTH
In caso di rumore a banda larga, che potrebbe essere la trasmissione di un altro segnale
FHSS, che segue per unaltra sequenza di hopping, facendo loperazione di
despreading in ricezione, legata per alla nostra sequenza, il nostro segnale utile torna a
banda stretta, mentre linterferenza, non essendo correlata alla nostra sequenza, viene
espansa ulteriormente (Figura 12).
57
BLUETOOTH
Classi di potenza
Le specifiche Bluetooth definiscono tre classi di potenza e le relative distanze che si
possono raggiungere in trasmissione. Ci mostrato nella tabella 1:
Power Class
Distance (Max)
100 m
2.5 mW (4 dBm)
10 m
1 mW (0 dBm)
1m
58
BLUETOOTH
La soglia bassa corrisponde a un segnale ricevuto di potenza compresa tra i -56 dBm e i
6 dB sotto la sensibilit attuale del ricevitore. La soglia superiore 20 dB sopra la
soglia inferiore, con unaccuratezza di 6 dB.
384 + 10 s
51 s
Synthesiser Setting
180 s
10 s
625 s
Dalla figura si nota che il processore del livello pi basso prima decide in che stato
mettere il controllore Baseband, che poi deve calcolare la nuova frequenza di
trasmissione secondo la sequenza del FHSS e programmare il sintetizzatore. Questo
impone un tempo di sintetizzatore di circa 180 s, ma alcuni dispositivi in commercio
hanno tempi migliori, compresi tra i 130 e i 170 s.
59
BLUETOOTH
BLUETOOTH
SynthOn: comanda laccensione del VCO della parte radio, e viene attivato sia
in ricezione che in trasmissione;
61
BLUETOOTH
Per quanto riguarda la trasmissione, il segnale SynthOn viene attivato quando comincia
lo slot temporale della trasmissione. Il tempo tTO chiamato Transmitter On delay, ed
indica il tempo minimo da far trascorrere dopo avere attivato la linea di SynthOn prima
di attivare la linea TxOn. Il tempo tPHD il Phase Detect Off delay, e indica il tempo da
far trascorrere dopo lattivazione della linea TxOn prima di avviare la trasmissione dei
dati. Questo tempo serve per fare stabilizzare la frequenza della portante.
62
BLUETOOTH
Baseband
Bisogna innanzitutto fare una distinzione tra Link Controller e Baseband in quanto
le specifiche Bluetooth usano a volte questi due termini in modo ambiguo.
Il Link Controller (LC) responsabile del trasporto sul link dei vari pacchetti scambiati
provenienti dal Link Manager (Figura 18), e deve mantenere questo collegamento
attivo una volta stabilito, mentre il Baseband controlla il livello Radio, responsabile
della temporizzazione a basso livello, del controllo degli errori e della gestione dei
collegamenti durante la trasmissione di un pacchetto.
63
BLUETOOTH
Confrontando con lo stack OSI (Figura 6), il livello fisico costituito da Radio e
Baseband: il livello Radio interfaccia il Baseband con il canale in aria, mentre il
Baseband formatta i dati provenienti dal LC, cio si occupa della criptazione a basso
livello per una trasmissione robusta e affidabile, riceve i dati dal canale e li passa nei
livelli superiori dello stack.
Come descritto in precedenza il sistema Bluetooth utilizza uno schema di trasmissione
TDM con slot temporali di 625 s, che una combinazione tra una comunicazione a
commutazione di pacchetto e una a commutazione di circuito. Alcuni time slot possono
essere dedicati a pacchetti sincroni: infatti possibile supportare fino a tre canali
sincroni contemporaneamente, in coesistenza con canali dati asincroni.
I canali sincroni hanno una velocit di 64 kbps in entrambe le direzioni, mentre i canali
asincroni possono arrivare a 723.2 kbps in modalit asimmetrica (57.6 kpbs nellaltra
direzione), o 433.9 kpbs in modalit simmetrica.
Canale fisico
Il canale rappresentato da una sequenza pseudo casuale che indica il salto di
frequenza attraverso i 79 canali (23 per i paesi con banda ISM limitata). Questa
sequenza di salto unica per la piconet ed determinata dallindirizzo del dispositivo
master; la fase invece determinata dal clock del master. Il canale diviso in slot
temporali associati ad un determinato salto di frequenza. Ogni unit che partecipa alla
piconet dovr essere sincronizzata sia temporalmente che frequenzialmente al canale.
Ogni dispositivo deve essere in un determinato istante o master o slave; questi due ruoli
sono cos definiti:
-
64
BLUETOOTH
Come si pu vedere in Figura 19, il master trasmette per primo allo slave; questo
accade quando entrambi sono sintonizzati alla frequenza fk. Dopo 625s i due
dispositivi risintonizzano i loro livelli Radio ad una nuova frequenza fk+1, ed ora solo lo
slave autorizzato a trasmettere, e deve anche rispondere con un ACK o meno riguardo
al pacchetto inviato nello slot precedente.
Le specifiche Bluetooth definiscono pacchetti dati che possono essere lunghi 1, 3 o 5
time slot. In Figura 20 mostrata la temporizzazione per pacchetti multi-slot, in
particolare pacchetti da tre time slot.
Usare pacchetti multi-slot consente di raggiungere maggiori data rate, a scapito per di
una peggior affidabilit, in quanto un maggior numero di interferenze possono
intervenire durante tre o cinque slot temporali rispetto a un singolo slot. Tutti i pacchetti
65
BLUETOOTH
hanno lo stesso data header, per cui i pacchetti multi-slot hanno una maggiore
efficienza dati.
Temporizzazione
Come molti protocolli di comunicazione, Bluetooth sincronizza la maggior parte delle
operazioni a un clock interno. Questo assicura, per esempio, la sincronizzazione Tx-Rx
nello scambio di dati tra due dispositivi, differenziando i pacchetti persi e quelli
rispediti. Il clock Bluetooth un contatore a 28 bit che si resetta a zero allaccensione e
poi conta in free-run, incrementandosi ogni mezzo slot, cio 312.5 s.
Ogni dispositivo ha un suo clock interno, detto native, denominato CLKN. Quando
un dispositivo opera come master, il suo clock interno CLKN viene usato come clock
della piconet. Se un dispositivo opera come slave si deve invece sincronizzare al clock
del master. Per fare questo, uno slave deve aggiungere un offset value al suo clock
nativo (Figura 21), dal quale si ottiene una stima del clock del master, chiamata
piconet clock, CLK. Il valore di questo offset value viene ricavato durante la
procedura di paging (par. 2.6.5), quando il master manda allo slave un pacchetto FHS,
che contiene il valore attuale del clock CLKN del master. Uno slave, per mantenere la
sincronizzazione col master, si risincronizza ogni volta che riceve, grazie alla
synchronisation word, attraverso la quale si riallinea al dispositivo trasmittente.
66
BLUETOOTH
C un altro clock definito nel Bluetooth: CLKE, che si ottiene aggiungendo un altro
offset al CLKN dello slave ed usato nel caso specifico di in cui si stabilisce una
connessione con uno slave prima di essere sincronizzati con il master.
I due bit pi bassi del clock (CLK[0] e CLK[1]) sono usati direttamente per delimitare
gli slot di trasmissione e ricezione. Una trasmissione del master avviene sempre quando
CLK[0:1] = 00, mentre una trasmissione di uno slave avviene quando CLK[0:1] = 10.
Collegamenti fisici
Il livello Baseband gestisce due tipi di collegamenti:
-
67
BLUETOOTH
pacchetto standard Bluetooth costituito da tre parti, ossia laccess code, il packet
header e il payload.
Access Code
Ogni pacchetto inizia con un access code. I compiti di questo campo sono la
sincronizzazione, la compensazione delloffset in continua e lidentificazione, in quanto
laccess code viene ricavato dal Bluetooth Device Address del master, cio ogni
pacchetto sulla stessa piconet ha lo stesso channel access code. In Figura 23 viene
riportato il formato, che costituito da 72 o 68 bit a seconda che ci sia o meno il
payload.
La prima parte dellaccess code (preamble) costituita da 4 bit (0101 o 1010 a seconda
del primo bit della synchronisation word, per formare una parola di 5 bit, o 01010 o
10101), e serve per rilevare i fronti dei dati ricevuti e creare cos un clock con il quale
campionare il resto dei dati in ricezione. La synchronisation word formata da 64 bit,
di cui 24 sono costituiti dal LAP (Low Address Part) del dispositivo Bluetooth.
Laccess code utilizzato nelle procedure di inquiry e di paging, in cui si usano
pacchetti senza header e payload.
68
BLUETOOTH
Gli ultimi 4 bit dellaccess code (trailer) sono presenti solo se presente un payload,
sono simili al preamble e servono per eseguire migliori compensazioni in continua e
recupero del clock.
Packet header
Questo campo contiene delle informazioni di controllo del collegamento; il packet
header (Figura 24) contiene 18 bit di informazione, protetti dal codice Forward Error
Correction (FEC) di 1/3, che replica tre volte i dati, per un totale di 54 bit.
69
BLUETOOTH
tutti i pacchetti scambiati tra master e slave devono avere lAM_ADDR dello
slave. Un AM_ADDR di tutti zeri viene usato per i messaggi di broadcast.
-
FLOW (1 bit): viene usato per il controllo di flusso dei pacchetti sui
collegamenti ACL; FLOW = 0 significa che il buffer di ricezione pieno e la
trasmissione deve essere temporaneamente fermata. Nel periodo in cui FLOW =
0 tuttavia i pacchetti SCO continuano a essere trasmessi.
ACL payload
E costituito da un massimo di 2744 bit, ed formato da tre campi (Figura 25),
cio il payload header, il payload vero e proprio e il codice controllore derrore
Cyclic Redundancy Check (CRC).
70
BLUETOOTH
Il payload header formato a sua volta a tre campi, cio il L_CH (Logical
Channel), che indica se linizio o la continuazione di un pacchetto L2CAP o
LMP, il flow flag e il length field (lunghezza) (Figura 26).
SCO payload
Ha una lunghezza fissa di 240 bit (Figura 27), preceduto dagli stessi access
code e header di un pacchetto ACL bench i vari flow, ARQN e SEQN siano
ridondanti in quanto il controllo di flusso e la ritrasmissione non vengono
applicati nei link SCO. E assente anche il campo CRC. I dati presenti nel
payload sono 10, 20 o 30 byte a seconda del FEC scelto (1/3, 2/3 o nessuno).
Correzione derrore
FEC (Forward Error Correction)
Aggiungendo dei bit di parit generati in funzione dei dati di ingresso, un certo numero
di bit errati pu essere rilevato e corretto. Ci sono tre tipi di FEC: 1/3, 2/3 e nessun
FEC.
71
BLUETOOTH
Il pi forte, la codifica 1/3 FEC, consiste semplicemente nel nel ripetere ogni bit tre
volte, e viene decodificato prendendo il valore del bit ricevuto pi volte. Se un bit viene
ricevuto due volte su tre ad un certo valore, quello il valore corretto.
La codifica 2/3 un codice di Hamming (15,10), in cui ogni 10 bit vengono generati 5
bit di patit: quindi, ogni 10 bit in ingresso, ne escono 15.
CRC (Cyclic Redundancy Check)
Il CRC viene applicato su tutti i packet header (HEC) e su tutti i payload, per
convalidare lintegrit dei dati ricevuti. Il CRC in grado di segnalare un qualsiasi
errore nei dati.
ARQ
Lo schema ARQ consiste nel fare ritrasmettere il pacchetto finch non viene ricevuto
un segnale di acknowledge con cui si segnala che il pacchetto stato ricevuto
correttamente, o scade un determinato timeout.
Tipi di pacchetto
In tabella 2 sono presenti i vari tipi di pacchetti Bluetooth, con una breve descrizione.
72
Type
Code
SCO/ACL
Nome
Comune
ID
0000
Comune
NULL
0001
Comune
POLL
0010
Comune
FHS
0011
ACL
DM1
0100
ACL
DH1
0101
SCO
HV1
Descrizione
Usato per trasmettere il DAC o il IAC
nelle operazioni di page e inquiry.
Non ha il payload. E utilizzato per
ottenere informazioni sul link e sul flusso.
Non necessita di ACK.
Non ha il payload. E utilizzato dal master
per sapere se gli slave sono attivi o
meno.
E un pacchetto di controllo speciale per
rilevare indirizzo e clock del dispositivo
che sta trasmettendo. UsaFEC 2/3.
Porta 17 byte di informazione. Usa FEC
2/3.
Slot
1/2
1
1
1
BLUETOOTH
0110
SCO
HV2
0111
SCO
HV3
1000
SCO
DV
1001
ACL
AUX1
1010
ACL
DM3
1011
ACL
DH3
1110
ACL
DM5
1111
ACL
DH5
1
1
1
1
Questi diversi tipi di pacchetti, differiscono luno dallaltro a seconda del numero di
time slot occupati, della codifica di correzione derrore utilizzata e del fatto che siano
pacchetti voce SCO o dati ACL.
Lidentificazione del tipo di pacchetto avviene grazie al campo TYPE del packet header
descritto precedentemente,
Per il traffico ACL esistono sei tipi di pacchetti: DM1 e DH1 a uno slot, DM3 e DH3 a
tre slot e DM5 e DH5 a cinque slot. DH significa Data High rate, mentre DM significa
Data Medium rate. II pacchetti DM trasportano meno informazione utile, ma sono
provvisti di una maggiore protezione allerrore, con una codifica FEC 2/3. I pacchetti
DH invece non hanno FEC ma possono trasportare pi dati utili.
Per il traffico SCO esistono tre diversi tipi di pacchetto, che differiscono luno
dallaltro semplicemente per il diverso tipo di codifica FEC utilizzato.
Esiste poi un particolare tipo di pacchetto, il DV (Data Voice), in grado di trasportare
sia dati che voce, la cui struttura riportata in Figura 28.
73
BLUETOOTH
Il campo voce di 10 byte, senza FEC (come HV1), e non pu essere ritrasmesso. Il
campo dati protetto con una codifica FEC 2/3, un campo CRC, e i flag ARQ, SEQ e
flow.
In tabella 2.3 viene riportata la velocit di trasmissione dei vari pacchetti ACL, facendo
distinzione tra una trasmissione simmetrica, che si ottiene usando lo stesso tipo di
pacchetto in entrambe le direzioni, e una asimmetrica. In generale, possibile avere
delle applicazioni in cui la trasmissione in una direzione deve essere favorita rispetto a
quella nella direzione opposta. La massima velocit di trasmissione ottenibile di 732.2
kbps ottenuto con pacchetti DH5 in una direzione, mentre nellaltra si usano pacchetti
DH1 con una velocit di 57.6 kbps.
La massima velocit simmetrica utilizzata di 433.9 kbps utilizzando pacchetti DH5 in
ambo le direzioni.
Tipo
(kbps)
Trasmissione
Ricezione
DM1
108.8
108.8
108.8
DH1
172.8
172.8
172.8
DM3
258.1
387.2
54.4
DH3
390.4
585.6
86.4
DM5
286.7
477.8
36.3
DH5
433.9
723.2
57.6
AUX1
185.6
185.6
185.6
BLUETOOTH
DRsim DH 1 =
(27 8)bit
= 172.8kbps
1.25ms
(339 8)bit
= 433.9kbps
10 625s
(339 8)bit
= 723.2kbps
3.75ms
E possibile verificare anche che il pacchetto DH1 ci sta in un time slot: infatti
trasmettendo un payload di 27 byte (216 bit) si ha un overhead di 150 bit, per cui in aria
vanno effettivamente 366 bit; essendo il throughput di 1 Mbps, si ottiene:
Tmax DH 1 =
(27 8 + 150)bit
= 366s
10 6 bps
Canali logici
Le specifiche Bluetooth definiscono cinque canali logici che sono trasportati sui link
fisici SCO e ACL, e servono per trasportare informazioni a differenti livelli:
-
Link Control (LC): un canale di controllo che viene trasportato nel packet
scambiate tra i livelli Link Manager di due dispositivi collegati. E indicato con
il campo L_CH = 11 nel payload header.
-
75
BLUETOOTH
US: il canale US (User Synchronous) viene usato per il trasporto dei dati SCO.
Controllo di flusso
Lo standard Bluetooth specifica di utilizzare delle code FIFO (First In First Out) sia in
ricezione che in trasmissione, per i collegamenti SCO e ACL.
In trasmissione il compito del Link Manager quello di riempire le code, mentre il
Link Controller si occupa dello svuotamento di esse. In Figura 29 si pu osservare lo
schema della routine di trasmissione.
Gli interruttori S1 e S2 sono controllati dal Link Controller; sono presenti due registri
per il traffico ACL e due per il traffico SCO: uno chiamato registro current, a cui pu
accedere il Link Controller per la composizione del pacchetto, mentre laltro detto
next, a cui accede il Link Manager per caricare nuovi dati.
Lo schema della routine di ricezione mostrato in Figura 30:
76
BLUETOOTH
Anche in ricezione sia per il traffico ACL che per il traffico SCO vengono riservati due
registri: uno a cui pu accedere il Link Controller e caricare lultimo dato arrivato, e un
altro in cui il Link Manager pu andare a leggere il precedente dato arrivato.
Se in trasmissione la code sono piene il Link Controller si occupa di evitare perdita di
pacchetti e congestione. Se i dati non possono essere ricevuti, viene trasmessa
unindicazione di STOP sul canale LC di ritorno (bit Flow). Quando il trasmettitore
riceve lindicazione di STOP, ferma la sua coda FIFO. Quando il ricevitore torna ad
essere pronto, trasmette unindicazione di GO.
Il sistema funziona in TDM e gli intervalli di trasmissione sono alternati a quelli di
ricezione in modo sincrono. La piconet sincronizzata al clock del master.
Indirizzi Bluetooth
Le specifiche Bluetooth definiscono quattro tipi di indirizzi:
-
Deriva dallo standard IEE802, ed a sua volta diviso in tre campi: LAP (Lower
Address Part) di 24 bit, UAP (Upper Addres Part) di 8 bit e NAP (Nonsignificant Address Part) di 16 bit.
-
77
BLUETOOTH
Link Controller
Il Link Controller (LC) costituito da parti hardware e software, responsabile del
mantenimento del link una volta che stato creato, esegue protocolli verso i livelli
inferiore, come il protocollo ARQ e la codifica FEC, ed trasportato nel canale logico
LC (Link Control).
Le funzioni svolte dal Link Controller sono le seguenti:
-
Trasferimento sincrono;
Criptaggio.
ARQ
Il sistema ARQ (Acknowledgement/Request) viene utilizzato per la ritrasmissione di
pacchetti corrotti. Come visto nel par. 2.5.4, in ogni packet header presente il flag
ARQN, che indica lo stato del pacchetto ricevuto in precedenza. ARQN = 1 significa
che il pacchetto stato ricevuto e decodificato correttamente, mentre ARQN = 0
(NAK) significa che la precedente trasmissione non andata a buon fine; questa detta
tecnica del piggy-backed acknowledgement, cio lACK viene caricato a spalle del
payload del pacchetto di ritorno.
Le possibili cause di ritrasmissione sono:
-
fallisce il controllo HEC (par 2.5.4), per cui non si sa a chi indirizzato il
pacchetto;
78
BLUETOOTH
Ogni volta che un nuovo pacchetto viene trasmesso, il flag SEQN viene commutato,
mentre in caso di ritrasmissione il bit non viene cambiato; questo permette al ricevitore
di distinguere un pacchetto che possiede ARQN = 0 a causa di un errore sulla ricezione
di ARQN da un pacchetto che effettivamente possiede un NAK. Quindi il ricevitore, in
caso di ritrasmissione, confronta il SEQN precedente con quello ritrasmesso e se i due
SEQN sono uguali scarta il nuovo payload, che uguale al precedente, mentre se sono
diversi ritiene valido anche lultimo payload arrivato. Il Link Manager pu richiedere al
Link Controller di effettuare unoperazione di flush del buffer, cio di eliminazione di
un pacchetto nel caso in cui questo continui ad essere trasmesso senza successo; ci
tipicamente avviene dopo un certo tempo in cui si prova a ritrasmettere, detto
automatic_flush_timeout.
Un master pu spedire dati a tutti gli slave presenti nella piconet simultaneamente,
usando dei pacchetti broadcast, cio impostando AM_ADDR = 000. In questo caso
per lo schema di utilizzo dellARQN non risulta pi essere applicabile, per cui una
soluzione quella di ritrasmettere il pacchetto per un certo numero di volte.
Standby
Inquiry
79
BLUETOOTH
Inquiry scan
Inquiry response
80
la
BLUETOOTH
Page
Page scan
Come per linquiry scan, un dispositivo tipicamente entrer nello stato di page
scan periodicamente per permettere ai dispositivi nello stato di page di stabilire
una connessione con essi. Una volta che un device nello stato di page scan ha
ricevuto con successo un pacchetto di page, entra nel sottostato di slave
response, dove acquisisce il pacchetto e aspetta lFHS del master. Alla ricezione
del pacchetto FHS, lo slave aggiorna il proprio CLK e la propria
synchronisation word prima di entrare nello stato connection. Di nuovo, come
nella procedura di inquiry, la procedura di page usa una speciale sequenza di
hopping (veloce per il page e lenta per il page scan) , che serve a ridurre il
tempo per la sintonizzazione di frequenza. E possibile avviare la procedura di
paging senza un inquiry prioritario se lindirizzo del dispositivo gi
conosciuto, come pu essere il caso con un arrangiamento dedicato per un
laptop o un cordless, per esempio. Il device in stato di page capace di
indirizzare lo slave in questione, ma non essendoci nessun CLKE (stima del
clock dello slave) disponibile, la procedura sar molto pi lunga. In teoria, il
massimo della lunghezza di 10 s.
-
Master response
Il master entra in questo sottostato dopo che ha ricevuto una risposta dallo slave
a un suo messaggio di page. Il master invia un pacchetto FHS allo slave e se
questo risponde entra nello stato connection.
81
BLUETOOTH
Slave response
Lo slave risponde al master ad una richiesta di page, e quando riceve dal master
il pacchetto FHS entra nello stato connection.
-
Connection Active
82
BLUETOOTH
Connection Hold
Nel modo Hold, un device cessa di supportare il traffico ACL per un periodo di
tempo definito per liberare la banda per le altre operazioni come lo scanning,
paging, inquiring o Low Power Sleep. Il dispositivo mantiene il proprio
AM_ADDR. Dopo che lhold time finito, il dispositivo si sincronizza col
CAC e comincia ad ascoltare il traffico di nuovo.
-
Connection - Sniff
Nel modo sniff, a uno slave dato un predefinito slot temporale e una
periodicit per ascoltare il traffico. Lo slave ascolter uno slot numero Dsniff
ogni Tsniff slots per un periodo di timeout di Nsniff slots. Alla ricezione di un
pacchetto durante questo tempo, esso continuer a ascoltare finch i pacchetti
con il suo AM_ADDR termineranno. Esso poi aspetter il prossimo periodo di
sniff.
-
Connection - Park
Nel modo Park, uno slave cede il suo AM_ADDR e ascolta il traffico solo
occasionalmente. Per la maggior parte, il device capace di entrare nella
modalit Low Power. Il dispositivo solo necessita di svegliarsi a un definito
istante, detto di Beacon, per sincronizzarsi al CAC prima di tornare in Low
Power di nuovo. In questo modo, lo slave capace di stare sincronizzato al
master anche se esso segue un meno accurato oscillatore, LPO (Low Power
Oscillator).
83
BLUETOOTH
Una pi semplice vista delle strade principali del diagramma mostrata in Figura 33,
dove mostrato in modo chiaro come si crea una connessione partendo da zero, con a
sinistra il master e a destra lo slave.
84
BLUETOOTH
BLUETOOTH
collegamento, si entra in un altro ciclo della macchina a stati. Poi, un master pu essere
in connessione con uno slave e contemporaneamente essere in inquiry, paging o
scanning con altri device. Infatti, mentre il page o linquiry pu durare molti secondi, il
master si muover effettivamente dalla connessione allinquiry, allo scan o al page e
torner alla connessione lavorando con linsieme di dispositivi che interagiscono
attorno ad esso. In pratica, lentit dello stato di controllore richiede un insieme di
contesti per ogni suo collegamento attivo. Questo vero anche per il protocollo LC, e i
pacchetti ARQN, SEQN e di ritrasmissione.
Le prime implementazioni Bluetooth hanno piazzato la maggior parte di questi controlli
in hardware, e ci non stato molto vantaggioso. Una chiave di volta per Bluetooth
stato dividere i ruoli dellhardware da quelli del software.
86
BLUETOOTH
In Figura 34 sono mostrati i messaggi scambiati tra due dispositivi durante procedure di
inquiry e inquiry scan.
Il dispositivo inquisitore chiede: C qualcuno?, mentre il dispositivo scanner (quello
che in fase di inquiry scan) ascolta se c qualche inquisitore. Linquisitore chiama
trasmettendo pacchetti ID contenenti un IAC (Inquiry Access Code). Di solito, si usa il
GIAC (General), che il pi comune. Si pu usare anche il DIAC (Dedicated). In
origine il DIAC serviva per abilitare a entrare solo certi dispositivi, ma lunico DIAC
funzionante il LIAC (Limited). Il LIAC fatto per essere usato da un paio di
dispositivi per un breve periodo. Dovrebbe essere il livello di applicazione a selezionare
un device noto. Per risparmiare energia, viene effettuata uninquiry solo se richiesto
da un livello superiore (HCI), di solito periodicamente.
Quando un device che in fase di inquiry scan sente un inquiry, pu rispondere
immediatamente, ma potrebbero esserci molti scanner che lo vorrebbero fare assieme,
le risposte interferirebbero tra di loro e linquisitore le scarterebbe tutte. Per fermare
questo, viene usato un tempo casuale di back-off (RAND slot in Figura 35).
Questa volta, se il dispositivo scanner sente linquiry, risponde dopo un time slot con il
pacchetto FHS (Frequency Hopping Synchronisation). In questo modo, molti
dispositivi possono rispondere allinquiry, ma le loro risposte non si accavallano.
Chiaramente linquisitore deve stare in inquiry per pi del tempo massimo casuale di
back-off.
87
BLUETOOTH
La Figura 35 mostra in dettaglio come un device inquisitore trasmette due volte per slot
un ID con un fast hopping (la frequenza con cui trasmette cambia due volte per ogni
slot, In(m), In(m+1),), cercando di catturare un device in fase di inquiry scan, che
cambia invece frequenza una volta ogni 2048 slot (1.28 sec, Sc(m)).
Linquisitore trasmette usando la sequenza di hopping di inquiry, e ascolta in entrambe
le met dello slot ad una data frequenza. Una volta che linquiry scanner riceve con
successo un pacchetto ID (in Figura 35, coincidenza di frequenze In(m+1) = Sc(m)),
aspetta per un tempo casuale di back-off, compreso tra 0 e 1023 slot, o pi di 640ms per
evitare collisioni. Dopo il periodo RAND, linquiry scanner entra nello stato di inquiry
response, e alla prossima ricezione di un pacchetto ID (In(p+1) = Sc(m)), risponder
con un pacchetto FHS 625 s pi tardi. Entrambe i dispositivi saltano tra due differenti
punti nella sequenze in base al valore del proprio bit CLKN[1], che 0 per entrambi i
dispositivi (par. 2.5.2). Si ha dunque Sc(m)=In(p+1), per cui la risposta poi fatta nel
prossimo slot quando CLKN[1]=1, e quindi lo scanner salta si sintonizza alla frequenza
Sc(n) = In(s+1). Essendo linquisitore sullo stesso canale dello scanner, quando questo
invia lFHS il dispositivo che ha compiuto linquiry pronto a ricevere. Linquiry
scanner rientra in inquiry scan nel prossimo canale (Sc(n+1)), alla sequenza di hop
inquiry e aspetta un altro pacchetto ID.
Non essendoci legami tra i due CLKN, non un processo esatto ed il motivo per cui
ci sono errori. Il tempo di inquiry dipende da come si massimizza questa coincidenza.
Se linquisitore riceve lFHS nella prima met dello slot, non pu ricevere una risposta
da un altro slave nella seconda met dello slot, perch non ha tempo di saltare a unaltra
frequenza. Allo stesso modo, se lFHS arriva nella seconda met dello slot, linquisitore
dovr perdere la trasmissione del primo ID del prossimo slot (Figura 36).
88
BLUETOOTH
Linquisitore salta due volte per slot mentre il dispositivo in inquiry scan ascolta su
una singola frequenza, per cui il tempo speso per avere un inquiry la met di quello
che ci vorrebbe se linquisitore saltasse una volta per slot. Questo possibile perch il
pacchetto ID corto. Se linquiry scanner non riceve il primo o il secondo ID entro il
timeout scan, torna in stato di standby o connection. Lo stato di inquiry dura o quanto
serve per avere un numero desiderato di risposte, o fino a che scade il tempo di timeout
fissato dallhost.
E possibile evitare linquiry interamente se noto lindirizzo del dispositivo, e
passando direttamente al paging.
89
BLUETOOTH
L'altro dispositivo deve parimenti stare ad ascoltare per una richiesta, cio deve
effettuare loperazione di page scanning.
Alla fine del paging, il pager diventa il master e il page scanner lo slave, anche se in
seguito possono scambiarsi di ruolo.
In Figura 37 sono mostrati i messaggi scambiati tra due dispositivi durante la
realizzazione di una connessione, usando la procedura di paging.
Il comando di creare una connessione fa entrare il dispositivo in paging, ed inizia a
mandare una serie di pacchetti di paging (pacchetti ID basati sull'indirizzo del
dispositivo chiamato). Nel frattempo, il dispositivo in fase di page scanning
configurato per fare periodicamente delle scansioni, che durano per un tempo
prefissato.
Il pager trasmette pacchetti ID con l'indirizzo dello scanner. Se lo scanner in page
scanning durante lintervallo in cui il pager trasmette alla sua frequenza, allora riceve il
pacchetto ID e risponde con un altro pacchetto ID, in cui usa il proprio indirizzo.
Diversamente dall'inquiry qui c' solo un device con quell'ID, cos un solo dispositivo
risponde e non c' bisogno di attendere un tempo RAND. Il pager riceve l'ID e capisce
che lo scanner pronto a ricevere l'FHS. Lo scanner acquisisce l'FHS e risponde con un
altro ID. Adesso lo scanner pu estrarre dall'FHS i parametri necessari (Bluetooth CLK,
AM_ADDR, etc) da usare nella nuova connessione. Con questi parametri, lo scanner
in grado di calcolare la sequenza di hop del pager. Smette di usare la sequenza di hop
speciale di page e si sposta nella sequenza speciale di hop di connessione assieme al
pager, che ora il master della nuova connessione. Dopo che entrambi i dispositivi si
sono portati alla nuova sequenza di hop, il master manda un POLL per controllare che
il cambio di sequenza sia avvenuto correttamente. Lo slave risponde con un pacchetto
ACL (tipicamente un NULL). In seguito vengono scambiati vari pacchetti LMP (Link
Manager Protocol). A questo punto, master e slave possono d'accordo scambiare ruoli
se necessario.
La Figura 38 mostra in dettaglio lo scambio di pacchetti e le temporizzazioni tra il
pager e il page scanner durante la procedura di page.
90
BLUETOOTH
Il master trasmette pacchetti ID sul canale che ha previsto lo slave, in base alla stima
del CLKN dello slave (CLKE) ad alta velocit, due salti per slot. Questo necessario,
siccome il CLKE pu essere inaccurato o inesistente perch un inquiry non l'ha stimato.
I 32 canali della sequenza di hop sono divisi nei 16 attorno al canale previsto e gli altri
16 pi lontani.
Il gruppo interno di canali, detto treno A, viene provato prima, poi vengono provati gli
altri, del treno B. Questo serve a dare maggiore velocit di risposta se disponibile un
CLKE, garantendo il successo anche nel caso peggiore in cui non ci sia. Come con
l'inquiry, il pager salta due volte per slot per massimizzare la possibilit di prendere la
frequenza dello scanner. Lo scanner segue la stessa sequenza di hop, ma effettua un
salto ogni 2048 slots (1.28s).
Nella Figura 38, Pg sta per pager hop channel, PgR sta per pager hop channel in stato
di master response, ed legato al page hop channel durante il quale l'ID viene ricevuto
con successo dallo slave (Pg(n+1)). Una volta che lo scanner ha ricevuto il pacchetto
ID, congela il clock e comincia a saltare in sequenza con il pager. Lo fa usando la
sequenza di hop di page response.
Quando il master riceve l'ID, trasmette il pacchetto FHS all'inizio del prossimo slot e
permette allo slave di sincronizzarsi al suo riferimento di slot. Lo slave deve quindi
aprire il suo correlatore 312.5 s dopo che l'ID stato spedito e tenerlo aperto almeno
per 625 s, siccome l'FHS potrebbe essere dato o in 312.5 s o 625 s.
In seguito alla ricezione del pacchetto FHS, lo slave risponde con un ID; da ora
entrambe i dispositivi usano il DAC dello slave, le temporizzazioni dello slave (slave
91
BLUETOOTH
CLKN, master CLKE) e una sequenza di page derivata dal LAP dello slave. La
trasmissione seguente del master che usa il CAC (Channel Access Code) e il suo
CLKN, che lo slave in grado di ricevere in quanto passato al master CACe CLK ed
entrambi sono in stato di connessione. I dispositivi si scambiano ora POLL e NULL per
verificare la connessione. Se il pacchetto POLL non viene ricevuto dopo un certo
periodo, entrambe i dispositivi tornano nello stato di paging o page scanning
rispettivamente.
In Figura 39 mostrato come un master sia capace di comunicare con diversi slave in
sequenza secondo un traffico esclusivamente di tipo ACL.
92
BLUETOOTH
Il master trasmette sempre negli slot pari, gli slave nei dispari. Il diagramma mostra un
esempio di traffico ACL in cui il master trasmette dati solo quando c' qualcosa da
spedire. In questo caso lo slave 3 omesso, siccome non c' nulla da mandargli in quel
momento, e il master in grado di saltare subito alla comunicazione con lo slave 4.
Link SCO
In Figura 40 mostrato un master che trasmette con tre slave; in particolare presente
del traffico SCO con lo slave 2, per il quale sono riservati due slot ogni sei.
A causa del fatto che gli slots SCO sono riservati, lo slave SCO risponde nello slot 5 sia
che abbia ricevuto o no dati dal master.
Gli slot SCO possono essere spaziati per usare ogni coppia di slot, ogni seconda (due
slot su quattro) o ogni terza coppia di slot (due su sei). Il fatto che la massima distanza
tra due trasmissioni SCO consecutiva sia di sei slot, con il successivo riservato alla
risposta, fa s che al massimo un master pu sostenere tre link SCO
contemporaneamente con tre slave diversi, mentre uno slave pu sostenere fino a tre
link SCO con lo stesso master.
Scambio di ruoli master/slave
BLUETOOTH
La strada percorsa dai dati pu essere, in caso di traffico SCO, via diretta con
linterfaccia PCM, attraverso lHCI, processati dallaudio CODEC, mentre in caso di
traffico ACL via lHCI. I dati vengono bufferizzati, cos potrebbero venire letti
seguentemente alla ricezione, alla velocit del sistema, o memorizzati aspettando la
trasmissione.
Tipicamente, un doppio buffer usato per fare lo scheduling delle operazioni. Infatti, la
doppia bufferizzazione in trasmissione, quasi necessaria per un dispositivo multi-link
94
BLUETOOTH
dove la ritrasmissione deve essere anticipata. Il data path gi stato discusso, esso
codifica o decodifica i dati durante Tx o Rx, rispettivamente. Il correlatore Rx
effettivamente sente i dati ricevuti, e quando abilitato, cerca il richiesto access code. Il
sync word generator fornisce una valida sync word derivata dal LAP. Il timebase
produce un CLKN: deve essere accurato con 20 ppm. Il controllo di offset produce
CLKE. La funzione di selezione di hop combina CLK con BD_ADDR per generare il
canale e mandarlo alla radio. Infine, il sistema di criptaggio produce una parola chiave
che viene letta e mandata al bitstream data path.
Il cuore del sistema il Link Controller, che controlla le funzioni e le operazioni citate.
Tipicamente consiste di due macchine a stati, una per la trasmissione e una per la
ricezione, che sono mostrate in Figura 42.
95
BLUETOOTH
Entit
Dimensione
BD_ADDR
48 bit
128 bit
8128 bit
RAND
128 bit
Le chiavi di sicurezza sono derivate durante linizializzazione e non sono mai svelate.
Normalemente, la chiave di criptazione derivata dalla chiave di autenticazione
durante il processo di autenticazione. Per quanto riguarda lalgoritmo di autenticazione,
la dimensione della chiave sempre di 128 bit. Nellalgoritmo di criptaggio, invece, la
dimensione della chiave pu variare da 8 a 128 bit. Questa dimensione pu variare per
due ragioni, cio per i regolamenti presenti nei vari paesi e per facilitare un futuro
aumento della sicurezza senza bisogno di riprogettare lalgoritmo di criptaggio e
lhardware. Laumento della chiave, infatti, il metodo pi facile per aumentare la
sicurezza.
Lentit RAND un numero casuale che viene generato allinterno dellunit
Bluetooth. Questo parametro non statico e cambia velocemente.
96
BLUETOOTH
Link Manager
Un dispositivo Bluetooth viene guidato dallhost controller attraverso i comandi HCI,
ma il Link Manager che si occupa della traslazione di questi comandi in operazioni al
livello Baseband, gestendo le seguenti operazioni:
-
configurando il link;
97
BLUETOOTH
Ogni messaggio LMP comincia con un singolo bit Translation IDentifier (TID) che 0
se il master inizia la transazione e 1 se lo slave. Poi c un OpCode di 7 bits, che
definisce il tipo di messaggio LMP spedito. Infine ci sono una serie di parametri,
ognuno dei quali occupa un intero byte.
98
BLUETOOTH
Infatti un link SCO pu essere creato solo tra due dispositivi che possiedono gi un
collegamento ACL attivo tra di loro.
Quando il master richiede una connessione SCO, manda un LMP_SCO_req contenete i
parametri per il link, che sono:
-
SCO handle;
99
BLUETOOTH
poche risorse;
spegnimento.
Scambio di ruolo
Solitamente, chi fa il page diventa il master e chi fa il page scan diventa lo slave. In
alcuni casi pu essere necessario cambiare i ruoli. In tal caso, si interrompe il link, il
master fa unoperazione di page-scan e lo slave fa unoperazione di page, ma in questo
intervallo non si possono trasferire dati. Per evitare questa perdita di tempo, lLMP
fornisce un mezzo per scambiare i ruoli.
Il dispositivo che vuole effettuare lo scambio di ruoli manda un LMP_switch_req.
Durante questo scambio di ruolo per necessario sincronizzare i dispositivi al clock
del vecchio slave. Quindi questo manda un LMP_slot_offset per segnalare la differenza
tra il suo clock e quello dellaltro dispositivo, e se lo scambio di ruoli accettato,
manda un pacchetto FHS (Figura 47).
100
BLUETOOTH
101
BLUETOOTH
Sicurezza
Nel baseband c un meccanismo di criptaggio e decriptaggio. LMP fornisce un
meccanismo di coordinamento e negoziazione delle chiavi di criptaggio.
Controllo di potenza
Un dispositivo Bluetooth pu regolare la propria potenza di emissione. Se un
dispositivo ricevente non riceve bene pu richiedere al trasmittente di aumentare la
potenza col comando LMP_incr_power_req, mentre nel caso riceva un segnale pi
forte
del
dovuto,
pu
chiedere
una diminuzione
della
potenza,
con
un
LMP_decr_power_req.
Il controllo di potenza agisce tramite un ricevitore che esamina un segnale di
monitorazione della potenza, lRSSI (Receiver Signal Strength Indication).
102
BLUETOOTH
Versione LMP
Il LM supporta le richieste di versione (LMP_version_req) del protocollo LMP
posseduto da un dispositivo. Questo risponde con tre parametri, VersNr,che specifica il
numero della versione di LMP supportata, CompId, riguardo la compagnia che ha
creato limplementazione LM, e Sub-VersNr, che indica la versione di LM sviluppata
dalla compagnia stessa.
Caratteristiche supportate
Alcune delle caratteristiche dello standard Bluetooth sono opzionali, come i pacchetti
multi-slot, il criptaggio, le modalit basso consumo, lRSSI, il controllo di potenza, i
link SCO etc.; con il messaggio LMP_features_req si pu ottenere un elenco delle
caratteristiche supportate e di quelle che non lo sono.
103
BLUETOOTH
104
BLUETOOTH
Il firmware HCI presente nel modulo Bluetooth traduce tutti i comandi provenienti
dallinterfaccia HCI in comandi comprensibili dal Link Manager e dal livello
Baseband. Il driver HCI presente sullhost riceve gli eventi (asincroni) dal modulo, che
indicano cosa avvenuto (es. ricezione dati).
Il driver e il firmware comunicano tra di loro attraverso un livello di trasporto, che
permette al driver di inviare dati senza conoscere il mezzo con cui vengono trasmesse
105
BLUETOOTH
queste informazioni. Per questo livello sono definite tre tipi di interfacce, cio USB,
UART e RS232.
Prendendo per esempio una scheda PCMCIA Bluetooth per PC, questa ha una struttura
con il Baseband e il Link Manager implementati da un processore dedicato presente
sulla card PCMCIA e i livelli pi alti, come L2CAP, SDP, RFCOMM e le applicazioni,
sul processore del PC, che funziona da host.
Una scheda di questo tipo usa il livello HCI per separare i livelli inferiori e superiori
per i seguenti motivi:
-
Host come i PC hanno molta capacit per gestire i livelli superiori, permettendo ai
dispositivi Bluetooth di necessitare di meno memoria, di non avere bisogno di DSP
dedicati a calcoli, per cui si riducono i costi;
In Figura 51 mostrato come lo stack Bluetooth pu essere diviso in due parti collegate
tra loro dal livello HCI.
Perch non spostare lintero stack su un processore host? Questo potrebbe essere fatto,
ma la temporizzazione degli slot Bluetooth implica che lhost dovrebbe essere in grado
di rispondere in tempi dellordine dei microsecondi agli interrupt provenienti dal livello
106
BLUETOOTH
Pacchetti HCI
Lo standard Bluetooth definisce i seguenti tipi di pacchetti per il livello HCI:
-
pacchetti di evento usati dal modulo per informare lhost delle variazioni di eventi;
107
BLUETOOTH
Questo tipo di pacchetto comincia con due bytes di OpCode, che identificanoin modo
univoco il tipo di comando. LOpCode a sua volta diviso in due parti; OpCode Group
Field (OGF) che identifica il gruppo di comandi, e OpCode Command Field (OCF) che
identifica il comando nel gruppo. LOGF occupa i 6 bit pi alti, mentre lOCF occupa i
10 bit pi bassi dellOpCode. In Figura 54 riportato lesempio di un comando
HCI_Inquiry_Cancel, che ha OGF = 0x01 e OCF = 0x0002.
108
BLUETOOTH
seriale del modulo; questo comando ha OCF = 0x0009 e OGF = 0x3F. Il parametro
0x02 indica la velocit impostata (in questo caso 115.2 kbps).
HCI_Reset.
Qui
impossibile
per
il
modulo
mandare
lHCI_Command_Status
sar
restituito
immediatamente
per
dire
che
Questo tipo di pacchetti sono utilizzati per scambiare dati attraverso lHCI, sia per
traffico ACL che SCO; a seconda del tipo di collegamento sono definti due pacchetti
dati diversi.
In Figura 56 mostrata la struttura di un pacchetto dati ACL.
109
BLUETOOTH
dispositivo;
-
Data Total Length: indica la lunghezza dei dati trasmessi, che al massimo
65535 byte;
-
110
BLUETOOTH
I pacchetti dati SCO sono molto simili a quelli ACL, con alcune differenze:
-
111
BLUETOOTH
Questo livello di trasporto permette di collegare lhost con lhost controller attraverso
uninterfaccia seriale. Un esempio pu essere il collegamento tra lUART di un modulo
Bluetooth e lUART di un microprocessore, oppure con luscita seriale di un PC,
opportunamente interfacciata tramite un MAX232 (Figura 62).
112
BLUETOOTH
Indicatore
Comando
0x01
Dati ACL
0x02
Dati SCO
0x03
Evento
0x04
In tab. 2.5 sono mostrati anche gli indicatori, che servono per differenziare i quattro tipi
di pacchetto e vengono messi davanti ad essi nella trasmissione.
Sullinterfaccia UART anche possibile utilizzare i due segnali RTS (Request To
Send) e CTS (Clear To Send) (Figura 63); questi sono utili nel caso in cui il buffer del
modulo si riempie: se luscita del modulo CTS = 0 possibile mandare dati al modulo,
mentre impostando lingresso del modulo RTS = 1, si disabilita il modulo dalla
ricezione di dati.
I parametri di default a cui viene impostato lUART del modulo sono riportati in tab. 6:
113
BLUETOOTH
Velocit di trasmissione
Numero di bit
Bit di parit
Nessuna parit
Bit di Stop
1 bit di Stop
Controllo di flusso
RTS/CTS
BLUETOOTH
Comandi HCI
Le specifiche Bluetooth forniscono diverse categorie di comandi HCI, attraverso i quali
possibile configurare il modulo, controllare il collegamento, richiedere informazioni o
attivare la modalit test.
Ecco le diverse categorie di comandi HCI:
Link Control
115
BLUETOOTH
Tramite questo gruppo di comandi lhost in grado di cambiare il modo in cui il Link
Manager gestisce la piconet., cambiando dei parametri di policy (politica). Questi
comandi sono caratterizzati da OGF = 0x02.
Esempi di comandi Link Policy sono HCI_hold_mode (OCF = 0x0001),
HCI_write_link_policy_settings (OCF = 0x000D) e HCI_QoS_setup (OCF = 0x0007).
Host Controller & Baseband
Lhost controller modifica tutti i suoi parametri di stato. Questi parametri forniscono
informazioni circa lo stato attuale dellhost controller, del Link Manager e del
Baseband. Lhost non pu modificare nessuno di questi parametri; pu solo resettare
116
BLUETOOTH
alcuni parametri specifici. Il gruppo ha OGF = 0x05; alcuni esempi sono il comando
HCI_read_RSSI (OCF = 0x0005) e il HCI_get_link_quality (OCF = 0x0003).
Testing
Questi comandi sono usati per abilitare la modalit test sullhardware Bluetooth, e
permettono di sistemare alcuni parametri sulle condizioni di test.
Sono caratterizzati da OGF = 0x06; esempi sono il read_loopback_mode (OCF =
0x0001) e il enable_device_under_test_mode (OCF = 0x0003).
Inquiry
Nel par. 2.6.4 si visto come il livello Baseband usa loperazione di inquiry per
scoprire altri dispositivi Bluetooth nelle vicinanze; tutti gli aspetti del processo di
inquiry sono controllabili attraverso lHCI.
Avvio di un inquiry
117
BLUETOOTH
Page scan repetition mode (1 byte), R0 continuo, R1 page scan ogni 1.28 s, R2
ogni 2.56 s;
Clock offset (2 byte), I bit CLKN[16:2] del clock del device che risponde
allinquiry.
118
BLUETOOTH
Per fare in modo che un apparecchio Bluetooth funzionante da master in una piconet sia
in grado di aggiornare continuamente la configurazione della propria rete ad hoc, si
vorrebbe che esso fosse in fase di inquiry in continuazione, cio sia alla ricerca
continua di nuovi dispositivi; questo per comporterebbe elevati consumi in termini di
batterie, per cui ci si limita ad effettuare operazioni di inquiry periodiche per brevi
intervalli. Un host mette un modulo Bluetooth in inquiry periodica tramite il comando
HCI_Periodic_Inquiry_Mode, che fa parte dei comandi LINK Control, nel quale si
specificano alcuni parametri quali lintervallo in cui si ripete linquiry e la lunghezza.
Inquiry scan
Nel paragrafo 2.6.4 stato descritto come un dispositivo Bluetooth si rende disponibile
ad essere scoperto da altri dispositivi entrando nella procedura di inquiry scan. Tramite
lHCI possibile configurare alcuni parametri di questa procedura.
Temporizzazione dellInquiry scan
Si presenta anche qui il problema del consumo per dispositivi che opera un inquiry
scanning. La soluzione effettuare operazioni di scan per brevi intervalli
periodicamente. Il GAP (Generic Access Profile) raccomanda di effettuare scansioni in
119
BLUETOOTH
120
BLUETOOTH
121
BLUETOOTH
Questo
si
pu
fare
tramite
il
comandi
cade
come
se
lhost
avesse
inviato
un
messaggio
HCI_Reject_Connection_Request.
Se lhost accetta la connessione, dopo uno scambio di messaggi a livello Baseband e
LM per linstaurazione della connessione, i due moduli inviano ai rispettivi host dei
pacchetti evento HCI_Connection_Complete (Figura 71).
122
BLUETOOTH
una
connessione
creata
attraverso
il
livello
HCI,
levento
123
BLUETOOTH
124
BLUETOOTH
Protocol Multiplexing
L2CAP fornisce questo servizio per permettere a diversi protocolli di livello superiore
di passare dati attraverso un singolo canale ACL; questo livello deve essere quindi in
grado di distinguere i protocolli che girano a livello superiore, in quanto i livelli
inferiori non supportano nessun tipo di campo per i livelli superiori, quali RFCOMM,
SDP e Telephony Control.
Per fare ci si usa un campo detto PSM (Protocol Service Multiplex), che occupa due
byte nei segnali L2CAP, e che indica il livello superiore che sta occupando il canale. In
tab. 7 sono mostrati i possibili valori che pu assumere il PSM.
PSM value
Description
0x0001
SDP
0x0003
RFCOMM
0x0005
Telephony Control
< 0x1000
Riservato
Gli identificatori di canale (tab. 7) sono dei numeri locali che identificano un terminale
di un canale logico e sono costituiti da due byte. Il CID = 0x0001 viene usato per i
125
BLUETOOTH
segnali di controllo, mentre i CID che vanno da 0x0040 in poi vengono allocati
dinamicamente, cio alla prima connessione viene assegnato CID = 0x0040, alla
seconda CID = 0x0041 e cos via in modo sequenziale.
CID
Descrizione
0x0000
ID nullo
0x0001
Canale di controllo
0x0002
Connection Less
0x0003 0x003F
Riservati
0x0040 0xFFFF
Allocati Dinamicamente
Segmentazione e riassemblaggio
I pacchetti definiti in banda base hanno delle dimensioni limitate; utilizzando il
pacchetto pi grande (DH5), si ha un MTU (Maximun Transfer Unit) di 339 byte, che
limita notevolmente luso della banda da parte dei pacchetti che, a livello superiore,
sono progettati per pacchetti pi grandi.
Il livello L2CAP si occupa di prendere pacchetti di dimensioni maggiori e di
suddividerli in pi pacchetti compatibili con il Baseband; inoltre assolve anche il
riassemblaggio di tali pacchetti in banda base, riportandoli alle dimensioni idonee per i
livelli superiori.
Nella procedura di segmentazione il protocollo L2CAP deve scoprire la dimensione
massima che pu trasmettere il livello sottostante.
Nel caso in cui L2CAP presente sul dispositivo senza host (Figura 73a), la
dimensione massima data dal tipo di pacchetto utilizzato nel livello Baseband (es.
DH3,DM5,etc.); nel caso di sistema con host, presente il livello HCI, per cui
necessario eseguire allinizializzazione dello stack un comando per determinare la
dimensione del buffer HCI presente nel modulo Bluetooth utilizzato.
La segmentazione utilizza poche risorse nei pacchetti in banda base; infatti i primi due
bit del payload header (Figura 33), cio il campo L_CH, sono definiti per segnalare
126
BLUETOOTH
Operazioni L2CAP
I messaggi L2CAP vengono scambiati sul canale allocato al channel ID 0x0001, che
viene usato per spedire informazioni di controllo tra livelli L2CAP per gestire e
127
BLUETOOTH
128
BLUETOOTH
129
BLUETOOTH
130
BLUETOOTH
L2CAP_Confiq_Rsp:
stata
ricevuta
una
conferma
alla
richiesta
di
configurazione;
-
131
BLUETOOTH
In Figura 78 mostrato uno schema che evidenzia gli stati e gli eventi che causano le
transizioni da uno stato allaltro del canale L2CAP durante la creazione e la chiusura di
una connessione.
Figura 78: Stati e eventi che provocano le transizioni del canale L2CAP
132
BLUETOOTH
Pacchetti L2CAP
Come tutti gli altri livelli Bluetooth, anche il livello L2CAP usa delle strutture di
pacchetti comuni (Figura 79).
133
BLUETOOTH
Il primo byte indica lOpcode del comando e identifica il contenuto del segnale; c poi
un byte , Identifier, che serve , per far corrispondere una richiesta con la sua risposta. E
utile in particolare per quelle richieste che devono essere spedite in pi di un pacchetto.
C poi il campo Length che indica la lunghezza dei dati del comando, e Data, che
contiene i parametri della richiesta. In tabella 8 sono mostrati i vari opcode disponibili
per i comandi L2CAP.
Codice
Descrizione
0x01
Comando rifiutato
0x02
Richiesta di connessione
0x03
0x04
Richiesta di configurazione
0x05
0x06
Richiesta di disconnessione
0x07
0x08
Richiesta di echo
0x09
Risposta allecho
0x0A
Richiesta di informazioni
0x0B
134
BLUETOOTH
(4),
che
provoca
un
messaggio
livello
LM
135
BLUETOOTH
con
un
comando
HCI_Accept_Connection_Request (9).
136
di
accettazione
della
connessione,
BLUETOOTH
Osservando tale pacchetto a livello HCI, si pu vedere la sua codifica (Figura 86).
137
BLUETOOTH
Il campo Destination CID contiene il CID che verr usato per la connessione dal
dispositivo che sta rispondendo, mentre il Source CID viene copiato dal
L2CAP_Connect_Req.
dispositivo
che
ha
iniziato
la
connessione
manda
un
messaggio
138
BLUETOOTH
Nel progetto verr impostata la massima dimensione per un pacchetto L2CAP di 200
byte.
La codifica di un pacchetto L2CAP_Config_Rsp mostrata in Figura 88.
RFCOMM
Il protocollo RFCOMM posizionato sopra il livello L2CAP e mette a disposizione
unemulazione della porta seriale. Tramite questa emulazione, possibile far girare
tutte le applicazioni che basano il loro funzionamento sulla presenza della porta seriale
senza apportare loro nessuna modifica.
RFCOMM basato su GSM T07.10, che un protocollo asimmetrico usato dai
cellulari GSM per multiplexare stringhe di dati su una linea seriale fisica, e mette a
139
BLUETOOTH
disposizione delle applicazioni una porta seriale con i nove segnali RS232; supporta
fino a 60 connessioni simultanee tra due dispositivi.
Il protocollo PPP (Point to Point Protocol), che utilizzato nei collegamenti internet, ha
bisogno della presenza della porta seriale. Con il protocollo RFCOMM possibile
utilizzare il sistema PPP per creare una rete locale oppure collegarsi ad internet senza
nessun cambiamento al programma che gestisce il PPP.
Allinterno dei profili dello standard Bluetooth presente il profilo LAN, che permette
di creare una rete locale senza fili tramite il Bluetooth. Questo profilo possibile grazie
a RFCOMM che permette di instaurare una connessione PPP e su questa far girare il
TCP/IP o qualsiasi applicazione necessaria.
RFCOMM comunica con le trame, che diventano data payload nei pacchetti L2CAP. Ci
sono cinque tipi di trame diversi:
-
RFCOMM usa i canali, ognuno dei quali ha un DLCI (Data Link Connection
Identifier), che diverso da zero per spedire i dati e uguale a zero per spedire messaggi
di controllo.
A causa del fatto che le trame RFCOMM sono portate nel payload dei pacchetti
L2CAP, necessario settare una connessione L2CAP prima di una connessione
RFCOMM.
RFCOMM ha un valore PSM riservato per L2CAP, pari a 0x0003. Ogni trama L2CAP
ricevuta con questo PSM sar spedita a RFCOMM.
La prima trama spedita al canale RFCOMM SABM (Start Asynchronous Balanced
Mode). Se il dispositivo RFCOMM rispondente si connette, va in ABM (Asynchronous
Balanced Mode) e manda una trama UA (Unnumbered Acknowledgement). Se non si
vuole connettere, rifiuta e manda una trama DM (Disconnected Mode).
140
BLUETOOTH
Il canale L2CAP usato per il SDP pu essere escluso una volta che non richiesto a
lungo, oppure pu venire aperto se il client vuole chiedere al server database per altri
servizi.
Il valore del protocollo L2CAP e del Protocol Service Multiplexor (PSM) per SDP
definito come 0x0001. Avere PSM noto significa che una volta che un link ACL stato
stabilito, il client SDP automaticamente conosce il numero da usare per stabilire un link
con il server SDP sul dispositivo remoto.
Bluetooth non definisce uninterfaccia con luomo per il SDP; definisce solamente il
protocollo di scambio di dati tra un server che offre servizi e un client che spera di
usarli.
141
BLUETOOTH
Profili
Nello standard Bluetooth vengono definiti vari profili, nei quali vengono descritti i
formati dei pacchetti per varie applicazioni (stampante, accesso LAN, IP su Bluetooth,
etc.). Tramite la definizione di questi profili possibile rendere interoperabili prodotti
di produttori diversi. Inoltre tramite il SDP possibile scoprire i servizi che un altro
dispositivo mette a disposizione. Per esempio, se si in un aeroporto e ci si vuole
connettere a internet, possibile fare un inquiry per scoprire se nelle vicinanze
presente un dispositivo Bluetooth, e poi con il SDP vedere se un access point o meno.
In caso positivo possibile usare il profilo LAN per comunicare con laccess point.
Un profilo molto interessante per il futuro il BNEP (Bluetooth Network
Encapsulation Protocol), e un diagramma dellimplementazione mostrato in Figura
89.
142