feat(config): irRxByteTimeoutUs/irRxAbortSilenceUs — таймаут байта и тишина обрыва приёма формулой

Константы использует Car (IrCycle/Executer) вместо макроса IR_timeout,
который завязан на член класса декодера.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AeA1K5dBUKrnoXVwyoVjzq
This commit is contained in:
2026-09-07 16:30:44 +03:00
parent 8f45f6e214
commit 5b9f73ec7c

View File

@ -281,6 +281,9 @@ constexpr uint32_t irFrameDecodeEndUs(uint8_t packSize) { return irTicksToUs(irP
constexpr uint32_t irLockToDecodeEndUs(uint8_t packSize) { return irTicksToUs(irPreambleTicks - irLockTicks + (uint32_t)packSize * irByteTicks - (uint32_t)syncBits * irBitTicks); }
/// Латентность лока: от первой несущей чужого кадра до лока декодера, мкс.
constexpr uint32_t irLockLatencyUs = irTicksToUs(irLockTicks);
/// Таймаут байта декодера (как IR_timeout при номинальном bitTime) и тишина, по которой декодер обрывает приём.
constexpr uint32_t irRxByteTimeoutUs = ((uint32_t)bitTime + tolerance) * ((uint32_t)bitPerByte + syncBits + 1U);
constexpr uint32_t irRxAbortSilenceUs = 2U * irRxByteTimeoutUs;
/// Протокольный максимум длины кадра (5-битное поле длины).
constexpr uint8_t irMaxPackSize = IR_MASK_MSG_INFO;
/// Размер кадра по полезной нагрузке: DATA (from+to) и BACK (только from).