Skip to content

Commit ababbb9

Browse files
iq_tool: implement repeated playback option
1 parent 6f933a7 commit ababbb9

File tree

7 files changed

+27
-9
lines changed

7 files changed

+27
-9
lines changed

src/applications/gqrx/mainwindow.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ MainWindow::MainWindow(const QString& cfgfile, bool edit_conf, QWidget *parent)
281281
// I/Q playback
282282
connect(iq_tool, SIGNAL(startRecording(QString, enum receiver::file_formats)), this, SLOT(startIqRecording(QString, enum receiver::file_formats)));
283283
connect(iq_tool, SIGNAL(stopRecording()), this, SLOT(stopIqRecording()));
284-
connect(iq_tool, SIGNAL(startPlayback(QString, float, qint64, enum receiver::file_formats)), this, SLOT(startIqPlayback(QString, float, qint64, enum receiver::file_formats)));
284+
connect(iq_tool, SIGNAL(startPlayback(QString, float, qint64, enum receiver::file_formats, bool)), this, SLOT(startIqPlayback(QString, float, qint64, enum receiver::file_formats, bool)));
285285
connect(iq_tool, SIGNAL(stopPlayback()), this, SLOT(stopIqPlayback()));
286286
connect(iq_tool, SIGNAL(seek(qint64)), this,SLOT(seekIqFile(qint64)));
287287

@@ -1643,7 +1643,9 @@ void MainWindow::stopIqRecording()
16431643
ui->actionLoadSettings->setDisabled(false);
16441644
}
16451645

1646-
void MainWindow::startIqPlayback(const QString& filename, float samprate, qint64 center_freq, enum receiver::file_formats fmt)
1646+
void MainWindow::startIqPlayback(const QString& filename, float samprate,
1647+
qint64 center_freq,
1648+
enum receiver::file_formats fmt, bool repeat)
16471649
{
16481650
if (ui->actionDSP->isChecked())
16491651
{
@@ -1664,7 +1666,7 @@ void MainWindow::startIqPlayback(const QString& filename, float samprate, qint64
16641666

16651667
rx->set_input_device(devstr.toStdString());
16661668
updateHWFrequencyRange(false);
1667-
rx->set_input_file(filename.toStdString(), samprate, fmt);
1669+
rx->set_input_file(filename.toStdString(), samprate, fmt, repeat);
16681670

16691671
// sample rate
16701672
auto actual_rate = rx->set_input_rate(samprate);

src/applications/gqrx/mainwindow.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,8 @@ private slots:
182182
/* I/Q playback and recording*/
183183
void startIqRecording(const QString& recdir, enum receiver::file_formats fmt);
184184
void stopIqRecording();
185-
void startIqPlayback(const QString& filename, float samprate, qint64 center_freq, enum receiver::file_formats fmt);
185+
void startIqPlayback(const QString& filename, float samprate, qint64 center_freq,
186+
enum receiver::file_formats fmt, bool repeat);
186187
void stopIqPlayback();
187188
void seekIqFile(qint64 seek_pos);
188189

src/applications/gqrx/receiver.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,12 +262,13 @@ void receiver::set_input_device(const std::string device)
262262
* @param sample_rate
263263
* @param fmt
264264
*/
265-
void receiver::set_input_file(const std::string name, const int sample_rate, const enum file_formats fmt)
265+
void receiver::set_input_file(const std::string name, const int sample_rate,
266+
const enum file_formats fmt, bool repeat)
266267
{
267268
std::string error = "";
268269
size_t sample_size = sample_size_from_format(fmt);
269270

270-
input_file = gr::blocks::file_source::make(sample_size, name.c_str(), false);
271+
input_file = gr::blocks::file_source::make(sample_size, name.c_str(), repeat);
271272

272273
if (d_running)
273274
{

src/applications/gqrx/receiver.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@ class receiver
134134
void stop();
135135
void set_input_device(const std::string device);
136136
void set_output_device(const std::string device);
137-
void set_input_file(const std::string name, const int sample_rate, const enum file_formats fmt);
137+
void set_input_file(const std::string name, const int sample_rate,
138+
const enum file_formats fmt, bool repeat);
138139

139140
std::vector<std::string> get_antennas(void) const;
140141
void set_antenna(const std::string &antenna);

src/qtgui/iq_tool.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ void CIqTool::switchControlsState(bool recording, bool playback)
124124
ui->recDirEdit->setEnabled(!(recording || playback));
125125
ui->recDirButton->setEnabled(!(recording || playback));
126126
ui->formatCombo->setEnabled(!(recording || playback));
127+
ui->repeat->setEnabled(!(recording || playback));
127128
}
128129

129130
/*! \brief Start/stop playback */
@@ -155,7 +156,8 @@ void CIqTool::on_playButton_clicked(bool checked)
155156
switchControlsState(false, true);
156157

157158
emit startPlayback(recdir->absoluteFilePath(current_file),
158-
(float)sample_rate, center_freq, fmt);
159+
(float)sample_rate, center_freq, fmt,
160+
ui->repeat->checkState() == Qt::Checked);
159161
}
160162
}
161163
else

src/qtgui/iq_tool.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ class CIqTool : public QDialog
6666
signals:
6767
void startRecording(const QString recdir, enum receiver::file_formats fmt);
6868
void stopRecording();
69-
void startPlayback(const QString filename, float samprate, qint64 center_freq, enum receiver::file_formats fmt);
69+
void startPlayback(const QString filename, float samprate, qint64 center_freq,
70+
enum receiver::file_formats fmt, bool repeat);
7071
void stopPlayback();
7172
void seek(qint64 seek_pos);
7273

src/qtgui/iq_tool.ui

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,16 @@
158158
</property>
159159
</widget>
160160
</item>
161+
<item>
162+
<widget class="QCheckBox" name="repeat">
163+
<property name="locale">
164+
<locale language="C" country="AnyCountry"/>
165+
</property>
166+
<property name="text">
167+
<string>Repeat</string>
168+
</property>
169+
</widget>
170+
</item>
161171
<item>
162172
<spacer name="horizontalSpacer">
163173
<property name="orientation">

0 commit comments

Comments
 (0)