From 628c050702663f1efb69de6e23b5809964d8c224 Mon Sep 17 00:00:00 2001 From: DashyFox Date: Fri, 4 Sep 2026 15:09:27 +0300 Subject: [PATCH] =?UTF-8?q?feat(rx):=20rxLineActive()=20=E2=80=94=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=B7=D0=BD=D0=B0=D0=BA=20=C2=AB=D0=B8=D0=B4=D1=91?= =?UTF-8?q?=D1=82=20=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D1=91=D0=BC=C2=BB=20=D0=BF=D0=BE=20=D0=A1?= =?UTF-8?q?=D0=9E=D0=A1=D0=A2=D0=9E=D0=AF=D0=9D=D0=98=D0=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Декодер уже знает состояние приёма (isReciving=локнут; preambleState Idle/ Candidate/Locked). rxLineActive() = локнут ИЛИ формируется ВАЛИДНАЯ преамбула (>=1 совпавший по периоду фронт — отличает реальный кадр от одиночного шумового фронта, который лишь заводит Candidate, но не набирает goodPeriods). Для гейта заднего у машинки: не стрелять, пока на линии идёт/формируется ответ точки — решение по состоянию, а не по хардкод-длительности (Даша 04.09). Аддитивно, const. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01J3Ca6J2JJ1NrptqQjKs8BK --- IR_DecoderRaw.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/IR_DecoderRaw.h b/IR_DecoderRaw.h index a574934..7408c8d 100644 --- a/IR_DecoderRaw.h +++ b/IR_DecoderRaw.h @@ -52,6 +52,14 @@ public: inline bool isOverflow() { return isBufferOverflow; }; // Буффер переполнился bool isSubOverflow(); volatile inline bool isReciving() { return isRecive; }; // Возвращает true, если происходит приём пакета + // Активность линии по СОСТОЯНИЮ (не по хардкод-длительности): кадр залочен ИЛИ формируется + // ВАЛИДНАЯ преамбула (>=1 совпавший по периоду фронт — отличает реальный кадр от одиночного + // шумового фронта, который лишь заводит Candidate, но не набирает goodPeriods). Для гейта заднего: + // «не стрелять, пока на линии идёт/формируется кадр (напр. ответ точки)». Аддитивно, const. + inline bool rxLineActive() const { + return isRecive || + (preambleState == PreambleState::Candidate && preambleGoodPeriods >= 1U); + } uint32_t pulseFilterDroppedByFilteredOverflow() const { return 0; } uint32_t pulseFilterDroppedByHoldOverflow() const { return pulseFilterDropHoldOverflow; } uint32_t pulseFilterDroppedGlitchPairs() const { return pulseFilterDropGlitchPairs; }