La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP.

Presentazioni simili


Presentazione sul tema: "STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP."— Transcript della presentazione:

1 STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP

2 Corso Bluetooth , 3 ore Bluetooth Phy e Baseband , 3 ore Baseband LMP HCI +L2CAP RFCOM, SDP e profili (corso di Rossi)

3 Protocol stack Radio Baseband HW Analogico/RF HW Digitale Software layers Link Controller Audio Link Manager L2CAP TCP/IPHIDRFCOMM Applications Data Control HW Digitale/Analogico BT device

4 Hosted vs. Host-less. Baseband Radio Link manager HCI L2CAP Bluetooth Device Bluetooth Host E.g. RF Comm Baseband Radio Link manager L2CAP E.g. RF Comm Bluetooth Hostless Device

5 Architettura Hosted

6 Bluetooth device

7 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 produttore Consente 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 Data Events Commands

8 Transport Interfaccia fisica per connettere lhost allhost 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

9 Comandi HCI Set di comandi con cui lhost 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

10 Formato pacchetto comandi HCI

11 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

12 Formato pacchetto eventi HCI

13 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 levento corrisponde – Return parameters (N bytes): i parametri di risposta al comando

14 Flusso dati (L2CAP) Link Manager ComandiEventiDati LCH=11LMP_PDU LCH=01Continuazione dati LCH=10Inizio dati L2CAP Pacchetto max dati HCI dipende dall Host controller, solitamente e poco meno di un Kbyte Il link manager opera una segmentazione

15 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

16 Formato pacchetto dati HCI

17 Voce Interfaccia dedicata PCM Trasporto HCI

18 Esempio transazione HCI Lettura da parte dell host del BD_address del dispositivo locale Lhost 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 Lhost controller risponde con un pacchetto eventi command_complete – EV code=0x0E – Parametri: pending= 1 byte,opcode=2 bytes, returnpar=7bytes

19 Richiesta BD_address OP Code OCF=0x OGF=0x04 Length 8 0 EV Code 0x0E 8 0x0A (10) Status BD_ADD 0x00=OK Pending 816 Opcode xxx Comando Evento Par Length 8 OGF=0x0009 OCF=0x x 6 B_A (1) B_A (2) B_A (3) B_A (4) B_A (5)B_A (6)

20 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)

21 Controllo inquiry Comando HCI_Inquiry (length,Num resp): Lhost 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_Repetiti on_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.

22 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)

23 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)

24 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_Sca n_Repetition_Mode,Page_Scan_Mode,Clock_Offset) HCI_Read_Remote_Supported_Features (Connection_Handle) HCI_Read_Clock_Offset (Connection_Handle)

25 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)

26 Host controller & BB, OGF=3 51 comandi per controllare i vari settaggi dellHC: 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

27 Parametri informativi OGF=4 HCI_Read_Local_Version_Information( Status,H CI 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

28 Parametri di stato OGF=5 HCI_Read_Failed_Contact_Counter(Connect ion_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

29 Comandi di test OGF=6 Read / write loop-back mode

30 HCI Flow control Transmitter host Receiver host Transmitter host controller Receiver host controller

31 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

32 Flow control: Host to Host controller Lhost abilita il controllo di flusso col comando Set_Host_Controller_To_Host_Flow_Control Lhost valuta la grandezza del buffer del H.C. (in pacchetti) col comando Read_Buffer_Size All inizio lhost assume il buffer HC vuoto, inizializza una variabile (B) dei buffers disponibii Ad ogni pacchetto inviato all HC, lhost decrementa B Se B diventa 0, lhost smette di inviare pacchetti. Periodicamente, lHC invia un evento Number Of Completed Packets per notificare i pacchetti correttamente trasmessi Lhost, somma a B il valore dei pacchetti inviati

33 Macchina a stati Flow control B= buffer size Wait B= B-1 Inviato pacchetto HCI B= B+N Evento: Trasmessi N pacchetti Stop Evento: Trasmessi N pacchetti B=0

34 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

35 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


Scaricare ppt "STMicroelectronics Bluetooth Terza lezione: HCI e L2CAP."

Presentazioni simili


Annunci Google