AbstractCalibrator.cc 1.03 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
#include "AbstractCalibrator.h"

AbstractCalibrator::AbstractCalibrator(QWidget *parent) :
    QWidget(parent),
    pulseWidth(new QLabel()),
    log(new QVector<float>())
{
}

AbstractCalibrator::~AbstractCalibrator()
{
    delete log;
}

float AbstractCalibrator::logAverage()
{
    float total = 0;
    for (int i=0; i<log->size(); ++i)
        total += log->value(i);
    return (total/log->size());
}

float AbstractCalibrator::logExtrema()
{
    float extrema = logAverage();
    if (logAverage() < 1500)
    {
        for (int i=0; i<log->size(); ++i)
        {
            if (log->value(i) < extrema)
                extrema = log->value(i);
        }
    }
    else
    {
        for (int i=0; i<log->size(); ++i)
        {
            if (log->value(i) > extrema)
                extrema = log->value(i);
        }
    }

    return extrema;
}

void AbstractCalibrator::channelChanged(float raw)
{
    pulseWidth->setText(QString::number(static_cast<double>(raw)));
    if (log->size() == 5)
        log->pop_front();
    log->push_back(raw);
}