42 int32_t minVal =
_buf[0];
43 int32_t maxVal =
_buf[0];
45 for (
size_t i = 0; i <
_count; ++i) {
46 int32_t val =
_buf[i];
62 double sumSqDev = 0.0;
63 for (
size_t i = 0; i <
_count; ++i) {
65 sumSqDev += dev * dev;
100 if (!isfinite(rms) || rms <= 0.0f) {
101 return (
float)adcBits;
108 double noisePP = 6.6 * (double)rms;
109 double nfb = (double)adcBits - log2(noisePP);
114 if (nfb > (
double)adcBits)
115 nfb = (double)adcBits;
125 if (!isfinite(rms) || rms <= 0.0f) {
126 return (
float)adcBits;
145 double enobValue = (double)adcBits - log2((
double)rms);
150 if (enobValue > (
double)adcBits)
151 enobValue = (double)adcBits;
153 return (
float)enobValue;
171 return cv < (double)cvThreshold;
float rmsNoiseLsb() const
static const size_t WINDOW_SIZE
void _updateStats() const
float peakToPeakNoiseLsb() const
void addSample(int32_t code)
float noiseFreeBits(uint8_t adcBits) const
int32_t _buf[WINDOW_SIZE]
float enob(uint8_t adcBits) const
bool isStable(float cvThreshold=0.01f) const