Files
cpp/radio/metrics/Statistics.hpp
T
jens 4d13e8e41f - implemented Tracker class
- refactored IMinMAx, Statistics

git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@1036 b431acfa-c32f-4a4a-93f1-934dc6c82436
2022-06-18 14:05:39 +00:00

75 lines
1.3 KiB
C++

#ifndef _METRICS_STATISTICS_HPP_
#define _METRICS_STATISTICS_HPP_
#pragma once
#include <cpp/radio/Vector.hpp>
#include <radio/statistics.h>
#include "IMinMax.hpp"
namespace Radio
{
namespace Metrics
{
class Statistics
{
public:
friend class MinMaxProvider;
Statistics(radio_float_t updateInterval_minMax);
~Statistics();
void process(ComplexScalar const &xin);
IMinMax const& minMax() const;
class MinMaxProvider : public IMinMax
{
Statistics &m_parent;
public:
MinMaxProvider(Statistics &parent)
: m_parent(parent)
{
}
radio_float_t min_i() const
{
return SlidingMinMaxGet(&m_parent.m_sl_min_I);
}
radio_float_t min_q() const
{
return SlidingMinMaxGet(&m_parent.m_sl_min_Q);
}
radio_float_t min_mag() const
{
return SlidingMinMaxGet(&m_parent.m_sl_min_mag);
}
radio_float_t max_i() const
{
return SlidingMinMaxGet(&m_parent.m_sl_max_I);
}
radio_float_t max_q() const
{
return SlidingMinMaxGet(&m_parent.m_sl_max_Q);
}
radio_float_t max_mag() const
{
return SlidingMinMaxGet(&m_parent.m_sl_max_mag);
}
};
private:
sl_minmax_t m_sl_min_I;
sl_minmax_t m_sl_min_Q;
sl_minmax_t m_sl_min_mag;
sl_minmax_t m_sl_max_I;
sl_minmax_t m_sl_max_Q;
sl_minmax_t m_sl_max_mag;
MinMaxProvider m_provider_minMax;
};
} // Metrics
} // Radio
#endif // _METRICS_STATISTICS_HPP_