реклама на сайте
подробности

 
 
> BLE
Kalyan
сообщение Aug 28 2018, 18:22
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656



Добрый день.
Работаю с BLE - создаю BLE peripheral device. В GATT профайле определен один сервис в котором определена одна характеристика со свойством read.
Эта характеристика описана двумя атрибутами (Declaration - uuid -0x2803 и само value c 16 байтным uuid).
Вопрос относительно длины данных для атрибута value этой характеристики. Возможно ли как то указать что длина данных у этой характеристики переменная?
Например инит длинна = 0 и максимальная длина = 2 байта.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexandrY
сообщение Aug 29 2018, 10:47
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Kalyan @ Aug 28 2018, 21:22) *
Возможно ли как то указать что длина данных у этой характеристики переменная?

Задаете соответствующий дескриптор - https://www.bluetooth.com/specifications/gatt/descriptors
Go to the top of the page
 
+Quote Post
Axel
сообщение Aug 29 2018, 12:19
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(AlexandrY @ Aug 29 2018, 13:47) *
Задаете соответствующий дескриптор...

В дескрипторе вроде как можно только ограничить размер (сверху и снизу). Длину конкретной транзакции все равно надо сообщать через "notification"
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 30 2018, 07:58
Сообщение #4


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Axel @ Aug 29 2018, 15:19) *
В дескрипторе вроде как можно только ограничить размер (сверху и снизу). Длину конкретной транзакции все равно надо сообщать через "notification"

Если хочется менять длину переменной в пакете, то надо ее обновить в базе данных GATT дивайса.
Для этого база должна храниться в RAM. Что редко кто делает, ибо она большая.
А клиент перед чтением характеристики должен заново перечитать содержимое сервисов.
Новый смысл характеристики клиент узнает читая дескрипторы.
Нотификации тут только может быть можно использовать для того чтобы уведомить клиента о необходимости перечитать сервисы.
Короче много действий надо совершить.
Go to the top of the page
 
+Quote Post
Axel
сообщение Aug 30 2018, 10:29
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(AlexandrY @ Aug 30 2018, 10:58) *
...Нотификации тут только может быть можно использовать для того чтобы уведомить клиента о необходимости перечитать сервисы.

Может оно и так... Я недавно соорудил что-то типа "bulk" сервиса на базе примера UART (Nordic). Там все нормально работает: notification сообщает объем, и все, что приготовил, нормально прилетает , естественно в пределах MTU (244 байта). Со стороны телефона использовал для отладки nRF connect. В том, что происходит внутри нее, не разбирался (пока).
Go to the top of the page
 
+Quote Post
Alechek
сообщение Aug 31 2018, 07:04
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(Axel @ Aug 30 2018, 15:29) *
естественно в пределах MTU (244 байта).

BLE 4.2? Так вроде MTU 251 байт. И максимум объем данных в нотификации 248 байт.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01437 секунд с 7
ELECTRONIX ©2004-2016