Имена синтаксического анализа обнаружения Bluetooth ESP32

Я запускаю пример кода из примеров ESP32 и сканирую доступные устройства BLE. Я вижу MAC-адрес устройства и т. д. Но для некоторых устройств я не вижу их имен.
Я использую ESP-WROOM-32 с аппаратной поддержкой, проверенной непосредственно с их github (некоторые ошибки были исправлены раньше на github, чем через lib Manager)

Когда я использую приложение LightBlue для обнаружения устройств BLE, я вижу имена большего количества устройств, чем ESP. Что я могу изменить, чтобы имена правильно отображались? ИЛИ Как мне проанализировать имя устройства из получаемых данных?

Этот код обратного вызова

class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
    void onResult(BLEAdvertisedDevice advertisedDevice) {
      Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().c_str());
      Serial.print(" RSSI: ");
      Serial.println(advertisedDevice.getRSSI());
    }
};

выдает следующий результат:

Advertised Device: Name: , Address: 1d:0c:c7:3a:fb:c6, manufacturer data: 4c0009060378c0a81f12, payload: 1073609632 
 RSSI: -75

, 👍1


1 ответ


Лучший ответ:

2

Bluetooth имеет два способа обработки имен устройств. Устройство может при желании объявить свое имя устройства. Он также должен ответить на запрос «получить имя устройства». Первый пассивен и это то, что вы обычно видите при сканировании. Последний активен и требует подключения к устройству и выполнения запроса. Если устройство не объявляет имя устройства, то единственный способ получить это имя — это отправить устройству запрос GATT «Характеристика имени». ESP32 (AFAIK) не делает этого автоматически, потому что эти вещи спроектированы так, чтобы быть «легкими». Ваше тяжеловесное «эталонное» программное обеспечение может работать и выполнять больше задач, поскольку это полноценное приложение.

Иногда вы можете увидеть разницу в устройствах, поскольку ваше эталонное приложение может заполнить список устройств комбинацией MAC-адресов и имен, а затем заменить MAC-адреса именами на более позднем этапе. Также он, вероятно, кэширует имена, которые запрашивал в прошлом.

,