Intereting Posts
Anko: внутренняя область применения, сбивающее с толку разрешение собственности Как создать контрольную сумму MD5 для файла в Android? Может ли кто-нибудь помочь мне с Android RemoteControlClient? Странная ошибка InputDispatcher «Потребительский закрытый входной канал или произошла ошибка. события = 0x8” Как настроить линию в диалоговом окне в стиле Android ICS Android в биллинге приложений: onReceive получателя никогда не будет вызван даже после успешной покупки Что такое полный класс базы данных Android для существующей базы данных SQLite? Неопределенный круговой индикатор хода на андроиде белый, несмотря на цвет. Как установить onClickListener на ArrayAdapter? Использовать фрагменты (ActionTabs) и Webview Эффект Android Audio на wav-файле и сохранить его Чистое приложение c ++ для Android и его производительность Pinterest, как Grid на Android Какая версия Android представляет звуковую подсказку SpeechRecognizer onReadyForSpeech? Как реализовать селектор цвета TextView, когда слушатель OnClick установлен в его родительском макете?

Bluetooth BLE Android записывается в периферийное устройство с максимальной пропускной способностью

Наша компания разрабатывает аппаратное подразделение с Bluetooth BLE, и у нас есть сервисное приложение на Nexus 7 (2013), с которого мы хотим отправить файлы прошивки в устройство. Файлы могут быть размером до 500 КБ.

Чип BT – это Texas Instruments CC2540.

Я просмотрел тонны наших страниц и просмотрел переполнение стека для получения информации о том, как ускорить перенос данных с устройства Android на CC2540, но не нашел действительно хорошего примера.

На домашней странице северных полупроводников я нашел пример того, как они рассчитывают максимальную пропускную способность для Android-устройства: ( https://devzone.nordicsemi.com/index.php/how-do-calcalulate-throughput-for-a-ble -link )

Nexus 4 with nRF51822: 4 * 20 B * 1/0.0075 s = 10.6 kB/s = 84 kbps 

В нем говорится, что блок Android может отправлять 4 пакета по 20 байт за каждый интервал подключения, а Android может обрабатывать интервалы соединения 7,5 мс.

В нашем приложении мы в настоящее время отправляем данные с помощью writeCharateristics и ожидаем обратного вызова onWriteCharateristics перед отправкой следующего фрагмента данных. Тем не менее, скорость отправки очень медленная, так как обратный вызов занимает около 2 секунд для вызова (!!). Это делает скорость передачи данных 10 байт / с, которая находится далеко от 10.6kb / s в приведенном выше примере.

Мы попытались передать 50 килобайт данных между двумя устройствами iOS (с модифицированной версией демонстрации KeyFob для iOS) и получили скорость передачи 3,4 кбит / с. Но это было использование CBPeripheralManager UpdateValue, которое, как я понимаю, является способом отправки уведомления от периферийного к центральному.

То, что я прочитал, сейчас не имеет никакого отношения к тому, чтобы устройство Android работало как периферийное. Означает ли это, что CC2540 не может отправлять уведомления Nexus 7? И единственный способ максимизировать пропускную способность для отправки данных через уведомления?

Является ли это стеком в устройстве TI, что делает его медленным, или есть способ изменить какие-либо параметры, чтобы ускорить передачу данных между Nexus и CC-блоком?

У нас была идея реализовать сервер GATT на устройстве Nexus 7 и сделать подписку CC2540 на уведомления. Это возможно? Это означает, что Nexus сначала должен сканировать CC2540 и подключиться к нему, когда он найдет службу. Когда соединение установлено, CC2540 начинает подписываться на уведомления от Nexus 7. После этого отправляя уведомления от Nexus на CC2540 с более высокой скоростью передачи.

Надеюсь, кто-то еще пытался сделать то же самое, что мы и пытаемся сделать!

    Несколько месяцев назад я работал над проектом с использованием CC2540, к сожалению, проект касался еще одного приложения.

    В любом случае, я помню, что вы можете установить параметры соединения, такие как Connection_Interval или Slave_Latency , чтобы повысить пропускную способность, даже если потребление энергии будет больше, чем раньше. Возможно, вы уже пытались это сделать, но я думаю, что это единственный способ получить хороший результат.