Реализации на стороне сервера BLE с использованием C ++ в среде Linux - PullRequest
0 голосов
/ 11 февраля 2019

Существуют ли примеры сервера BLE, реализованного на C ++ в среде Linux ?Для контекста у меня есть плата NVIDIA Jetson TX2 , работающая Ubuntu , и я хотел бы иметь сервер BLE, чтобы я мог подключать устройства Android и iOS.Устройство будет передавать характеристики, на которые может подписаться мобильное приложение, и оно также может отправлять / получать сообщения предпочтительно в формате JSON .В настоящее время в нем есть некоторые коды Bluetooth, но я думаю, что это работает только в режиме Classic :

...
int s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);

loc_addr.rc_family = AF_BLUETOOTH;
loc_addr.rc_bdaddr = *BDADDR_ANY_INITIALIZER;
loc_addr.rc_channel = (uint8_t) 22;

int b = bind(s, (struct sockaddr *)&loc_addr, sizeof(loc_addr));
...

Я все еще очень плохо знаком с разработкой C ++, Linux и BLE в целом, поэтому я бы хотелхотел бы получить указатели в правильном направлении.

1 Ответ

0 голосов
/ 11 февраля 2019

Моя рекомендация заключается в следующем: -

  1. Реализуйте свое приложение через командную строку.
  2. Реализуйте свое приложение с помощью автоматического сценария оболочки.
  3. (Необязательно) Реализуйте свое приложение с помощью C / C ++.

Если приложение, написанное на C / C ++, не является обязательным, тогда я рекомендую пропустить этот шаг, поскольку вы можете достичьтот же результат со сценарием оболочки.

Что касается реализации приложения через командную строку, я рекомендую использовать инструмент bluetoothctl, как видно из следующего ответа: -

Как только это начнет работать для вас, и вы сможете подключиться с удаленного устройства и просмотреть таблицу GATT, преобразуйтесписок команд в сценарий оболочки и запустить его, чтобы увидеть те же результаты.

Наконец, если до этого момента это работало для вас, то следующим шагом является преобразование этого сценария оболочки в приложение C / C ++.,Вы можете сделать это, просматривая исходный код команды bluetoothctl, которая использовалась ранее.Вы можете найти источник для стека BlueZ здесь , а код команды bluetoothctl можно найти здесь .

Надеюсь, это поможет.

...