S P R Z T
Bezprzewodowa transmisja danych
na niewielkie odległości, część 2
Ramki protokołu HCI
DrugÄ… czÍśĘ artykuÅ‚u poÅ›wiÍcamy prezentacji
RozrÛÅ‚niamy piÍĘ typÛw ramek HCI. Typ ramki okreÅ›la pierw-
szy bajt ramki:
praktycznych zagadnieÒ zwiÄ…zanych
Kod Typ ramki Komentarz
z protokołem transmisji danych
0x01 Ramka - Ramka sterująca, ustawiająca parametry modułu BT
rozkaz HCI itp.
wykorzystywanym w systemie Bluetooth.
0x02 Ramka danych Dane przesyłane w sposób asynchroniczny
ACL i connectionless. Są to dane sterujące (np. wyższych
Przedstawione w artykule informacje
warstw - L2CAP), lub dane użytkownika.
stanowiÄ… podstawÍ do dobrego zrozumienia
0x03 Ramka danych Połączenie synchroniczne, punkt - punkt. Główne
SCO przeznaczenie - transmisja danych głosowych -
sposobu działania interfejsu, co z pewnością
PCM. Pakiety SCO nie sÄ… nigdy retransmitowane.
0x04 Ramka zdarzenia Informuje o zdarzeniach w systemie. Jest również
zaowocuje podczas budowania urzÄ…dzeÒ
odpowiedziÄ… na RamkÄ™ - Rozkaz.
wyposazonych w Bluetootha.
0x05 Ramka błędów Informuje o błędach w systemie. Jest również
odpowiedzią na xle sformułowaną Ramkę - Rozkaz.
Typ ramki-rozkazu HCI jest zdefiniowany w szesnastobitowym polu OGF = 3 Host Controller & BaseBand Commands
OpCode. Pole OpCode skÅ‚ada siÍ z dwÛch pÛl OGF (OpCode Group OCF Nazwa komendy
Field) i OCF (OpCode Command Field). OGF okreÅ›la grupÍ rozkazÛw: 0028h HCI Write Automatic Flush Timeout
OGF = 1 Link Control Commands 0029h HCI Read Num Broadcast Retransmissions
OCF Nazwa komendy 002Ah HCI Write Num Broadcast Retransmissions
0001h HCI Inquiry 002Bh HCI Read Hold Mode Activity
0002h HCI Inquiry Cancel 002Ch HCI Write Hold Mode Activity
0003h HCI Periodic Inquiry Mode 002Dh HCI Read Transmit Power Level
0004h HCI Exit Periodic Inquiry Mode 002Eh HCI Read SCO Flow Control Enable
0005h HCI Create Connection 002Fh HCI Write SCO Flow Control Enable
0006h HCI Disconnect 0031h HCI Set Host Controller To Host Flow Control
0007h HCI Add SCO Connection 0033h HCI Host Buffer Size
0009h HCI Accept Connection Request 0035h HCI Host Number Of Completed Packets
000Ah HCI Reject Connection Request 0036h HCI Read Link Supervision Timeout
000Bh HCI Link Key Request Reply 0037h HCI Write Link Supervision Timeout
000Ch HCI Link Key Request Negative Reply 0038h HCI Read Number Of Supported IAC
000Dh HCI PIN Code Request Reply 0039h HCI Read Current IAC LAP
000Eh HCI PIN Code Request Negative Reply 003Ah HCI Write Current IAC LAP
000Fh HCI Change Connection Packet Type 003Bh HCI Read Page Scan Period Mode
0011h HCI Authentication Requested 003Ch HCI Write Page Scan Period Mode
0013h HCI Set Connection Encryption 003Dh HCI Read Page Scan Mode
0015h HCI Change Connection Link Key 003Eh HCI Write Page Scan Mode
0017h HCI Master Link Key
0019h HCI Remote Name Request OGF = 4 Informational Parameters
001Bh HCI Read Remote Supported Features OCF Nazwa komendy
001Dh HCI Read Remote Version Information 0001h HCI Read Local Version Information
001Fh HCI Read Clock Offset 0003h HCI Read Local Supported Features
0005h HCI Read Buffer Size
OGF = 2 Link Policy Commands 0007h HCI Read Country Code
OCF Nazwa komendy 0009h HCI Read BD ADDR
0001h HCI Hold Mode
0003h HCI Sniff Mode WartoÅ›ci OCF mogÄ… siÍ rÛÅ‚niĘ w nastÍpnych wersjach specyfi-
0004h HCI Exit Sniff Mode kacji CORE. Obecnie obowiÄ…zujÄ…ca wersja to 1.1 - naleÅ‚y siÍ spo-
0005h HCI Park Mode dziewaĘ siÍ pojawienia juÅ‚ wkrÛtce wersji 2.0
0006h HCI Exit Park Mode Pole OGF jest przechowywane na sześciu bitach, a pole OCF
0007h HCI QoS Setup na dziesiÍciu bitach. Na rys. 6 i 7 pokazano sposÛb tyworzenia
0009h HCI Role Discovery OpCode dla rÛÅ‚nych ramek HCI. Przy przesyÅ‚aniu danych do BT
000Bh HCI Switch Role naleÅ‚y siÍ przyzwyczaiĘ, Å‚e najpierw transmitujemy mniej znaczÄ…-
000Ch HCI Read Link Policy Settings cy bajt nastÍpnie bardziej znaczÄ…cy bajt.
000Dh HCI Write Link Policy Settings
Elektronika Praktyczna 1/2003
80
S P R Z T
Rys. 6. Sposób tworzenia pola OpCode przy danym OCF i OGF Rys. 7. OpCode dla odczytywania modułu BT
0x04
Funkcje wybranych ramek HCI 0x04 0x01 0x00 0x01
0x04
0x04
0x04
Inquiry (zapytanie) - przesłanie tej ramki OpCode do BT po- Objaśnienia:
woduje, łe moduł wykrywa czy w jego najbliłszym otoczeniu są Typ ramki - tutaj ramka typu zdarzenie
inne BT. Przykład ramki: Pole EventCode. 0x01 = Inquiry Complete
0x01 0x0001 0x05 0x33 0x8B 0x9E 0x0A 0x64 Status, gdy 0x00 - Sukces.
0x01
0x01
0x01
0x01
0x01 Dwa najmłodsze bity w bajcie - 00 wyłączenie 11 włączenie
Objaśnienia:
Typ ramki - tutaj ramka typu rozkaz Inquiry Result (rezultat wyszukiwania) - po otrzymaniu ramki
Pole OpCode. OCF=0x001 OGF=0x01. Tworzenie pola OpCode sygnalizujÄ…cej zdarzenie Inquiry Complete (gdy status = 0x00)
zostaÅ‚o wyjaÅ›nione powyÅ‚ej otrzymujemy wÅ‚aÅ›nie tÄ… ramkÍ. Zawiera ona 48-bitowe adresy mo-
duÅ‚Ûw BT oraz dodatkowe parametry.
0x04
Liczba parametrÛw w bajtach 0x04 0x02 0x01 XX XX XX XX XX XX
0x04
0x04
0x04
LAP Address. LAP Adress - KaÅ‚de urzÄ…dzenie BT posiada swÛj AA BB CC DD DD DD EE EE
własny 48-bitowy unikalny adres. Format tego adresu jest zgod- Objaśnienia:
ny ze standardem IEEE802. Adres mołna podzieliĘ na trzy Typ ramki - tutaj ramka typu zdarzenie
czÍÅ›ci: Pole EventCode. 0x02 = Inquiry Result
IlośĘ znalezionych moduÅ‚Ûw BT
6 bajtÛw (48 bitÛw) - adres znalezionego urzÄ…dzenia BT (tzw.
BD Address)
- Pole LAP (Lower Adress Part) skÅ‚adajÄ…ce siÍ z 24 bitÛw. Page Scan Repetition Mode
- Pole UAP (Upper Adress Part) skÅ‚adajÄ…ce siÍ z 8 bitÛw. Page Scan Period Mode
- Pole NAP (Non-significant Adress Part) skÅ‚adajÄ…ce siÍ z 16 bitÛw. Page Scan Mode
Pewne adresy LAP (0x9E8B00-0x9E8B3) sÄ… zarezerwowane dla Klasa urzÄ…dzenia
rÛÅ‚nych potrzeb. Adres 0x9E8B33 zostaÅ‚ zarezerwowany dla po- Clock offset (przesuniÍcie zegara miÍdzy masterem a slavem
trzeb funkcji Inquiry w sieci PicoNet)
Create Connection - gdy znamy adres drugiego urzÄ…dzenia mo-
Czas trwania procedury inquiry (jak dÅ‚ugo BT czeka na odpo- Å‚emy sprÛbowaĘ utworzyĘ poÅ‚Ä…czenie HCI. Odbywa siÍ to poprzez
wiedzi od innych moduÅ‚Ûw). KaÅ‚da jednostka tego pola to 1,28 wysÅ‚anie ramki:
0x01
sekundy. Pole to mołe przyjmowaĘ wartości z zakresu 0x01 do 0x01 0x0005 0x0D XX XX XX XX XX XX
0x01
0x01
0x01
0x30. Czyli procedura inquiry mołe trwaĘ min. 1,28 sekundy 0x01
a maksymalnie 61,44 sekundy. 0x18 0xCC AA BB CC CC EE
Ile maksymalnie chcemy wykryĘ innych moduÅ‚Ûw BT. 0x00 -
wszystkie. Objaśnienia:
Typ ramki - tutaj ramka zdarzenie
Scan Enable - aby moduÅ‚ BT mÛgÅ‚ byĘ wykrywany w procesie Pole EventCode. 0x02 = Inquiry Result
Inquiry musi zostaĘ wywołana funkcja Scan Enable. W przeciw-
nym razie moduÅ‚ BT pozostanie niewidoczny dla innych. IlośĘ parametrÛw w bajtach
0x01 0x001A 0x01 0x03 6 bajtÛw (48 bitÛw) - adres znalezionego urzÄ…dzenia BT (tzw.
0x01
0x01
0x01
0x01
0x01 BD Adress)
ObjaÅ›nienia: Typ pakietÛw. W obecnej chwili dostÍpne rodzaje pakietÛw (dla
Typ ramki - tutaj ramka typu rozkaz specyfikacji Core ver. 1.1) to: DM1 (0x0008), DM3(0x0400),
Pole OpCode. OCF=0x001 OGF=0x01. Tworzenie pola OpCode DH1 (0x0010), DH3 (0x0800). Są to pakiety jakie są przesyłane
zostało wyjaśnione powyłej. drogą radiową. WartośĘ 0xCC18 oznacza wszystkie te pakiety.
Pole to okreÅ›la, jakie rodzaje pakietÛw mogÄ… byĘ uÅ‚ywane -
Liczba parametrÛw w bajtach przynajmniej jeden z nich musi byĘ zadeklarowany. Wymienio-
Dwa najmÅ‚odsze bity w bajcie - 00 wyÅ‚Ä…czenie, 11 wÅ‚Ä…czenie ne pakiety rÛÅ‚niÄ… siÍ miÍdzy sobÄ… liczbÄ… bitÛw kontrolnych,
kodami zabezpieczeÒ oraz algorytmami retransmisji.
Inquiry Complete (wyszukiwanie zakoÒczone) - po zakoÒcze-
niu procedury Inquiry otrzymujemy od BT ramkÍ, ktÛra jest zda- Page Scan Repetition Mode
rzeniem (event). Zawiera ona informacjÍ ile urzÄ…dzeÒ udaÅ‚o siÍ Page Scan Mode
wykryĘ oraz status procedury Inquiry. Clock offset
Elektronika Praktyczna 1/2003
81
S P R Z T
Objaśnienia:
Allow role switch. Pole to określa czy dane urządzenie do- Typ ramki - tutaj ramka typu rozkaz
puszcza zamianÍ rÛl - np. z Mastera na Slaveía lub odwrotnie. 0x009 = Accept Connection Request
IlośĘ BajtÛw danych
Connection request - gdy wyÅ›lemy powyÅ‚szÄ… ramkÍ do BT to z dru- Adres urzÄ…dzenia chcÄ…cego siÍ poÅ‚Ä…czyĘ.
giego moduÅ‚u BT o adresie XXXXXX powinniÅ›my otrzymaĘ ramkÍ: Reason. Przyczyna odrzucenia poÅ‚Ä…czenia. Pole moÅ‚e przyjmo-
0x04 0x04 0x0A 0xYY 0xYY 0xYY 0xYY 0xYY 0xYY waĘ wartości z przedziału 0x0D - 0x0F:
0x00 0x43 0x00 0x01 0x0D - adresat odrzuciÅ‚ poÅ‚Ä…czenie ze wzglÍdu na brak zaso-
ObjaÅ›nienia: bÛw - np. NiewystarczajÄ…ca ilośĘ pamiÍci.
Typ ramki - tutaj ramka typu zdarzenie 0x0E - adresat odrzuciÅ‚ poÅ‚Ä…czenie z powodÛw bezpieczeÒstwa.
Pole EventCode. 0x04 = Connection Request 0x0F - adresat odrzucił połączenie, poniewał jest tzw. osobis-
IlośĘ BajtÛw danych tym urzÄ…dzeniem.
Adres urzÄ…dzenia chcÄ…cego siÍ poÅ‚Ä…czyĘ
Klasa urzÄ…dzenia Connection Complete Event - W przypadku, gdy zdecydowaliÅ›-
Typ poÅ‚Ä…czenia. WartośĘ 0x00 - Å‚Ä…dane poÅ‚Ä…czenie SCO (trans- my siÍ zaakceptowaĘ poÅ‚Ä…czenie otrzymamy ramkÍ - zdarzenie
misja gÅ‚osowa), 0x01 - Å‚Ä…dane poÅ‚Ä…czenie ACL (dane) mÛwiÄ…ce nam, Å‚e poÅ‚Ä…czenie zostaÅ‚o utworzone:
0x04 0x03 0x0b 0x10 0x00 0x0f 0xYY 0xYY 0xYY
Accept Connection Request - (akceptuj połączenie). Ramka ty- 0xYY 0xYY 0xYY 0x01 0x00
pu rozkaz moÅ‚e byĘ przesÅ‚ana tylko w odpowiedzi na ramkÍ ty- ObjaÅ›nienia:
pu zdarzenie Connection Request: Typ ramki - tutaj ramka zdarzenie
0x01 0x0009 0x07 0xYY 0xYY 0xYY 0xYY 0xYY 0xYY 0x01 Pole EventCode. 0x03 = Connection Complete
0x01
0x01
0x01
0x01
0x01 IlośĘ BajtÛw danych
ObjaÅ›nienia: Adres urzÄ…dzenia chcÄ…cego siÍ poÅ‚Ä…czyĘ
Typ ramki - tutaj ramka typu rozkaz Status połączenia
0x009 = Accept Connection Request Uchwyt połączenia (Connection Handle)
IlośĘ BajtÛw danych BD adres moduÅ‚u BT z ktÛrym siÍ poÅ‚Ä…czyliÅ›my
Adres urzÄ…dzenia chcÄ…cego siÍ poÅ‚Ä…czyĘ Typ poÅ‚Ä…czenia - 0x01 ACL 0x00 SCO
Accept role switch - 0x01 Nie akceptujemy zmian Master <-> Slave Encryption Mode - 0x00 daje połączenie bez szyfrowania
Henryk Nowak
Reject Connection Request - (odrzuĘ połączenie). Ramka typu
rozkaz wysyłana, gdy nie chcemy aby moduł BT o adresie YYY- Dodatkowe informacje
YYY Å‚Ä…czyÅ‚ siÍ z nami. Za pomocÄ… poniÅ‚szej ramki moÅ‚emy od- Dodatkowe informacje sÄ… dostÄ™pne na pÅ‚ycie CD-EP12/2002B oraz w Internecie pod adresami:
- http://www.bluetooth.com/pdf/Bluetooth_11_Specifications_Book.pdf,
rzuciĘ połączenie:
- http://www.bluetooth.com/pdf/Bluetooth_11_Profiles_Book.pdf,
0x01 0x0009 0x07 0xYY 0xYY 0xYY 0xYY 0xYY 0xYY 0x01
0x01
0x01
0x01
0x01
- http://www.bluetooth.prv.pl.
0x01
Elektronika Praktyczna 1/2003
82
Wyszukiwarka
Podobne podstrony:
bezprzewodowa transmisja danychBezprzewodowa transmisja danychAnaliza baz danych na temat materiałów betonopodobnychĆwiczenia na drabinkach koordynacyjnych – cz 3Ćwiczenia na drabinkach koordynacyjnych – cz 2satelitarna transmisja danych dvbgrzebyk, transmisja danych, pytania i odpowiedzi04 [wstęp]Stanisław Morgalla SJ Jak dzieciństwo wpływa na obraz Boga cz 3Dowożenie wody na duże odległościTor transmisji danych w podczerwieniDoskonalenie techniki na drabinkach koordynacyjnych – cz 1Bazy Danych Elementy Jezyka SQL cz IĆwiczenia na drabinkach koordynacyjnych – cz 42010 01 Synchronizacja danych na wielu nośnikach [Administracja]Ćwiczenia na drabinkach koordynacyjnych – cz 602 [wstęp]Stanisław Morgalla SJ Jak dzieciństwo wpływa na obraz Boga cz 1więcej podobnych podstron