Add reference constructors/factory methods to LinearDigitalFilter (#810)

Composition is less verbose with references than with smart pointers.
This commit is contained in:
Tyler Veness
2017-12-04 20:12:06 -08:00
committed by Peter Johnson
parent 6a00dc7976
commit 65cc85f68d
4 changed files with 85 additions and 1 deletions

View File

@@ -18,6 +18,7 @@ namespace frc {
*/
class Filter : public PIDSource {
public:
explicit Filter(PIDSource& source);
explicit Filter(std::shared_ptr<PIDSource> source);
virtual ~Filter() = default;

View File

@@ -69,11 +69,18 @@ namespace frc {
*/
class LinearDigitalFilter : public Filter {
public:
LinearDigitalFilter(PIDSource& source, llvm::ArrayRef<double> ffGains,
llvm::ArrayRef<double> fbGains);
LinearDigitalFilter(std::shared_ptr<PIDSource> source,
llvm::ArrayRef<double> ffGains,
llvm::ArrayRef<double> fbGains);
// Static methods to create commonly used filters
static LinearDigitalFilter SinglePoleIIR(PIDSource& source,
double timeConstant, double period);
static LinearDigitalFilter HighPass(PIDSource& source, double timeConstant,
double period);
static LinearDigitalFilter MovingAverage(PIDSource& source, int taps);
static LinearDigitalFilter SinglePoleIIR(std::shared_ptr<PIDSource> source,
double timeConstant, double period);
static LinearDigitalFilter HighPass(std::shared_ptr<PIDSource> source,