Как nrfConnect может отправлять более 20 байтов из приложения Android в raspberrypi?

Я пытаюсь записать 120-байтовые данные через ble в raspberrypi из своего приложения для Android (я увеличил MTU до необходимого предела). Но все, что я могу передать, это первые 20 байт. Когда я попытался выполнить поиск в Интернете, я увидел, что Android ограничивает размер до 20 байт для передачи ble, и мне придется отправлять несколько 20-байтовых пакетов.

Но почему я попытался завершить те же данные из приложения nrfConnect для Android, я вижу, что данные передаются без проблем. Можете ли вы помочь мне понять, как nrfConnect может это сделать, когда вы записываете его в виде пакетов?

Поскольку данные усекаются, я получаю ответ GATT_SUCCESS от raspberrypi.

Как информация, я могу отправить 52 байта на нашу пользовательскую плату с чипом nrf52 из того же приложения.


person tharun    schedule 12.03.2018    source источник


Ответы (1)


Похоже, Android позаботится о записи более 20 байт данных.

Ниже приведены два случая, которые у меня были:

Случай 1:

Android-приложение пытается записать данные в пользовательскую программу, работающую на чипе nrf52.

Размер данных: 50 байт.

После увеличения BLE MTU на стороне чипа запись прошла успешно без каких-либо изменений со стороны приложения.(gatt.writeCharacteristic(characteristic))

Вариант 2:

Android-приложение пытается записать данные в программу ble, работающую в raspberrypi 3

Размер данных 120 байт.

Проблема:Даже после увеличения BLE MTU в raspberry pi при попытке записи данных принимается только 20 байтов с успешным ответом на запись.

Решение. После использования gatt.requestMtu(120) и вызова символа записи в обратном вызове onMtuChanged() удалось отправить все данные.

person tharun    schedule 12.03.2018
comment
Вы используете BlueZ или какой-либо другой стек Bluetooth? Если запись не может быть выполнена в одном пакете, Android разделит его на несколько частей, используя процедуру Long Characteristic Write. Если код, работающий на Pi, реализован правильно, он должен объединить пакеты в одно большое значение. - person Emil; 12.03.2018