доработки всякие

This commit is contained in:
2026-08-12 12:11:55 +03:00
parent 862781fa6a
commit 1db89fca79
9 changed files with 163 additions and 37 deletions

View File

@@ -7,7 +7,8 @@ class Measurement {
public:
explicit Measurement(PulseReceiver &receiver) : receiver_(receiver) {}
bool start(float expectedHz, float expectedDuty, float tolerancePct,
uint32_t testTimeMs, uint8_t settleCycles);
uint32_t testTimeMs, uint16_t averagingPeriods,
uint8_t settleCycles);
MeasureState update();
bool continueAfterDisplay();
void abort();
@@ -23,15 +24,19 @@ class Measurement {
void fail(FailReason reason);
void completeMeasurement();
void publishStats();
void resetAveragingWindow();
PulseReceiver &receiver_;
volatile MeasureState state_ = MeasureState::IDLE;
TaskHandle_t task_ = nullptr;
StageStats stats_ = {};
StageStats publishedStats_ = {};
mutable portMUX_TYPE statsMux_ = portMUX_INITIALIZER_UNLOCKED;
PeriodLimits limits_ = {};
uint32_t expectedHz_ = 0;
float expectedDutyPct_ = 0.0f;
float expectedDutyPct_ = 0.0f, tolerancePct_ = 0.0f;
uint16_t averagingPeriods_ = 1;
uint32_t windowPeriodCount_ = 0;
uint64_t windowPeriodSum_ = 0, windowActiveSum_ = 0;
uint32_t windowMinPeriod_ = UINT32_MAX, windowMaxPeriod_ = 0;
uint8_t settleCycles_ = 0, settleLeft_ = 0;
uint64_t measurementStartTick_ = 0, deadlineTick_ = 0, stepTicks_ = 0;
uint32_t startedMs_ = 0, measurementStartMs_ = 0, lastPeriodMs_ = 0;