summaryrefslogtreecommitdiff
path: root/src/plugins/ivimedia
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@pelagicore.com>2016-06-27 17:33:45 +0200
committerDominik Holland <dominik.holland@pelagicore.com>2016-07-05 12:32:14 +0000
commitd9c858b14552cfd24a7df888989fb64f9210a5da (patch)
treef60c6174814d9414a34044e7abf7115f7f94d0eb /src/plugins/ivimedia
parentbcfe075aed88abf0bb81bacf8115ea085454e62f (diff)
downloadqtivi-d9c858b14552cfd24a7df888989fb64f9210a5da.tar.gz
AmFmTuner: Made the API more complete
Added properties for minimum and maximum Frequency as well as the stepSize of the current band. Added functions and properties to support scanning (seeking throuh all stations and stay there for a few seconds) Change-Id: Ib13d98432b1a8c1aeced5e11dd0b4ae607d4cb95 Task-number: QTAUTO-60 Reviewed-by: Johan Thelin <johan.thelin@pelagicore.com>
Diffstat (limited to 'src/plugins/ivimedia')
-rw-r--r--src/plugins/ivimedia/tuner_simulator/amfmtunerbackend.cpp64
-rw-r--r--src/plugins/ivimedia/tuner_simulator/amfmtunerbackend.h6
2 files changed, 68 insertions, 2 deletions
diff --git a/src/plugins/ivimedia/tuner_simulator/amfmtunerbackend.cpp b/src/plugins/ivimedia/tuner_simulator/amfmtunerbackend.cpp
index cd16876..4007d64 100644
--- a/src/plugins/ivimedia/tuner_simulator/amfmtunerbackend.cpp
+++ b/src/plugins/ivimedia/tuner_simulator/amfmtunerbackend.cpp
@@ -46,6 +46,7 @@
AmFmTunerBackend::AmFmTunerBackend(QObject *parent)
: QIviAmFmTunerBackendInterface(parent)
, m_band(QIviAmFmTuner::FMBand)
+ , m_timerId(-1)
{
qRegisterMetaType<QIviAmFmTunerStation>();
@@ -65,12 +66,16 @@ AmFmTunerBackend::AmFmTunerBackend(QObject *parent)
fm_stations.append(qtRocksNonStop);
BandData fmdata;
fmdata.m_frequency = 87500000;
+ fmdata.m_minimumFrequency = 87500000;
+ fmdata.m_maximumFrequency = 108000000;
fmdata.m_stepSize = 100000;
fmdata.m_stations = fm_stations;
m_bandHash.insert(QIviAmFmTuner::FMBand, fmdata);
BandData amdata;
- amdata.m_frequency = 520000;
+ amdata.m_frequency = 535000;
+ amdata.m_minimumFrequency = 535000;
+ amdata.m_maximumFrequency = 1700000;
amdata.m_stepSize = 10000;
m_bandHash.insert(QIviAmFmTuner::AMBand, amdata);
}
@@ -78,6 +83,9 @@ AmFmTunerBackend::AmFmTunerBackend(QObject *parent)
void AmFmTunerBackend::initialize()
{
emit bandChanged(m_band);
+ emit minimumFrequencyChanged(m_bandHash[m_band].m_minimumFrequency);
+ emit maximumFrequencyChanged(m_bandHash[m_band].m_maximumFrequency);
+ emit stepSizeChanged(m_bandHash[m_band].m_stepSize);
emit frequencyChanged(m_bandHash[m_band].m_frequency);
emit stationChanged(m_bandHash[m_band].m_stations.at(0));
}
@@ -87,6 +95,11 @@ void AmFmTunerBackend::setFrequency(int frequency)
if (m_bandHash[m_band].m_frequency == frequency)
return;
+ if (frequency < m_bandHash[m_band].m_minimumFrequency || frequency > m_bandHash[m_band].m_maximumFrequency) {
+ qWarning() << "SIMULATION Frequency out of range";
+ return;
+ }
+
qWarning() << "SIMULATION Frequency changed to" << frequency;
m_bandHash[m_band].m_frequency = frequency;
@@ -103,6 +116,9 @@ void AmFmTunerBackend::setBand(QIviAmFmTuner::Band band)
m_band = band;
emit bandChanged(band);
+ emit minimumFrequencyChanged(m_bandHash[m_band].m_minimumFrequency);
+ emit maximumFrequencyChanged(m_bandHash[m_band].m_maximumFrequency);
+ emit stepSizeChanged(m_bandHash[m_band].m_stepSize);
emit frequencyChanged(m_bandHash[m_band].m_frequency);
emit stationChanged(stationAt(m_bandHash[m_band].m_frequency));
}
@@ -110,12 +126,22 @@ void AmFmTunerBackend::setBand(QIviAmFmTuner::Band band)
void AmFmTunerBackend::stepUp()
{
qWarning() << "SIMULATION Step Up";
- setFrequency(m_bandHash[m_band].m_frequency + m_bandHash[m_band].m_stepSize);
+
+ int newFreq = m_bandHash[m_band].m_frequency + m_bandHash[m_band].m_stepSize;
+ if (newFreq > m_bandHash[m_band].m_maximumFrequency)
+ newFreq = m_bandHash[m_band].m_minimumFrequency;
+
+ setFrequency(newFreq);
}
void AmFmTunerBackend::stepDown()
{
qWarning() << "SIMULATION Step Down";
+
+ int newFreq = m_bandHash[m_band].m_frequency + m_bandHash[m_band].m_stepSize;
+ if (newFreq < m_bandHash[m_band].m_minimumFrequency)
+ newFreq = m_bandHash[m_band].m_maximumFrequency;
+
setFrequency(m_bandHash[m_band].m_frequency - m_bandHash[m_band].m_stepSize);
}
@@ -157,6 +183,34 @@ void AmFmTunerBackend::seekDown()
}
}
+void AmFmTunerBackend::startScan()
+{
+ if (m_timerId != -1) {
+ qWarning() << "SIMULATION a Scan is already in progress";
+ return;
+ }
+
+ qWarning() << "SIMULATION Scan started";
+
+ emit scanStatusChanged(true);
+ seekUp();
+ m_timerId = startTimer(5000);
+}
+
+void AmFmTunerBackend::stopScan()
+{
+ if (m_timerId == -1) {
+ qWarning() << "SIMULATION no Scan is currently in progress, which can be stopped";
+ return;
+ }
+
+ qWarning() << "SIMULATION Scan stopped";
+
+ killTimer(m_timerId);
+ m_timerId = -1;
+ emit scanStatusChanged(false);
+}
+
void AmFmTunerBackend::setCurrentStation(const QIviAmFmTunerStation &station)
{
m_bandHash[m_band].m_frequency = station.frequency();
@@ -187,3 +241,9 @@ QIviAmFmTunerStation AmFmTunerBackend::stationAt(int frequency) const
return QIviAmFmTunerStation();
}
+
+void AmFmTunerBackend::timerEvent(QTimerEvent *event)
+{
+ Q_UNUSED(event);
+ seekUp();
+}
diff --git a/src/plugins/ivimedia/tuner_simulator/amfmtunerbackend.h b/src/plugins/ivimedia/tuner_simulator/amfmtunerbackend.h
index 1d519ff..27b8b7f 100644
--- a/src/plugins/ivimedia/tuner_simulator/amfmtunerbackend.h
+++ b/src/plugins/ivimedia/tuner_simulator/amfmtunerbackend.h
@@ -59,19 +59,25 @@ public:
virtual void stepDown() Q_DECL_OVERRIDE;
virtual void seekUp() Q_DECL_OVERRIDE;
virtual void seekDown() Q_DECL_OVERRIDE;
+ virtual void startScan() Q_DECL_OVERRIDE;
+ virtual void stopScan() Q_DECL_OVERRIDE;
private:
void setCurrentStation(const QIviAmFmTunerStation &station);
int stationIndexFromFrequency(int frequency) const;
QIviAmFmTunerStation stationAt(int frequency) const;
+ void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE;
QIviAmFmTuner::Band m_band;
struct BandData {
QVector<QIviAmFmTunerStation> m_stations;
int m_stepSize;
int m_frequency;
+ int m_minimumFrequency;
+ int m_maximumFrequency;
};
QHash<QIviAmFmTuner::Band, BandData> m_bandHash;
+ int m_timerId;
friend class SearchAndBrowseBackend;
};