256
Рисунок 2.7 – Формат адреси Bluetooth пристрою
Формат пакетів. Стандартний пакет Bluetooth містить код доступу (Access Code) довжиною
72 біта, 54-бітний заголовок (Header) і інформаційне поле (Payloads) довжиною не більше 2745 біт
(рис. 2.8).
Рисунок 2.8 – Формат пакета Bluetooth
Код доступу дозволяє ідентифікувати пакети, що належать до однієї пікомережі, а також використовується для синхронізації й процедури запитів. Він включає преамбулу (Preamble) дов-
жиною 4 біти, слово синхронізації (Sync word) довжиною 64 біта й трейлер (Trailer) - 4 біти Тип коду доступу залежить від операційного режиму:
САС (Channel Access Code) – код доступу до каналу, дозволяє ідентифікувати піко мережу, є присутнім у всіх пакетах, що передаються у пікомережі.
DAC (Device Access Code) - код доступу до пристрою, використовується в спеціаль-
ній передачі сигналів, наприклад пейджинг і відповідь на пейджинг;
IAC (inquiry access code) - код запиту, буває двох видів:
-GIAC (general inquiry access code) загальний код запиту, є звичайним для всіх пристроїв і використовується, щоб виявити інші Bluetooth пристрої в зоні дії пристрою.
-DIAC (dedicated inquiry access code) - Спеціалізований (виділений) код запиту застосову-
ється для виділеної групи Bluetooth пристроїв, що мають загальні характеристики, використову-
ється щоб виявити тільки ці спеціалізовані модулі.
257
Преамбула складається із чотирьох символів 1010 або 0101 залежно від першого біта синх-
рослова (рис. 2.9).
Рисунок 2.9 – Преамбула в кодовому слові
Всі коди доступу формуються з LAP-частини адреси пристрою. CAC-код формується з
LAP-частини провідного (Master) пристрою.
Трейлер присутній, якщо заголовок пакета іде за кодом виклику. Він подібний до преамбу-
ли й також складається із чотирьох символів 1010 або 0101, залежно від останнього біта синхрос-
лова (рис. 2.10).
.
Рисунок 2.10 – Трейлер у кодовому слові
Заголовок містить інформацію для управління зв'язком і складається із шести полів:
AM_ADDR – 3-бітна адреса активного елемента (active member address);
TYPE - 4-бітний код типу даних;
FLOW - 1 біт управлiння потоком даних, що показує готовність пристрою до прийо-
му;
ARQN - 1 біт підтвердження правильного прийому;
SEQN - 1 біт, що служить для визначення послідовності пакетів;
HEC - 8-бітна контрольна сума.
AM_ADDR визначає адресу пристрою й використовується для ідентифікації активних при-
строїв, що функціонують у пікомережі. У пікомережі одне або більше ведених пристроїв пов'язане
258
з одним провідним. Для ідентифікації кожного активного веденого пристрою в пікомережі вико-
ристовується внутрішня коротка адреса довжиною 3 біти. Таким чином, у пікомережі не може бу-
ти більше 7 активних ведених пристроїв. Обмін пакетами між провідним й веденим пристроями відбувається з переносом AM_ADDR веденого пристрою, тобто AM_ADDR веденого пристрою використається в пакетах обох напрямків – провідний - ведений і ведений -провідний. Адреса 000
зарезервована для широкомовних пакетів від провідного до ведених пристроїв. Виключенням є пакет FHS, що також може використати адресу 000, але не є широкомовним повідомленням.
TYPE визначає, який тип пакета використовується, існує 16 типів пакетів, причому інтерп-
ретація поля TYPE залежить від фізичного типу зв'язку. Спочатку необхідно визначити тип з'єд-
нання (SCO або ACL), потім визначається тип самого пакета. Код TYPE також показує, скільки часових слотів займає переданий пакет. Це дозволяє пристроям, яким цей пакет не адресований,
утриматися від прослуховування каналу на час передачі пакета. Розшифровка поля TYPE наведена в таблиці 2.4.
Таблиця 2.4 - Розшифровка поля TYPE у заголовку пакета Bluetooth.
Кодова послідовність |
Кількість займаних |
Синхронне з'єднання |
Асинхронне з'єднан- |
b3b2b1b0 |
часових слотів |
SCO |
ня |
|
|
|
ACL |
|
|
|
|
0000 |
1 |
NULL |
NULL |
|
|
|
|
0001 |
1 |
POLL |
POLL |
|
|
|
|
0010 |
1 |
FHS |
FHS |
|
|
|
|
0011 |
1 |
DM1 |
DM1 |
|
|
|
|
0100 |
1 |
Не визначений |
DH1 |
|
|
|
|
0101 |
1 |
HV1 |
Не визначений |
|
|
|
|
0110 |
1 |
HV2 |
Не визначений |
|
|
|
|
0111 |
1 |
HV3 |
Не визначений |
|
|
|
|
1000 |
1 |
DV |
Не визначений |
|
|
|
|
1001 |
1 |
Не визначений |
AUX1 |
|
|
|
|
1010 |
3 |
Не визначений |
DM3 |
|
|
|
|
1011 |
3 |
Не визначений |
DH3 |
|
|
|
|
1100 |
3 |
Не визначений |
Не визначений |
|
|
|
|
1101 |
3 |
Не визначений |
Не визначений |
|
|
|
|
1110 |
5 |
Не визначений |
DM5 |
|
|
|
|
1111 |
5 |
Не визначений |
DH5 |
|
|
|
|
Розглянемо деякі з типів пакетів.
NULL packet - цей пакет не має поля корисного навантаження (payload) і складається тільки з коду доступу (access code) і заголовка (header). NULL пакет має фіксовану довжину 126 біт.
259
NULL пакет використовується для передачі інформації про підтвердження прийому попереднього пакета (біт ARQN) і про стан прийомного буфера (біт FLOW). NULL пакет не вимагає підтвер-
дження.
POOL packet - має ту ж структуру, що й NULL пакет, але вимагає підтвердження про доста-
вку від одержувача. Використовується провідним пристроєм (Master) для опитування ведених
(Slave).
FHS packet - спеціальний контрольний пакет, що містить у собі адресу пристрою й синхро-
послідовність (послідовність стрибків по частоті, що генерується провідним пристроєм). Поле да-
них пакета (payload) містить 144 біта інформації й 16 біт контрольної суми CRC. До всієї корисної частини застосовується завадостійке кодування 2/3 FEC, тобто повний розмір корисної частини пакета складе 240 біт. FHS пакет відправляється веденому пристрою провідним, як відповідь на запит підключення. Формат корисної частини пакета FHS наведений на рис. 2.11.
Рисунок 2.11 – Формат payload-частини пакета FHS
FLOW біт використається для управлiння передачею пакетів при ACL з'єднанні. Коли бу-
фер ACL пакетів одержувача переповняється, генерується команда СТОП (FLOW=0), щоб тимча-
сово призупинити передачу пакетів. Коли ж буфер звільняється, то генерується команда ПУСК
(FLOW=1). Якщо жоден пакет не прийнятий, або заголовок пакета прийнятий з помилкою, коман-
да ПУСК може бути розпізнана невірно. У цьому випадку ведений пристрій (Slave) може прийня-
ти новий пакет з CRC, хоча його буфер ще не звільнився. У цьому випадку ведений пристрій по-
винен послати пакет NAK (прийом не підтверджений), навіть якщо в пакеті прийнятий СRС.
Заключною частиною загального формату пакета є корисна інформація. У цієї частині є два типи полів: поле голосу (синхронне) і поле даних (асинхронне). ACL пакети мають тільки поле даних, а SCO пакети - тільки поле голосу. Виключенням є пакет даних і голосу (Data Voice - DV),
що має обидва з полів. Поле даних складається із трьох сегментів: заголовок корисної інформації,
поле корисної інформації й можливо, CRC код.
Заголовок корисної інформації (8 біт) мають тільки поля даних. Він визначає логічний ка-
нал, керування потоком у логічних каналах, а також має показник довжини корисної інформації.
260
Поле корисної інформації містить дані користувача й може бути змінної довжини (0-2721
біт). Довжина цього сегмента зазначена в поле довжини заголовка корисної інформації.
Поле перевірки цілісності пакета CRC займає 16 біт.. Від переданої інформації обчислюєть-
ся 16-бітний циклічний надлишковий код (CRC), після чого він прикріплюється до поля корисної інформації.
Голосові дані передаються в SCO пакетах HV1, HV2 й HV3, що складаються з коду досту-
пу, заголовка й поля корисної інформації фіксованої довжини 30 байт (240 біт). Пакет HV1 містить
10 байт мовної інформації й 20 байт надлишкової інформації завадостійкого коду FEC 1/3 (Forward
Error Correction - пряме виправлення помилок). Пакет HV2 містить 20 байт мовної інформації й 10
байт коду FEC 2/3. Пакет HV3 містить 30 байт мовної інформації, завадостійке кодування при цьому не використається.
Для формування поля мовної інформації використовується дельта-модуляція зі змінною крутістю (CVSD), що зберігає форму аудіосигналу (рис. 2.12) і дуже стійка до помилок в окремих розрядах: помилки сприймаються як шумовий фон, що підсилюється при збільшенні кількості по-
милок.
Рисунок 2.12 – Приклад сигналу з CVSD - модуляцією
2.1.3 Принципи функціонування технології Bluetooth
Архітектура мережі. Протокол Bluetooth підтримує як з'єднання типу точка-точка, так і точ-
ка-багато точок. Два або більше пристроїв, що використовують той самий канал, утворюють піко-
мережу (piconet). Один із пристроїв працює як провідне (master), а інші - як ведені (slaves). Не іс-
нує різниці як в апаратній, так й у програмній частині між провідними й веденими пристроями.
Кожен з них може бути й тим й іншим.
В одній пікомережі може бути до семи активних ведених пристроїв, при цьому інші ведені пристрої перебувають у стані "паркування" і залишаються синхронізованими із провідним при-
строєм.