From b375aa169ebf13920b04e6f8a57e3c8b924b1ab7 Mon Sep 17 00:00:00 2001 From: DashyFox Date: Tue, 8 Sep 2026 14:09:38 +0300 Subject: [PATCH] =?UTF-8?q?refactor(config):=20IR=5FResponseDelay=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=B5=D1=81=D1=91=D0=BD=20=D0=B2=20IR?= =?UTF-8?q?=5Fconfig.h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Зависит только от конфигурационных констант (bitTime, tolerance, syncBits) — это таймаут байта (irRxByteTimeoutUs) × 2.7735 = 42 мс; значение не изменилось. Потребителям достаточно IR_config.h. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01AeA1K5dBUKrnoXVwyoVjzq --- IR_DecoderRaw.h | 1 - IR_config.h | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/IR_DecoderRaw.h b/IR_DecoderRaw.h index 4b12363..4c2d98e 100644 --- a/IR_DecoderRaw.h +++ b/IR_DecoderRaw.h @@ -25,7 +25,6 @@ class Print; #define riseTimeMin (riseTime - riseTolerance) #define aroundRise(t) (riseTimeMin < t && t < riseTimeMax) #define IR_timeout (riseTimeMax * (8 + syncBits + 1)) // us // таймаут в 8 data + 3 sync + 1 -constexpr uint16_t IR_ResponseDelay = ((uint16_t)(((bitTime+riseTolerance) * (8 + syncBits + 1))*2.7735))/1000; class IR_Encoder; class IR_DecoderRaw : virtual public IR_FOX diff --git a/IR_config.h b/IR_config.h index 6997da5..7fca919 100644 --- a/IR_config.h +++ b/IR_config.h @@ -286,6 +286,9 @@ 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; +/// Оборот ответа (КТ отвечает на пинг через это время; машинка — задний после принятого кадра): таймаут байта × +/// 2.7735 = 42 мс. Коэффициент исторический, подобран под 42; зависит только от bitTime/tolerance/syncBits. +constexpr uint16_t IR_ResponseDelay = (uint16_t)((irRxByteTimeoutUs * 2.7735) / 1000); /// Протокольный максимум длины кадра (5-битное поле длины). constexpr uint8_t irMaxPackSize = IR_MASK_MSG_INFO; /// Размер кадра по полезной нагрузке: DATA (from+to) и BACK (только from).