Доработки по тесту драйвера

This commit is contained in:
2026-08-14 14:39:39 +03:00
parent 037bb37e62
commit 035792aedd
10 changed files with 307 additions and 140 deletions

View File

@@ -12,7 +12,7 @@
#define OPTICAL_USE_MCPWM_CAPTURE 0
#endif
enum class CaptureSource : uint8_t { RX, TX };
enum class CaptureSource : uint8_t { RX, TX, WINDOW_END };
struct CaptureEvent {
uint64_t tick;
@@ -43,6 +43,8 @@ class PulseReceiver {
private:
struct Edge { uint32_t tick; uint8_t rising; uint8_t source; };
static constexpr uint16_t DRIVER_RING_CAPACITY = 512;
static_assert((DRIVER_RING_CAPACITY & (DRIVER_RING_CAPACITY - 1U)) == 0,
"driver capture ring must be a power of two");
struct TimedEdge { uint64_t tick; bool rising; };
bool startCapture(bool withTx);
bool consumeEdge(const Edge &edge, PulsePeriod &period);
@@ -78,6 +80,8 @@ class PulseReceiver {
uint32_t expectedHz_ = 0;
float expectedDutyPct_ = 50.0f;
bool polarityKnown_ = false, activeStartRising_ = false;
TimedEdge polarityEdges_[3] = {};
uint8_t polarityEdgeCount_ = 0;
bool waitingForActiveEnd_ = true;
uint64_t activeStart_ = 0, activeEnd_ = 0;
bool haveRawTick_ = false;