You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
3.3 KiB
143 lines
3.3 KiB
15 years ago
|
/***************************************************************************
|
||
|
frequencyseekhelper.cpp - description
|
||
|
-------------------
|
||
|
begin : Fre Mai 9 2003
|
||
|
copyright : (C) 2003 by Martin Witte
|
||
|
email : witte@kawo1.rwth-aachen.de
|
||
|
***************************************************************************/
|
||
|
|
||
|
/***************************************************************************
|
||
|
* *
|
||
|
* This program is free software; you can redistribute it and/or modify *
|
||
|
* it under the terms of the GNU General Public License as published by *
|
||
|
* the Free Software Foundation; either version 2 of the License, or *
|
||
|
* (at your option) any later version. *
|
||
|
* *
|
||
|
***************************************************************************/
|
||
|
|
||
|
#include "include/frequencyseekhelper.h"
|
||
14 years ago
|
#include <tqtimer.h>
|
||
15 years ago
|
|
||
13 years ago
|
FrequencySeekHelper::FrequencySeekHelper(ISeekRadio &parent)
|
||
|
: SeekHelper(parent)
|
||
15 years ago
|
{
|
||
14 years ago
|
m_timer = new TQTimer(this);
|
||
|
TQObject::connect (m_timer, TQT_SIGNAL(timeout()), this, TQT_SLOT(step()));
|
||
15 years ago
|
}
|
||
|
|
||
|
|
||
|
FrequencySeekHelper::~FrequencySeekHelper()
|
||
|
{
|
||
|
delete m_timer;
|
||
|
}
|
||
|
|
||
|
|
||
|
bool FrequencySeekHelper::connectI (Interface *i)
|
||
|
{
|
||
|
bool a = SeekHelper::connectI(i);
|
||
|
bool b = IFrequencyRadioClient::connectI(i);
|
||
|
return a || b;
|
||
|
}
|
||
|
|
||
|
|
||
|
bool FrequencySeekHelper::disconnectI(Interface *i)
|
||
|
{
|
||
|
bool a = SeekHelper::disconnectI(i);
|
||
|
bool b = IFrequencyRadioClient::disconnectI(i);
|
||
|
return a || b;
|
||
|
}
|
||
|
|
||
|
|
||
|
void FrequencySeekHelper::start(const SoundStreamID &id, direction_t dir)
|
||
|
{
|
||
|
SeekHelper::start(id, dir);
|
||
|
m_bestFrequency = 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
void FrequencySeekHelper::abort()
|
||
|
{
|
||
|
m_timer->stop();
|
||
|
m_bestFrequency = 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
bool FrequencySeekHelper::nextSeekStep()
|
||
|
{
|
||
|
float f = queryFrequency();
|
||
|
f += (m_direction == up ? 1 : -1) * queryScanStep();
|
||
|
|
||
|
bool bounds = false;
|
||
|
if (f > queryMaxFrequency()) {
|
||
|
f = queryMaxFrequency();
|
||
|
bounds = true;
|
||
|
}
|
||
|
if (f < queryMinFrequency()) {
|
||
|
f = queryMinFrequency();
|
||
|
bounds = true;
|
||
|
}
|
||
|
|
||
|
if (sendFrequency(f) > 0) {
|
||
|
if (!bounds) {
|
||
|
m_timer->start (50, true);
|
||
|
return true;
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
bool FrequencySeekHelper::bestFound() const
|
||
|
{
|
||
|
return m_bestFrequency > 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
void FrequencySeekHelper::rememberBest()
|
||
|
{
|
||
|
m_bestFrequency = m_currentFrequency;
|
||
|
}
|
||
|
|
||
|
|
||
|
void FrequencySeekHelper::getData()
|
||
|
{
|
||
|
m_oldSignal = m_currentSignal;
|
||
|
m_oldFrequency = m_currentFrequency;
|
||
|
|
||
|
querySignalQuality(m_SoundStreamID, m_currentSignal);
|
||
|
queryHasGoodQuality(m_SoundStreamID, m_goodSignal);
|
||
|
m_currentFrequency = queryFrequency();
|
||
|
}
|
||
|
|
||
|
|
||
|
bool FrequencySeekHelper::isBetter() const
|
||
|
{
|
||
|
return m_currentSignal > m_oldSignal;
|
||
|
}
|
||
|
|
||
|
|
||
|
bool FrequencySeekHelper::isWorse() const
|
||
|
{
|
||
|
return m_currentSignal < m_oldSignal;
|
||
|
}
|
||
|
|
||
|
|
||
|
bool FrequencySeekHelper::isGood() const
|
||
|
{
|
||
|
return m_goodSignal;
|
||
|
}
|
||
|
|
||
|
|
||
|
void FrequencySeekHelper::applyBest()
|
||
|
{
|
||
|
sendFrequency( (m_bestFrequency + m_currentFrequency) / 2);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#include "frequencyseekhelper.moc"
|