Как рекламировать пользовательский uuid с помощью фреймворка BLE Qt? - PullRequest
0 голосов
/ 20 мая 2019

Я экспериментировал с примером проекта Qt, Heart Rate Server. Я настроил его на работу с Linux, и мое приложение для iPhone успешно распознает периферийное устройство Heart Rate, подключается к нему и получает уведомление об изменениях значения сердечного ритма.

Теперь я хотел бы изменить пример проекта Heart Rate, чтобы рекламировать пользовательскую услугу с пользовательской характеристикой. Я сгенерировал два 128-битных UUID для пользовательского сервиса и характеристики, но когда я меняю код для их объявления, мое приложение для iPhone всегда распознает сервис HeartRate с характеристикой HeartRateMeasurement.

Я даже пытался рекламировать периферийное устройство без услуг (код ниже), и мое приложение для iPhone все еще распознает, что периферийное устройство рекламирует сервис HeartRate, даже если это не так.

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QLowEnergyAdvertisingData advertisingData;
    advertisingData.setDiscoverability(QLowEnergyAdvertisingData::DiscoverabilityGeneral);
    advertisingData.setIncludePowerLevel(true);
    advertisingData.setLocalName("000000-000000-00");

    QLowEnergyController *leController = QLowEnergyController::createPeripheral();
    leController->startAdvertising(QLowEnergyAdvertisingParameters(), advertisingData,
                                   advertisingData);

    return a.exec();
}

Что я могу сделать, чтобы рекламировать индивидуальные услуги и характеристики? Любая помощь приветствуется.

1 Ответ

0 голосов
/ 20 мая 2019

Я решил проблему, iPhone кешировал данные Bluetooth для периферийных устройств, поэтому всегда обнаруживал один и тот же сервис и характеристики.Выключение и повторное включение Bluetooth на iPhone решило проблему.Надеюсь, это поможет кому-то, кто столкнется с той же проблемой.

...