Controller
- 
struct ControllerState
- 
class Controller
- Public Functions - 
Controller() = default
 - 
std::pair<ActuatorsState, ControllerState> Run(Time now, const VentParams ¶ms, const SensorReadings &sensor_readings)
 - Public Static Functions - 
static Duration GetLoopPeriod()
 - Private Types - 
using DbgFloat = Debug::Variable::Float
 - 
using DbgUint32 = Debug::Variable::UInt32
 - 
using DbgAccess = Debug::Variable::Access
 - Private Members - 
uint32_t breath_id_ = {0}
 - 
VentilationFsm fsm_
 - 
PID blower_valve_pid_{"blower_valve_", " for blower valve PID", 0.04f, 10.0f, 0.0f, PID::TermApplication::OnError, PID::TermApplication::OnMeasurement, 0.f, 1.0f}
 - 
PID psol_pid_{"psol", " for O2 psol PID", 0.04f, 20.0f, 0.0f, PID::TermApplication::OnError, PID::TermApplication::OnMeasurement, 0.f, 1.0f}
 - 
PID fio2_pid_{"fio2_", " for FIO2 PID", 0.001f, 0.1f, 0.0f, PID::TermApplication::OnError, PID::TermApplication::OnMeasurement, 0.f, 1.0f}
 - 
std::optional<FlowIntegrator> flow_integrator_ = FlowIntegrator()
 - 
std::optional<FlowIntegrator> uncorrected_flow_integrator_ = FlowIntegrator()
 - 
bool ventilator_was_on_ = {false}
 - 
DbgUint32 dbg_loop_period_{"loop_period", DbgAccess::ReadOnly, static_cast<uint32_t>(GetLoopPeriod().microseconds()), "\xB5s", "Loop period"}
 - 
DbgFloat dbg_pc_setpoint_{"pc_setpoint", DbgAccess::ReadOnly, 0.0f, "cmH2O", "Pressure control set-point"}
 - 
DbgFloat dbg_fio2_setpoint_{"fio2_setpoint", DbgAccess::ReadOnly, 0.21f, "ratio", "FiO2 setpoint [0.0, 1.0] as commanded by GUI"}
 - 
DbgFloat dbg_net_flow_uncorrected_{"net_flow_uncorrected", DbgAccess::ReadOnly, 0.0f, "mL/s", "Net flow rate w/o correction"}
 - 
DbgFloat dbg_flow_correction_{"flow_correction", DbgAccess::ReadOnly, 0.0f, "mL/s", "Correction to flow"}
 
- 
Controller() = default