[-]
[+]
|
Changed |
_service:tar_git:qt5-qtmultimedia-plugin-mediaservice-irisradio.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:irisradio.spec
^
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -1,8 +1,4 @@
<services>
-<service name="webhook">
-<param name="repourl">https://github.com/piggz/qt5-qtmultimedia-plugin-mediaservice-irisradio.git</param>
-<param name="branch">master</param>
-</service>
<service name="tar_git">
<param name="url">https://github.com/piggz/qt5-qtmultimedia-plugin-mediaservice-irisradio.git</param>
<param name="branch">master</param>
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qtmultimedia-plugin-mediaservice-irisradio-0.4.1.tar.bz2/fmradioiriscontrol.cpp
^
|
@@ -51,6 +51,7 @@
m_workerThread(0),
m_fd(-1),
m_muted(false),
+ m_stereoMode(QRadioTuner::Auto),
m_stereo(false),
m_low(false),
m_tunerAvailable(false),
@@ -60,6 +61,7 @@
m_currentBand(QRadioTuner::FM),
m_freqMin(0),
m_freqMax(0),
+ m_pendingFreq(0),
m_currentFreq(0),
m_timer(new QTimer(this)),
m_searchMode(QRadioTuner::SearchFast),
@@ -69,41 +71,21 @@
m_rdsError(false),
m_programType(QRadioData::Undefined)
{
- initRadio();
+ qDebug("Create FM Radio iris Control");
m_timer->setInterval(2000);
connect(m_timer, SIGNAL(timeout()), this, SLOT(search()));
- qDebug("Create FM Radio iris Control");
}
FMRadioIrisControl::~FMRadioIrisControl()
{
- m_timer->stop();
- m_workerThread->setQuit();
- SetCtrl(V4L2_CID_PRIVATE_IRIS_STATE, 0); // assuming this wakes blocking ioctl()
- m_workerThread->wait();
- delete m_workerThread;
-
- if (m_fd != -1) {
- close(m_fd);
- }
-
- qDebug() << "De-initting radio";
- QByteArray fmInitPath = qgetenv("HYBRIS_FM_INIT_PATH");
- if (QFile::exists(fmInitPath)) {
- QFile f(fmInitPath);
- if (f.open(QFile::WriteOnly)) {
- f.write("0", 1);
- f.close();
- usleep(200000);
- } else {
- qDebug() << "Unable to open HYBRIS_FM_INIT_PATH (" << fmInitPath << ") for writing";
- }
-
- }
+ stop();
}
bool FMRadioIrisControl::initRadio()
{
+ if (m_fd != -1)
+ return true;
+
qDebug("Initialize radio");
QByteArray fmInitPath = qgetenv("HYBRIS_FM_INIT_PATH");
@@ -120,8 +102,6 @@
m_fd = open("/dev/radio0", O_RDONLY | O_NONBLOCK);
if (m_fd != -1) {
- m_tunerAvailable = true;
-
m_workerThread = new IrisWorkerThread(m_fd);
connect(m_workerThread, SIGNAL(tunerAvailableChanged(bool)), this, SLOT(handleTunerAvailable(bool)));
connect(m_workerThread, SIGNAL(rdsAvailableChanged(bool)), this, SLOT(handleRdsAvailable(bool)));
@@ -142,13 +122,12 @@
SetCtrl(V4L2_CID_PRIVATE_IRIS_SPACING, 2);
SetCtrl(V4L2_CID_PRIVATE_IRIS_RDS_STD, 1);
GetTuner();
- GetFreq();
SetCtrl(V4L2_CID_PRIVATE_IRIS_RDSON, 1);
SetCtrl(V4L2_CID_PRIVATE_IRIS_REGION, IRIS_REGION_EU);
SetCtrl(V4L2_CID_PRIVATE_IRIS_RDSGROUP_PROC, 255);//120
SetCtrl(V4L2_CID_PRIVATE_IRIS_PSALL, 0);
SetCtrl(V4L2_CID_PRIVATE_IRIS_ANTENNA, 0);
- SetFreq(m_currentFreq);
+
return true;
}
@@ -200,38 +179,46 @@
void FMRadioIrisControl::setFrequency(int frequency)
{
qint64 f = frequency;
- v4l2_frequency freq;
if (frequency < m_freqMin)
f = m_freqMax;
if (frequency > m_freqMax)
f = m_freqMin;
- if (m_fd > 0) {
+ if (m_tunerAvailable) {
+ v4l2_frequency freq;
memset(&freq, 0, sizeof(freq));
freq.tuner = 0;
if (ioctl(m_fd, VIDIOC_G_FREQUENCY, &freq) >= 0) {
- if (m_low) {
- // For low, freq in units of 62.5Hz, so convert from Hz to units.
- freq.frequency = (int)(f/62.5);
- } else {
- // For high, freq in units of 62.5kHz, so convert from Hz to units.
- freq.frequency = (int)(f/62500);
- }
- ioctl(m_fd, VIDIOC_S_FREQUENCY, &freq);
- m_currentFreq = f;
- emit frequencyChanged(m_currentFreq);
- m_radioText.clear();
- emit radioTextChanged(m_radioText);
- m_stationName.clear();
- emit stationNameChanged(m_stationName);
- m_programType = QRadioData::Undefined;
- emit programTypeChanged(m_programType);
- m_programTypeName.clear();
- emit programTypeNameChanged(m_programTypeName);
- m_stationId.clear();
- emit stationIdChanged(m_stationId);
+ clear();
+ SetFreq(f);
}
+ } else {
+ m_pendingFreq = frequency;
+ }
+}
+
+void FMRadioIrisControl::clear()
+{
+ if (!m_radioText.isEmpty()) {
+ m_radioText.clear();
+ emit radioTextChanged(m_radioText);
+ }
+ if (!m_stationName.isEmpty()) {
+ m_stationName.clear();
+ emit stationNameChanged(m_stationName);
+ }
+ if (m_programType != QRadioData::Undefined) {
+ m_programType = QRadioData::Undefined;
+ emit programTypeChanged(m_programType);
+ }
+ if (!m_programTypeName.isEmpty()) {
+ m_programTypeName.clear();
+ emit programTypeNameChanged(m_programTypeName);
+ }
+ if (!m_stationId.isEmpty()) {
+ m_stationId.clear();
+ emit stationIdChanged(m_stationId);
}
}
@@ -242,16 +229,21 @@
QRadioTuner::StereoMode FMRadioIrisControl::stereoMode() const
{
- return QRadioTuner::Auto;
+ return m_stereoMode;
}
void FMRadioIrisControl::setStereoMode(QRadioTuner::StereoMode mode)
{
+ m_stereoMode = mode;
+
+ if (!m_tunerAvailable)
+ return;
+
bool stereo = true;
v4l2_tuner tuner;
memset(&tuner, 0, sizeof(tuner));
- if (mode == QRadioTuner::ForceMono)
+ if (m_stereoMode == QRadioTuner::ForceMono)
stereo = false;
if (ioctl(m_fd, VIDIOC_G_TUNER, &tuner) >= 0) {
@@ -266,6 +258,9 @@
int FMRadioIrisControl::signalStrength() const
{
+ if (!m_tunerAvailable)
+ return 0;
+
v4l2_tuner tuner;
memset(&tuner, 0, sizeof(tuner));
tuner.index = 0;
@@ -344,16 +339,7 @@
emit signalStrengthChanged(m_signalStrength);
}
- m_radioText.clear();
- emit radioTextChanged(m_radioText);
- m_stationName.clear();
- emit stationNameChanged(m_stationName);
- m_programType = QRadioData::Undefined;
- emit programTypeChanged(m_programType);
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qtmultimedia-plugin-mediaservice-irisradio-0.4.1.tar.bz2/fmradioiriscontrol.h
^
|
@@ -158,6 +158,7 @@
int m_fd;
bool m_muted;
+ QRadioTuner::StereoMode m_stereoMode;
bool m_stereo;
bool m_low;
bool m_tunerAvailable;
@@ -167,6 +168,7 @@
QRadioTuner::Band m_currentBand;
qint64 m_freqMin;
qint64 m_freqMax;
+ int m_pendingFreq;
qint64 m_currentFreq;
QTimer* m_timer;
QRadioTuner::SearchMode m_searchMode;
@@ -181,8 +183,10 @@
QString m_stationName;
QString m_radioText;
+ void clear();
bool initRadio();
void doSeek(int dir);
+ void doSearch(bool forward);
bool SetFreq(int frequency);//Hz
int GetFreq();//Hz
bool SetTuner();
|