bluetooth
Download
Skip this Video
Download Presentation
Bluetooth

Loading in 2 Seconds...

play fullscreen
1 / 35

Bluetooth - PowerPoint PPT Presentation


  • 287 Views
  • Uploaded on

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). Protocol stack. Applications. TCP/IP. HID. RFCOMM. Control. Data. Audio. L2CAP.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Bluetooth' - arich


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
bluetooth

Bluetooth

Terza lezione: HCI e L2CAP

corso bluetooth
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)
protocol stack
Protocol stack

Applications

TCP/IP

HID

RFCOMM

Control

Data

Audio

L2CAP

Software layers

LinkManager

HW Digitale

Link Controller

HW Digitale/Analogico

Baseband

HW Analogico/RF

Radio

BT device

hosted vs host less

E.g. RF Comm

L2CAP

Link manager

Baseband

Radio

Hosted vs. Host-less.

E.g. RF Comm

L2CAP

HCI

Bluetooth

Host

Bluetooth

Hostless

Device

HCI

Bluetooth

Device

Link manager

Baseband

Radio

hci host controller interface

Commands

Events

Data

HCI (host controller interface)

Bluetooth Host

Host Drivers and Applications

  • 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 produttore
  • Consente di sviluppare facilmente applicazioni senza conoscere nel dettaglio il protocollo

Bluetooth HCI driver

Bluetooth Host Controller

Link Manager

Baseband & Link Controller

Bluetooth Radio

Bluetooth Module

transport
Transport
  • Interfaccia fisica per connettere l’host all’host controller
  • Tipicamente 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
comandi hci
Comandi HCI
  • Set di comandi con cui l’host richiede i servizi del link manager
  • Pacchetti HCI spediti dall’ host al dispositivo HC
  • 6 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
eventi hci
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
evento command complete
Evento ‘command complete’
  • Serve per restituire i parametri di risposta ad un comando.
  • Event code=0x0E
  • Parametri:
    • 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
flusso dati l2cap
Flusso dati (L2CAP)
  • Pacchetto max dati HCI dipende dall’ Host controller, solitamente e’ poco meno di un Kbyte
  • Il link manager opera una segmentazione

Comandi

Eventi

Dati

LCH=10

Inizio dati L2CAP

Link Manager

LCH=01

Continuazione dati

LCH=11

LMP_PDU

connection handle
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
slide17
Voce
  • Interfaccia dedicata PCM
  • Trasporto HCI
esempio transazione hci lettura da parte dell host del bd address del dispositivo locale
Esempio transazione HCILettura 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
richiesta bd address
Richiesta BD_address

Comando

16

8

OP Code

Length

0

OCF=0x009

OGF=0x04

Evento

8

8

8

16

EV Code

Par Length

Pending

Opcode

xxx

OGF=0x0009 OCF=0x04

0x0E

0x0A (10)

8

8 x 6

Status

BD_ADD

0x00=OK

B_A (5)

B_A (6)

B_A (1)

B_A (3)

B_A (4)

B_A (2)

controllo connessioni
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)
controllo inquiry
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.
connessione lato slave
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)
gestione sicurezza
Gestione sicurezza
  • Comandi:
    • HCI_Authentication_Requested(Connection_Handle)
    • HCI_Set_Connection_Encryption(Connection_Handle,Encryption_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)
link control commands ogf 1
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)
link policy commands ogf 2
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)
host controller bb ogf 3
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
parametri informativi ogf 4
Parametri informativi OGF=4
  • HCI_Read_Local_Version_Information(Status,HCI Version,HCI Revision,LMP Version,Manufacturer_Name,LMP Subversion)
  • HCI_Read_Local_Supported_Features
  • HCI_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
parametri di stato ogf 5
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
comandi di test ogf 6
Comandi di test OGF=6
  • Read / write loop-back mode
hci flow control

Transmitter host

Receiver host

Receiver host controller

Transmitter host controller

HCI Flow control
hci flow control 2
HCI Flow control /2
  • Necessario sia da host a host controller che viceversa
  • Basato si pacchetti dati HCI
  • Dipendente dalle dimensioni dei buffers
  • Soggetto alla latenza del protocollo di trasporto: non sarebbe efficiente uno stop-and-go ad ogni pacchetto
  • Occorre minimizzare le notifiche del controllo di flusso per non intasare il bus di trasporto
flow control host to host controller
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 B
  • Se B diventa 0, l’host smette di inviare pacchetti.
  • Periodicamente, l’HC invia un evento Number Of Completed Packets per notificare i pacchetti correttamente trasmessi
  • L’host, somma a B il valore dei pacchetti inviati
macchina a stati flow control
Macchina a stati Flow control

B= buffer size

Evento: Trasmessi N pacchetti

Inviato pacchetto HCI

B= B+N

Wait

B= B-1

B=0

Stop

Evento: Trasmessi N pacchetti

uart transport
UART transport
  • Usata soprattuto in applicazioni ‘embedded’
  • Richiede un protocollo aggiuntivo di multiplexing per distinguere i 4 flussi
  • Viene aggiunto un Byte prima di ogni pacchetto HCI:
    • 0x01= pacchetto comandi
    • 0x02= pacchetto dati ACL
    • 0x03= pacchetto dati SCO
    • 0x04= pacchetto eventi
usb transport
USB transport
  • Perfetto in ambiente PC, spesso usato anche internamente su motherboard
  • Sfrutta 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
ad