Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Iq tool add sampling rate and frequency GUI inputs #1026

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 42 additions & 10 deletions src/qtgui/iq_tool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,14 @@ CIqTool::CIqTool(QWidget *parent) :
is_recording = false;
is_playing = false;
bytes_per_sample = 8;
sample_rate = 192000;
recording_sample_rate = 192000;
playback_sample_rate = 192000;
vladisslav2011 marked this conversation as resolved.
Show resolved Hide resolved
rec_len = 0;
center_freq = 1e8;

//ui->recDirEdit->setText(QDir::currentPath());
ui->sampleRateSpinBox->setValue(playback_sample_rate);
ui->centerFreqSpinBox->setValue(center_freq);

recdir = new QDir(QDir::homePath(), "*.raw");

Expand All @@ -73,18 +76,25 @@ CIqTool::~CIqTool()
/*! \brief Set new sample rate. */
void CIqTool::setSampleRate(qint64 sr)
{
sample_rate = sr;
recording_sample_rate = sr;
setPlaybackSampleRate(sr);
}

/*! \brief Set new playback sample rate. */
void CIqTool::setPlaybackSampleRate(qint64 sr)
{
playback_sample_rate = sr;
ui->sampleRateSpinBox->setValue(sr / 1000.0);

if (!current_file.isEmpty())
{
// Get duration of selected recording and update label
QFileInfo info(*recdir, current_file);
rec_len = (int)(info.size() / (sample_rate * bytes_per_sample));
rec_len = (int)(info.size() / (playback_sample_rate * bytes_per_sample));
refreshTimeWidgets();
}
}


/*! \brief Slot activated when the user selects a file. */
void CIqTool::on_listWidget_currentTextChanged(const QString &currentText)
{
Expand All @@ -93,7 +103,7 @@ void CIqTool::on_listWidget_currentTextChanged(const QString &currentText)
QFileInfo info(*recdir, current_file);

parseFileName(currentText);
rec_len = (int)(info.size() / (sample_rate * bytes_per_sample));
rec_len = (int)(info.size() / (playback_sample_rate * bytes_per_sample));

// Get duration of selected recording and update label
refreshTimeWidgets();
Expand Down Expand Up @@ -127,15 +137,19 @@ void CIqTool::on_playButton_clicked(bool checked)
{
ui->listWidget->setEnabled(false);
ui->recButton->setEnabled(false);
ui->sampleRateSpinBox->setEnabled(false);
ui->centerFreqSpinBox->setEnabled(false);
emit startPlayback(recdir->absoluteFilePath(current_file),
(float)sample_rate, center_freq);
(float)playback_sample_rate, center_freq);
}
}
else
{
emit stopPlayback();
ui->listWidget->setEnabled(true);
ui->recButton->setEnabled(true);
ui->sampleRateSpinBox->setEnabled(true);
ui->centerFreqSpinBox->setEnabled(true);
ui->slider->setValue(0);
}
}
Expand All @@ -151,6 +165,8 @@ void CIqTool::cancelPlayback()
ui->playButton->setChecked(false);
ui->listWidget->setEnabled(true);
ui->recButton->setEnabled(true);
ui->sampleRateSpinBox->setEnabled(true);
ui->centerFreqSpinBox->setEnabled(true);
is_playing = false;
}

Expand All @@ -160,7 +176,7 @@ void CIqTool::on_slider_valueChanged(int value)
{
refreshTimeWidgets();

qint64 seek_pos = (qint64)(value)*sample_rate;
qint64 seek_pos = (qint64)(value) * playback_sample_rate;
emit seek(seek_pos);
}

Expand All @@ -173,6 +189,8 @@ void CIqTool::on_recButton_clicked(bool checked)
if (checked)
{
ui->playButton->setEnabled(false);
ui->sampleRateSpinBox->setEnabled(false);
ui->centerFreqSpinBox->setEnabled(false);
emit startRecording(recdir->path());

refreshDir();
Expand All @@ -181,6 +199,8 @@ void CIqTool::on_recButton_clicked(bool checked)
else
{
ui->playButton->setEnabled(true);
ui->sampleRateSpinBox->setEnabled(true);
ui->centerFreqSpinBox->setEnabled(true);
emit stopRecording();
}
}
Expand All @@ -197,6 +217,8 @@ void CIqTool::cancelRecording()
{
ui->recButton->setChecked(false);
ui->playButton->setEnabled(true);
ui->sampleRateSpinBox->setEnabled(true);
ui->centerFreqSpinBox->setEnabled(true);
is_recording = false;
}

Expand Down Expand Up @@ -278,6 +300,16 @@ void CIqTool::on_recDirButton_clicked()
ui->recDirEdit->setText(dir);
}

void CIqTool::on_centerFreqSpinBox_valueChanged(double value)
{
center_freq = value * 1000.0;
}

void CIqTool::on_sampleRateSpinBox_valueChanged(double value)
{
setPlaybackSampleRate(value * 1000.0);
}

void CIqTool::timeoutFunction(void)
{
refreshDir();
Expand Down Expand Up @@ -320,7 +352,7 @@ void CIqTool::refreshDir()
// update rec_len; if the file being recorded is the one selected
// in the list, the length will update periodically
QFileInfo info(*recdir, current_file);
rec_len = (int)(info.size() / (sample_rate * bytes_per_sample));
rec_len = (int)(info.size() / (recording_sample_rate * bytes_per_sample));
}
}

Expand Down Expand Up @@ -376,7 +408,7 @@ void CIqTool::parseFileName(const QString &filename)
center = list.at(3).toLongLong(&center_ok);

if (sr_ok)
sample_rate = sr;
ui->sampleRateSpinBox->setValue(sr / 1000.0);
if (center_ok)
center_freq = center;
ui->centerFreqSpinBox->setValue(center / 1000.0);
}
6 changes: 5 additions & 1 deletion src/qtgui/iq_tool.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,15 @@ private slots:
void on_playButton_clicked(bool checked);
void on_slider_valueChanged(int value);
void on_listWidget_currentTextChanged(const QString &currentText);
void on_centerFreqSpinBox_valueChanged(double value);
void on_sampleRateSpinBox_valueChanged(double value);
void timeoutFunction(void);

private:
void refreshDir(void);
void refreshTimeWidgets(void);
void parseFileName(const QString &filename);
void setPlaybackSampleRate(qint64 sr);

private:
Ui::CIqTool *ui;
Expand All @@ -98,7 +101,8 @@ private slots:
bool is_recording;
bool is_playing;
int bytes_per_sample; /*!< Bytes per sample (fc = 4) */
int sample_rate; /*!< Current sample rate. */
int playback_sample_rate; /*!< Playback sample rate. */
int recording_sample_rate; /*!< Recording sample rate. */
qint64 center_freq; /*!< Center frequency. */
int rec_len; /*!< Length of a recording in seconds */
};
Expand Down
76 changes: 75 additions & 1 deletion src/qtgui/iq_tool.ui
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>482</width>
<width>499</width>
<height>327</height>
</rect>
</property>
Expand Down Expand Up @@ -209,6 +209,80 @@
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="sampleRateLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Sample Rate, ksps</string>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="sampleRateSpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="decimals">
<number>3</number>
</property>
<property name="maximum">
<double>999999.989999999990687</double>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="Frequency">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Frequency, kHz</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="centerFreqSpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="decimals">
<number>3</number>
</property>
<property name="maximum">
<double>99999999.989999994635582</double>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources>
Expand Down