Document incoming BLE tuning and refine cancellation test
This commit is contained in:
1 parent
2902602d7f
commit
ca2bebcbd3
2 files changed
+17
-8
No files matched your search
+13
-5
@@ -177,10 +177,15 @@ GATT-клиент использует WriteValueWithResultAsync, сервер
|
||||
NotifyValueAsync(value, subscribedClient): DATA/ACK — notify-only, INVITE — indicate-only.
|
||||
DATA/ACK пишут с WriteWithoutResponse и подписываются на Notify; INVITE сохраняет
|
||||
WriteWithResponse/Indicate. Сервер отвечает Respond только на WriteWithResponse.
|
||||
После открытия исходящего GATT при наличии IBluetoothLEDevice6 (Windows 11)
|
||||
запрашивается ThroughputOptimized. Request хранится до close линка и закрывается
|
||||
отдельно. GetConnectionParameters/GetConnectionPhy и события изменений логируют
|
||||
фактический интервал/latency/timeout и TX/RX PHY. Установка 2M этим API не доступна;
|
||||
В обеих ролях при наличии IBluetoothLEDevice6 (Windows 11) запрашивается
|
||||
ThroughputOptimized. Для входящего link BluetoothLEDevice получается через
|
||||
FromIdAsync(session.DeviceId().Id()), без discovery и нового подключения.
|
||||
Этот запрос независим от DATA; отказ настройки логируется и не закрывает GATT.
|
||||
При close запрос получения device отменяется, device и throughput request закрываются;
|
||||
запоздавший результат закрытого link освобождается без изменения других соединений.
|
||||
Request хранится до close линка. DEBUG выводит запрошенный диапазон интервалов,
|
||||
latency/timeout. GetConnectionParameters/GetConnectionPhy и события изменений логируют
|
||||
на INFO роль и фактический интервал/latency/timeout и TX/RX PHY. Установка 2M этим API не доступна;
|
||||
Windows выбирает PHY с peer. Отсутствие/отказ API не ломает GATT-подключение.
|
||||
Результаты WinRT сериализуются в uasync через bounded mailbox (256 событий).
|
||||
Опоздавшие callbacks используют weak ownership и ID, закрытые handles не трогают.
|
||||
@@ -222,7 +227,10 @@ test_ble_bluez: отдельный dbus-run-session с подставным Blue
|
||||
test_ble_winrt (Windows): объявления с настоящим QueryInterface без EventArgs2 (1809)
|
||||
и с EventArgs2 (2004), сохранение адреса/типа; настоящий mailbox и hresult_error без радио; исключение
|
||||
одного link не останавливает другого, ошибка radio прекращает доставку batch,
|
||||
shutdown отменяет диагностический таймер, posted_task и поздние callbacks. Тест можно запускать в Wine;
|
||||
shutdown отменяет диагностический таймер, posted_task и поздние callbacks.
|
||||
Входящая настройка скорости проверяет независимость от DATA при успехе, отказе,
|
||||
NULL и исключении, закрытие device и гонку отмены с поздним результатом.
|
||||
Тест можно запускать в Wine;
|
||||
он не проверяет драйвер, доступность Bluetooth API и физическую передачу.
|
||||
ble_probe 3: ручная проверка реального радио (scan, GATT registration, публикация
|
||||
и замена тестового manufacturer-объявления); не подключается к чужим устройствам.
|
||||
|
||||
@@ -104,9 +104,10 @@ static void incoming_speed(UASYNC* ua) {
|
||||
s->close(7); CHECK(speed->cancelled == 1);
|
||||
speed->finish(AsyncStatus::Completed); uasync_poll(ua, 0);
|
||||
CHECK(device->closed == 1 && !s->link(7) && s->link(9) && !s->failed && !owner.link_failures);
|
||||
s->tune_incoming(*s->link(9), speed.as<IAsyncOperation<BluetoothLEDevice>>());
|
||||
s->shutdown(); CHECK(speed->cancelled == 2);
|
||||
speed->finish(AsyncStatus::Canceled); uasync_poll(ua, 0);
|
||||
auto pending = make_self<TestSpeedOperation>();
|
||||
s->tune_incoming(*s->link(9), pending.as<IAsyncOperation<BluetoothLEDevice>>());
|
||||
s->shutdown(); CHECK(pending->cancelled == 1);
|
||||
pending->finish(AsyncStatus::Canceled); uasync_poll(ua, 0);
|
||||
CHECK(s->events.empty() && !s->posted && !owner.radio_failures && !owner.link_failures);
|
||||
DEBUG_INFO(CAT, "WinRT test PASS: incoming speed preserves DATA on success/failure, closes device and cancels late/shutdown work");
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user