queryMediaProbe method
Future<D11hMediaProbeResult>
queryMediaProbe(
- BleCharacteristic characteristic, {
- bool includeStatus = true,
- Duration responseTimeout = const Duration(seconds: 2),
Implementation
Future<D11hMediaProbeResult> queryMediaProbe(
BleCharacteristic characteristic, {
bool includeStatus = true,
Duration responseTimeout = const Duration(seconds: 2),
}) async {
_ensureConnected('query media probe');
if (!characteristic.canNotify ||
!characteristic.properties.contains(
BleCharacteristicProperty.writeWithoutResponse,
)) {
throw StateError(
'Media probing requires notify and writeWithoutResponse.',
);
}
try {
await subscribe(characteristic);
final deviceId = _connectedDevice!;
final information = await _writeAndWaitForCommand(
deviceId,
characteristic,
buildD11hCommand(0x1A, const <int>[]),
0x1B,
responseTimeout,
);
final status = includeStatus
? await _writeAndWaitForCommand(
deviceId,
characteristic,
buildD11hCommand(0xA3, const <int>[]),
0xB3,
responseTimeout,
)
: null;
return D11hMediaProbeResult(
createdAt: DateTime.now().toUtc(),
informationResponse: _protocolFrameFromRaw(information),
statusResponse: status == null ? null : _protocolFrameFromRaw(status),
);
} catch (error) {
_recordError('media probe failed', error);
rethrow;
}
}