rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions
ClosedLoopController< TInput, TOutput > Class Template Referenceabstract

#include <closed_loop_controller.h>

Public Member Functions

void update ()
 

Private Member Functions

expected< TOutput > getOutput ()
 
virtual expected< TInput > getSetpoint ()=0
 
virtual expected< TInput > observePlant ()=0
 
virtual expected< TOutput > getOpenLoop (TInput setpoint)=0
 
virtual expected< TOutput > getClosedLoop (TInput setpoint, TInput observation)=0
 
virtual void setOutput (expected< TOutput > outputValue)=0
 

Detailed Description

template<typename TInput, typename TOutput>
class ClosedLoopController< TInput, TOutput >

Definition at line 10 of file closed_loop_controller.h.

Member Function Documentation

◆ getClosedLoop()

template<typename TInput , typename TOutput >
virtual expected< TOutput > ClosedLoopController< TInput, TOutput >::getClosedLoop ( TInput  setpoint,
TInput  observation 
)
privatepure virtual

Implemented in VvtController, AlternatorController, BoostController, and EtbController.

Referenced by ClosedLoopController< TInput, TOutput >::getOutput().

Here is the caller graph for this function:

◆ getOpenLoop()

template<typename TInput , typename TOutput >
virtual expected< TOutput > ClosedLoopController< TInput, TOutput >::getOpenLoop ( TInput  setpoint)
privatepure virtual

Implemented in VvtController, AlternatorController, BoostController, and EtbController.

Referenced by ClosedLoopController< TInput, TOutput >::getOutput().

Here is the caller graph for this function:

◆ getOutput()

template<typename TInput , typename TOutput >
expected< TOutput > ClosedLoopController< TInput, TOutput >::getOutput ( )
inlineprivate

Definition at line 18 of file closed_loop_controller.h.

18 {
19 expected<TInput> setpoint = getSetpoint();
20 // If we don't know the setpoint, return failure.
21 if (!setpoint) {
22 return unexpected;
23 }
24
25 expected<TInput> observation = observePlant();
26 // If we couldn't observe the plant, return failure.
27 if (!observation) {
28 return unexpected;
29 }
30
31 expected<TOutput> openLoopResult = getOpenLoop(setpoint.Value);
32 // If we couldn't compute open loop, return failure.
33 if (!openLoopResult) {
34 return unexpected;
35 }
36
37 expected<TOutput> closedLoopResult = getClosedLoop(setpoint.Value, observation.Value);
38 // If we couldn't compute closed loop, return failure.
39 if (!closedLoopResult) {
40 return unexpected;
41 }
42
43 return openLoopResult.Value + closedLoopResult.Value;
44 }
virtual expected< TOutput > getOpenLoop(TInput setpoint)=0
virtual expected< TInput > observePlant()=0
virtual expected< TInput > getSetpoint()=0
virtual expected< TOutput > getClosedLoop(TInput setpoint, TInput observation)=0

Referenced by ClosedLoopController< TInput, TOutput >::update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getSetpoint()

template<typename TInput , typename TOutput >
virtual expected< TInput > ClosedLoopController< TInput, TOutput >::getSetpoint ( )
privatepure virtual

Implemented in AlternatorController, BoostController, EtbController, and VvtController.

Referenced by ClosedLoopController< TInput, TOutput >::getOutput().

Here is the caller graph for this function:

◆ observePlant()

template<typename TInput , typename TOutput >
virtual expected< TInput > ClosedLoopController< TInput, TOutput >::observePlant ( )
privatepure virtual

Implemented in AlternatorController, BoostController, EtbController, and VvtController.

Referenced by ClosedLoopController< TInput, TOutput >::getOutput().

Here is the caller graph for this function:

◆ setOutput()

template<typename TInput , typename TOutput >
virtual void ClosedLoopController< TInput, TOutput >::setOutput ( expected< TOutput >  outputValue)
privatepure virtual

Implemented in AlternatorController, BoostController, EtbController, and VvtController.

Referenced by ClosedLoopController< TInput, TOutput >::update().

Here is the caller graph for this function:

◆ update()

template<typename TInput , typename TOutput >
void ClosedLoopController< TInput, TOutput >::update ( )
inline

Definition at line 12 of file closed_loop_controller.h.

12 {
13 expected<TOutput> outputValue = getOutput();
14 setOutput(outputValue);
15 }
expected< TOutput > getOutput()
virtual void setOutput(expected< TOutput > outputValue)=0

Referenced by BoostController::onFastCallback(), and EtbController::update().

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following file: