@@ -99,6 +99,9 @@ MainWindow::MainWindow(const QString& cfgfile, bool edit_conf, QWidget *parent)
99
99
/* create receiver object */
100
100
rx = new receiver (" " , " " , 1 );
101
101
rx->set_rf_freq (144500000 .0f );
102
+ rx->set_audio_rec_event_handler (std::bind (audio_rec_event, this ,
103
+ std::placeholders::_1,
104
+ std::placeholders::_2));
102
105
103
106
// remote controller
104
107
remote = new RemoteControl ();
@@ -238,12 +241,16 @@ MainWindow::MainWindow(const QString& cfgfile, bool edit_conf, QWidget *parent)
238
241
connect (uiDockAudio, SIGNAL (audioMuteChanged (bool )), this , SLOT (setAudioMute (bool )));
239
242
connect (uiDockAudio, SIGNAL (audioStreamingStarted (QString,int ,bool )), this , SLOT (startAudioStream (QString,int ,bool )));
240
243
connect (uiDockAudio, SIGNAL (audioStreamingStopped ()), this , SLOT (stopAudioStreaming ()));
241
- connect (uiDockAudio, SIGNAL (audioRecStarted (QString )), this , SLOT (startAudioRec (QString )));
242
- connect (uiDockAudio, SIGNAL (audioRecStarted (QString )), remote, SLOT (startAudioRecorder (QString )));
243
- connect (uiDockAudio, SIGNAL (audioRecStopped ()), this , SLOT (stopAudioRec ()));
244
- connect (uiDockAudio, SIGNAL (audioRecStopped ()), remote, SLOT (stopAudioRecorder ()));
244
+ connect (uiDockAudio, SIGNAL (audioRecStart ( )), this , SLOT (startAudioRec ()));
245
+ connect (uiDockAudio, SIGNAL (audioRecStart ( )), remote, SLOT (startAudioRecorder ()));
246
+ connect (uiDockAudio, SIGNAL (audioRecStop ()), this , SLOT (stopAudioRec ()));
247
+ connect (uiDockAudio, SIGNAL (audioRecStop ()), remote, SLOT (stopAudioRecorder ()));
245
248
connect (uiDockAudio, SIGNAL (audioPlayStarted (QString)), this , SLOT (startAudioPlayback (QString)));
246
249
connect (uiDockAudio, SIGNAL (audioPlayStopped ()), this , SLOT (stopAudioPlayback ()));
250
+ connect (uiDockAudio, SIGNAL (recDirChanged (QString)), this , SLOT (recDirChanged (QString)));
251
+ connect (uiDockAudio, SIGNAL (recSquelchTriggeredChanged (bool )), this , SLOT (recSquelchTriggeredChanged (bool )));
252
+ connect (uiDockAudio, SIGNAL (recMinTimeChanged (int )), this , SLOT (recMinTimeChanged (int )));
253
+ connect (uiDockAudio, SIGNAL (recMaxGapChanged (int )), this , SLOT (recMaxGapChanged (int )));
247
254
connect (uiDockAudio, SIGNAL (fftRateChanged (int )), this , SLOT (setAudioFftRate (int )));
248
255
connect (uiDockFft, SIGNAL (fftSizeChanged (int )), this , SLOT (setIqFftSize (int )));
249
256
connect (uiDockFft, SIGNAL (fftRateChanged (int )), this , SLOT (setIqFftRate (int )));
@@ -301,8 +308,8 @@ MainWindow::MainWindow(const QString& cfgfile, bool edit_conf, QWidget *parent)
301
308
connect (remote, SIGNAL (newSquelchLevel (double )), this , SLOT (setSqlLevel (double )));
302
309
connect (remote, SIGNAL (newSquelchLevel (double )), uiDockRxOpt, SLOT (setSquelchLevel (double )));
303
310
connect (uiDockRxOpt, SIGNAL (sqlLevelChanged (double )), remote, SLOT (setSquelchLevel (double )));
304
- connect (remote, SIGNAL (startAudioRecorderEvent ()), uiDockAudio , SLOT (startAudioRecorder ()));
305
- connect (remote, SIGNAL (stopAudioRecorderEvent ()), uiDockAudio , SLOT (stopAudioRecorder ()));
311
+ connect (remote, SIGNAL (startAudioRecorderEvent ()), this , SLOT (startAudioRec ()));
312
+ connect (remote, SIGNAL (stopAudioRecorderEvent ()), this , SLOT (stopAudioRec ()));
306
313
connect (ui->plotter , SIGNAL (newFilterFreq (int , int )), remote, SLOT (setPassband (int , int )));
307
314
connect (remote, SIGNAL (newPassband (int )), this , SLOT (setPassband (int )));
308
315
connect (remote, SIGNAL (gainChanged (QString, double )), uiDockInputCtl, SLOT (setGain (QString,double )));
@@ -311,6 +318,7 @@ MainWindow::MainWindow(const QString& cfgfile, bool edit_conf, QWidget *parent)
311
318
312
319
rds_timer = new QTimer (this );
313
320
connect (rds_timer, SIGNAL (timeout ()), this , SLOT (rdsTimeout ()));
321
+ connect (this , SIGNAL (sigAudioRecEvent (QString, bool )), this , SLOT (audioRecEvent (QString, bool )), Qt::QueuedConnection);
314
322
315
323
// enable frequency tooltips on FFT plot
316
324
ui->plotter ->setTooltipsEnabled (true );
@@ -1478,11 +1486,47 @@ void MainWindow::rdsTimeout()
1478
1486
}
1479
1487
}
1480
1488
1489
+ /* *
1490
+ * @brief Set audio recording directory.
1491
+ * @param dir The directory, where audio files should be created.
1492
+ */
1493
+ void MainWindow::recDirChanged (const QString dir)
1494
+ {
1495
+ rx->set_audio_rec_dir (dir.toStdString ());
1496
+ }
1497
+
1498
+ /* *
1499
+ * @brief Set audio recording squelch triggered mode.
1500
+ * @param enabled New state.
1501
+ */
1502
+ void MainWindow::recSquelchTriggeredChanged (const bool enabled)
1503
+ {
1504
+ rx->set_audio_rec_sql_triggered (enabled);
1505
+ }
1506
+
1507
+ /* *
1508
+ * @brief Set audio recording squelch triggered minimum time.
1509
+ * @param time_ms New time in milliseconds.
1510
+ */
1511
+ void MainWindow::recMinTimeChanged (const int time_ms)
1512
+ {
1513
+ rx->set_audio_rec_min_time (time_ms);
1514
+ }
1515
+
1516
+ /* *
1517
+ * @brief Set audio recording squelch triggered maximum gap time.
1518
+ * @param time_ms New time in milliseconds.
1519
+ */
1520
+ void MainWindow::recMaxGapChanged (const int time_ms)
1521
+ {
1522
+ rx->set_audio_rec_max_gap (time_ms);
1523
+ }
1524
+
1481
1525
/* *
1482
1526
* @brief Start audio recorder.
1483
1527
* @param filename The file name into which audio should be recorded.
1484
1528
*/
1485
- void MainWindow::startAudioRec (const QString& filename )
1529
+ void MainWindow::startAudioRec ()
1486
1530
{
1487
1531
if (!d_have_audio)
1488
1532
{
@@ -1494,17 +1538,11 @@ void MainWindow::startAudioRec(const QString& filename)
1494
1538
msg_box.exec ();
1495
1539
uiDockAudio->setAudioRecButtonState (false );
1496
1540
}
1497
- else if (rx->start_audio_recording (filename. toStdString () ))
1541
+ else if (rx->start_audio_recording ())
1498
1542
{
1499
1543
ui->statusBar ->showMessage (tr (" Error starting audio recorder" ));
1500
-
1501
- /* reset state of record button */
1502
1544
uiDockAudio->setAudioRecButtonState (false );
1503
1545
}
1504
- else
1505
- {
1506
- ui->statusBar ->showMessage (tr (" Recording audio to %1" ).arg (filename));
1507
- }
1508
1546
}
1509
1547
1510
1548
/* * Stop audio recorder. */
@@ -1514,15 +1552,23 @@ void MainWindow::stopAudioRec()
1514
1552
{
1515
1553
/* okay, this one would be weird if it really happened */
1516
1554
ui->statusBar ->showMessage (tr (" Error stopping audio recorder" ));
1517
-
1518
- uiDockAudio->setAudioRecButtonState (true );
1519
1555
}
1520
- else
1556
+ }
1557
+
1558
+ /* * Audio recording is started or stopped. */
1559
+ void MainWindow::audioRecEvent (const QString filename, bool is_running)
1560
+ {
1561
+ if (is_running)
1521
1562
{
1563
+ ui->statusBar ->showMessage (tr (" Recording audio to %1" ).arg (filename));
1564
+ uiDockAudio->audioRecStarted (QString (filename));
1565
+ }else {
1566
+ /* reset state of record button */
1567
+ uiDockAudio->audioRecStopped ();
1522
1568
ui->statusBar ->showMessage (tr (" Audio recorder stopped" ), 5000 );
1523
- }
1524
- }
1569
+ }
1525
1570
1571
+ }
1526
1572
1527
1573
/* * Start playback of audio file. */
1528
1574
void MainWindow::startAudioPlayback (const QString& filename)
@@ -2464,3 +2510,15 @@ void MainWindow::frequencyFocusShortcut()
2464
2510
{
2465
2511
ui->freqCtrl ->setFrequencyFocus ();
2466
2512
}
2513
+
2514
+ /* * Called from GNU Radio thread */
2515
+ void MainWindow::audioRecEventEmitter (std::string filename, bool is_running)
2516
+ {
2517
+ emit sigAudioRecEvent (QString (filename.data ()), is_running);
2518
+ }
2519
+
2520
+ /* * Called from GNU Radio thread */
2521
+ void MainWindow::audio_rec_event (MainWindow *self, std::string filename, bool is_running)
2522
+ {
2523
+ self->audioRecEventEmitter (filename, is_running);
2524
+ }
0 commit comments