mirror of
https://github.com/jopohl/urh.git
synced 2026-03-10 18:26:48 +01:00
make HackRF bias tee configurable (#794)
This commit is contained in:
committed by
GitHub
parent
ddff7078cb
commit
88fa644ead
@@ -252,9 +252,12 @@ jobs:
|
||||
displayName: "Install build dependencies"
|
||||
|
||||
- script: |
|
||||
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8d748e26ccc9afc8ea0d0201ae234fda35de721e/Formula/boost.rb
|
||||
echo "Reinstall icu4c"
|
||||
brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
|
||||
echo "Link icu4c"
|
||||
brew link icu4c --force
|
||||
echo "Install boost"
|
||||
brew install --force --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/8d748e26ccc9afc8ea0d0201ae234fda35de721e/Formula/boost.rb
|
||||
cd /tmp
|
||||
wget https://github.com/libusb/libusb/releases/download/v1.0.22/libusb-1.0.22.tar.bz2
|
||||
tar xf libusb-1.0.22.tar.bz2
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>860</width>
|
||||
<height>754</height>
|
||||
<width>859</width>
|
||||
<height>741</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@@ -81,19 +81,10 @@ QGroupBox::indicator:checked {
|
||||
<number>0</number>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="13" column="1">
|
||||
<widget class="QSpinBox" name="spinBoxFreqCorrection">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Set the frequency correction in <span style=" font-weight:600;">ppm</span>. If you do not know what to enter here, just leave it to one.</p></body></html></string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-1000</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>1000</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>1</number>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="labelAntenna">
|
||||
<property name="text">
|
||||
<string>Antenna:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -107,129 +98,33 @@ QGroupBox::indicator:checked {
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="1">
|
||||
<layout class="QGridLayout" name="gridLayout_8">
|
||||
<item row="0" column="0">
|
||||
<widget class="QSlider" name="sliderBasebandGain">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The baseband gain is applied to the baseband signal in your software defined radio. The baseband signal is at low frequency and gathered from the RF signal by <span style=" font-weight:600;">complex downsampling</span>.</p></body></html></string>
|
||||
</property>
|
||||
<property name="sliderPosition">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="invertedAppearance">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="invertedControls">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::NoTicks</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSpinBox" name="spinBoxBasebandGain">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The baseband gain is applied to the baseband signal in your software defined radio. The baseband signal is at low frequency and gathered from the RF signal by <span style=" font-weight:600;">complex downsampling</span>.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="labelBandwidth">
|
||||
<property name="text">
|
||||
<string>Bandwidth (Hz):</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="13" column="0">
|
||||
<widget class="QLabel" name="labelFreqCorrection">
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="lineEditSubdevice">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Set the frequency correction in <span style=" font-weight:600;">ppm</span>. If you do not know what to enter here, just leave it to one.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Frequency correction:</string>
|
||||
<string><html><head/><body><p>Configure the subdevice of your USRP. For example, <span style=" font-weight:600;">B:0 </span>to select a WBX on slot B. You can learn more at <a href="http://files.ettus.com/manual/page_configuration.html#config_subdev"><span style=" text-decoration: underline; color:#2980b9;">http://files.ettus.com/manual/page_configuration.html#config_subdev.</span></a></p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="0">
|
||||
<widget class="QLabel" name="labelGain">
|
||||
<item row="9" column="1">
|
||||
<widget class="KillerDoubleSpinBox" name="spinBoxBandwidth">
|
||||
<property name="decimals">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<double>0.001000000000000</double>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>1000000000000.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="labelSubdevice">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The gain (more exactly RF gain) is the gain applied to the RF signal. This amplifies the high frequent signal arriving at the antenna of your Software Defined Radio.</p></body></html></string>
|
||||
<string><html><head/><body><p>Configure the subdevice of your USRP. For example, <span style=" font-weight:600;">B:0 </span>to select a WBX on slot B. You can learn more at <a href="http://files.ettus.com/manual/page_configuration.html#config_subdev"><span style=" text-decoration: underline; color:#2980b9;">http://files.ettus.com/manual/page_configuration.html#config_subdev.</span></a></p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Gain:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="comboBoxDeviceIdentifier">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>You can enter a device identifier here if you have multiple SDRs of the same type attached to separate them. There is no need to configure this value otherwise. URH will <span style=" font-weight:600;">automatically</span> select an attached SDR of the configured type if you leave this value empty.</p></body></html></string>
|
||||
</property>
|
||||
<property name="editable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="insertPolicy">
|
||||
<enum>QComboBox::NoInsert</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="16" column="0">
|
||||
<widget class="QLabel" name="labelDCCorrection">
|
||||
<property name="toolTip">
|
||||
<string>Apply DC correction during recording, that is, ensure the captured signal has a mean value of zero.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>DC correction:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="labelDeviceIdentifier">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>You can enter a device identifier here if you have multiple SDRs of the same type attached to separate them. There is no need to configure this value otherwise. URH will <span style=" font-weight:600;">automatically</span> select an attached SDR of the configured type if you leave this value empty.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Device Identifier:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="labelPort">
|
||||
<property name="text">
|
||||
<string>Port number:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="0">
|
||||
<widget class="QLabel" name="labelIFGain">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The IF Gain is applied to the Intermediate Frequency signal in your Software Defined Radio. An IF signal has a lower frequency than the high frequent RF signal, so signal processing can be applied more efficiently.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>IF Gain:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Device:</string>
|
||||
<string><html><head/><body><p>Subdevice:</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -249,10 +144,10 @@ QGroupBox::indicator:checked {
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="labelAntenna">
|
||||
<item row="5" column="1">
|
||||
<widget class="QLineEdit" name="lineEditIP">
|
||||
<property name="text">
|
||||
<string>Antenna:</string>
|
||||
<string>127.0.0.1</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -270,73 +165,20 @@ QGroupBox::indicator:checked {
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="cbDevice">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
<item row="15" column="0">
|
||||
<widget class="QLabel" name="labelDirectSampling">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Set the direct sampling mode. If you do not know what to choose here, just set it to disabled. The<span style=" font-weight:600;"> native backend</span> is recommended, when using this setting.</p></body></html></string>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>USRP</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>HackRF</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QLineEdit" name="lineEditIP">
|
||||
<property name="text">
|
||||
<string>127.0.0.1</string>
|
||||
<string>Direct sampling:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="labelIP">
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="labelBandwidth">
|
||||
<property name="text">
|
||||
<string>IP address:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="labelFreq">
|
||||
<property name="text">
|
||||
<string>Frequency (Hz):</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="2" rowspan="2">
|
||||
<widget class="QToolButton" name="btnLockBWSR">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="urh.qrc">
|
||||
<normaloff>:/icons/icons/lock.svg</normaloff>:/icons/icons/lock.svg</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>16</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
<string>Bandwidth (Hz):</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -385,69 +227,6 @@ QGroupBox::indicator:checked {
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QSpinBox" name="spinBoxPort">
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>65535</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>1234</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QComboBox" name="comboBoxAntenna"/>
|
||||
</item>
|
||||
<item row="14" column="1">
|
||||
<widget class="QComboBox" name="comboBoxDirectSampling">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Set the direct sampling mode. If you do not know what to choose here, just set it to disabled. The<span style=" font-weight:600;"> native backend</span> is recommended, when using this setting.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="0">
|
||||
<widget class="QLabel" name="labelDirectSampling">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Set the direct sampling mode. If you do not know what to choose here, just set it to disabled. The<span style=" font-weight:600;"> native backend</span> is recommended, when using this setting.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Direct sampling:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="15" column="0">
|
||||
<widget class="QLabel" name="labelNRepeat">
|
||||
<property name="text">
|
||||
<string>Repeat:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="16" column="1">
|
||||
<widget class="QCheckBox" name="checkBoxDCCorrection">
|
||||
<property name="toolTip">
|
||||
<string>Apply DC correction during recording, that is, ensure the captured signal has a mean value of zero.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Apply DC correction</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="comboBoxChannel"/>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="labelChannel">
|
||||
<property name="text">
|
||||
<string>Channel:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="labelSampleRate">
|
||||
<property name="text">
|
||||
@@ -482,7 +261,50 @@ QGroupBox::indicator:checked {
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="15" column="1">
|
||||
<item row="13" column="0">
|
||||
<widget class="QLabel" name="labelFreqCorrection">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Set the frequency correction in <span style=" font-weight:600;">ppm</span>. If you do not know what to enter here, just leave it to one.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Frequency correction:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="comboBoxDeviceIdentifier">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>You can enter a device identifier here if you have multiple SDRs of the same type attached to separate them. There is no need to configure this value otherwise. URH will <span style=" font-weight:600;">automatically</span> select an attached SDR of the configured type if you leave this value empty.</p></body></html></string>
|
||||
</property>
|
||||
<property name="editable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="insertPolicy">
|
||||
<enum>QComboBox::NoInsert</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="cbDevice">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>USRP</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>HackRF</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="16" column="1">
|
||||
<widget class="QSpinBox" name="spinBoxNRepeat">
|
||||
<property name="specialValueText">
|
||||
<string>Infinite</string>
|
||||
@@ -492,6 +314,55 @@ QGroupBox::indicator:checked {
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="1">
|
||||
<layout class="QGridLayout" name="gridLayout_8">
|
||||
<item row="0" column="0">
|
||||
<widget class="QSlider" name="sliderBasebandGain">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The baseband gain is applied to the baseband signal in your software defined radio. The baseband signal is at low frequency and gathered from the RF signal by <span style=" font-weight:600;">complex downsampling</span>.</p></body></html></string>
|
||||
</property>
|
||||
<property name="sliderPosition">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="invertedAppearance">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="invertedControls">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::NoTicks</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSpinBox" name="spinBoxBasebandGain">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The baseband gain is applied to the baseband signal in your software defined radio. The baseband signal is at low frequency and gathered from the RF signal by <span style=" font-weight:600;">complex downsampling</span>.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="labelPort">
|
||||
<property name="text">
|
||||
<string>Port number:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<widget class="KillerDoubleSpinBox" name="spinBoxSampleRate">
|
||||
<property name="decimals">
|
||||
@@ -505,33 +376,182 @@ QGroupBox::indicator:checked {
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<widget class="KillerDoubleSpinBox" name="spinBoxBandwidth">
|
||||
<property name="decimals">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<double>0.001000000000000</double>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>1000000000000.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="labelSubdevice">
|
||||
<item row="10" column="0">
|
||||
<widget class="QLabel" name="labelGain">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Configure the subdevice of your USRP. For example, <span style=" font-weight:600;">B:0 </span>to select a WBX on slot B. You can learn more at <a href="http://files.ettus.com/manual/page_configuration.html#config_subdev"><span style=" text-decoration: underline; color:#2980b9;">http://files.ettus.com/manual/page_configuration.html#config_subdev.</span></a></p></body></html></string>
|
||||
<string><html><head/><body><p>The gain (more exactly RF gain) is the gain applied to the RF signal. This amplifies the high frequent signal arriving at the antenna of your Software Defined Radio.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>Subdevice:</p></body></html></string>
|
||||
<string>Gain:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="lineEditSubdevice">
|
||||
<item row="17" column="1">
|
||||
<widget class="QCheckBox" name="checkBoxDCCorrection">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Configure the subdevice of your USRP. For example, <span style=" font-weight:600;">B:0 </span>to select a WBX on slot B. You can learn more at <a href="http://files.ettus.com/manual/page_configuration.html#config_subdev"><span style=" text-decoration: underline; color:#2980b9;">http://files.ettus.com/manual/page_configuration.html#config_subdev.</span></a></p></body></html></string>
|
||||
<string>Apply DC correction during recording, that is, ensure the captured signal has a mean value of zero.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Apply DC correction</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="labelDeviceIdentifier">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>You can enter a device identifier here if you have multiple SDRs of the same type attached to separate them. There is no need to configure this value otherwise. URH will <span style=" font-weight:600;">automatically</span> select an attached SDR of the configured type if you leave this value empty.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Device Identifier:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QComboBox" name="comboBoxAntenna"/>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="labelFreq">
|
||||
<property name="text">
|
||||
<string>Frequency (Hz):</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QSpinBox" name="spinBoxPort">
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>65535</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>1234</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="labelIP">
|
||||
<property name="text">
|
||||
<string>IP address:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="13" column="1">
|
||||
<widget class="QSpinBox" name="spinBoxFreqCorrection">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Set the frequency correction in <span style=" font-weight:600;">ppm</span>. If you do not know what to enter here, just leave it to one.</p></body></html></string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-1000</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>1000</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>1</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="16" column="0">
|
||||
<widget class="QLabel" name="labelNRepeat">
|
||||
<property name="text">
|
||||
<string>Repeat:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="15" column="1">
|
||||
<widget class="QComboBox" name="comboBoxDirectSampling">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Set the direct sampling mode. If you do not know what to choose here, just set it to disabled. The<span style=" font-weight:600;"> native backend</span> is recommended, when using this setting.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="17" column="0">
|
||||
<widget class="QLabel" name="labelDCCorrection">
|
||||
<property name="toolTip">
|
||||
<string>Apply DC correction during recording, that is, ensure the captured signal has a mean value of zero.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>DC correction:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="comboBoxChannel"/>
|
||||
</item>
|
||||
<item row="11" column="0">
|
||||
<widget class="QLabel" name="labelIFGain">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The IF Gain is applied to the Intermediate Frequency signal in your Software Defined Radio. An IF signal has a lower frequency than the high frequent RF signal, so signal processing can be applied more efficiently.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>IF Gain:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="labelChannel">
|
||||
<property name="text">
|
||||
<string>Channel:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="2" rowspan="2">
|
||||
<widget class="QToolButton" name="btnLockBWSR">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="urh.qrc">
|
||||
<normaloff>:/icons/icons/lock.svg</normaloff>:/icons/icons/lock.svg</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>16</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Device:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="0">
|
||||
<widget class="QLabel" name="labelBiasTee">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Enable the bias tee of your SDR, if you have an external LNA connected. Leave this disabled if you have no external LNA attached.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Bias Tee:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="1">
|
||||
<widget class="QCheckBox" name="checkBoxBiasTee">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Enable the bias tee of your SDR, if you have an external LNA connected. Leave this disabled if you have no external LNA attached.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Enable Bias Tee</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
@@ -106,6 +106,11 @@ class DeviceSettingsWidget(QWidget):
|
||||
checked = True if checked == "True" else False
|
||||
self.ui.checkBoxDCCorrection.setChecked(checked)
|
||||
|
||||
checked = conf_dict.get("bias_tee_enabled", False)
|
||||
if isinstance(checked, str):
|
||||
checked = True if checked == "True" else False
|
||||
self.ui.checkBoxBiasTee.setChecked(checked)
|
||||
|
||||
self.emit_editing_finished_signals()
|
||||
|
||||
@property
|
||||
@@ -164,6 +169,7 @@ class DeviceSettingsWidget(QWidget):
|
||||
|
||||
self.ui.comboBoxDeviceIdentifier.editTextChanged.connect(self.on_combo_box_device_identifier_edit_text_changed)
|
||||
|
||||
self.ui.checkBoxBiasTee.clicked.connect(self.on_check_box_bias_tee_clicked)
|
||||
self.ui.checkBoxDCCorrection.clicked.connect(self.on_check_box_dc_correction_clicked)
|
||||
|
||||
def set_gain_defaults(self):
|
||||
@@ -307,6 +313,10 @@ class DeviceSettingsWidget(QWidget):
|
||||
self.ui.checkBoxDCCorrection.setVisible(show_dc_correction)
|
||||
self.ui.labelDCCorrection.setVisible(show_dc_correction)
|
||||
|
||||
show_bias_tee = "bias_tee_enabled" in conf and self.device is not None and self.device.bias_tee_enabled is not None
|
||||
self.ui.labelBiasTee.setVisible(show_bias_tee)
|
||||
self.ui.checkBoxBiasTee.setVisible(show_bias_tee)
|
||||
|
||||
def get_devices_for_combobox(self, continuous_send_mode):
|
||||
items = []
|
||||
for device_name in self.backend_handler.DEVICE_NAMES:
|
||||
@@ -357,7 +367,7 @@ class DeviceSettingsWidget(QWidget):
|
||||
def emit_device_parameters_changed(self):
|
||||
settings = {"name": str(self.device.name)}
|
||||
for attrib in ("frequency", "sample_rate", "bandwidth", "gain", "if_gain", "baseband_gain", "freq_correction",
|
||||
"antenna_index", "num_sending_repeats", "apply_dc_correction", "subdevice"):
|
||||
"antenna_index", "num_sending_repeats", "apply_dc_correction", "subdevice", "bias_tee_enabled"):
|
||||
try:
|
||||
value = getattr(self.device, attrib, None)
|
||||
if value is not None:
|
||||
@@ -510,6 +520,11 @@ class DeviceSettingsWidget(QWidget):
|
||||
self.ui.comboBoxDeviceIdentifier.clear()
|
||||
self.ui.comboBoxDeviceIdentifier.addItems(self.device.get_device_list())
|
||||
|
||||
@pyqtSlot(bool)
|
||||
def on_check_box_bias_tee_clicked(self, checked: bool):
|
||||
if self.device is not None:
|
||||
self.device.bias_tee_enabled = bool(checked)
|
||||
|
||||
@pyqtSlot(bool)
|
||||
def on_check_box_dc_correction_clicked(self, checked: bool):
|
||||
self.device.apply_dc_correction = bool(checked)
|
||||
|
||||
@@ -158,6 +158,10 @@ class VirtualDevice(QObject):
|
||||
if mode == Mode.spectrum:
|
||||
self.__dev.is_in_spectrum_mode = True
|
||||
|
||||
@property
|
||||
def backend_is_native(self) -> bool:
|
||||
return self.backend == Backends.native
|
||||
|
||||
@property
|
||||
def data_type(self):
|
||||
if self.backend == Backends.native:
|
||||
@@ -213,6 +217,18 @@ class VirtualDevice(QObject):
|
||||
if self.backend == Backends.native:
|
||||
self.__dev.apply_dc_correction = bool(value)
|
||||
|
||||
@property
|
||||
def bias_tee_enabled(self):
|
||||
if self.backend_is_native:
|
||||
return self.__dev.bias_tee_enabled
|
||||
else:
|
||||
return None
|
||||
|
||||
@bias_tee_enabled.setter
|
||||
def bias_tee_enabled(self, value: bool):
|
||||
if self.backend_is_native:
|
||||
self.__dev.bias_tee_enabled = value
|
||||
|
||||
@property
|
||||
def bandwidth_is_adjustable(self):
|
||||
if self.backend == Backends.grc:
|
||||
|
||||
@@ -48,7 +48,8 @@ DEVICE_CONFIG["HackRF"] = {
|
||||
"rx_rf_gain": [0, 14],
|
||||
"rx_if_gain": [0, 8, 16, 24, 32, 40],
|
||||
"tx_if_gain": list(range(0, 48)),
|
||||
"rx_baseband_gain": list(range(0, 63, 2)) # only available in RX
|
||||
"rx_baseband_gain": list(range(0, 63, 2)), # only available in RX
|
||||
"bias_tee_enabled": [False, True]
|
||||
}
|
||||
|
||||
# https://kb.ettus.com/About_USRP_Bandwidths_and_Sampling_Rates
|
||||
|
||||
@@ -39,6 +39,7 @@ class Device(object):
|
||||
SET_FREQUENCY_CORRECTION = 8
|
||||
SET_CHANNEL_INDEX = 9
|
||||
SET_ANTENNA_INDEX = 10
|
||||
SET_BIAS_TEE_ENABLED = 11
|
||||
|
||||
ASYNCHRONOUS = False
|
||||
|
||||
@@ -250,6 +251,7 @@ class Device(object):
|
||||
self.__antenna_index = 0
|
||||
|
||||
self.__freq_correction = 0
|
||||
self.__bias_tee_enabled = False
|
||||
self.__direct_sampling_mode = 0
|
||||
self.bandwidth_is_adjustable = True
|
||||
|
||||
@@ -523,6 +525,23 @@ class Device(object):
|
||||
except (BrokenPipeError, OSError):
|
||||
pass
|
||||
|
||||
@property
|
||||
def bias_tee_enabled(self):
|
||||
return self.__bias_tee_enabled
|
||||
|
||||
@bias_tee_enabled.setter
|
||||
def bias_tee_enabled(self, value: bool):
|
||||
value = bool(value)
|
||||
if value != self.__bias_tee_enabled:
|
||||
self.__bias_tee_enabled = value
|
||||
self.set_device_bias_tee_enabled(value)
|
||||
|
||||
def set_device_bias_tee_enabled(self, value):
|
||||
try:
|
||||
self.parent_ctrl_conn.send((self.Command.SET_BIAS_TEE_ENABLED.name, int(value)))
|
||||
except (BrokenPipeError, OSError):
|
||||
pass
|
||||
|
||||
@property
|
||||
def freq_correction(self):
|
||||
return self.__freq_correction
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from collections import OrderedDict
|
||||
from multiprocessing import Array
|
||||
from multiprocessing.connection import Connection
|
||||
|
||||
@@ -13,7 +14,8 @@ class HackRF(Device):
|
||||
DEVICE_METHODS = Device.DEVICE_METHODS.copy()
|
||||
DEVICE_METHODS.update({
|
||||
Device.Command.SET_FREQUENCY.name: "set_freq",
|
||||
Device.Command.SET_BANDWIDTH.name: "set_baseband_filter_bandwidth"
|
||||
Device.Command.SET_BANDWIDTH.name: "set_baseband_filter_bandwidth",
|
||||
Device.Command.SET_BIAS_TEE_ENABLED.name: "set_bias_tee"
|
||||
})
|
||||
|
||||
DATA_TYPE = np.int8
|
||||
@@ -31,7 +33,7 @@ class HackRF(Device):
|
||||
msg = "SETUP"
|
||||
if device_identifier:
|
||||
msg += " ({})".format(device_identifier)
|
||||
msg += ": "+str(ret)
|
||||
msg += ": " + str(ret)
|
||||
ctrl_connection.send(msg)
|
||||
|
||||
return ret == 0
|
||||
@@ -87,6 +89,17 @@ class HackRF(Device):
|
||||
-9999: "HACKRF_ERROR_OTHER"
|
||||
}
|
||||
|
||||
@property
|
||||
def device_parameters(self) -> OrderedDict:
|
||||
return OrderedDict([(self.Command.SET_FREQUENCY.name, self.frequency),
|
||||
(self.Command.SET_SAMPLE_RATE.name, self.sample_rate),
|
||||
(self.Command.SET_BANDWIDTH.name, self.bandwidth),
|
||||
(self.Command.SET_RF_GAIN.name, self.gain),
|
||||
(self.Command.SET_IF_GAIN.name, self.if_gain),
|
||||
(self.Command.SET_BB_GAIN.name, self.baseband_gain),
|
||||
(self.Command.SET_BIAS_TEE_ENABLED.name, self.bias_tee_enabled),
|
||||
("identifier", self.device_serial)])
|
||||
|
||||
@property
|
||||
def has_multi_device_support(self):
|
||||
return hackrf.has_multi_device_support()
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t
|
||||
|
||||
cdef extern from "libhackrf/hackrf.h":
|
||||
enum hackrf_error:
|
||||
HACKRF_SUCCESS = 0
|
||||
@@ -40,11 +42,6 @@ cdef extern from "libhackrf/hackrf.h":
|
||||
ctypedef struct hackrf_device:
|
||||
pass
|
||||
|
||||
ctypedef unsigned char uint8_t
|
||||
ctypedef unsigned short uint16_t
|
||||
ctypedef unsigned int uint32_t
|
||||
ctypedef unsigned long long uint64_t
|
||||
|
||||
ctypedef struct hackrf_transfer:
|
||||
hackrf_device* device
|
||||
uint8_t* buffer
|
||||
@@ -81,7 +78,7 @@ cdef extern from "libhackrf/hackrf.h":
|
||||
int hackrf_open(hackrf_device** device);
|
||||
|
||||
IF HACKRF_MULTI_DEVICE_SUPPORT == 1:
|
||||
int hackrf_open_by_serial(const char* const desired_serial_number, hackrf_device** device)
|
||||
int hackrf_open_by_serial(const char* desired_serial_number, hackrf_device** device)
|
||||
hackrf_device_list_t* hackrf_device_list()
|
||||
|
||||
|
||||
@@ -108,12 +105,11 @@ cdef extern from "libhackrf/hackrf.h":
|
||||
int hackrf_rffc5071_write(hackrf_device* device, uint8_t register_number, uint16_t value)
|
||||
|
||||
int hackrf_spiflash_erase(hackrf_device* device)
|
||||
int hackrf_spiflash_write(hackrf_device* device, const uint32_t address, const uint16_t length, unsigned char* const data)
|
||||
int hackrf_spiflash_write(hackrf_device* device, const uint32_t address, const uint16_t length, const unsigned char* data)
|
||||
int hackrf_spiflash_read(hackrf_device* device, const uint32_t address, const uint16_t length, unsigned char* data)
|
||||
|
||||
# device will need to be reset after hackrf_cpld_write
|
||||
int hackrf_cpld_write(hackrf_device* device,
|
||||
unsigned char* const data, const unsigned int total_length)
|
||||
int hackrf_cpld_write(hackrf_device* device, const unsigned char* data, const unsigned int total_length)
|
||||
|
||||
int hackrf_board_id_read(hackrf_device* device, uint8_t* value)
|
||||
int hackrf_version_string_read(hackrf_device* device, char* version, uint8_t length)
|
||||
@@ -130,7 +126,10 @@ cdef extern from "libhackrf/hackrf.h":
|
||||
|
||||
# external amp, bool on/off
|
||||
int hackrf_set_amp_enable(hackrf_device* device, const uint8_t value)
|
||||
|
||||
|
||||
# Bias Tee, bool on/off
|
||||
int hackrf_set_antenna_enable(hackrf_device* device, const uint8_t value)
|
||||
|
||||
int hackrf_board_partid_serialno_read(hackrf_device* device, read_partid_serialno_t* read_partid_serialno)
|
||||
|
||||
# range 0-40 step 8d, IF gain in osmosdr
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
cimport urh.dev.native.lib.chackrf as chackrf
|
||||
from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t
|
||||
from libc.stdlib cimport malloc
|
||||
import time
|
||||
|
||||
@@ -70,7 +71,7 @@ ELSE:
|
||||
cpdef get_device_list():
|
||||
return None
|
||||
|
||||
cpdef setup(str serial):
|
||||
cpdef int setup(str serial):
|
||||
"""
|
||||
Convenience method for init + open. This one is used by HackRF class.
|
||||
:return:
|
||||
@@ -78,13 +79,13 @@ cpdef setup(str serial):
|
||||
init()
|
||||
return open(serial)
|
||||
|
||||
cpdef init():
|
||||
cpdef int init():
|
||||
return chackrf.hackrf_init()
|
||||
|
||||
cpdef exit():
|
||||
cpdef int exit():
|
||||
return chackrf.hackrf_exit()
|
||||
|
||||
cpdef close():
|
||||
cpdef int close():
|
||||
return chackrf.hackrf_close(_c_device)
|
||||
|
||||
cpdef int start_rx_mode(callback):
|
||||
@@ -93,42 +94,25 @@ cpdef int start_rx_mode(callback):
|
||||
f = callback
|
||||
return chackrf.hackrf_start_rx(_c_device, _c_callback_recv, NULL)
|
||||
|
||||
cpdef stop_rx_mode():
|
||||
cpdef int stop_rx_mode():
|
||||
global RUNNING
|
||||
RUNNING = -1
|
||||
time.sleep(TIMEOUT)
|
||||
return chackrf.hackrf_stop_rx(_c_device)
|
||||
|
||||
cpdef start_tx_mode(callback):
|
||||
cpdef int start_tx_mode(callback):
|
||||
global f, RUNNING
|
||||
RUNNING = 0
|
||||
f = callback
|
||||
return chackrf.hackrf_start_tx(_c_device, _c_callback_send, NULL)
|
||||
|
||||
cpdef stop_tx_mode():
|
||||
cpdef int stop_tx_mode():
|
||||
global RUNNING
|
||||
RUNNING = -1
|
||||
time.sleep(TIMEOUT)
|
||||
return chackrf.hackrf_stop_tx(_c_device)
|
||||
|
||||
cpdef board_id_read():
|
||||
cdef unsigned char value
|
||||
ret = chackrf.hackrf_board_id_read(_c_device, &value)
|
||||
if ret == hackrf_success:
|
||||
return value
|
||||
else:
|
||||
return ""
|
||||
|
||||
cpdef version_string_read():
|
||||
cdef char*version = <char *> malloc(20 * sizeof(char))
|
||||
cdef unsigned char length = 20
|
||||
ret = chackrf.hackrf_version_string_read(_c_device, version, length)
|
||||
if ret == hackrf_success:
|
||||
return version.decode('UTF-8')
|
||||
else:
|
||||
return ""
|
||||
|
||||
cpdef set_freq(freq_hz):
|
||||
cpdef int set_freq(freq_hz):
|
||||
time.sleep(TIMEOUT)
|
||||
return chackrf.hackrf_set_freq(_c_device, freq_hz)
|
||||
|
||||
@@ -140,35 +124,39 @@ cpdef is_streaming():
|
||||
else:
|
||||
return False
|
||||
|
||||
cpdef set_rf_gain(value):
|
||||
""" Enable or disable RF amplifier """
|
||||
cpdef int set_amp_enable(value):
|
||||
time.sleep(TIMEOUT)
|
||||
cdef uint8_t val = 1 if value else 0
|
||||
return chackrf.hackrf_set_amp_enable(_c_device, val)
|
||||
|
||||
cpdef int set_rf_gain(value):
|
||||
""" Enable or disable RF amplifier """
|
||||
return set_amp_enable(value)
|
||||
|
||||
cpdef set_if_rx_gain(value):
|
||||
cpdef int set_if_rx_gain(value):
|
||||
""" Sets the LNA gain, in 8Db steps, maximum value of 40 """
|
||||
time.sleep(TIMEOUT)
|
||||
return chackrf.hackrf_set_lna_gain(_c_device, value)
|
||||
|
||||
cpdef set_if_tx_gain(value):
|
||||
cpdef int set_if_tx_gain(value):
|
||||
""" Sets the txvga gain, in 1db steps, maximum value of 47 """
|
||||
time.sleep(TIMEOUT)
|
||||
return chackrf.hackrf_set_txvga_gain(_c_device, value)
|
||||
|
||||
cpdef set_baseband_gain(value):
|
||||
cpdef int set_baseband_gain(value):
|
||||
""" Sets the vga gain, in 2db steps, maximum value of 62 """
|
||||
time.sleep(TIMEOUT)
|
||||
return chackrf.hackrf_set_vga_gain(_c_device, value)
|
||||
|
||||
cpdef set_sample_rate(sample_rate):
|
||||
cpdef int set_sample_rate(sample_rate):
|
||||
time.sleep(TIMEOUT)
|
||||
return chackrf.hackrf_set_sample_rate(_c_device, sample_rate)
|
||||
|
||||
cpdef set_amp_enable(value):
|
||||
cpdef int set_bias_tee(on_or_off):
|
||||
time.sleep(TIMEOUT)
|
||||
cdef bint val = 1 if value else 0
|
||||
return chackrf.hackrf_set_amp_enable(_c_device, val)
|
||||
cdef uint8_t bias_tee = 1 if on_or_off else 0
|
||||
return chackrf.hackrf_set_antenna_enable(_c_device, bias_tee)
|
||||
|
||||
cpdef set_baseband_filter_bandwidth(bandwidth_hz):
|
||||
cpdef int set_baseband_filter_bandwidth(bandwidth_hz):
|
||||
time.sleep(TIMEOUT)
|
||||
return chackrf.hackrf_set_baseband_filter_bandwidth(_c_device, bandwidth_hz)
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
#
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
@@ -11,7 +12,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
class Ui_FormDeviceSettings(object):
|
||||
def setupUi(self, FormDeviceSettings):
|
||||
FormDeviceSettings.setObjectName("FormDeviceSettings")
|
||||
FormDeviceSettings.resize(860, 754)
|
||||
FormDeviceSettings.resize(859, 741)
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(FormDeviceSettings)
|
||||
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
@@ -51,64 +52,24 @@ class Ui_FormDeviceSettings(object):
|
||||
self.frame_2.setObjectName("frame_2")
|
||||
self.gridLayout = QtWidgets.QGridLayout(self.frame_2)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.spinBoxFreqCorrection = QtWidgets.QSpinBox(self.frame_2)
|
||||
self.spinBoxFreqCorrection.setMinimum(-1000)
|
||||
self.spinBoxFreqCorrection.setMaximum(1000)
|
||||
self.spinBoxFreqCorrection.setProperty("value", 1)
|
||||
self.spinBoxFreqCorrection.setObjectName("spinBoxFreqCorrection")
|
||||
self.gridLayout.addWidget(self.spinBoxFreqCorrection, 13, 1, 1, 1)
|
||||
self.labelAntenna = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelAntenna.setObjectName("labelAntenna")
|
||||
self.gridLayout.addWidget(self.labelAntenna, 4, 0, 1, 1)
|
||||
self.labelBasebandGain = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelBasebandGain.setObjectName("labelBasebandGain")
|
||||
self.gridLayout.addWidget(self.labelBasebandGain, 12, 0, 1, 1)
|
||||
self.gridLayout_8 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_8.setObjectName("gridLayout_8")
|
||||
self.sliderBasebandGain = QtWidgets.QSlider(self.frame_2)
|
||||
self.sliderBasebandGain.setSliderPosition(0)
|
||||
self.sliderBasebandGain.setOrientation(QtCore.Qt.Horizontal)
|
||||
self.sliderBasebandGain.setInvertedAppearance(False)
|
||||
self.sliderBasebandGain.setInvertedControls(False)
|
||||
self.sliderBasebandGain.setTickPosition(QtWidgets.QSlider.NoTicks)
|
||||
self.sliderBasebandGain.setTickInterval(0)
|
||||
self.sliderBasebandGain.setObjectName("sliderBasebandGain")
|
||||
self.gridLayout_8.addWidget(self.sliderBasebandGain, 0, 0, 1, 1)
|
||||
self.spinBoxBasebandGain = QtWidgets.QSpinBox(self.frame_2)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.spinBoxBasebandGain.sizePolicy().hasHeightForWidth())
|
||||
self.spinBoxBasebandGain.setSizePolicy(sizePolicy)
|
||||
self.spinBoxBasebandGain.setObjectName("spinBoxBasebandGain")
|
||||
self.gridLayout_8.addWidget(self.spinBoxBasebandGain, 0, 1, 1, 1)
|
||||
self.gridLayout.addLayout(self.gridLayout_8, 12, 1, 1, 1)
|
||||
self.labelBandwidth = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelBandwidth.setObjectName("labelBandwidth")
|
||||
self.gridLayout.addWidget(self.labelBandwidth, 9, 0, 1, 1)
|
||||
self.labelFreqCorrection = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelFreqCorrection.setObjectName("labelFreqCorrection")
|
||||
self.gridLayout.addWidget(self.labelFreqCorrection, 13, 0, 1, 1)
|
||||
self.labelGain = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelGain.setObjectName("labelGain")
|
||||
self.gridLayout.addWidget(self.labelGain, 10, 0, 1, 1)
|
||||
self.comboBoxDeviceIdentifier = QtWidgets.QComboBox(self.frame_2)
|
||||
self.comboBoxDeviceIdentifier.setEditable(True)
|
||||
self.comboBoxDeviceIdentifier.setInsertPolicy(QtWidgets.QComboBox.NoInsert)
|
||||
self.comboBoxDeviceIdentifier.setObjectName("comboBoxDeviceIdentifier")
|
||||
self.gridLayout.addWidget(self.comboBoxDeviceIdentifier, 1, 1, 1, 1)
|
||||
self.labelDCCorrection = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelDCCorrection.setObjectName("labelDCCorrection")
|
||||
self.gridLayout.addWidget(self.labelDCCorrection, 16, 0, 1, 1)
|
||||
self.labelDeviceIdentifier = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelDeviceIdentifier.setObjectName("labelDeviceIdentifier")
|
||||
self.gridLayout.addWidget(self.labelDeviceIdentifier, 1, 0, 1, 1)
|
||||
self.labelPort = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelPort.setObjectName("labelPort")
|
||||
self.gridLayout.addWidget(self.labelPort, 6, 0, 1, 1)
|
||||
self.labelIFGain = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelIFGain.setObjectName("labelIFGain")
|
||||
self.gridLayout.addWidget(self.labelIFGain, 11, 0, 1, 1)
|
||||
self.label_3 = QtWidgets.QLabel(self.frame_2)
|
||||
self.label_3.setObjectName("label_3")
|
||||
self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1)
|
||||
self.lineEditSubdevice = QtWidgets.QLineEdit(self.frame_2)
|
||||
self.lineEditSubdevice.setObjectName("lineEditSubdevice")
|
||||
self.gridLayout.addWidget(self.lineEditSubdevice, 2, 1, 1, 1)
|
||||
self.spinBoxBandwidth = KillerDoubleSpinBox(self.frame_2)
|
||||
self.spinBoxBandwidth.setDecimals(10)
|
||||
self.spinBoxBandwidth.setMinimum(0.001)
|
||||
self.spinBoxBandwidth.setMaximum(1000000000000.0)
|
||||
self.spinBoxBandwidth.setObjectName("spinBoxBandwidth")
|
||||
self.gridLayout.addWidget(self.spinBoxBandwidth, 9, 1, 1, 1)
|
||||
self.labelSubdevice = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelSubdevice.setObjectName("labelSubdevice")
|
||||
self.gridLayout.addWidget(self.labelSubdevice, 2, 0, 1, 1)
|
||||
self.spinBoxFreq = KillerDoubleSpinBox(self.frame_2)
|
||||
self.spinBoxFreq.setDecimals(10)
|
||||
self.spinBoxFreq.setMinimum(0.001)
|
||||
@@ -116,47 +77,20 @@ class Ui_FormDeviceSettings(object):
|
||||
self.spinBoxFreq.setProperty("value", 433920000.0)
|
||||
self.spinBoxFreq.setObjectName("spinBoxFreq")
|
||||
self.gridLayout.addWidget(self.spinBoxFreq, 7, 1, 1, 1)
|
||||
self.labelAntenna = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelAntenna.setObjectName("labelAntenna")
|
||||
self.gridLayout.addWidget(self.labelAntenna, 4, 0, 1, 1)
|
||||
self.lineEditIP = QtWidgets.QLineEdit(self.frame_2)
|
||||
self.lineEditIP.setObjectName("lineEditIP")
|
||||
self.gridLayout.addWidget(self.lineEditIP, 5, 1, 1, 1)
|
||||
self.btnRefreshDeviceIdentifier = QtWidgets.QToolButton(self.frame_2)
|
||||
icon = QtGui.QIcon.fromTheme("view-refresh")
|
||||
self.btnRefreshDeviceIdentifier.setIcon(icon)
|
||||
self.btnRefreshDeviceIdentifier.setObjectName("btnRefreshDeviceIdentifier")
|
||||
self.gridLayout.addWidget(self.btnRefreshDeviceIdentifier, 1, 2, 1, 1)
|
||||
self.cbDevice = QtWidgets.QComboBox(self.frame_2)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.cbDevice.sizePolicy().hasHeightForWidth())
|
||||
self.cbDevice.setSizePolicy(sizePolicy)
|
||||
self.cbDevice.setObjectName("cbDevice")
|
||||
self.cbDevice.addItem("")
|
||||
self.cbDevice.addItem("")
|
||||
self.gridLayout.addWidget(self.cbDevice, 0, 1, 1, 1)
|
||||
self.lineEditIP = QtWidgets.QLineEdit(self.frame_2)
|
||||
self.lineEditIP.setObjectName("lineEditIP")
|
||||
self.gridLayout.addWidget(self.lineEditIP, 5, 1, 1, 1)
|
||||
self.labelIP = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelIP.setObjectName("labelIP")
|
||||
self.gridLayout.addWidget(self.labelIP, 5, 0, 1, 1)
|
||||
self.labelFreq = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelFreq.setObjectName("labelFreq")
|
||||
self.gridLayout.addWidget(self.labelFreq, 7, 0, 1, 1)
|
||||
self.btnLockBWSR = QtWidgets.QToolButton(self.frame_2)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.btnLockBWSR.sizePolicy().hasHeightForWidth())
|
||||
self.btnLockBWSR.setSizePolicy(sizePolicy)
|
||||
icon = QtGui.QIcon()
|
||||
icon.addPixmap(QtGui.QPixmap(":/icons/icons/lock.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.btnLockBWSR.setIcon(icon)
|
||||
self.btnLockBWSR.setIconSize(QtCore.QSize(16, 16))
|
||||
self.btnLockBWSR.setCheckable(True)
|
||||
self.btnLockBWSR.setChecked(True)
|
||||
self.btnLockBWSR.setObjectName("btnLockBWSR")
|
||||
self.gridLayout.addWidget(self.btnLockBWSR, 8, 2, 2, 1)
|
||||
self.labelDirectSampling = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelDirectSampling.setObjectName("labelDirectSampling")
|
||||
self.gridLayout.addWidget(self.labelDirectSampling, 15, 0, 1, 1)
|
||||
self.labelBandwidth = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelBandwidth.setObjectName("labelBandwidth")
|
||||
self.gridLayout.addWidget(self.labelBandwidth, 9, 0, 1, 1)
|
||||
self.gridLayout_5 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_5.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
|
||||
self.gridLayout_5.setObjectName("gridLayout_5")
|
||||
@@ -178,34 +112,6 @@ class Ui_FormDeviceSettings(object):
|
||||
self.spinBoxGain.setObjectName("spinBoxGain")
|
||||
self.gridLayout_5.addWidget(self.spinBoxGain, 0, 1, 1, 1)
|
||||
self.gridLayout.addLayout(self.gridLayout_5, 10, 1, 1, 1)
|
||||
self.spinBoxPort = QtWidgets.QSpinBox(self.frame_2)
|
||||
self.spinBoxPort.setMinimum(1)
|
||||
self.spinBoxPort.setMaximum(65535)
|
||||
self.spinBoxPort.setProperty("value", 1234)
|
||||
self.spinBoxPort.setObjectName("spinBoxPort")
|
||||
self.gridLayout.addWidget(self.spinBoxPort, 6, 1, 1, 1)
|
||||
self.comboBoxAntenna = QtWidgets.QComboBox(self.frame_2)
|
||||
self.comboBoxAntenna.setObjectName("comboBoxAntenna")
|
||||
self.gridLayout.addWidget(self.comboBoxAntenna, 4, 1, 1, 1)
|
||||
self.comboBoxDirectSampling = QtWidgets.QComboBox(self.frame_2)
|
||||
self.comboBoxDirectSampling.setObjectName("comboBoxDirectSampling")
|
||||
self.gridLayout.addWidget(self.comboBoxDirectSampling, 14, 1, 1, 1)
|
||||
self.labelDirectSampling = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelDirectSampling.setObjectName("labelDirectSampling")
|
||||
self.gridLayout.addWidget(self.labelDirectSampling, 14, 0, 1, 1)
|
||||
self.labelNRepeat = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelNRepeat.setObjectName("labelNRepeat")
|
||||
self.gridLayout.addWidget(self.labelNRepeat, 15, 0, 1, 1)
|
||||
self.checkBoxDCCorrection = QtWidgets.QCheckBox(self.frame_2)
|
||||
self.checkBoxDCCorrection.setChecked(True)
|
||||
self.checkBoxDCCorrection.setObjectName("checkBoxDCCorrection")
|
||||
self.gridLayout.addWidget(self.checkBoxDCCorrection, 16, 1, 1, 1)
|
||||
self.comboBoxChannel = QtWidgets.QComboBox(self.frame_2)
|
||||
self.comboBoxChannel.setObjectName("comboBoxChannel")
|
||||
self.gridLayout.addWidget(self.comboBoxChannel, 3, 1, 1, 1)
|
||||
self.labelChannel = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelChannel.setObjectName("labelChannel")
|
||||
self.gridLayout.addWidget(self.labelChannel, 3, 0, 1, 1)
|
||||
self.labelSampleRate = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelSampleRate.setObjectName("labelSampleRate")
|
||||
self.gridLayout.addWidget(self.labelSampleRate, 8, 0, 1, 1)
|
||||
@@ -224,28 +130,129 @@ class Ui_FormDeviceSettings(object):
|
||||
self.spinBoxIFGain.setObjectName("spinBoxIFGain")
|
||||
self.gridLayout_7.addWidget(self.spinBoxIFGain, 0, 1, 1, 1)
|
||||
self.gridLayout.addLayout(self.gridLayout_7, 11, 1, 1, 1)
|
||||
self.labelFreqCorrection = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelFreqCorrection.setObjectName("labelFreqCorrection")
|
||||
self.gridLayout.addWidget(self.labelFreqCorrection, 13, 0, 1, 1)
|
||||
self.comboBoxDeviceIdentifier = QtWidgets.QComboBox(self.frame_2)
|
||||
self.comboBoxDeviceIdentifier.setEditable(True)
|
||||
self.comboBoxDeviceIdentifier.setInsertPolicy(QtWidgets.QComboBox.NoInsert)
|
||||
self.comboBoxDeviceIdentifier.setObjectName("comboBoxDeviceIdentifier")
|
||||
self.gridLayout.addWidget(self.comboBoxDeviceIdentifier, 1, 1, 1, 1)
|
||||
self.cbDevice = QtWidgets.QComboBox(self.frame_2)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.cbDevice.sizePolicy().hasHeightForWidth())
|
||||
self.cbDevice.setSizePolicy(sizePolicy)
|
||||
self.cbDevice.setObjectName("cbDevice")
|
||||
self.cbDevice.addItem("")
|
||||
self.cbDevice.addItem("")
|
||||
self.gridLayout.addWidget(self.cbDevice, 0, 1, 1, 1)
|
||||
self.spinBoxNRepeat = QtWidgets.QSpinBox(self.frame_2)
|
||||
self.spinBoxNRepeat.setMaximum(999999999)
|
||||
self.spinBoxNRepeat.setObjectName("spinBoxNRepeat")
|
||||
self.gridLayout.addWidget(self.spinBoxNRepeat, 15, 1, 1, 1)
|
||||
self.gridLayout.addWidget(self.spinBoxNRepeat, 16, 1, 1, 1)
|
||||
self.gridLayout_8 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_8.setObjectName("gridLayout_8")
|
||||
self.sliderBasebandGain = QtWidgets.QSlider(self.frame_2)
|
||||
self.sliderBasebandGain.setSliderPosition(0)
|
||||
self.sliderBasebandGain.setOrientation(QtCore.Qt.Horizontal)
|
||||
self.sliderBasebandGain.setInvertedAppearance(False)
|
||||
self.sliderBasebandGain.setInvertedControls(False)
|
||||
self.sliderBasebandGain.setTickPosition(QtWidgets.QSlider.NoTicks)
|
||||
self.sliderBasebandGain.setTickInterval(0)
|
||||
self.sliderBasebandGain.setObjectName("sliderBasebandGain")
|
||||
self.gridLayout_8.addWidget(self.sliderBasebandGain, 0, 0, 1, 1)
|
||||
self.spinBoxBasebandGain = QtWidgets.QSpinBox(self.frame_2)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.spinBoxBasebandGain.sizePolicy().hasHeightForWidth())
|
||||
self.spinBoxBasebandGain.setSizePolicy(sizePolicy)
|
||||
self.spinBoxBasebandGain.setObjectName("spinBoxBasebandGain")
|
||||
self.gridLayout_8.addWidget(self.spinBoxBasebandGain, 0, 1, 1, 1)
|
||||
self.gridLayout.addLayout(self.gridLayout_8, 12, 1, 1, 1)
|
||||
self.labelPort = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelPort.setObjectName("labelPort")
|
||||
self.gridLayout.addWidget(self.labelPort, 6, 0, 1, 1)
|
||||
self.spinBoxSampleRate = KillerDoubleSpinBox(self.frame_2)
|
||||
self.spinBoxSampleRate.setDecimals(10)
|
||||
self.spinBoxSampleRate.setMinimum(0.001)
|
||||
self.spinBoxSampleRate.setMaximum(1000000000000.0)
|
||||
self.spinBoxSampleRate.setObjectName("spinBoxSampleRate")
|
||||
self.gridLayout.addWidget(self.spinBoxSampleRate, 8, 1, 1, 1)
|
||||
self.spinBoxBandwidth = KillerDoubleSpinBox(self.frame_2)
|
||||
self.spinBoxBandwidth.setDecimals(10)
|
||||
self.spinBoxBandwidth.setMinimum(0.001)
|
||||
self.spinBoxBandwidth.setMaximum(1000000000000.0)
|
||||
self.spinBoxBandwidth.setObjectName("spinBoxBandwidth")
|
||||
self.gridLayout.addWidget(self.spinBoxBandwidth, 9, 1, 1, 1)
|
||||
self.labelSubdevice = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelSubdevice.setObjectName("labelSubdevice")
|
||||
self.gridLayout.addWidget(self.labelSubdevice, 2, 0, 1, 1)
|
||||
self.lineEditSubdevice = QtWidgets.QLineEdit(self.frame_2)
|
||||
self.lineEditSubdevice.setObjectName("lineEditSubdevice")
|
||||
self.gridLayout.addWidget(self.lineEditSubdevice, 2, 1, 1, 1)
|
||||
self.labelGain = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelGain.setObjectName("labelGain")
|
||||
self.gridLayout.addWidget(self.labelGain, 10, 0, 1, 1)
|
||||
self.checkBoxDCCorrection = QtWidgets.QCheckBox(self.frame_2)
|
||||
self.checkBoxDCCorrection.setChecked(True)
|
||||
self.checkBoxDCCorrection.setObjectName("checkBoxDCCorrection")
|
||||
self.gridLayout.addWidget(self.checkBoxDCCorrection, 17, 1, 1, 1)
|
||||
self.labelDeviceIdentifier = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelDeviceIdentifier.setObjectName("labelDeviceIdentifier")
|
||||
self.gridLayout.addWidget(self.labelDeviceIdentifier, 1, 0, 1, 1)
|
||||
self.comboBoxAntenna = QtWidgets.QComboBox(self.frame_2)
|
||||
self.comboBoxAntenna.setObjectName("comboBoxAntenna")
|
||||
self.gridLayout.addWidget(self.comboBoxAntenna, 4, 1, 1, 1)
|
||||
self.labelFreq = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelFreq.setObjectName("labelFreq")
|
||||
self.gridLayout.addWidget(self.labelFreq, 7, 0, 1, 1)
|
||||
self.spinBoxPort = QtWidgets.QSpinBox(self.frame_2)
|
||||
self.spinBoxPort.setMinimum(1)
|
||||
self.spinBoxPort.setMaximum(65535)
|
||||
self.spinBoxPort.setProperty("value", 1234)
|
||||
self.spinBoxPort.setObjectName("spinBoxPort")
|
||||
self.gridLayout.addWidget(self.spinBoxPort, 6, 1, 1, 1)
|
||||
self.labelIP = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelIP.setObjectName("labelIP")
|
||||
self.gridLayout.addWidget(self.labelIP, 5, 0, 1, 1)
|
||||
self.spinBoxFreqCorrection = QtWidgets.QSpinBox(self.frame_2)
|
||||
self.spinBoxFreqCorrection.setMinimum(-1000)
|
||||
self.spinBoxFreqCorrection.setMaximum(1000)
|
||||
self.spinBoxFreqCorrection.setProperty("value", 1)
|
||||
self.spinBoxFreqCorrection.setObjectName("spinBoxFreqCorrection")
|
||||
self.gridLayout.addWidget(self.spinBoxFreqCorrection, 13, 1, 1, 1)
|
||||
self.labelNRepeat = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelNRepeat.setObjectName("labelNRepeat")
|
||||
self.gridLayout.addWidget(self.labelNRepeat, 16, 0, 1, 1)
|
||||
self.comboBoxDirectSampling = QtWidgets.QComboBox(self.frame_2)
|
||||
self.comboBoxDirectSampling.setObjectName("comboBoxDirectSampling")
|
||||
self.gridLayout.addWidget(self.comboBoxDirectSampling, 15, 1, 1, 1)
|
||||
self.labelDCCorrection = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelDCCorrection.setObjectName("labelDCCorrection")
|
||||
self.gridLayout.addWidget(self.labelDCCorrection, 17, 0, 1, 1)
|
||||
self.comboBoxChannel = QtWidgets.QComboBox(self.frame_2)
|
||||
self.comboBoxChannel.setObjectName("comboBoxChannel")
|
||||
self.gridLayout.addWidget(self.comboBoxChannel, 3, 1, 1, 1)
|
||||
self.labelIFGain = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelIFGain.setObjectName("labelIFGain")
|
||||
self.gridLayout.addWidget(self.labelIFGain, 11, 0, 1, 1)
|
||||
self.labelChannel = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelChannel.setObjectName("labelChannel")
|
||||
self.gridLayout.addWidget(self.labelChannel, 3, 0, 1, 1)
|
||||
self.btnLockBWSR = QtWidgets.QToolButton(self.frame_2)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.btnLockBWSR.sizePolicy().hasHeightForWidth())
|
||||
self.btnLockBWSR.setSizePolicy(sizePolicy)
|
||||
icon = QtGui.QIcon()
|
||||
icon.addPixmap(QtGui.QPixmap(":/icons/icons/lock.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.btnLockBWSR.setIcon(icon)
|
||||
self.btnLockBWSR.setIconSize(QtCore.QSize(16, 16))
|
||||
self.btnLockBWSR.setCheckable(True)
|
||||
self.btnLockBWSR.setChecked(True)
|
||||
self.btnLockBWSR.setObjectName("btnLockBWSR")
|
||||
self.gridLayout.addWidget(self.btnLockBWSR, 8, 2, 2, 1)
|
||||
self.label_3 = QtWidgets.QLabel(self.frame_2)
|
||||
self.label_3.setObjectName("label_3")
|
||||
self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1)
|
||||
self.labelBiasTee = QtWidgets.QLabel(self.frame_2)
|
||||
self.labelBiasTee.setObjectName("labelBiasTee")
|
||||
self.gridLayout.addWidget(self.labelBiasTee, 14, 0, 1, 1)
|
||||
self.checkBoxBiasTee = QtWidgets.QCheckBox(self.frame_2)
|
||||
self.checkBoxBiasTee.setObjectName("checkBoxBiasTee")
|
||||
self.gridLayout.addWidget(self.checkBoxBiasTee, 14, 1, 1, 1)
|
||||
self.gridLayout_6.addWidget(self.frame_2, 0, 0, 1, 1)
|
||||
self.verticalLayout.addWidget(self.groupBoxDeviceSettings)
|
||||
|
||||
@@ -278,49 +285,53 @@ class Ui_FormDeviceSettings(object):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
FormDeviceSettings.setWindowTitle(_translate("FormDeviceSettings", "Form"))
|
||||
self.groupBoxDeviceSettings.setTitle(_translate("FormDeviceSettings", "Device settings"))
|
||||
self.spinBoxFreqCorrection.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Set the frequency correction in <span style=\" font-weight:600;\">ppm</span>. If you do not know what to enter here, just leave it to one.</p></body></html>"))
|
||||
self.labelAntenna.setText(_translate("FormDeviceSettings", "Antenna:"))
|
||||
self.labelBasebandGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The baseband gain is applied to the baseband signal in your software defined radio. The baseband signal is at low frequency and gathered from the RF signal by <span style=\" font-weight:600;\">complex downsampling</span>.</p></body></html>"))
|
||||
self.labelBasebandGain.setText(_translate("FormDeviceSettings", "Baseband gain:"))
|
||||
self.sliderBasebandGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The baseband gain is applied to the baseband signal in your software defined radio. The baseband signal is at low frequency and gathered from the RF signal by <span style=\" font-weight:600;\">complex downsampling</span>.</p></body></html>"))
|
||||
self.spinBoxBasebandGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The baseband gain is applied to the baseband signal in your software defined radio. The baseband signal is at low frequency and gathered from the RF signal by <span style=\" font-weight:600;\">complex downsampling</span>.</p></body></html>"))
|
||||
self.labelBandwidth.setText(_translate("FormDeviceSettings", "Bandwidth (Hz):"))
|
||||
self.labelFreqCorrection.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Set the frequency correction in <span style=\" font-weight:600;\">ppm</span>. If you do not know what to enter here, just leave it to one.</p></body></html>"))
|
||||
self.labelFreqCorrection.setText(_translate("FormDeviceSettings", "Frequency correction:"))
|
||||
self.labelGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The gain (more exactly RF gain) is the gain applied to the RF signal. This amplifies the high frequent signal arriving at the antenna of your Software Defined Radio.</p></body></html>"))
|
||||
self.labelGain.setText(_translate("FormDeviceSettings", "Gain:"))
|
||||
self.comboBoxDeviceIdentifier.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>You can enter a device identifier here if you have multiple SDRs of the same type attached to separate them. There is no need to configure this value otherwise. URH will <span style=\" font-weight:600;\">automatically</span> select an attached SDR of the configured type if you leave this value empty.</p></body></html>"))
|
||||
self.labelDCCorrection.setToolTip(_translate("FormDeviceSettings", "Apply DC correction during recording, that is, ensure the captured signal has a mean value of zero."))
|
||||
self.labelDCCorrection.setText(_translate("FormDeviceSettings", "DC correction:"))
|
||||
self.labelDeviceIdentifier.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>You can enter a device identifier here if you have multiple SDRs of the same type attached to separate them. There is no need to configure this value otherwise. URH will <span style=\" font-weight:600;\">automatically</span> select an attached SDR of the configured type if you leave this value empty.</p></body></html>"))
|
||||
self.labelDeviceIdentifier.setText(_translate("FormDeviceSettings", "Device Identifier:"))
|
||||
self.labelPort.setText(_translate("FormDeviceSettings", "Port number:"))
|
||||
self.labelIFGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The IF Gain is applied to the Intermediate Frequency signal in your Software Defined Radio. An IF signal has a lower frequency than the high frequent RF signal, so signal processing can be applied more efficiently.</p></body></html>"))
|
||||
self.labelIFGain.setText(_translate("FormDeviceSettings", "IF Gain:"))
|
||||
self.label_3.setText(_translate("FormDeviceSettings", "Device:"))
|
||||
self.labelAntenna.setText(_translate("FormDeviceSettings", "Antenna:"))
|
||||
self.lineEditSubdevice.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Configure the subdevice of your USRP. For example, <span style=\" font-weight:600;\">B:0 </span>to select a WBX on slot B. You can learn more at <a href=\"http://files.ettus.com/manual/page_configuration.html#config_subdev\"><span style=\" text-decoration: underline; color:#2980b9;\">http://files.ettus.com/manual/page_configuration.html#config_subdev.</span></a></p></body></html>"))
|
||||
self.labelSubdevice.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Configure the subdevice of your USRP. For example, <span style=\" font-weight:600;\">B:0 </span>to select a WBX on slot B. You can learn more at <a href=\"http://files.ettus.com/manual/page_configuration.html#config_subdev\"><span style=\" text-decoration: underline; color:#2980b9;\">http://files.ettus.com/manual/page_configuration.html#config_subdev.</span></a></p></body></html>"))
|
||||
self.labelSubdevice.setText(_translate("FormDeviceSettings", "<html><head/><body><p>Subdevice:</p></body></html>"))
|
||||
self.lineEditIP.setText(_translate("FormDeviceSettings", "127.0.0.1"))
|
||||
self.btnRefreshDeviceIdentifier.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Automatically detect connected SDRs of the above configured type. There is <span style=\" font-weight:600;\">no need</span> to press this button if you have only one SDR of a certain type attached. </p></body></html>"))
|
||||
self.btnRefreshDeviceIdentifier.setText(_translate("FormDeviceSettings", "..."))
|
||||
self.cbDevice.setItemText(0, _translate("FormDeviceSettings", "USRP"))
|
||||
self.cbDevice.setItemText(1, _translate("FormDeviceSettings", "HackRF"))
|
||||
self.lineEditIP.setText(_translate("FormDeviceSettings", "127.0.0.1"))
|
||||
self.labelIP.setText(_translate("FormDeviceSettings", "IP address:"))
|
||||
self.labelFreq.setText(_translate("FormDeviceSettings", "Frequency (Hz):"))
|
||||
self.btnLockBWSR.setText(_translate("FormDeviceSettings", "..."))
|
||||
self.sliderGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The gain (more exactly RF gain) is the gain applied to the RF signal. This amplifies the high frequent signal arriving at the antenna of your Software Defined Radio.</p></body></html>"))
|
||||
self.spinBoxGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The gain (more exactly RF gain) is the gain applied to the RF signal. This amplifies the high frequent signal arriving at the antenna of your Software Defined Radio.</p></body></html>"))
|
||||
self.comboBoxDirectSampling.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Set the direct sampling mode. If you do not know what to choose here, just set it to disabled. The<span style=\" font-weight:600;\"> native backend</span> is recommended, when using this setting.</p></body></html>"))
|
||||
self.labelDirectSampling.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Set the direct sampling mode. If you do not know what to choose here, just set it to disabled. The<span style=\" font-weight:600;\"> native backend</span> is recommended, when using this setting.</p></body></html>"))
|
||||
self.labelDirectSampling.setText(_translate("FormDeviceSettings", "Direct sampling:"))
|
||||
self.labelNRepeat.setText(_translate("FormDeviceSettings", "Repeat:"))
|
||||
self.checkBoxDCCorrection.setToolTip(_translate("FormDeviceSettings", "Apply DC correction during recording, that is, ensure the captured signal has a mean value of zero."))
|
||||
self.checkBoxDCCorrection.setText(_translate("FormDeviceSettings", "Apply DC correction"))
|
||||
self.labelChannel.setText(_translate("FormDeviceSettings", "Channel:"))
|
||||
self.labelBandwidth.setText(_translate("FormDeviceSettings", "Bandwidth (Hz):"))
|
||||
self.sliderGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The gain (more exactly RF gain) is the gain applied to the RF signal. This amplifies the high frequent signal arriving at the antenna of your Software Defined Radio.</p></body></html>"))
|
||||
self.spinBoxGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The gain (more exactly RF gain) is the gain applied to the RF signal. This amplifies the high frequent signal arriving at the antenna of your Software Defined Radio.</p></body></html>"))
|
||||
self.labelSampleRate.setText(_translate("FormDeviceSettings", "Sample rate (Sps):"))
|
||||
self.sliderIFGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The IF Gain is applied to the Intermediate Frequency signal in your Software Defined Radio. An IF signal has a lower frequency than the high frequent RF signal, so signal processing can be applied more efficiently.</p></body></html>"))
|
||||
self.spinBoxIFGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The IF Gain is applied to the Intermediate Frequency signal in your Software Defined Radio. An IF signal has a lower frequency than the high frequent RF signal, so signal processing can be applied more efficiently.</p></body></html>"))
|
||||
self.labelFreqCorrection.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Set the frequency correction in <span style=\" font-weight:600;\">ppm</span>. If you do not know what to enter here, just leave it to one.</p></body></html>"))
|
||||
self.labelFreqCorrection.setText(_translate("FormDeviceSettings", "Frequency correction:"))
|
||||
self.comboBoxDeviceIdentifier.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>You can enter a device identifier here if you have multiple SDRs of the same type attached to separate them. There is no need to configure this value otherwise. URH will <span style=\" font-weight:600;\">automatically</span> select an attached SDR of the configured type if you leave this value empty.</p></body></html>"))
|
||||
self.cbDevice.setItemText(0, _translate("FormDeviceSettings", "USRP"))
|
||||
self.cbDevice.setItemText(1, _translate("FormDeviceSettings", "HackRF"))
|
||||
self.spinBoxNRepeat.setSpecialValueText(_translate("FormDeviceSettings", "Infinite"))
|
||||
self.labelSubdevice.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Configure the subdevice of your USRP. For example, <span style=\" font-weight:600;\">B:0 </span>to select a WBX on slot B. You can learn more at <a href=\"http://files.ettus.com/manual/page_configuration.html#config_subdev\"><span style=\" text-decoration: underline; color:#2980b9;\">http://files.ettus.com/manual/page_configuration.html#config_subdev.</span></a></p></body></html>"))
|
||||
self.labelSubdevice.setText(_translate("FormDeviceSettings", "<html><head/><body><p>Subdevice:</p></body></html>"))
|
||||
self.lineEditSubdevice.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Configure the subdevice of your USRP. For example, <span style=\" font-weight:600;\">B:0 </span>to select a WBX on slot B. You can learn more at <a href=\"http://files.ettus.com/manual/page_configuration.html#config_subdev\"><span style=\" text-decoration: underline; color:#2980b9;\">http://files.ettus.com/manual/page_configuration.html#config_subdev.</span></a></p></body></html>"))
|
||||
self.sliderBasebandGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The baseband gain is applied to the baseband signal in your software defined radio. The baseband signal is at low frequency and gathered from the RF signal by <span style=\" font-weight:600;\">complex downsampling</span>.</p></body></html>"))
|
||||
self.spinBoxBasebandGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The baseband gain is applied to the baseband signal in your software defined radio. The baseband signal is at low frequency and gathered from the RF signal by <span style=\" font-weight:600;\">complex downsampling</span>.</p></body></html>"))
|
||||
self.labelPort.setText(_translate("FormDeviceSettings", "Port number:"))
|
||||
self.labelGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The gain (more exactly RF gain) is the gain applied to the RF signal. This amplifies the high frequent signal arriving at the antenna of your Software Defined Radio.</p></body></html>"))
|
||||
self.labelGain.setText(_translate("FormDeviceSettings", "Gain:"))
|
||||
self.checkBoxDCCorrection.setToolTip(_translate("FormDeviceSettings", "Apply DC correction during recording, that is, ensure the captured signal has a mean value of zero."))
|
||||
self.checkBoxDCCorrection.setText(_translate("FormDeviceSettings", "Apply DC correction"))
|
||||
self.labelDeviceIdentifier.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>You can enter a device identifier here if you have multiple SDRs of the same type attached to separate them. There is no need to configure this value otherwise. URH will <span style=\" font-weight:600;\">automatically</span> select an attached SDR of the configured type if you leave this value empty.</p></body></html>"))
|
||||
self.labelDeviceIdentifier.setText(_translate("FormDeviceSettings", "Device Identifier:"))
|
||||
self.labelFreq.setText(_translate("FormDeviceSettings", "Frequency (Hz):"))
|
||||
self.labelIP.setText(_translate("FormDeviceSettings", "IP address:"))
|
||||
self.spinBoxFreqCorrection.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Set the frequency correction in <span style=\" font-weight:600;\">ppm</span>. If you do not know what to enter here, just leave it to one.</p></body></html>"))
|
||||
self.labelNRepeat.setText(_translate("FormDeviceSettings", "Repeat:"))
|
||||
self.comboBoxDirectSampling.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Set the direct sampling mode. If you do not know what to choose here, just set it to disabled. The<span style=\" font-weight:600;\"> native backend</span> is recommended, when using this setting.</p></body></html>"))
|
||||
self.labelDCCorrection.setToolTip(_translate("FormDeviceSettings", "Apply DC correction during recording, that is, ensure the captured signal has a mean value of zero."))
|
||||
self.labelDCCorrection.setText(_translate("FormDeviceSettings", "DC correction:"))
|
||||
self.labelIFGain.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>The IF Gain is applied to the Intermediate Frequency signal in your Software Defined Radio. An IF signal has a lower frequency than the high frequent RF signal, so signal processing can be applied more efficiently.</p></body></html>"))
|
||||
self.labelIFGain.setText(_translate("FormDeviceSettings", "IF Gain:"))
|
||||
self.labelChannel.setText(_translate("FormDeviceSettings", "Channel:"))
|
||||
self.btnLockBWSR.setText(_translate("FormDeviceSettings", "..."))
|
||||
self.label_3.setText(_translate("FormDeviceSettings", "Device:"))
|
||||
self.labelBiasTee.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Enable the bias tee of your SDR, if you have an external LNA connected. Leave this disabled if you have no external LNA attached.</p></body></html>"))
|
||||
self.labelBiasTee.setText(_translate("FormDeviceSettings", "Bias Tee:"))
|
||||
self.checkBoxBiasTee.setToolTip(_translate("FormDeviceSettings", "<html><head/><body><p>Enable the bias tee of your SDR, if you have an external LNA connected. Leave this disabled if you have no external LNA attached.</p></body></html>"))
|
||||
self.checkBoxBiasTee.setText(_translate("FormDeviceSettings", "Enable Bias Tee"))
|
||||
from urh.ui.KillerDoubleSpinBox import KillerDoubleSpinBox
|
||||
from . import urh_rc
|
||||
|
||||
Reference in New Issue
Block a user