Bluetooth - bezprzewodowa transmisja danych na niewielkie odległości, Bluetooth

[ Pobierz całość w formacie PDF ]
S P R Z Ê T
Bezprzewodowa transmisja danych
na niewielkie odleg³oci, czêæ 2
Ramki protoko³u HCI
Rozró¿niamy piêæ typów ramek HCI. Typ ramki okrela pierw-
szy bajt ramki:
Kod Typ ramki Komentarz
0x01
Ramka - Ramka steruj¹ca, ustawiaj¹ca parametry modu³u BT
rozkaz HCI itp.
0x02
Ramka danych Dane przesy³ane w sposób asynchroniczny
ACL i
connectionless
. S¹ to dane steruj¹ce (np. wy¿szych
warstw - L2CAP), lub dane u¿ytkownika.
0x03
Ramka danych Po³¹czenie synchroniczne, punkt - punkt. G³ówne
SCO przeznaczenie - transmisja danych g³osowych -
PCM. Pakiety SCO nie s¹ nigdy retransmitowane.
0x04
Ramka zdarzenia Informuje o zdarzeniach w systemie. Jest równie¿
odpowiedzi¹ na Ramkê - Rozkaz.
Drug¹ czêæ artyku³u powiêcamy prezentacji
praktycznych zagadnieñ zwi¹zanych
z protoko³em transmisji danych
wykorzystywanym w systemie Bluetooth.
Przedstawione w artykule informacje
stanowi¹ podstawê do dobrego zrozumienia
sposobu dzia³ania interfejsu, co z pewnoci¹
zaowocuje podczas budowania urz¹dzeñ
wyposazonych w Bluetootha.
0x05
Ramka b³êdów
Informuje o b³êdach w systemie. Jest równie¿
odpowiedzi¹ na le sformu³owan¹ Ramkê - Rozkaz.
Typ ramki-rozkazu HCI jest zdefiniowany w szesnastobitowym polu
OpCode
. Pole
OpCode
sk³ada siê z dwóch pól
OGF
(
O
pCode
G
roup
F
ield
) i 
OCF
(
O
pCode
C
ommand
F
ield
). OGF okrela grupê rozkazów:
OGF = 1 Link Control Commands
OCF Nazwa komendy
0001h HCI Inquiry
0002h HCI Inquiry Cancel
0003h HCI Periodic Inquiry Mode
0004h HCI Exit Periodic Inquiry Mode
0005h HCI Create Connection
0006h HCI Disconnect
0007h HCI Add SCO Connection
0009h HCI Accept Connection Request
000Ah HCI Reject Connection Request
000Bh HCI Link Key Request Reply
000Ch HCI Link Key Request Negative Reply
000Dh HCI PIN Code Request Reply
000Eh HCI PIN Code Request Negative Reply
000Fh HCI Change Connection Packet Type
0011h HCI Authentication Requested
0013h HCI Set Connection Encryption
0015h HCI Change Connection Link Key
0017h HCI Master Link Key
0019h HCI Remote Name Request
001Bh HCI Read Remote Supported Features
001Dh HCI Read Remote Version Information
001Fh HCI Read Clock Offset
OGF = 3 Host Controller & BaseBand Commands
OCF Nazwa komendy
0028h HCI Write Automatic Flush Timeout
0029h HCI Read Num Broadcast Retransmissions
002Ah HCI Write Num Broadcast Retransmissions
002Bh HCI Read Hold Mode Activity
002Ch HCI Write Hold Mode Activity
002Dh HCI Read Transmit Power Level
002Eh HCI Read SCO Flow Control Enable
002Fh HCI Write SCO Flow Control Enable
0031h HCI Set Host Controller To Host Flow Control
0033h HCI Host Buffer Size
0035h HCI Host Number Of Completed Packets
0036h HCI Read Link Supervision Timeout
0037h HCI Write Link Supervision Timeout
0038h HCI Read Number Of Supported IAC
0039h HCI Read Current IAC LAP
003Ah HCI Write Current IAC LAP
003Bh HCI Read Page Scan Period Mode
003Ch HCI Write Page Scan Period Mode
003Dh HCI Read Page Scan Mode
003Eh HCI Write Page Scan Mode
OGF = 4 Informational Parameters
OCF Nazwa komendy
0001h HCI Read Local Version Information
0003h HCI Read Local Supported Features
0005h HCI Read Buffer Size
0007h HCI Read Country Code
0009h HCI Read BD ADDR
OGF = 2 Link Policy Commands
OCF Nazwa komendy
0001h HCI Hold Mode
0003h HCI Sniff Mode
0004h HCI Exit Sniff Mode
0005h HCI Park Mode
0006h HCI Exit Park Mode
0007h HCI QoS Setup
0009h HCI Role Discovery
000Bh HCI Switch Role
000Ch HCI Read Link Policy Settings
000Dh HCI Write Link Policy Settings
Wartoci OCF mog¹ siê ró¿niæ w nastêpnych wersjach specyfi-
kacji CORE. Obecnie obowi¹zuj¹ca wersja to 1.1 - nale¿y siê spo-
dziewaæ siê pojawienia ju¿ wkrótce wersji 2.0
Pole OGF jest przechowywane na szeciu bitach, a pole OCF
na dziesiêciu bitach. Na
rys. 6

7
pokazano sposób tyworzenia
OpCode
dla ró¿nych ramek HCI. Przy przesy³aniu danych do BT
nale¿y siê przyzwyczaiæ, ¿e najpierw transmitujemy mniej znacz¹-
cy bajt nastêpnie bardziej znacz¹cy bajt.
80
Elektronika Praktyczna 1/2003
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
Funkcje wybranych ramek HCI
Inquiry
(zapytanie) - przes³anie tej ramki
OpCode
do BT po-
woduje, ¿e modu³ wykrywa czy w jego najbli¿szym otoczeniu s¹
inne BT. Przyk³ad ramki:
0x01
0x04
0x01
0x00
0x01
Objanienia:
Typ ramki - tutaj ramka typu
zdarzenie
Pole
EventCode
. 0x01 = Inquiry Complete
Status, gdy 0x00 - Sukces.
Dwa najm³odsze bity w bajcie - 00 wy³¹czenie 11 w³¹czenie
0x01
0x0001
0x05
0x33
0x8B
0x9E
0x0A
0x64
0x01
Objanienia:
Typ ramki - tutaj ramka typu
rozkaz
Pole
OpCode
. OCF=0x001 OGF=0x01. Tworzenie pola
OpCode
zosta³o wyjanione powy¿ej
Inquiry Result
(rezultat wyszukiwania) - po otrzymaniu ramki
sygnalizuj¹cej zdarzenie Inquiry Complete (gdy status = 0x00)
otrzymujemy w³anie t¹ ramkê. Zawiera ona 48-bitowe adresy mo-
du³ów BT oraz dodatkowe parametry.
0x04
Liczba parametrów w bajtach
LAP Address. LAP Adress - Ka¿de urz¹dzenie BT posiada swój
w³asny 48-bitowy unikalny adres. Format tego adresu jest zgod-
ny ze standardem IEEE802. Adres mo¿na podzieliæ na trzy
czêci:
0x04
0x02
0x01
XX
XX
XX
XX
XX
XX
AA
BB
CC
DD
DD
DD
EE
EE
Objanienia:
Typ ramki - tutaj ramka typu
zdarzenie
Pole
EventCode
. 0x02 = Inquiry Result
Iloæ znalezionych modu³ów BT
6 bajtów (48 bitów) - adres znalezionego urz¹dzenia BT (tzw.
BD Address)
Page Scan Repetition Mode
Page Scan Period Mode
Page Scan Mode
Klasa urz¹dzenia
Clock offset (przesuniêcie zegara miêdzy masterem a slavem
w sieci PicoNet)
- Pole
LAP
(
Lower Adress Part
) sk³adaj¹ce siê z 24 bitów.
- Pole
UAP
(
Upper Adress Part
) sk³adaj¹ce siê z 8 bitów.
- Pole
NAP
(
Non-significant Adress Part
) sk³adaj¹ce siê z 16 bitów.
Pewne adresy LAP (
0x9E8B00-0x9E8B3
) s¹ zarezerwowane dla
ró¿nych potrzeb. Adres
0x9E8B33
zosta³ zarezerwowany dla po-
trzeb funkcji
Inquiry
Czas trwania procedury inquiry (jak d³ugo BT czeka na odpo-
wiedzi od innych modu³ów). Ka¿da jednostka tego pola to 1,28
sekundy. Pole to mo¿e przyjmowaæ wartoci z zakresu 0x01 do
0x30. Czyli procedura inquiry mo¿e trwaæ min. 1,28 sekundy
a maksymalnie 61,44 sekundy.
Ile maksymalnie chcemy wykryæ innych modu³ów BT. 0x00 -
wszystkie.
Create Connection
- gdy znamy adres drugiego urz¹dzenia mo-
¿emy spróbowaæ utworzyæ po³¹czenie HCI. Odbywa siê to poprzez
wys³anie ramki:
0x01
0x0005
0x0D
XX
XX
XX
XX
XX
XX
0x01
0x18
0xCC
AA
BB
CC
CC
EE
Objanienia:
Typ ramki - tutaj ramka zdarzenie
Pole
EventCode
. 0x02 = Inquiry Result
Scan Enable
- aby modu³ BT móg³ byæ wykrywany w procesie
Inquiry
musi zostaæ wywo³ana funkcja
Scan Enable
. W przeciw-
nym razie modu³ BT pozostanie niewidoczny dla innych.
0x01
0x01
0x001A
0x01
0x03
Iloæ parametrów w bajtach
6 bajtów (48 bitów) - adres znalezionego urz¹dzenia BT (tzw.
BD Adress)
Typ pakietów. W obecnej chwili dostêpne rodzaje pakietów (dla
specyfikacji Core ver. 1.1) to: DM1 (0x0008), DM3(0x0400),
DH1 (0x0010), DH3 (0x0800). S¹ to pakiety jakie s¹ przesy³ane
drog¹ radiow¹. Wartoæ 0xCC18 oznacza wszystkie te pakiety.
Pole to okrela, jakie rodzaje pakietów mog¹ byæ u¿ywane -
przynajmniej jeden z nich musi byæ zadeklarowany. Wymienio-
ne pakiety ró¿ni¹ siê miêdzy sob¹ liczb¹ bitów kontrolnych,
kodami zabezpieczeñ oraz algorytmami retransmisji.
0x01
Objanienia:
Typ ramki - tutaj ramka typu
rozkaz
Pole
OpCode
. OCF=0x001 OGF=0x01. Tworzenie pola OpCode
zosta³o wyjanione powy¿ej.
Liczba parametrów w bajtach
Dwa najm³odsze bity w bajcie - 00 wy³¹czenie, 11 w³¹czenie
Inquiry Complete
(wyszukiwanie zakoñczone) - po zakoñcze-
niu procedury Inquiry otrzymujemy od BT ramkê, która jest zda-
rzeniem (
event
). Zawiera ona informacjê ile urz¹dzeñ uda³o siê
wykryæ oraz status procedury Inquiry.
Page Scan Repetition Mode
Page Scan Mode
Clock offset
Elektronika Praktyczna 1/2003
81
0x01
S P R Z Ê T
Allow role switch.
Pole to okrela czy dane urz¹dzenie do-
puszcza zamianê ról - np. z Mastera na Slavea lub odwrotnie.
Objanienia:
Typ ramki - tutaj ramka typu
rozkaz
0x009 = Accept Connection Request
Iloæ Bajtów danych
Adres urz¹dzenia chc¹cego siê po³¹czyæ.
Reason. Przyczyna odrzucenia po³¹czenia. Pole mo¿e przyjmo-
waæ wartoci z przedzia³u 0x0D - 0x0F:
0x0D - adresat odrzuci³ po³¹czenie ze wzglêdu na brak zaso-
bów - np. Niewystarczaj¹ca iloæ pamiêci.
0x0E - adresat odrzuci³ po³¹czenie z powodów bezpieczeñstwa.
0x0F - adresat odrzuci³ po³¹czenie, poniewa¿ jest tzw. osobis-
tym urz¹dzeniem.
Connection request
- gdy wylemy powy¿sz¹ ramkê do BT to z dru-
giego modu³u BT o adresie XXXXXX powinnimy otrzymaæ ramkê:
0x04
0x04
0x0A
0xYY
0xYY
0xYY
0xYY
0xYY
0xYY
0x00
0x43
0x00
0x01
Objanienia:
Typ ramki - tutaj ramka typu
zdarzenie
Pole
EventCode
. 0x04 = Connection Request
Iloæ Bajtów danych
Adres urz¹dzenia chc¹cego siê po³¹czyæ
Klasa urz¹dzenia
Typ po³¹czenia. Wartoæ 0x00 - ¿¹dane po³¹czenie SCO (trans-
misja g³osowa), 0x01 - ¿¹dane po³¹czenie ACL (dane)
Connection Complete Event
- W przypadku, gdy zdecydowali-
my siê zaakceptowaæ po³¹czenie otrzymamy ramkê - zdarzenie
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-
pu
rozkaz
mo¿e byæ przes³ana tylko w odpowiedzi na ramkê ty-
pu
zdarzenie
Connection Request:
0x01
0xYY
0xYY
0xYY
0x01
0x00
Objanienia:
Typ ramki - tutaj ramka zdarzenie
Pole
EventCode
. 0x03 = Connection Complete
Iloæ Bajtów danych
Adres urz¹dzenia chc¹cego siê po³¹czyæ
Status po³¹czenia
Uchwyt po³¹czenia (
Connection Handle
)
BD adres modu³u BT z którym siê po³¹czylimy
Typ po³¹czenia - 0x01 ACL 0x00 SCO
Encryption Mode - 0x00 daje po³¹czenie bez szyfrowania
Henryk Nowak
0x01
0x0009
0x07
0xYY 0xYY 0xYY 0xYY 0xYY 0xYY 0x01
0x01
Objanienia:
Typ ramki - tutaj ramka typu
rozkaz
0x009 = Accept Connection Request
Iloæ Bajtów danych
Adres urz¹dzenia chc¹cego siê po³¹czyæ
Accept role switch - 0x01 Nie akceptujemy zmian Master <-> Slave
Reject Connection Request
- (odrzuæ po³¹czenie). Ramka typu
rozkaz wysy³ana, gdy nie chcemy aby modu³ BT o adresie YYY-
YYY ³¹czy³ siê z nami. Za pomoc¹ poni¿szej ramki mo¿emy od-
rzuciæ po³¹czenie:
0x01
Dodatkowe informacje
0x01
0x0009
0x07
0xYY 0xYY 0xYY 0xYY 0xYY 0xYY 0x01
Dodatkowe informacje s¹ dostêpne na p³ycie CD-EP12/2002B oraz w Internecie pod adresami:
0x01
82
Elektronika Praktyczna 1/2003
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • wolaosowinska.xlx.pl
  •