Add usage reporting to LinearFilter (#1750)

This commit is contained in:
Tyler Veness
2019-06-30 19:44:15 -07:00
committed by Peter Johnson
parent 852d1b9cad
commit c705953d77
2 changed files with 15 additions and 1 deletions

View File

@@ -10,6 +10,8 @@
#include <cassert>
#include <cmath>
#include <hal/HAL.h>
using namespace frc;
LinearFilter::LinearFilter(wpi::ArrayRef<double> ffGains,
@@ -17,7 +19,11 @@ LinearFilter::LinearFilter(wpi::ArrayRef<double> ffGains,
: m_inputs(ffGains.size()),
m_outputs(fbGains.size()),
m_inputGains(ffGains),
m_outputGains(fbGains) {}
m_outputGains(fbGains) {
static int instances = 0;
instances++;
HAL_Report(HALUsageReporting::kResourceType_LinearFilter, instances);
}
LinearFilter LinearFilter::SinglePoleIIR(double timeConstant, double period) {
double gain = std::exp(-period / timeConstant);

View File

@@ -9,6 +9,9 @@ package edu.wpi.first.wpilibj;
import java.util.Arrays;
import edu.wpi.first.hal.FRCNetComm.tResourceType;
import edu.wpi.first.hal.HAL;
/**
* This class implements a linear, digital filter. All types of FIR and IIR filters are supported.
* Static factory methods are provided to create commonly used types of filters.
@@ -52,6 +55,8 @@ public class LinearFilter {
private final double[] m_inputGains;
private final double[] m_outputGains;
private static int instances;
/**
* Create a linear FIR or IIR filter.
*
@@ -63,6 +68,9 @@ public class LinearFilter {
m_outputs = new CircularBuffer(fbGains.length);
m_inputGains = Arrays.copyOf(ffGains, ffGains.length);
m_outputGains = Arrays.copyOf(fbGains, fbGains.length);
instances++;
HAL.report(tResourceType.kResourceType_LinearFilter, instances);
}
/**