| Предыдущий | Следующий |
| STATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION | STATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND |
STATUS_BTH_ATT_PREPARE_QUEUE_FULL
Транзакция надёжной записи превысила ёмкость временной очереди сервера
STATUS_BTH_ATT_PREPARE_QUEUE_FULL соответствует ошибке ATT 0x09. Запросы Prepare Write помещают фрагменты в промежуточное состояние до последующего решения Execute Write; сервер возвращает этот код, когда в очереди нет места для ещё одного фрагмента.
Это более конкретное состояние, чем общий недостаток ресурсов. На сервере уже могут находиться принятые фрагменты, а автоматический повтор способен продублировать или переупорядочить транзакцию. ATT не фиксирует подготовленные значения до запроса Execute Write, поэтому восстановление должно учитывать состояние незавершённой транзакции.
Что проверить
- Отслеживайте каждый подготовленный фрагмент: дескриптор, смещение, диапазон байтов, ответ, идентификатор транзакции приложения и отправку Execute Write или Cancel.
- Ограничивайте число и суммарный размер ожидающих подготовленных записей; при небольшой очереди периферийного устройства завершайте или отменяйте одну транзакцию до начала другой.
- После отключения или ошибки явно восстанавливайте состояние транзакции, не предполагая, что сервер сохранил либо отбросил фрагменты очереди.
Ссылки
- Bluetooth SIG: протокол атрибутов ATT
- Bluetooth SIG: профиль атрибутов GATT
- Microsoft: клиент Bluetooth GATT
Нужно найти другой код? Найти другой код состояния или ошибки.