BLE-реклама может быть включена с помощью команды HCI_LE_Set_Advertising_Enable
[1], которая возвращает статус 0x00
, если HCI_LE_Set_Advertising_Enable, команда успешно или код состояния 0x01 to 0xFF
[2], если команда не выполнена.
Если объявление уже включено (например, вызов этой команды во второй раз с параметром Advertising_Enable
, установленным на 0x01
), то эта или HCI_LE_Set_Advertising_Data
команды вернут статус 0x0C (Command Disallowed)
.
Есть (по крайней мере) две проблемы с этим:
Как проверить, если LE реклама уже включена, чтобы иметь возможность выполнять безопасную / строгую обработку ошибок? Я не могу найти команду для Получить рекламный статус в Базовых спецификациях BT. Я не могу положиться на что-то вроде
if ((rc == -1) && (errno == EIO)) {
/* Actually OK, advertising is already enabled */
return 0;
}
Спасибо.
Ссылки:
- [1] BT CS 5.2 [Том 4 ] Часть E, раздел 7.8.9
- [2] BT CS 5.2 [Vol 1] Часть F, Коды ошибок контроллера