1 / 89

Bluetooth: HCI, L2CAP, Rfcomm

Bluetooth: HCI, L2CAP, Rfcomm. Tietoliikennetekniikan seminaari 23.04.2002. 1. HCI-rajapinta. Host Controller Interface (HCI). Joissakin laitteissa on yhdistetty prosessorin peruskaista (baseband) ja Link Manager ylempien kerrosten palvelujen (L2CAP, SDP, RFCOMM) kanssa

ilya
Télécharger la présentation

Bluetooth: HCI, L2CAP, Rfcomm

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: HCI, L2CAP, Rfcomm Tietoliikennetekniikan seminaari 23.04.2002 Mari Tuominen (Tite01)

  2. 1. HCI-rajapinta Mari Tuominen (Tite01)

  3. Host Controller Interface (HCI) • Joissakin laitteissa on yhdistetty prosessorin peruskaista (baseband) ja Link Manager ylempien kerrosten palvelujen (L2CAP, SDP, RFCOMM) kanssa • Tarvitaan HCI-rajapinta, jotta voidaan ajaa protokollapinon ylemmät kerrokset isäntälaitteen prosessorin kautta ja alemmat Bluetooth-laitteen kautta • Bluetooth-standardi määrittelee HCI:n • Standardi mahdollistaa ylempien ja alempien kerrosten yhteensovittamisen ja erottamisen Mari Tuominen (Tite01)

  4. ...HCI • Laite voi käyttää HCI:tä mm. seuraavista syistä: • Hostilla on rajattu kapasiteetti ylempien kerrosten käsittelyä varten • Host voi ”nukkua” ja se herätetään Bluetooth-yhteyden vuoksi • HCI-rajapintaa voidaan käyttää Bluetooth-laitteiden tyyppi- ja muutakin testausta varten Mari Tuominen (Tite01)

  5. Ylemmät kerrokset Audio L2CAP Kontrolli HCI Ajuri (HCI Driver) Fyysinen väyläajuri (Physical Bus Driver) HOST HCI-paketit HCI-rajapinnan asema Bluetooth-protokollapinossa BLUETOOTH MODUULI Fyysinen väyläajuri (Physical Bus Driver) HCI Ajuri Link Manager Link Controller Radio Mari Tuominen (Tite01)

  6. ...HCI • Miksi koko protokollapinoa ei siirretä isäntäprosessorille? • Syy: Bluetoothin aikaviipalointi • Aiheuttaa: hostin pitäisi kyetä vastaamaan millisekunneissa keskeytyksiin, mitä se voi saada Bluetooth-radiopinnalta • Vaikka host käyttäisi MIPS:iä (millions instructions per second), ei voida taata hostin käytettävissä olemista, kun sitä tarvitaan • Ratkaisu: kerrokset, joilla on pieni (kriittinen) aika, pidetään omalla prosessorillaan • …ja saadaan taattua nopeat vastaukset Mari Tuominen (Tite01)

  7. ...HCI • Standardoitu rajapinta sallii myös ajurien kirjoittamisen • …takaa sen, että voidaan käyttää eri valmistajien Bluetooth-moduuleita • Rajapinnan standardointi sallii myös vakioidun testauksen radiopintaa ja pinon alempia kerroksia varten Mari Tuominen (Tite01)

  8. ...HCI • …ja ”poikkeus” edelliseen: myös sellaiset Bluetooth-systeemit ovat mahdollisia, joissa protokollapinon kerrokset ajetaan yhden prosessorin kautta • Tälläisen laitteen on oltava kuitenkin: • pieni • halpa • kevyt • vähän virtaa vievä • Laitteen tuettava HCI-rajapintaa testausta varten Mari Tuominen (Tite01)

  9. HCI-pakettityypit Mari Tuominen (Tite01)

  10. ...HCI • Bluetooth-standardi määrittelee HCI:tä varten: • Host – käsittelee käskypaketit kontrolloidakseen moduulia • Moduulit – käsittelevät tapahtumapaketit antaakseen tietoa hostille alempien kerrosten muutoksista • Datapaketit – siirtävät ääntä ja dataa moduulin ja hostin välillä • Kuljetuskerrokset – HCI-pakettien siirto Mari Tuominen (Tite01)

  11. HOST Komentopaketit Datapaketit Tapahtumapaketit BLUETOOTH-LAITE HCI-pakettityypit ja niiden siirto HCI-kuljetuskerroksen kautta Mari Tuominen (Tite01)

  12. HCI-käskypaketit • Käsitellään hostin kautta • Siirretään HCI-käskypakettien avulla • Käskypaketin rakenne: Bitti 0 - 32 0 16 24 32 OpCode Parametri total Parametri 0 Parametri 1 Parametri 2 Parametri N-1 Parametri N Mari Tuominen (Tite01)

  13. HCI-datapaketit • Paketteja on kahta tyyppiä • Käyttö: äänen ja datan siirtoon HCI:n kautta • Dataa siirretään ACL-paketteina • Ääntä siirretään SCO-paketteina • Erityyppiset paketit molemmille • Seuraavassa kuvassa pakettien rakenteen esittely Mari Tuominen (Tite01)

  14. Data Connection handle Reserved Datan kok.pituus 0 12 16 32 Connection handle PB Flag BC Flag Datan kokonaispituus Data HCI ACL-paketti 0 12 16 24 32 HCI SCO-paketti Mari Tuominen (Tite01)

  15. HCI-tapahtumapaketit • Rakenne samankaltainen kuin käskypakettien • Kuljettavat tapahtumakoodia ja tunnistavat tapahtumat • Toiminta samantyyppistä kuin OpCode-kentän, joka identifioi HCI-käskyt • Myös tapahtumapaketeissa on parametrien kokonaispituuden kuvaava kenttä ja sitä seuraa parametrien lista Mari Tuominen (Tite01)

  16. HCI-kuljetuskerros Mari Tuominen (Tite01)

  17. HCI-kuljetuskerros • Tarvitaan, jotta host voi vastaanottaa paketteja Bluetooth-moduulilta • Bluetooth määrittelee kuljetuskerroksen 3 kerrosta: • USB (Universal Serial Bus) ~universaali sarjaväylä • RS-232 (Serial Interface) ~rajapinta, sisältää virheenkorjauksen • UART (Universal Asynchronous Receiver Transmitter) ~rajapinta, ei virheenkorjausta Mari Tuominen (Tite01)

  18. USB • USB niputtaa erilaiset HCI-paketit USB-standardin mukaan USB-päätepisteiden avulla seuraavasti: • HCI-käskyt USB conrol endpoint ~kontrollipäätepiste • HCI ACL data USB bulk endpoint ~massapäätepiste • HCI SCO data USB isochronous endpoint ~isokroninen päätepiste • HCI tapahtumat USB interrupt endpoint ~keskeytyspäätepiste Mari Tuominen (Tite01)

  19. ...USB • Bulk-päätepiste • Käytetään ACL-dataan, koska: • takaa tarpeeksi nopean siirron ko. datalle • virheenkorjaus • Isokroninen päätepiste • Siirtää SCO-datan suoraan Hostin SCO-FIFO-puskurille • viritettävä 1 ms:n intervallille; yht.sop. USB:n kanssa • ei virheenkorjausta • Keskeytys-päätepiste • Tapahtumia varten • 1 ms intervalli: tapahtumat siirretään välittömästi USB-rajapinnan kautta Mari Tuominen (Tite01)

  20. ...USB • Jotta USB-ajuri pystyy lataututumaan oikein USB-luokkakoodi on kiinnitetty Bluetooth-laitteita spesifioivaan luokkaan, alaluokkaan ja protokollakoodeihin seuraavasti: • bbDeviceClass = 0*E0 (wireless controller) • bbDeviceSubClass = 0*01 (RF controller) • bbDeviceProtocol = 0*01 (Bluetooth programming) • Bluetooth-protokolla on tarkoitettu akkupohjaisille laitteille. USB:n host-controller tarkistaa alituiseen muistia nähdäkseen, pitääkö esim. jokaisen ms:n aikana tapahtua jotain. • Seuraus: Hostin virtaa säästyy. Mari Tuominen (Tite01)

  21. RS-232 ja UART • Molemmissa kehystys, jotta voidaan tunnistaa eri pakettityypit • luokitus: • 0*01 – HCI käskypaketti • 0*02 – HCI ACL datapaketti • 0*03 – HCI SCO datapaketti • 0*04 – HCI tapahtumapaketti. • RS-232 käsittelee virheitä / siirto linkityskonfiguraation kanssa, joten ed. lisäksi: • 0*05 – virheenkorjauspaketti • 0*06 – negotiation ~sovittelu- tai siirtopaketti. Mari Tuominen (Tite01)

  22. …RS-232 ja UART • UART-kerroksella paketin indikaattori lähetetään välittömästi ennen pakettia • UART-kuljetuskerros käyttää null-modem –tyyppisiä yhteyksiä • UART-rajapinnoissa on mahdollista, että UART puskureilta loppuu vapaa tila • RS-232 linkit ovat jonkin verran monimutkaisempia kuin UART-linkit Mari Tuominen (Tite01)

  23. …RS-232 ja UART 0 8 16 32 HCI-paketti tai Virheenkorjauspaketti tai Sovittelupaketti Pakettityypin indikaattori Sekvenssi- Numero RS-232-HCI-paketin kehysrakenne Mari Tuominen (Tite01)

  24. …RS-232 ja UART • Bluetooth HCI kuljetuskerroksen oletusparametrit: • Baud Rate (baudi arvo) = 9600 bps • Ei pariteettia. • 8 databittiä. • 1 pysäytysbitti. • Protokolla moodi = 0 * 13 (HDLC kuten kehystyksessä, mutta mukana (COBS / CCITT-CRC). Mari Tuominen (Tite01)

  25. Flow Control ~ Vuokontrolli(tapahtumavirran kontrolli) Mari Tuominen (Tite01)

  26. Vuokontrolli, yleistä • Host voi lähettää dataa nopeammin, kuin Bluetooth-moduuli kykenee työstämään sitä • Bluetooth-moduulin “tyydyttävä” datan puskurointiin • Ellei Bluetooth-moduuli pysty • käsittelemään / lähettämään eteenpäin • varastoimaan • ...dataa sillä vauhdilla, kun se vastaanottaa sitä, mikä neuvoksi? • Ratkaisu: tarjotaan Hci-rajapinnalle vuokontrolli, joka voi olla käskyjä, hostin sekä Bluetooth-moduulin vuota kontrolloivaa Mari Tuominen (Tite01)

  27. HCI-Command-complete HCI-Command-complete H O S T HCI-käsky BT- Laite Käsky suoritetaan heti H O S T HCI-käsky Käskyä ei voida suorittaa heti BT- Laite HCI-command-status Käsky suoritetaan viipeellä HCI-käskyn vuokontrolli Mari Tuominen (Tite01)

  28. Hostin vuota kontrolloiva data • Miten HCI:n kautta kulkeva vuo kontrolloidaan datan avulla? • Host lähettää HCI:n kautta Bluetoothille sen verran SCO ja ACL-paketteja, kuin BT pystyy käsittelemään • BT-moduuli kertoo Hostille, kun sen puskurissa on tilaa • moduuli ei puskuroi paljoakaan sco-dataa • SCO-data on synkronista; joka kerta kun SCO-slot vapautuu, SCO-paketti voidaan lähettää / hylätä • Bluetooth tarjoaa HCI_Write_SCO_Flow_Control_Enable –käskyn; tarkoitus informoida Hostia, kun BT:n SCO-datapuskurissa on tilaa Mari Tuominen (Tite01)

  29. BT-moduulin vuota kontrolloiva data • Yleensä Host hyväksyy kaiken BT-moduulin lähettämän datan • Joillakin Hosteilla on kuitenkin rajattu prosessointikapasiteetti • Esim. Mobilephone-handset • Tällöin dataa ei pystytä hyväksymään “täydellä nopeudella” • Ratkaisu: vuokontrolli BT-moduulilta Mari Tuominen (Tite01)

  30. ….BT-moduulin vuota kontrolloiva data • Bluetooth moduulin vuokontrolli kytkeytyy päälle HCI_Set_Host_Controller_To_Host_Flow_Control –käskyllä • Tämän jälkeen HCI_Host_Buffer_Size –käsky ilmoittaa moduulille hostin puskurointikyvystä • Sisältää tiedon ACL ja SCO –pakettien määrästä, jonka host voi maksimissaan puskuroida ja HCI_SCO- ja HCI_ACL –datapakettien maksimikoon. • Host taas käyttää HCI_Host_Number_Of_Completed_Packet –käskyä kertomaan Bluetooth moduulille, montako puskuria on vapautunut • Voidaan lähettää milloin tahansa eikä sillä ole vaikutusta tavanomaiseen vuokontrolliin Mari Tuominen (Tite01)

  31. Moduulien muodostus(configuring) Mari Tuominen (Tite01)

  32. Moduulit • HCI tarjoaa konfigurointikäskyjä, jotta voitaisiin asettaa paikallisen moduulin piirteet kohdalleen • Koska nämä käskyt eivät sisällä Bluetooth-linkkiä, ne palautetaan välittömästi HCI_Command_Comlete–tapahtuman kanssa • Moduulien konfiguroinnissa huomioitava: • Versio- ja piirretieto • nimipyyntö (paikallinen ja kaukohaku) • Laitteiden luokitus • Ääniasetukset • Tuetut piirteet • Maakoodi • HCI-BD-ADDR (käskyllä haetaan BT-laitteen osoite). Mari Tuominen (Tite01)

  33. ...Moduulit: versio / piirteet • Ennen kuin moduulia voidaan käyttää, on tiedettävä sen : • Kapasiteetti • Toimintamahdollisuus • Standardi. • HCI_Read_Local_Version_Information-käsky palauttaa: • Status-tavun (jossa 0 = komento suoritettu onnistuneesti; ei nollaa = virhe) • HCI- version • HCI-tarkistuksen • LMP-version • Valmistajan nimen • LMP:n alaversion numeron. • HUOM!Ennen versiota 0.7. parametrit olivat toiset! Mari Tuominen (Tite01)

  34. ...Moduulit: nimihaku • Jokaisella BT-laitteella on ”ystävällinen” nimi, joka on: • UTF-enkoodattu • String-muotoinen • Maksimikoko: 248 tavua. • Moduulin nimi voidaan muuttaa HCI_Change_Local_Name –käskyllä • Nimeä siirrettäessä lähetetään nimestä 1. tavu • VStavanomainen käytäntö nimiä lähetettäessä (vähiten merkitsevä ensin) • Yleisin häiriö yhteyden aikana: käytössä max yhteyksien määrä Mari Tuominen (Tite01)

  35. HCI-Read_Class_of_Device HCI-Command-complete ...Moduulit: Laitteiden luokka • Laitteen luokka pitää selvittää, ennen kuin voidaan ottaa yhteys toiseen BT-laitteeseen • Luokka on sisällytetty FHS-pakettiin • FSH-pakettia käytetään kysely- ja hakutoiminnoissa • Laitetyypin asetukset saadaan selville HCI_Read_Class_Of_Device –pyynnöllä (Hostin tekemä) H O S T BT- Laite Mari Tuominen (Tite01)

  36. ...Moduulit: ääniasetukset • Bluetoothissa sallitaan LHCI_Write_Voice_Command –käskyllä sallii sekä input-koodausformaatin ja ilmakoodausformaatin asetukset • Käsky sallii myös Hostin itsensä valita joko ensimmäisen tai toisen täyden (complement) input-data-formaatin • BT-laitteet eivät tue kaikkia muunnoksia, jotka on spesifioitu • Ei-tuetuissa tapauksissa palautetaan virhe HCI_Command_Complete –tapahtuman yhteydessä • Ääniasetukset voidaan tarkistaa HCI_Read_Voice –käskyllä Mari Tuominen (Tite01)

  37. ...Moduulit: Tuetut piirteet • Bluetooth sisältää monia vaihtoehtoisia, tuettuja piirteitä • Hostin pitää tietää BT-moduulin käyttämät ominaisuudet sekä tunnistaa laite, mikä sijaitsee toisessa päässä linkkiä. • Bluetooth tarjoaakin käskyjä, joilla voidaan lukea sekä lokaalin että kaukana olevan laitteen tukemat piirteet • HCI_Read_Local_Supported_Feature: piirteet paikallista moduulia varten • HCI_Read_Remote_Supported_Feature: piirteet kaukana olevaa laitetta varten Mari Tuominen (Tite01)

  38. ...Moduulit: Tuetut piirteet • Bluetoothissa optionaalisesti tuettuja piirteitä ovat: • Multi-slot datapaketit • Enkryptaus ja luotettavuuden (authentication) tuki • Master / Slave –vaihto ja slot-offset • Ajastuksen täsmällisyys • SCO-kanava • HV2 JA HV3 -paketit SCO-kanavilla • Erilaiset ääniCODEC:it • Vaihtoehtoiset sivutusteemat • Virransäästö ja RSSI (Receive Signal Strength Indication). Mari Tuominen (Tite01)

  39. ...Moduulit: Maakoodi • Ranska: osa BT:n käyttämästä ISM (industrial, scientific, medical) kaistasta varattu armeijan käyttöön: normaalia rajoitetumpi taajuusalue • Maakoodi identifioi, käyttääkö moduuli koko taajuutta vai Ranskan rajoitettua taajuutta • Maakoodi voidaan lukea käyttämällä HCI_Read_Country_Code –käskyä • BT-versio 0.8:aan asti voidaan kirjoittaa / lukea hostin puolesta • HCI_Write_Country_Code –käsky katoaa versiossa 0.9. Jotkut valmistajat sen lisäävät laajennusosana HCI-käskykokoelmaan. Mikään standardi-OpCode ei kuitenkaan pysty identifioimaan sitä. Mari Tuominen (Tite01)

  40. HCI-BD-ADDR • BT-laitteen osoitetta ei voida muuttaa • Jokainen laite on valmistettu omalla uniikilla osoitteellaan • Mikäli voitaisiin muuttaa: 2 samaa osoitetta? • Osoite voidaan lukea: mahdollistaa pääsyn kaukaisen laitteen sovelluksiin käsiksi ja voidaan ottaa yhteys kaukaisiin laitteisiin kaukohakemalla BT-laiteosoite. • HCI_Read_BD_ADDR –käsky sallii hostille BT-laitteen osoitteen saamisen moduulilta Mari Tuominen (Tite01)

  41. Miten löydetään toinen BT-laite? Mari Tuominen (Tite01)

  42. Kyselyn aloittaminen / vastausten käsittely / lopettaminen • Kaikki kyselyprosessin vaiheet voidaan kontrolloida HCI:n kautta • HCI_Inquiry –käsky aloittaa kyselyn. Sillä on 3 parametria: • Inquiry LAP (Kyselyn pääsykoodi) • Inquiry Length (Kyselyn kokonaispituus) • Num_responses (Odotettavissa olevien kyselyn tulosten määrä) • Vastaanotetut vastaukset raportoidaan Hostille HCI_Inquiry_Result –tapahtumalla • Se sisältää informaatiota, jota tarvitaan yhteydensaamiseksi vastaanottavaan laitteeseen Mari Tuominen (Tite01)

  43. …Kyselystä • Host käyttää vastausten kontrollointiin HCI_Set_Event_Filter –käskyä, jolla asetetaan filtteri kyselyn tuloksia varten • Filtteröinnistä johtuen raportoidaan vain: • uusista laitteista, joista ei ole ennen tietoa • laitteista, joilla on spesifi laitetyyppi • laitteista, joilla on spesifioitu BT-laiteosoite • Ei voida tehdä suoraan sovellustasolla; BT- laitteet eivät käytä moduulitason filtteröinnin tulosten ilmoittamiseen HCI:n rajattua kaistanleveyttä ilmoittaakseen tiedoista, jolla ei ole käyttöarvoa • Kysely loppuu, kun Num_Responses –laitteet ovat vastanneet kyselyyn tai kun kyselyn ajan pituus on kulunut umpeen Mari Tuominen (Tite01)

  44. GIAC GIAC GIAC Kyselyn aloitus H O S T HCI_Inquiry(GIAC,2,3) BT- Laite HCI_Command_Status Laite 1 vastaa HCI_Inquiry_Result 1 HCI_Inquiry_Result 2 Laite 2 vastaa HCI_Inquiry_Complete Kysely suoritettu (Success 2) Normaalisti onnistunut kysely BT- Laite Kyselyn aloitus H O S T HCI_Inquiry (GIAC,2,1) HCI_Command_Status HCI_Inquiry_Complete Kysely suoritettu (Success 0) Kyselyn aika loppuu ennen vastausta Mari Tuominen (Tite01)

  45. Kyselyn ajastus • Hostin jatkuva päivitystila huono, koska: • akku loppuu • rajoitetutun hyppelysekvenssin käyttö voi olla kielletty • Ratkaisu: lyhyet kyselyt jaksottaisesti • HCI: Bluetooth moduuli ”inquiry-moodiin”, jossa kyselyt automaattisesti. Host asettaa BT-moduulin moodiin HCI_Periodic_Inquiry_Mode –käskyllä ja moodi käyttää HCI_Exit_Periodic_Inquiry_Mode –käskyä. • Kyselyt aloitetaan satunnaisin tauoin; minimi- ja maksimitauon pituus on spesifioitu HCI_Periodic_Inquiry_Mode –käskyssä. Mari Tuominen (Tite01)

  46. Kyselyn skannaus ~löytyminen • Kun BT-laite alkaa kysellä: • IAC (Inquiry Access Code) • GIAC (General Inquiry Access) • LIAC (Limited Inquiry Access) • Kyselyä skannaava laite käyttää korrelaattoria kuunnellakseen IAC:ta • Skannaus suoritetaan lyhyillä purskeilla • GAP (General Access Profile) suositus: • Skannattaisiin vain 10,625 ms pituisen ikkunan • Kyselyn kesto: 10,24 s • Useimmat laitteet suorittavat skannausta satunnaisesti Mari Tuominen (Tite01)

  47. Kaukohaku: yhteyksien aloittaminen Mari Tuominen (Tite01)

  48. Kaukohaku • Lähetetään BT-osoite ID-paketissa • Kaukohaku:HCI_Create_Connection –käsky (Host) • Sisältää moduulin tarvitseman tiedon yhteyden perustamista varten. Parametrit: • BD_ADDR (laitteen osoite, johon otetaan yhteys) • Packet_Type (pakettityyppien setti) • Page_Scan_Repetition_Mode (antaa intervallin sekä tod.näk. yhteydenpitoajan) • Page_Scan_Mode (vastapuolella pakollinen vai optionaalinen sivunskannausmoodi) • Clock_Offset (kaukohakevan laitteen kellon suhde paikalliseen aikaan) • Allow_Role_Switch (Master / Slave –kytkentä yhteydenluomisen aikana?) Mari Tuominen (Tite01)

  49. SCO • ACL-yhteyden jälkeen voidaan perustaa SCO-yhteys HCI_Add_SCO_Connection –käskyllä • Parametrit spesifioivat ACL-yhteyden Connection handle:in • Määrittelevät SCO-yhteyksissä liikkuvien pakettien tyypit (oltava SCO-tyyppiä eli HV1, HV2 tai HV3) • Yhteyden luomiseksi: HCI_Commannd_Status –tapahtuma palautetaan • Yhteys perustettu: HCI_Connection_Complete –tapahtuma palautetaan Conn.Handle:in kanssa SCO-yhteyttä varten. • Perustaminen epäonnistui: status-kentässä syy Mari Tuominen (Tite01)

  50. Datan lähetys ja vastaanotto Mari Tuominen (Tite01)

More Related