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).