1 / 35

Bluetooth

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.

arich
Download Presentation

Bluetooth

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bluetooth Terza lezione: HCI e L2CAP

  2. 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)

  3. 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

  4. 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

  5. Architettura Hosted

  6. Bluetooth device

  7. 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

  8. 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

  9. 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

  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 l’evento corrisponde • Return parameters (N bytes): i parametri di risposta al comando

  14. 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

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

  19. 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)

  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): 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.

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

  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_Scan_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 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

  27. 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

  28. 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

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

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

  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 • 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

  33. 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

  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

More Related