STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

35
STMicroelectron ics Bluetooth Terza lezione: HCI e L2CAP

Transcript of STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Page 1: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

STMicroelectronics

Bluetooth

Terza lezione: HCI e L2CAP

Page 2: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Corso Bluetooth

14-4-2003, 3 ore Bluetooth Phy e Baseband

5-5-2003, 3 ore Baseband LMP

12-5-2003 HCI +L2CAP

20-5-2003 RFCOM, SDP e profili (corso di Rossi)

Page 3: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Protocol stack

RadioBaseband

HW Analogico/RF

HW Digitale

Software layers

Link Controller

AudioLink Manager

L2CAP

TCP/IP HID RFCOMM

Applications

Data

Con

trol

HW Digitale/Analogico

BT device

Page 4: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Hosted vs. Host-less.

Baseband

Radio

Link manager

HCI

HCI

L2CAP

BluetoothDevice

BluetoothHost

E.g. RF Comm

Baseband

Radio

Link manager

L2CAP

E.g. RF Comm

BluetoothHostlessDevice

Page 5: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Architettura Hosted

Page 6: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Bluetooth device

Page 7: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

HCI (host controller interface)

Il protocollo HCI trasporta– Comandi– Eventi– Dati ACL (bidirezionale)– Dati SCO (bidirezionale)

Tre Physical transports definiti:– UART– USB– PCMCIA/PCI

Rappresenta un’ interfaccia standard, indipendente dal produttoreConsente di sviluppare facilmente applicazioni senza conoscere nel dettaglio il protocollo

Bluetooth Host

Bluetooth Module

Host Drivers and Applications

Bluetooth HCI driver

Bluetooth Host Controller

Link Manager

Bluetooth Radio

Baseband & Link Controller

Dat

a

Ev

ents

Co

mm

an

ds

Page 8: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

TransportInterfaccia fisica per connettere l’host all’host controllerTipicamente seriale:

– Piu’ semplice da collegare (meno pin)– Non occorrono throughput elevati

USB: – La piu’ diffusa in ambiente PC, sia interna che esterna– Autoconfigurante, banda sovradimensionata, supporto flusso isocrono– Maggiore complessita’

UART:– La piu’ usata in applicazioni ‘embedded’– Non autoconfigurante,banda appena sufficiente, no multiplex– Semplice da programmare

PCMCIA:– Definita ma poco utilizzata

Page 9: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Comandi HCI

Set di comandi con cui l’host richiede i servizi del link managerPacchetti HCI spediti dall’ host al dispositivo HC6 gruppi di comandi:

– Controllo connessione– Politiche di connessione– Controllo dispositivo– Parametri informativi– Parametri di stato– Comandi di test

Circa 100 comandi definiti nelle specifiche 1.1

Page 10: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Formato pacchetto comandi HCI

Page 11: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Eventi HCI

Pacchetti spediti dal dispositivo HC all’ Host

Servono al link manager per notificare all’ host:– Che e’ accaduto un evento significativo a livello

locale o remoto.– Per ritornate i parametri di ris– posta ad un comando.

32 eventi definiti nella v.1.1

Page 12: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Formato pacchetto eventi HCI

Page 13: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Evento ‘command complete’

Serve per restituire i parametri di risposta ad un comando.Event code=0x0EParametri:– HCI command packets (1Byte): numero di

comandi pendenti– Command opcode (2 bytes): Opcode (OGF+OCF)

del comando a cui l’evento corrisponde– Return parameters (N bytes): i parametri di

risposta al comando

Page 14: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Flusso dati (L2CAP)

Link Manager

Comandi Eventi Dati

LCH=11 LMP_PDU

LCH=01 Continuazione dati

LCH=10 Inizio dati L2CAP

Pacchetto max dati HCI dipende dall’ Host controller, solitamente e’ poco meno di un Kbyte

Il link manager opera una segmentazione

Page 15: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Connection handle

Parola di 12 bit da 0x000 a 0xEFF (0xF00-0xFFF riservati)

Identifica univocamente ogni singola connessione nel dialogo tra host e dispositivo.

Esiste solo a livello HCI, non ha alcun significato ad altri livelli.

Ad es., un master ha un C.H. per ogni slave

Page 16: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Formato pacchetto dati HCI

Page 17: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Voce

Interfaccia dedicata PCM

Trasporto HCI

Page 18: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Esempio transazione HCI Lettura da parte dell’ host del BD_address del

dispositivo locale

L’host invia al dispositivo un pacchetto comandi HCI_Read_BD_ADDR

– OGF=0x04, OCF=0x0009– Parametri di richiesta nessuno– Parametri di risposta: stato=1byte,BD_ADD=6 bytes

L’host controller risponde con un pacchetto eventi command_complete

– EV code=0x0E – Parametri: pending= 1 byte,opcode=2 bytes, returnpar=7bytes

Page 19: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Richiesta BD_address

OP Code

OCF=0x009

16

OGF=0x04

Length8

0

EV Code

0x0E

8

0x0A (10)

Status BD_ADD

0x00=OK

Pending8 16

Opcode

xxx

Comando

Evento

Par Length

8

OGF=0x0009 OCF=0x04

8 8 x 6

B_A (1) B_A (2) B_A (3) B_A (4) B_A (5) B_A (6)

Page 20: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Controllo connessioni

Comando HCI_Create_Connection (BD_ADDR,Packet_Type,Page_Scan_Repetition_Mode,Page_Scan_Mode,Clock_Offset,Allow_Role_Switch)

Evento Connection Complete (Status,Connection_Handle,BD_ADDR,Link_Type,Encryption_Mode)

Comando HCI_Disconnect (Connection_Handle,Reason)

Evento Disconnection Complete (Status,Connection_Handle, Reason)

Page 21: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Controllo inquiry

Comando HCI_Inquiry (length,Num resp): L’host chiede di fare un inquiry per un tempo ‘length’ e di trovare al massimo ‘Num resp’ unita’.

Evento Inquiry Result (Num_Responses,BD_ADDR[i],Page_Scan_Repetition_Mode[i],Page_Scan_Period_Mode[i],Page_Scan_Mode[i],Class_of_Device[i],Clock_Offset[i])

Evento Inquiry Complete (Status)– Indica che e’ trascorso il tempo di inquiry specificato.

Page 22: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Connessione (lato slave)

Evento Connection Request (BD_ADDR, Class_of_Device,Link_Type)

Comandi: – HCI_Accept_Connection(BD_ADDR,Role)– HCI_Reject_Connection(BD_ADDR, Reason)

Page 23: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Gestione sicurezza

Comandi:– HCI_Authentication_Requested(Connection_Handle)– HCI_Set_Connection_Encryption(Connection_Handle,E

ncryption_Enable)– HCI_Link_Key_Request_Reply (BD_ADDR, Link_Key)– HCI_PIN_Code_Request_Reply(BD_ADDR,PIN_Code_

Length,PIN_Code)

Eventi– PIN Code Request (BD_ADDR)– Link Key Request (BD_ADDR)

Page 24: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Link Control commands OGF=1

HCI_Add_SCO_Connection (Connection_Handle,Packet_Type)

– Se ha successo ritorna un Connection_complete event

HCI_Change_Connection_Packet_Type(Connection_Handle,Packet_Type)

HCI_Remote_Name_Request(BD_ADDR,Page_Scan_Repetition_Mode,Page_Scan_Mode,Clock_Offset)

HCI_Read_Remote_Supported_Features (Connection_Handle)

HCI_Read_Clock_Offset (Connection_Handle)

Page 25: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Link policy commands (OGF=2)

HCI_Hold_Mode (Connection_Handle,Hold_Mode_Max_Interval,Hold_Mode_Min_Interval)

Sniff mode/Exit sniff, Park mode/ exit park

Role discovery, Switch role

Qos setup (Connection_Handle, Flags, Service_Type,Token_Rate, Peak_Bandwidth, Latency, Delay_Variation)

Page 26: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Host controller & BB, OGF=3

51 comandi per controllare i vari settaggi dell’HC:Reset

Change/read local name

Set/read timeouts (connessione, page, flush, supervision)

Read/write parametri di page_scan e inquiry_scan

Read/write Class of device locale

Read transmitted power(Conn_handle)

Read/write tabella delle Link keys

Page 27: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Parametri informativi OGF=4

HCI_Read_Local_Version_Information(Status,HCI Version,HCI Revision,LMP Version,Manufacturer_Name,LMP Subversion)

HCI_Read_Local_Supported_FeaturesHCI_Read_Buffer_Size (Status,HC_ACL_Data_Packet_Length,HC_SCO_Data_Packet_Length, HC_Total_Num_ACL_Data_Packets, HC_Total_Num_SCO_Data_Packets)

HCI_Read_Country_Code (obsoleto)

HCI_Read_BD_ADDR

Page 28: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Parametri di stato OGF=5

HCI_Read_Failed_Contact_Counter(Connection_Handle)– Legge il contatore dei pacchetti persi con una

particolare connessione)

HCI_Get_Link_Quality– Restituisce un byte 0=pessimo 255=ottimo

HCI_Read_RSSI– Restituisce un byte tra –128dbm e +128dbm

Page 29: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Comandi di test OGF=6

Read / write loop-back mode

Page 30: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

HCI Flow control

Transmitter host

Receiver host

Transmitter host controller

Receiver host controller

Page 31: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

HCI Flow control /2

Necessario sia da host a host controller che viceversaBasato si pacchetti dati HCIDipendente dalle dimensioni dei buffersSoggetto alla latenza del protocollo di trasporto: non sarebbe efficiente uno stop-and-go ad ogni pacchettoOccorre minimizzare le notifiche del controllo di flusso per non intasare il bus di trasporto

Page 32: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Flow control: Host to Host controller

L’host abilita il controllo di flusso col comando Set_Host_Controller_To_Host_Flow_Control

L’host valuta la grandezza del buffer del H.C. (in pacchetti) col comando Read_Buffer_Size

All’ inizio l’host assume il buffer HC vuoto, inizializza una variabile (B) dei buffers disponibii Ad ogni pacchetto inviato all’ HC, l’host decrementa BSe B diventa 0, l’host smette di inviare pacchetti.Periodicamente, l’HC invia un evento Number Of Completed Packets per notificare i pacchetti correttamente trasmessiL’host, somma a B il valore dei pacchetti inviati

Page 33: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Macchina a stati Flow control

B= buffer size

Wait B= B-1

Inviato pacchetto HCI

B= B+N

Evento: Trasmessi N pacchetti

StopEvento: Trasmessi N pacchetti

B=0

Page 34: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

UART transport

Usata soprattuto in applicazioni ‘embedded’Richiede un protocollo aggiuntivo di multiplexing per distinguere i 4 flussiViene aggiunto un Byte prima di ogni pacchetto HCI:– 0x01= pacchetto comandi– 0x02= pacchetto dati ACL– 0x03= pacchetto dati SCO– 0x04= pacchetto eventi

Page 35: STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

USB transport

Perfetto in ambiente PC, spesso usato anche internamente su motherboardSfrutta il meccanismo delle pipes USB per multiplexare i flussi

– Comandi= endpoint 0x00 (Control)– Eventi= endpoint 0x81 (Interrupt)– Dati ACL input = endpoint 0x82 (bulk in)– Dati ACL output=endpoint 0x02 (bulk out)– Dati SCO= endpoints 0x83,0x03 (isoch I/O)

Autoconfigurante: – Class of device =0xE0, subclass=0x01, pcode=0x01