Я использую BlueZ C API для программирования моей мыши Bluetooth, чтобы прочитать расстояние. Я установил bluetooth-ключ. На данный момент мне нужно переместить мышь на расстоянии не менее 5-10 футов от ноутбука (Bluetooth-ключ), чтобы получить некоторое чтение RSSI. Ниже этого расстояния я получаю большую часть показаний как 0.BlueZ Bluetooth API и точность калибровки расстояния
Можно ли использовать этот API для получения более точного значения RSSI, чтобы мы могли отслеживать расстояние в этом диапазоне?
int8_t Bluetooth::read_rssi(int to) {
int dd = hciSocket;
struct hci_conn_info_req *cr;
bdaddr_t bdaddr;
int8_t rssi;
str2ba(bt_addr, &bdaddr);
if (dd < 0) {
perror("HCI device open failed");
exit(1);
}
cr = (hci_conn_info_req *)(malloc(sizeof(*cr) + sizeof(struct hci_conn_info)));
if (!cr) {
perror("Can't allocate memory");
exit(1);
}
bacpy(&cr->bdaddr, &bdaddr);
cr->type = ACL_LINK;
if (ioctl(dd, HCIGETCONNINFO, (unsigned long) cr) < 0) {
perror("Get connection info failed");
exit(1);
}
if (hci_read_rssi(dd, htobs(cr->conn_info->handle), &rssi, 1000) < 0) {
perror("Read RSSI failed");
exit(1);
}
return rssi;
}
Есть ли у вас какие-либо примеры кода на получение значения RSSI из запроса/сканирования API на основе? Не могли бы вы поделиться более подробной информацией? – AnilJ
Какую версию Bluez вы используете? В настоящее время у меня нет отдельного примера. Но мне не понадобится много времени, чтобы написать основной пример. Я обновляю ответ через день или около того с помощью ссылки на код. Но учтите, что я использую привязку db glib, поэтому вам нужно будет установить эту библиотеку. Если это неприемлемо, дайте мне знать сейчас, поэтому я не трачу время на это. – kaylum
Я использую версию 4.101 Bluez на Ubuntu 14.04. TBH, я совершенно новый, и все, что я понял, это доступные открытые примеры. Прямо сейчас, я написал класс C++ из доступного примера (также опубликованного в исходном сообщении). Поэтому, я считаю, должно быть хорошо иметь привязку glib/dbus, если она позволяет мне обновлять текущий класс C++. Спасибо за помощь. – AnilJ