12 : dataSaver(dataSaver),
13 launchDetector(launchDetector),
14 apogeeDetector(apogeeDetector),
15 verticalVelocityEstimator(verticalVelocityEstimator),
27 lpStatus = launchDetector->update(accel);
29 if (launchDetector->isLaunched()) {
34 dataSaver->saveDataPoint(
40 dataSaver->launchDetected(launchDetector->getLaunchedTime());
46 verticalVelocityEstimator->update(accel, alt);
52 verticalVelocityEstimator->update(accel, alt);
53 apogeeDetector->update(verticalVelocityEstimator);
54 if (apogeeDetector->isApogeeDetected()) {
58 dataSaver->saveDataPoint(
Detects the apogee (peak altitude) of a rocket flight using estimated altitude and vertical velocity.
Timestamped float measurement container.
Abstract interface for persisting timestamped data points.
Sliding-window launch detector based on acceleration magnitude.
StateMachine(IDataSaver *dataSaver, LaunchDetector *launchDetector, ApogeeDetector *apogeeDetector, VerticalVelocityEstimator *verticalVelocityEstimator)
Wire dependencies for the state machine.
uint8_t getState() const override
Retrieve the current state value.
int update(const AccelerationTriplet &accel, const DataPoint &alt) override
Process new sensor data and transition states if thresholds are met.
1D Kalman filter fusing altimeter and accelerometer data.