Merge branch 'master' into opus

merge-requests/6/head
Phil Taylor 2021-08-13 20:15:00 +01:00
commit eb2f897a81
16 zmienionych plików z 1779 dodań i 121 usunięć

Wyświetl plik

@ -1,5 +1,99 @@
# CHANGELOG
- 20210809
Add constants to make parsing (hopefully) easier
- 20210808
Fake known functions
Fix float warning
Remove calibration debugging
Add proper s-meter calibration
- 20210807
Add ritctl model to rigCaps
Fix to make wsjt-x work again!
Add split/duplex support
Update rigctld.cpp
Correct lack of parentheses in conditionals
Fix typo
Remove some debug logging
More rigctl features/fixes
- 20210806
Fix for get_powerstat
Update rigctld.cpp
Add some levels and other functions
Fix compile warnings
Add frequency ranges from rigcaps
- 20210806
Move rigctld settings in Ui
Fixes for setting freq/mode
Support for more rigctld commands
More fixes to rigctld
Change the way rigctl response is built
More rigctld fixes
- 20210804
Add rigctld config to ui and fix some bugs
- 20210802
added derSuessman prefix code
- 20210801
Fix broken 8bit audio
added derSuessmann additions to have a linux install prefix
Fedora build/install notes, see merge request eliggett/wfview!4
- 20210730
Added a little extra logic, also some cross-platform help, to the custom
stylesheet loader.
- 20210729
fix: set the style once
added /usr/local to search path for the stylesheet
- 20210726
Fixed error in IC-7410 attenuator spec.
- 20210726
Fix for blank username/password in server
- 20210724
small changes to INSTAll.md and addition of mint 20.2/openSUSE 15.3

Wyświetl plik

@ -40,15 +40,16 @@ git clone https://gitlab.com/eliggett/wfview.git
~~~
### 3. Create a build directory, compile, and install:
If you want to change the default install path from `/usr/local` to a different prefix (e.g. `/opt`), you must call `qmake ../wfview/wfview.pro PREFIX=/opt`
~~~
mkdir build
cd build
qmake ../wfview/wfview.pro
make -j
sudo ./install.sh
sudo make install
~~~
### 4. You can now launch wfview, either from the terminal or from your desktop environment. If you encounter issues using the serial port, run the following command:
~~~
@ -65,7 +66,7 @@ sudo usermod -aG dialout $USER
~~~
### opensuse/sles/tumbleweed install ###
### opensuse/sles/tumbleweed install
---
install wfview on suse 15.x sles 15.x or tumbleweed; this was done on a clean install/updated OS.
@ -99,3 +100,27 @@ in this case, use your homedir:
wfview is now installed in /usr/local/bin
---
### Fedora install ###
---
Tested under Fedora 33/34.
Install qt5 dependencies:
- sudo dnf install qt5-qtbase-common qt5-qtbase qt5-qtbase-gui qt5-qtserialport qt5-qtmultimedia mingw64-qt5-qmake qt5-qtbase-devel qt5-qtserialport-devel qt5-qtmultimedia-devel
Install qcustomplot:
- sudo dnf install qcustomplot qcustomplot-devel
When done, create a build area, clone the repo, build and install:
- mkdir -p ~/src/build && cd src
- git clone https://gitlab.com/eliggett/wfview.git
- cd build
- qmake-qt5 ../wfview/wfview.pro
- make -j
- sudo ./install.sh
wfview is now installed in /usr/local/bin
---

Wyświetl plik

@ -1,16 +1,9 @@
The following highlights are in this dot-release:
The following highlights are in this 1.x-release:
many changes/mods/updates/enhancements to rigctld
rigctld box added in the UI
build process changed: you can add the install prefix (derSuessmann)
added "do not ask again" for switching off rig and exiting wfview
added IC7700, 718, 7100. (more testing needed)
fixes and improvements to audio
ability to choose between rtaudio and qtmultimedia (default) as compile time option
fixes and lots of improvements at the usb-server end
waterfall length can be adjusted now
no need to restart to change CIV address
seamless changing rigs without restart
started support for older rigs like the 718
wf display disappears when there is no wf capable rig
IC R8600 support improved
for older rigs added a polling timing box to keep stuff keeping smooth
Local af gain now has anti-log audio pot taper.

Wyświetl plik

@ -539,7 +539,7 @@ void audioHandler::incomingAudio(audioPacket inPacket)
{
for (int g = setup.radioChan; g <= devChannels; g++)
{
if (isUlaw)
if (setup.ulaw)
*out++ = ulaw_decode[(quint8)inPacket.data[f]] * this->volume;
else
*out++ = (qint16)(((quint8)inPacket.data[f] << 8) - 32640 * this->volume);
@ -690,7 +690,7 @@ void audioHandler::getNextAudioChunk(QByteArray& ret)
for (int f = 0; f < outPacket.length(); f++)
{
quint8 outdata = 0;
if (isUlaw) {
if (setup.ulaw) {
qint16 enc = qFromLittleEndian<quint16>(in + f);
if (enc >= 0)
outdata = ulaw_encode[enc];

Wyświetl plik

@ -162,9 +162,7 @@ private:
#endif
SpeexResamplerState* resampler = Q_NULLPTR;
bool isUlaw;
quint16 audioLatency;
bool isInput; // Used to determine whether input or output audio
unsigned int chunkSize;
bool chunkAvailable;

Wyświetl plik

@ -311,7 +311,7 @@ void meter::drawScaleCenter(QPainter *qp)
void meter::drawScalePo(QPainter *qp)
{
//From the manual: "0000=0% to 0143=50% to 0213=100%"
float dnPerWatt = 143.0 / 50.0;
float dnPerWatt = 143.0f / 50.0f;
qp->setPen(lowTextColor);
//qp->setFont(QFont("Arial", fontSize));
@ -332,7 +332,7 @@ void meter::drawScalePo(QPainter *qp)
// Higher scale:
i = i - (int)(10*dnPerWatt); // back one tick first. Otherwise i starts at 178.
//qDebug() << "meter i: " << i;
dnPerWatt = (213-143.0) / 50.0; // 1.4 dn per watt
dnPerWatt = (213-143.0f) / 50.0f; // 1.4 dn per watt
// P=5 here.
qp->setPen(Qt::yellow);
int k=0;

Wyświetl plik

@ -25,6 +25,9 @@ rigCommander::rigCommander()
rigState.filter = 0;
rigState.mode = 0;
rigState.ptt = 0;
rigState.currentVfo = 0;
rigState.duplex = dmSplitOff;
}
rigCommander::~rigCommander()
@ -140,7 +143,7 @@ void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs, aud
// data from the comm port to the program:
emit commReady();
emit stateInfo(&rigState);
sendState(); // Send current rig state to rigctld
pttAllowed = true; // This is for developing, set to false for "safe" debugging. Set to true for deployment.
@ -1218,12 +1221,16 @@ void rigCommander::parseCommand()
break;
case '\x0F':
emit haveDuplexMode((duplexMode)(unsigned char)payloadIn[1]);
rigState.duplex = (duplexMode)(unsigned char)payloadIn[1];
break;
case '\x11':
emit haveAttenuator((unsigned char)payloadIn.at(1));
rigState.attenuator = (unsigned char)payloadIn.at(1);
break;
case '\x12':
emit haveAntenna((unsigned char)payloadIn.at(1), (bool)payloadIn.at(2));
rigState.antenna = (unsigned char)payloadIn.at(1);
rigState.rxAntenna = (bool)payloadIn.at(2);
break;
case '\x14':
// read levels
@ -1311,7 +1318,7 @@ void rigCommander::parseLevels()
unsigned char tens = (payloadIn[3] & 0xf0) >> 4;
unsigned char units = (payloadIn[3] & 0x0f);
unsigned char level = (100*hundreds) + (10*tens) + units;
unsigned char level = ((unsigned char)100*hundreds) + (10*tens) + units;
//qInfo(logRig()) << "Level is: " << (int)level << " or " << 100.0*level/255.0 << "%";
@ -2288,7 +2295,7 @@ void rigCommander::parsePTT()
// PTT on
emit havePTTStatus(true);
}
rigState.ptt = (unsigned char)payloadIn[2];
rigState.ptt = (bool)payloadIn[2];
}
@ -2852,6 +2859,7 @@ void rigCommander::determineRigCaps()
switch(model){
case model7300:
rigCaps.modelName = QString("IC-7300");
rigCaps.rigctlModel = 3073;
rigCaps.hasSpectrum = true;
rigCaps.spectSeqMax = 11;
rigCaps.spectAmpMax = 160;
@ -2875,6 +2883,7 @@ void rigCommander::determineRigCaps()
break;
case modelR8600:
rigCaps.modelName = QString("IC-R8600");
rigCaps.rigctlModel = 3079;
rigCaps.hasSpectrum = true;
rigCaps.spectSeqMax = 11;
rigCaps.spectAmpMax = 160;
@ -2909,6 +2918,7 @@ void rigCommander::determineRigCaps()
break;
case model9700:
rigCaps.modelName = QString("IC-9700");
rigCaps.rigctlModel = 3081;
rigCaps.hasSpectrum = true;
rigCaps.spectSeqMax = 11;
rigCaps.spectAmpMax = 160;
@ -2936,6 +2946,7 @@ void rigCommander::determineRigCaps()
break;
case model910h:
rigCaps.modelName = QString("IC-910H");
rigCaps.rigctlModel = 3044;
rigCaps.hasSpectrum = false;
rigCaps.hasLan = false;
rigCaps.hasEthernet = false;
@ -2957,6 +2968,7 @@ void rigCommander::determineRigCaps()
break;
case model7600:
rigCaps.modelName = QString("IC-7600");
rigCaps.rigctlModel = 3063;
rigCaps.hasSpectrum = false;
rigCaps.inputs.append(inputACC);
rigCaps.inputs.append(inputUSB);
@ -2980,6 +2992,7 @@ void rigCommander::determineRigCaps()
break;
case model7610:
rigCaps.modelName = QString("IC-7610");
rigCaps.rigctlModel = 3078;
rigCaps.hasSpectrum = true;
rigCaps.spectSeqMax = 15;
rigCaps.spectAmpMax = 200;
@ -3010,6 +3023,7 @@ void rigCommander::determineRigCaps()
break;
case model7850:
rigCaps.modelName = QString("IC-785x");
rigCaps.rigctlModel = 3075;
rigCaps.hasSpectrum = true;
rigCaps.spectSeqMax = 15;
rigCaps.spectAmpMax = 136;
@ -3041,6 +3055,7 @@ void rigCommander::determineRigCaps()
break;
case model705:
rigCaps.modelName = QString("IC-705");
rigCaps.rigctlModel = 3085;
rigCaps.hasSpectrum = true;
rigCaps.spectSeqMax = 11;
rigCaps.spectAmpMax = 160;
@ -3076,6 +3091,7 @@ void rigCommander::determineRigCaps()
break;
case model7000:
rigCaps.modelName = QString("IC-7000");
rigCaps.rigctlModel = 3060;
rigCaps.hasSpectrum = false;
rigCaps.inputs.append(inputACC);
rigCaps.hasLan = false;
@ -3097,6 +3113,7 @@ void rigCommander::determineRigCaps()
break;
case model7410:
rigCaps.modelName = QString("IC-7410");
rigCaps.rigctlModel = 3067;
rigCaps.hasSpectrum = false;
rigCaps.inputs.append(inputACC);
rigCaps.hasLan = false;
@ -3106,7 +3123,7 @@ void rigCommander::determineRigCaps()
rigCaps.hasATU = true;
rigCaps.hasCTCSS = true;
rigCaps.hasDTCS = true;
rigCaps.attenuators.push_back('\x12');
rigCaps.attenuators.push_back('\x20');
rigCaps.preamps.push_back('\x01');
rigCaps.preamps.push_back('\x02');
rigCaps.antennas = {0x00, 0x01};
@ -3117,6 +3134,7 @@ void rigCommander::determineRigCaps()
break;
case model7100:
rigCaps.modelName = QString("IC-7100");
rigCaps.rigctlModel = 3070;
rigCaps.hasSpectrum = false;
rigCaps.inputs.append(inputUSB);
rigCaps.inputs.append(inputACC);
@ -3143,6 +3161,7 @@ void rigCommander::determineRigCaps()
break;
case model7200:
rigCaps.modelName = QString("IC-7200");
rigCaps.rigctlModel = 3061;
rigCaps.hasSpectrum = false;
rigCaps.inputs.append(inputUSB);
rigCaps.inputs.append(inputACC);
@ -3162,6 +3181,7 @@ void rigCommander::determineRigCaps()
break;
case model7700:
rigCaps.modelName = QString("IC-7700");
rigCaps.rigctlModel = 3062;
rigCaps.hasSpectrum = false;
rigCaps.inputs.append(inputLAN);
//rigCaps.inputs.append(inputSPDIF);
@ -3187,6 +3207,7 @@ void rigCommander::determineRigCaps()
break;
case model706:
rigCaps.modelName = QString("IC-706");
rigCaps.rigctlModel = 3009;
rigCaps.hasSpectrum = false;
rigCaps.inputs.clear();
rigCaps.hasLan = false;
@ -3205,6 +3226,7 @@ void rigCommander::determineRigCaps()
break;
case model718:
rigCaps.modelName = QString("IC-718");
rigCaps.rigctlModel = 3013;
rigCaps.hasSpectrum = false;
rigCaps.inputs.clear();
rigCaps.hasLan = false;
@ -3227,6 +3249,7 @@ void rigCommander::determineRigCaps()
break;
case model756pro:
rigCaps.modelName = QString("IC-756 Pro");
rigCaps.rigctlModel = 3027;
rigCaps.hasSpectrum = false;
rigCaps.inputs.clear();
rigCaps.hasLan = false;
@ -3245,6 +3268,7 @@ void rigCommander::determineRigCaps()
break;
case model756proii:
rigCaps.modelName = QString("IC-756 Pro II");
rigCaps.rigctlModel = 3027;
rigCaps.hasSpectrum = false;
rigCaps.inputs.clear();
rigCaps.hasLan = false;
@ -3263,6 +3287,7 @@ void rigCommander::determineRigCaps()
break;
case model756proiii:
rigCaps.modelName = QString("IC-756 Pro III");
rigCaps.rigctlModel = 3027;
rigCaps.hasSpectrum = false;
rigCaps.inputs.clear();
rigCaps.hasLan = false;
@ -3785,6 +3810,11 @@ QByteArray rigCommander::stripData(const QByteArray &data, unsigned char cutPosi
return rtndata;
}
void rigCommander::sendState()
{
emit stateInfo(&rigState);
}
void rigCommander::getDebug()
{
// generic debug function for development.

Wyświetl plik

@ -62,10 +62,14 @@ struct timekind {
struct rigStateStruct {
freqt vfoAFreq;
freqt vfoBFreq;
unsigned char ptt;
unsigned char currentVfo;
bool ptt;
unsigned char mode;
unsigned char filter;
duplexMode duplex;
bool datamode;
unsigned char antenna;
bool rxAntenna;
// Tones
quint16 ctcss;
quint16 tsql;
@ -73,6 +77,7 @@ struct rigStateStruct {
quint16 csql;
// Levels
unsigned char preamp;
unsigned char attenuator;
unsigned char modInput;
unsigned char afGain;
unsigned char rfGain;
@ -91,6 +96,38 @@ struct rigStateStruct {
unsigned char compMeter;
unsigned char voltageMeter;
unsigned char currentMeter;
// Functions
bool fagcFunc=false;
bool nbFunc=false;
bool compFunc=false;
bool voxFunc = false;
bool toneFunc = false;
bool tsqlFunc = false;
bool sbkinFunc = false;
bool fbkinFunc = false;
bool anfFunc = false;
bool nrFunc = false;
bool aipFunc = false;
bool apfFunc = false;
bool monFunc = false;
bool mnFunc = false;
bool rfFunc = false;
bool aroFunc = false;
bool muteFunc = false;
bool vscFunc = false;
bool revFunc = false;
bool sqlFunc = false;
bool abmFunc = false;
bool bcFunc = false;
bool mbcFunc = false;
bool ritFunc = false;
bool afcFunc = false;
bool satmodeFunc = false;
bool scopeFunc = false;
bool resumeFunc = false;
bool tburstFunc = false;
bool tunerFunc = false;
bool lockFunc = false;
};
class rigCommander : public QObject
@ -270,6 +307,7 @@ public slots:
// Housekeeping:
void handleStatusUpdate(const QString text);
void sendState();
void getDebug();
signals:

Plik diff jest za duży Load Diff

377
rigctld.h
Wyświetl plik

@ -1,3 +1,9 @@
/* This file contains portions of the Hamlib Interface - API header
* Copyright(c) 2000 - 2003 by Frank Singleton
* Copyright(c) 2000 - 2012 by Stephane Fillod
*/
#ifndef RIGCTLD_H
#define RIGCTLD_H
@ -14,6 +20,345 @@
#include "rigcommander.h"
#define CONSTANT_64BIT_FLAG(BIT) (1ull << (BIT))
#define RIG_MODE_NONE 0 /*!< '' -- None */
#define RIG_MODE_AM CONSTANT_64BIT_FLAG (0) /*!< \c AM -- Amplitude Modulation */
#define RIG_MODE_CW CONSTANT_64BIT_FLAG (1) /*!< \c CW -- CW "normal" sideband */
#define RIG_MODE_USB CONSTANT_64BIT_FLAG (2) /*!< \c USB -- Upper Side Band */
#define RIG_MODE_LSB CONSTANT_64BIT_FLAG (3) /*!< \c LSB -- Lower Side Band */
#define RIG_MODE_RTTY CONSTANT_64BIT_FLAG (4) /*!< \c RTTY -- Radio Teletype */
#define RIG_MODE_FM CONSTANT_64BIT_FLAG (5) /*!< \c FM -- "narrow" band FM */
#define RIG_MODE_WFM CONSTANT_64BIT_FLAG (6) /*!< \c WFM -- broadcast wide FM */
#define RIG_MODE_CWR CONSTANT_64BIT_FLAG (7) /*!< \c CWR -- CW "reverse" sideband */
#define RIG_MODE_RTTYR CONSTANT_64BIT_FLAG (8) /*!< \c RTTYR -- RTTY "reverse" sideband */
#define RIG_MODE_AMS CONSTANT_64BIT_FLAG (9) /*!< \c AMS -- Amplitude Modulation Synchronous */
#define RIG_MODE_PKTLSB CONSTANT_64BIT_FLAG (10) /*!< \c PKTLSB -- Packet/Digital LSB mode (dedicated port) */
#define RIG_MODE_PKTUSB CONSTANT_64BIT_FLAG (11) /*!< \c PKTUSB -- Packet/Digital USB mode (dedicated port) */
#define RIG_MODE_PKTFM CONSTANT_64BIT_FLAG (12) /*!< \c PKTFM -- Packet/Digital FM mode (dedicated port) */
#define RIG_MODE_ECSSUSB CONSTANT_64BIT_FLAG (13) /*!< \c ECSSUSB -- Exalted Carrier Single Sideband USB */
#define RIG_MODE_ECSSLSB CONSTANT_64BIT_FLAG (14) /*!< \c ECSSLSB -- Exalted Carrier Single Sideband LSB */
#define RIG_MODE_FAX CONSTANT_64BIT_FLAG (15) /*!< \c FAX -- Facsimile Mode */
#define RIG_MODE_SAM CONSTANT_64BIT_FLAG (16) /*!< \c SAM -- Synchronous AM double sideband */
#define RIG_MODE_SAL CONSTANT_64BIT_FLAG (17) /*!< \c SAL -- Synchronous AM lower sideband */
#define RIG_MODE_SAH CONSTANT_64BIT_FLAG (18) /*!< \c SAH -- Synchronous AM upper (higher) sideband */
#define RIG_MODE_DSB CONSTANT_64BIT_FLAG (19) /*!< \c DSB -- Double sideband suppressed carrier */
#define RIG_MODE_FMN CONSTANT_64BIT_FLAG (21) /*!< \c FMN -- FM Narrow Kenwood ts990s */
#define RIG_MODE_PKTAM CONSTANT_64BIT_FLAG (22) /*!< \c PKTAM -- Packet/Digital AM mode e.g. IC7300 */
#define RIG_MODE_P25 CONSTANT_64BIT_FLAG (23) /*!< \c P25 -- APCO/P25 VHF,UHF digital mode IC-R8600 */
#define RIG_MODE_DSTAR CONSTANT_64BIT_FLAG (24) /*!< \c D-Star -- VHF,UHF digital mode IC-R8600 */
#define RIG_MODE_DPMR CONSTANT_64BIT_FLAG (25) /*!< \c dPMR -- digital PMR, VHF,UHF digital mode IC-R8600 */
#define RIG_MODE_NXDNVN CONSTANT_64BIT_FLAG (26) /*!< \c NXDN-VN -- VHF,UHF digital mode IC-R8600 */
#define RIG_MODE_NXDN_N CONSTANT_64BIT_FLAG (27) /*!< \c NXDN-N -- VHF,UHF digital mode IC-R8600 */
#define RIG_MODE_DCR CONSTANT_64BIT_FLAG (28) /*!< \c DCR -- VHF,UHF digital mode IC-R8600 */
#define RIG_MODE_AMN CONSTANT_64BIT_FLAG (29) /*!< \c AM-N -- Narrow band AM mode IC-R30 */
#define RIG_MODE_PSK CONSTANT_64BIT_FLAG (30) /*!< \c PSK - Kenwood PSK and others */
#define RIG_MODE_PSKR CONSTANT_64BIT_FLAG (31) /*!< \c PSKR - Kenwood PSKR and others */
#define RIG_MODE_DD CONSTANT_64BIT_FLAG (32) /*!< \c DD Mode IC-9700 */
#define RIG_MODE_C4FM CONSTANT_64BIT_FLAG (33) /*!< \c Yaesu C4FM mode */
#define RIG_MODE_PKTFMN CONSTANT_64BIT_FLAG (34) /*!< \c Yaesu DATA-FM-N */
#define RIG_MODE_SPEC CONSTANT_64BIT_FLAG (35) /*!< \c Unfiltered as in PowerSDR */
#define RIG_LEVEL_NONE 0 /*!< '' -- No Level */
#define RIG_LEVEL_PREAMP CONSTANT_64BIT_FLAG(0) /*!< \c PREAMP -- Preamp, arg int (dB) */
#define RIG_LEVEL_ATT CONSTANT_64BIT_FLAG(1) /*!< \c ATT -- Attenuator, arg int (dB) */
#define RIG_LEVEL_VOXDELAY CONSTANT_64BIT_FLAG(2) /*!< \c VOXDELAY -- VOX delay, arg int (tenth of seconds) */
#define RIG_LEVEL_AF CONSTANT_64BIT_FLAG(3) /*!< \c AF -- Volume, arg float [0.0 ... 1.0] */
#define RIG_LEVEL_RF CONSTANT_64BIT_FLAG(4) /*!< \c RF -- RF gain (not TX power) arg float [0.0 ... 1.0] */
#define RIG_LEVEL_SQL CONSTANT_64BIT_FLAG(5) /*!< \c SQL -- Squelch, arg float [0.0 ... 1.0] */
#define RIG_LEVEL_IF CONSTANT_64BIT_FLAG(6) /*!< \c IF -- IF, arg int (Hz) */
#define RIG_LEVEL_APF CONSTANT_64BIT_FLAG(7) /*!< \c APF -- Audio Peak Filter, arg float [0.0 ... 1.0] */
#define RIG_LEVEL_NR CONSTANT_64BIT_FLAG(8) /*!< \c NR -- Noise Reduction, arg float [0.0 ... 1.0] */
#define RIG_LEVEL_PBT_IN CONSTANT_64BIT_FLAG(9) /*!< \c PBT_IN -- Twin PBT (inside) arg float [0.0 ... 1.0] */
#define RIG_LEVEL_PBT_OUT CONSTANT_64BIT_FLAG(10) /*!< \c PBT_OUT -- Twin PBT (outside) arg float [0.0 ... 1.0] */
#define RIG_LEVEL_CWPITCH CONSTANT_64BIT_FLAG(11) /*!< \c CWPITCH -- CW pitch, arg int (Hz) */
#define RIG_LEVEL_RFPOWER CONSTANT_64BIT_FLAG(12) /*!< \c RFPOWER -- RF Power, arg float [0.0 ... 1.0] */
#define RIG_LEVEL_MICGAIN CONSTANT_64BIT_FLAG(13) /*!< \c MICGAIN -- MIC Gain, arg float [0.0 ... 1.0] */
#define RIG_LEVEL_KEYSPD CONSTANT_64BIT_FLAG(14) /*!< \c KEYSPD -- Key Speed, arg int (WPM) */
#define RIG_LEVEL_NOTCHF CONSTANT_64BIT_FLAG(15) /*!< \c NOTCHF -- Notch Freq., arg int (Hz) */
#define RIG_LEVEL_COMP CONSTANT_64BIT_FLAG(16) /*!< \c COMP -- Compressor, arg float [0.0 ... 1.0] */
#define RIG_LEVEL_AGC CONSTANT_64BIT_FLAG(17) /*!< \c AGC -- AGC, arg int (see enum agc_level_e) */
#define RIG_LEVEL_BKINDL CONSTANT_64BIT_FLAG(18) /*!< \c BKINDL -- BKin Delay, arg int (tenth of dots) */
#define RIG_LEVEL_BALANCE CONSTANT_64BIT_FLAG(19) /*!< \c BAL -- Balance (Dual Watch) arg float [0.0 ... 1.0] */
#define RIG_LEVEL_METER CONSTANT_64BIT_FLAG(20) /*!< \c METER -- Display meter, arg int (see enum meter_level_e) */
#define RIG_LEVEL_VOXGAIN CONSTANT_64BIT_FLAG(21) /*!< \c VOXGAIN -- VOX gain level, arg float [0.0 ... 1.0] */
#define RIG_LEVEL_ANTIVOX CONSTANT_64BIT_FLAG(22) /*!< \c ANTIVOX -- anti-VOX level, arg float [0.0 ... 1.0] */
#define RIG_LEVEL_SLOPE_LOW CONSTANT_64BIT_FLAG(23) /*!< \c SLOPE_LOW -- Slope tune, low frequency cut, arg int (Hz) */
#define RIG_LEVEL_SLOPE_HIGH CONSTANT_64BIT_FLAG(24) /*!< \c SLOPE_HIGH -- Slope tune, high frequency cut, arg int (Hz) */
#define RIG_LEVEL_BKIN_DLYMS CONSTANT_64BIT_FLAG(25) /*!< \c BKIN_DLYMS -- BKin Delay, arg int Milliseconds */
/*!< These are not settable */
#define RIG_LEVEL_RAWSTR CONSTANT_64BIT_FLAG(26) /*!< \c RAWSTR -- Raw (A/D) value for signal strength, specific to each rig, arg int */
//#define RIG_LEVEL_SQLSTAT CONSTANT_64BIT_FLAG(27) /*!< \c SQLSTAT -- SQL status, arg int (open=1/closed=0). Deprecated, use get_dcd instead */
#define RIG_LEVEL_SWR CONSTANT_64BIT_FLAG(28) /*!< \c SWR -- SWR, arg float [0.0 ... infinite] */
#define RIG_LEVEL_ALC CONSTANT_64BIT_FLAG(29) /*!< \c ALC -- ALC, arg float */
#define RIG_LEVEL_STRENGTH CONSTANT_64BIT_FLAG(30) /*!< \c STRENGTH -- Effective (calibrated) signal strength relative to S9, arg int (dB) */
/* RIG_LEVEL_BWC (1<<31) */ /*!< Bandwidth Control, arg int (Hz) */
#define RIG_LEVEL_RFPOWER_METER CONSTANT_64BIT_FLAG(32) /*!< \c RFPOWER_METER -- RF power output meter, arg float [0.0 ... 1.0] (percentage of maximum power) */
#define RIG_LEVEL_COMP_METER CONSTANT_64BIT_FLAG(33) /*!< \c COMP_METER -- Audio output level compression meter, arg float (dB) */
#define RIG_LEVEL_VD_METER CONSTANT_64BIT_FLAG(34) /*!< \c VD_METER -- Input voltage level meter, arg float (V, volts) */
#define RIG_LEVEL_ID_METER CONSTANT_64BIT_FLAG(35) /*!< \c ID_METER -- Current draw meter, arg float (A, amperes) */
#define RIG_LEVEL_NOTCHF_RAW CONSTANT_64BIT_FLAG(36) /*!< \c NOTCHF_RAW -- Notch Freq., arg float [0.0 ... 1.0] */
#define RIG_LEVEL_MONITOR_GAIN CONSTANT_64BIT_FLAG(37) /*!< \c MONITOR_GAIN -- Monitor gain (level for monitoring of transmitted audio) arg float [0.0 ... 1.0] */
#define RIG_LEVEL_NB CONSTANT_64BIT_FLAG(38) /*!< \c NB -- Noise Blanker level, arg float [0.0 ... 1.0] */
#define RIG_LEVEL_RFPOWER_METER_WATTS CONSTANT_64BIT_FLAG(39) /*!< \c RFPOWER_METER_WATTS -- RF power output meter, arg float [0.0 ... MAX] (output power in watts) */
#define RIG_LEVEL_SPECTRUM_MODE CONSTANT_64BIT_FLAG(40) /*!< \c SPECTRUM_MODE -- Spectrum scope mode, arg int (see enum rig_spectrum_mode_e). Supported modes defined in rig caps. */
#define RIG_LEVEL_SPECTRUM_SPAN CONSTANT_64BIT_FLAG(41) /*!< \c SPECTRUM_SPAN -- Spectrum scope span in center mode, arg int (Hz). Supported spans defined in rig caps. */
#define RIG_LEVEL_SPECTRUM_EDGE_LOW CONSTANT_64BIT_FLAG(42) /*!< \c SPECTRUM_EDGE_LOW -- Spectrum scope low edge in fixed mode, arg int (Hz) */
#define RIG_LEVEL_SPECTRUM_EDGE_HIGH CONSTANT_64BIT_FLAG(43) /*!< \c SPECTRUM_EDGE_HIGH -- Spectrum scope high edge in fixed mode, arg int (Hz) */
#define RIG_LEVEL_SPECTRUM_SPEED CONSTANT_64BIT_FLAG(44) /*!< \c SPECTRUM_SPEED -- Spectrum scope update speed, arg int (highest is fastest, define rig-specific granularity) */
#define RIG_LEVEL_SPECTRUM_REF CONSTANT_64BIT_FLAG(45) /*!< \c SPECTRUM_REF -- Spectrum scope reference display level, arg float (dB, define rig-specific granularity) */
#define RIG_LEVEL_SPECTRUM_AVG CONSTANT_64BIT_FLAG(46) /*!< \c SPECTRUM_AVG -- Spectrum scope averaging mode, arg int (see struct rig_spectrum_avg_mode). Supported averaging modes defined in rig caps. */
#define RIG_LEVEL_SPECTRUM_ATT CONSTANT_64BIT_FLAG(47) /*!< \c SPECTRUM_ATT -- Spectrum scope attenuator, arg int (dB). Supported attenuator values defined in rig caps. */
#define RIG_LEVEL_TEMP_METER CONSTANT_64BIT_FLAG(48) /*!< \c TEMP_METER -- arg int (C, centigrade) */
#define RIG_FUNC_NONE 0 /*!< '' -- No Function */
#define RIG_FUNC_FAGC CONSTANT_64BIT_FLAG (0) /*!< \c FAGC -- Fast AGC */
#define RIG_FUNC_NB CONSTANT_64BIT_FLAG (1) /*!< \c NB -- Noise Blanker */
#define RIG_FUNC_COMP CONSTANT_64BIT_FLAG (2) /*!< \c COMP -- Speech Compression */
#define RIG_FUNC_VOX CONSTANT_64BIT_FLAG (3) /*!< \c VOX -- Voice Operated Relay */
#define RIG_FUNC_TONE CONSTANT_64BIT_FLAG (4) /*!< \c TONE -- CTCSS Tone TX */
#define RIG_FUNC_TSQL CONSTANT_64BIT_FLAG (5) /*!< \c TSQL -- CTCSS Activate/De-activate RX */
#define RIG_FUNC_SBKIN CONSTANT_64BIT_FLAG (6) /*!< \c SBKIN -- Semi Break-in (CW mode) */
#define RIG_FUNC_FBKIN CONSTANT_64BIT_FLAG (7) /*!< \c FBKIN -- Full Break-in (CW mode) */
#define RIG_FUNC_ANF CONSTANT_64BIT_FLAG (8) /*!< \c ANF -- Automatic Notch Filter (DSP) */
#define RIG_FUNC_NR CONSTANT_64BIT_FLAG (9) /*!< \c NR -- Noise Reduction (DSP) */
#define RIG_FUNC_AIP CONSTANT_64BIT_FLAG (10) /*!< \c AIP -- RF pre-amp (AIP on Kenwood, IPO on Yaesu, etc.) */
#define RIG_FUNC_APF CONSTANT_64BIT_FLAG (11) /*!< \c APF -- Auto Passband/Audio Peak Filter */
#define RIG_FUNC_MON CONSTANT_64BIT_FLAG (12) /*!< \c MON -- Monitor transmitted signal */
#define RIG_FUNC_MN CONSTANT_64BIT_FLAG (13) /*!< \c MN -- Manual Notch */
#define RIG_FUNC_RF CONSTANT_64BIT_FLAG (14) /*!< \c RF -- RTTY Filter */
#define RIG_FUNC_ARO CONSTANT_64BIT_FLAG (15) /*!< \c ARO -- Auto Repeater Offset */
#define RIG_FUNC_LOCK CONSTANT_64BIT_FLAG (16) /*!< \c LOCK -- Lock */
#define RIG_FUNC_MUTE CONSTANT_64BIT_FLAG (17) /*!< \c MUTE -- Mute */
#define RIG_FUNC_VSC CONSTANT_64BIT_FLAG (18) /*!< \c VSC -- Voice Scan Control */
#define RIG_FUNC_REV CONSTANT_64BIT_FLAG (19) /*!< \c REV -- Reverse transmit and receive frequencies */
#define RIG_FUNC_SQL CONSTANT_64BIT_FLAG (20) /*!< \c SQL -- Turn Squelch Monitor on/off */
#define RIG_FUNC_ABM CONSTANT_64BIT_FLAG (21) /*!< \c ABM -- Auto Band Mode */
#define RIG_FUNC_BC CONSTANT_64BIT_FLAG (22) /*!< \c BC -- Beat Canceller */
#define RIG_FUNC_MBC CONSTANT_64BIT_FLAG (23) /*!< \c MBC -- Manual Beat Canceller */
#define RIG_FUNC_RIT CONSTANT_64BIT_FLAG (24) /*!< \c RIT -- Receiver Incremental Tuning */
#define RIG_FUNC_AFC CONSTANT_64BIT_FLAG (25) /*!< \c AFC -- Auto Frequency Control ON/OFF */
#define RIG_FUNC_SATMODE CONSTANT_64BIT_FLAG (26) /*!< \c SATMODE -- Satellite mode ON/OFF */
#define RIG_FUNC_SCOPE CONSTANT_64BIT_FLAG (27) /*!< \c SCOPE -- Simple bandscope ON/OFF */
#define RIG_FUNC_RESUME CONSTANT_64BIT_FLAG (28) /*!< \c RESUME -- Scan auto-resume */
#define RIG_FUNC_TBURST CONSTANT_64BIT_FLAG (29) /*!< \c TBURST -- 1750 Hz tone burst */
#define RIG_FUNC_TUNER CONSTANT_64BIT_FLAG (30) /*!< \c TUNER -- Enable automatic tuner */
#define RIG_FUNC_XIT CONSTANT_64BIT_FLAG (31) /*!< \c XIT -- Transmitter Incremental Tuning */
#define RIG_FUNC_NB2 CONSTANT_64BIT_FLAG (32) /*!< \c NB2 -- 2nd Noise Blanker */
#define RIG_FUNC_CSQL CONSTANT_64BIT_FLAG (33) /*!< \c CSQL -- DCS Squelch setting */
#define RIG_FUNC_AFLT CONSTANT_64BIT_FLAG (34) /*!< \c AFLT -- AF Filter setting */
#define RIG_FUNC_ANL CONSTANT_64BIT_FLAG (35) /*!< \c ANL -- Noise limiter setting */
#define RIG_FUNC_BC2 CONSTANT_64BIT_FLAG (36) /*!< \c BC2 -- 2nd Beat Cancel */
#define RIG_FUNC_DUAL_WATCH CONSTANT_64BIT_FLAG (37) /*!< \c DUAL_WATCH -- Dual Watch / Sub Receiver */
#define RIG_FUNC_DIVERSITY CONSTANT_64BIT_FLAG (38) /*!< \c DIVERSITY -- Diversity receive */
#define RIG_FUNC_DSQL CONSTANT_64BIT_FLAG (39) /*!< \c DSQL -- Digital modes squelch */
#define RIG_FUNC_SCEN CONSTANT_64BIT_FLAG (40) /*!< \c SCEN -- scrambler/encryption */
#define RIG_FUNC_SLICE CONSTANT_64BIT_FLAG (41) /*!< \c Rig slice selection -- Flex */
#define RIG_FUNC_TRANSCEIVE CONSTANT_64BIT_FLAG (42) /*!< \c TRANSCEIVE -- Send radio state changes automatically ON/OFF */
#define RIG_FUNC_SPECTRUM CONSTANT_64BIT_FLAG (43) /*!< \c SPECTRUM -- Spectrum scope data output ON/OFF */
#define RIG_FUNC_SPECTRUM_HOLD CONSTANT_64BIT_FLAG (44) /*!< \c SPECTRUM_HOLD -- Pause spectrum scope updates ON/OFF */
static struct
{
quint64 mode;
const char* str;
} mode_str[] =
{
{ RIG_MODE_AM, "AM" },
{ RIG_MODE_CW, "CW" },
{ RIG_MODE_USB, "USB" },
{ RIG_MODE_LSB, "LSB" },
{ RIG_MODE_RTTY, "RTTY" },
{ RIG_MODE_FM, "FM" },
{ RIG_MODE_WFM, "WFM" },
{ RIG_MODE_CWR, "CWR" },
{ RIG_MODE_RTTYR, "RTTYR" },
{ RIG_MODE_AMS, "AMS" },
{ RIG_MODE_PKTLSB, "PKTLSB" },
{ RIG_MODE_PKTUSB, "PKTUSB" },
{ RIG_MODE_PKTFM, "PKTFM" },
{ RIG_MODE_PKTFMN, "PKTFMN" },
{ RIG_MODE_ECSSUSB, "ECSSUSB" },
{ RIG_MODE_ECSSLSB, "ECSSLSB" },
{ RIG_MODE_FAX, "FAX" },
{ RIG_MODE_SAM, "SAM" },
{ RIG_MODE_SAL, "SAL" },
{ RIG_MODE_SAH, "SAH" },
{ RIG_MODE_DSB, "DSB"},
{ RIG_MODE_FMN, "FMN" },
{ RIG_MODE_PKTAM, "PKTAM"},
{ RIG_MODE_P25, "P25"},
{ RIG_MODE_DSTAR, "D-STAR"},
{ RIG_MODE_DPMR, "DPMR"},
{ RIG_MODE_NXDNVN, "NXDN-VN"},
{ RIG_MODE_NXDN_N, "NXDN-N"},
{ RIG_MODE_DCR, "DCR"},
{ RIG_MODE_AMN, "AMN"},
{ RIG_MODE_PSK, "PSK"},
{ RIG_MODE_PSKR, "PSKR"},
{ RIG_MODE_C4FM, "C4FM"},
{ RIG_MODE_SPEC, "SPEC"},
{ RIG_MODE_NONE, "" },
};
static struct
{
quint64 func;
const char* str;
} rig_func_str[] =
{
{ RIG_FUNC_FAGC, "FAGC" },
{ RIG_FUNC_NB, "NB" },
{ RIG_FUNC_COMP, "COMP" },
{ RIG_FUNC_VOX, "VOX" },
{ RIG_FUNC_TONE, "TONE" },
{ RIG_FUNC_TSQL, "TSQL" },
{ RIG_FUNC_SBKIN, "SBKIN" },
{ RIG_FUNC_FBKIN, "FBKIN" },
{ RIG_FUNC_ANF, "ANF" },
{ RIG_FUNC_NR, "NR" },
{ RIG_FUNC_AIP, "AIP" },
{ RIG_FUNC_APF, "APF" },
{ RIG_FUNC_MON, "MON" },
{ RIG_FUNC_MN, "MN" },
{ RIG_FUNC_RF, "RF" },
{ RIG_FUNC_ARO, "ARO" },
{ RIG_FUNC_LOCK, "LOCK" },
{ RIG_FUNC_MUTE, "MUTE" },
{ RIG_FUNC_VSC, "VSC" },
{ RIG_FUNC_REV, "REV" },
{ RIG_FUNC_SQL, "SQL" },
{ RIG_FUNC_ABM, "ABM" },
{ RIG_FUNC_BC, "BC" },
{ RIG_FUNC_MBC, "MBC" },
{ RIG_FUNC_RIT, "RIT" },
{ RIG_FUNC_AFC, "AFC" },
{ RIG_FUNC_SATMODE, "SATMODE" },
{ RIG_FUNC_SCOPE, "SCOPE" },
{ RIG_FUNC_RESUME, "RESUME" },
{ RIG_FUNC_TBURST, "TBURST" },
{ RIG_FUNC_TUNER, "TUNER" },
{ RIG_FUNC_XIT, "XIT" },
{ RIG_FUNC_NB2, "NB2" },
{ RIG_FUNC_DSQL, "DSQL" },
{ RIG_FUNC_AFLT, "AFLT" },
{ RIG_FUNC_ANL, "ANL" },
{ RIG_FUNC_BC2, "BC2" },
{ RIG_FUNC_DUAL_WATCH, "DUAL_WATCH"},
{ RIG_FUNC_DIVERSITY, "DIVERSITY"},
{ RIG_FUNC_CSQL, "CSQL" },
{ RIG_FUNC_SCEN, "SCEN" },
{ RIG_FUNC_TRANSCEIVE, "TRANSCEIVE" },
{ RIG_FUNC_SPECTRUM, "SPECTRUM" },
{ RIG_FUNC_SPECTRUM_HOLD, "SPECTRUM_HOLD" },
{ RIG_FUNC_NONE, "" },
};
static struct
{
quint64 level;
const char* str;
} rig_level_str[] =
{
{ RIG_LEVEL_PREAMP, "PREAMP" },
{ RIG_LEVEL_ATT, "ATT" },
{ RIG_LEVEL_VOXDELAY, "VOXDELAY" },
{ RIG_LEVEL_AF, "AF" },
{ RIG_LEVEL_RF, "RF" },
{ RIG_LEVEL_SQL, "SQL" },
{ RIG_LEVEL_IF, "IF" },
{ RIG_LEVEL_APF, "APF" },
{ RIG_LEVEL_NR, "NR" },
{ RIG_LEVEL_PBT_IN, "PBT_IN" },
{ RIG_LEVEL_PBT_OUT, "PBT_OUT" },
{ RIG_LEVEL_CWPITCH, "CWPITCH" },
{ RIG_LEVEL_RFPOWER, "RFPOWER" },
{ RIG_LEVEL_MICGAIN, "MICGAIN" },
{ RIG_LEVEL_KEYSPD, "KEYSPD" },
{ RIG_LEVEL_NOTCHF, "NOTCHF" },
{ RIG_LEVEL_COMP, "COMP" },
{ RIG_LEVEL_AGC, "AGC" },
{ RIG_LEVEL_BKINDL, "BKINDL" },
{ RIG_LEVEL_BALANCE, "BAL" },
{ RIG_LEVEL_METER, "METER" },
{ RIG_LEVEL_VOXGAIN, "VOXGAIN" },
{ RIG_LEVEL_ANTIVOX, "ANTIVOX" },
{ RIG_LEVEL_SLOPE_LOW, "SLOPE_LOW" },
{ RIG_LEVEL_SLOPE_HIGH, "SLOPE_HIGH" },
{ RIG_LEVEL_BKIN_DLYMS, "BKIN_DLYMS" },
{ RIG_LEVEL_RAWSTR, "RAWSTR" },
{ RIG_LEVEL_SWR, "SWR" },
{ RIG_LEVEL_ALC, "ALC" },
{ RIG_LEVEL_STRENGTH, "STRENGTH" },
{ RIG_LEVEL_RFPOWER_METER, "RFPOWER_METER" },
{ RIG_LEVEL_COMP_METER, "COMP_METER" },
{ RIG_LEVEL_VD_METER, "VD_METER" },
{ RIG_LEVEL_ID_METER, "ID_METER" },
{ RIG_LEVEL_NOTCHF_RAW, "NOTCHF_RAW" },
{ RIG_LEVEL_MONITOR_GAIN, "MONITOR_GAIN" },
{ RIG_LEVEL_NB, "NB" },
{ RIG_LEVEL_RFPOWER_METER_WATTS, "RFPOWER_METER_WATTS" },
{ RIG_LEVEL_SPECTRUM_MODE, "SPECTRUM_MODE" },
{ RIG_LEVEL_SPECTRUM_SPAN, "SPECTRUM_SPAN" },
{ RIG_LEVEL_SPECTRUM_EDGE_LOW, "SPECTRUM_EDGE_LOW" },
{ RIG_LEVEL_SPECTRUM_EDGE_HIGH, "SPECTRUM_EDGE_HIGH" },
{ RIG_LEVEL_SPECTRUM_SPEED, "SPECTRUM_SPEED" },
{ RIG_LEVEL_SPECTRUM_REF, "SPECTRUM_REF" },
{ RIG_LEVEL_SPECTRUM_AVG, "SPECTRUM_AVG" },
{ RIG_LEVEL_SPECTRUM_ATT, "SPECTRUM_ATT" },
{ RIG_LEVEL_TEMP_METER, "TEMP_METER" },
{ RIG_LEVEL_NONE, "" },
};
struct cal_table {
int size; /*!< number of plots in the table */
struct {
int raw; /*!< raw (A/D) value, as returned by \a RIG_LEVEL_RAWSTR */
int val; /*!< associated value, basically the measured dB value */
} table[32]; /*!< table of plots */
};
typedef struct cal_table cal_table_t;
#define IC7610_STR_CAL { 16, \
{ \
{ 0, -54 }, /* S0 */ \
{ 11, -48 }, \
{ 21, -42 }, \
{ 34, -36 }, \
{ 50, -30 }, \
{ 59, -24 }, \
{ 75, -18 }, \
{ 93, -12 }, \
{ 103, -6 }, \
{ 124, 0 }, /* S9 */ \
{ 145, 10 }, \
{ 160, 20 }, \
{ 183, 30 }, \
{ 204, 40 }, \
{ 222, 50 }, \
{ 246, 60 } /* S9+60dB */ \
} }
#define IC7850_STR_CAL { 3, \
{ \
{ 0, -54 }, /* S0 */ \
{ 120, 0 }, /* S9 */ \
{ 241, 60 } /* S9+60 */ \
} }
#define IC7300_STR_CAL { 7, \
{ \
{ 0, -54 }, \
{ 10, -48 }, \
{ 30, -36 }, \
{ 60, -24 }, \
{ 90, -12 }, \
{ 120, 0 }, \
{ 241, 64 } \
} }
class rigCtlD : public QTcpServer
{
Q_OBJECT
@ -33,6 +378,31 @@ signals:
void setFrequency(freqt freq);
void setPTT(bool state);
void setMode(unsigned char mode, unsigned char modeFilter);
void setDataMode(bool dataOn, unsigned char modeFilter);
void setVFO(unsigned char vfo);
void setSplit(unsigned char split);
void setDuplexMode(duplexMode dm);
// Power
void sendPowerOn();
void sendPowerOff();
// Att/preamp
void setAttenuator(unsigned char att);
void setPreamp(unsigned char pre);
//Level set
void setRfGain(unsigned char level);
void setAfGain(unsigned char level);
void setSql(unsigned char level);
void setMicGain(unsigned char);
void setCompLevel(unsigned char);
void setTxPower(unsigned char);
void setMonitorLevel(unsigned char);
void setVoxGain(unsigned char);
void setAntiVoxGain(unsigned char);
void setSpectrumRefLevel(int);
public slots:
virtual void incomingConnection(qintptr socketDescriptor);
@ -67,14 +437,17 @@ protected:
QString commandBuffer;
private:
void dumpCaps(QString sep);
rigCapabilities rigCaps;
rigStateStruct* rigState = Q_NULLPTR;
rigCtlD* parent;
QString getMode(unsigned char mode, bool datamode);
unsigned char getMode(QString modeString);
QString getFilter(unsigned char mode, unsigned char filter);
QString generateFreqRange(bandType band);
unsigned char getAntennas();
quint64 getRadioModes();
QString getAntName(unsigned char ant);
int getCalibratedValue(unsigned char meter,cal_table_t cal);
};

Wyświetl plik

@ -90,10 +90,9 @@ model_kind determineRadioModel(unsigned char rigID);
struct rigCapabilities {
model_kind model;
quint8 civ;
quint8 modelID;
int rigctlModel;
QString modelName;
bool hasLan; // OEM ethernet or wifi connection

Wyświetl plik

@ -175,13 +175,6 @@ void wfmain::openRig()
qDebug(logSystem()) << "Remote host name specified by user: " << hostCL;
}
// Start rigctld
if (prefs.enableRigCtlD && rigCtl == Q_NULLPTR) {
rigCtl = new rigCtlD(this);
rigCtl->startServer(prefs.rigCtlPort);
connect(this, SIGNAL(sendRigCaps(rigCapabilities)), rigCtl, SLOT(receiveRigCaps(rigCapabilities)));
}
makeRig();
@ -303,6 +296,7 @@ void wfmain::rigConnections()
connect(this, SIGNAL(getSpectrumRefLevel()), rig, SLOT(getSpectrumRefLevel()));
connect(this, SIGNAL(getModInputLevel(rigInput)), rig, SLOT(getModInputLevel(rigInput)));
// Levels: Set:
connect(this, SIGNAL(setRfGain(unsigned char)), rig, SLOT(setRfGain(unsigned char)));
connect(this, SIGNAL(setAfGain(unsigned char)), rig, SLOT(setAfGain(unsigned char)));
@ -313,7 +307,7 @@ void wfmain::rigConnections()
connect(this, SIGNAL(setVoxGain(unsigned char)), rig, SLOT(setVoxGain(unsigned char)));
connect(this, SIGNAL(setAntiVoxGain(unsigned char)), rig, SLOT(setAntiVoxGain(unsigned char)));
connect(this, SIGNAL(setSpectrumRefLevel(int)), rig, SLOT(setSpectrumRefLevel(int)));
connect(this, SIGNAL(setModLevel(rigInput,unsigned char)), rig, SLOT(setModInputLevel(rigInput,unsigned char)));
connect(this, SIGNAL(setModLevel(rigInput, unsigned char)), rig, SLOT(setModInputLevel(rigInput, unsigned char)));
// Levels: handle return on query:
connect(rig, SIGNAL(haveRfGain(unsigned char)), this, SLOT(receiveRfGain(unsigned char)));
@ -405,9 +399,29 @@ void wfmain::makeRig()
if (rigCtl != Q_NULLPTR) {
connect(rig, SIGNAL(stateInfo(rigStateStruct*)), rigCtl, SLOT(receiveStateInfo(rigStateStruct*)));
connect(this, SIGNAL(requestRigState()), rig, SLOT(sendState()));
connect(rigCtl, SIGNAL(setFrequency(freqt)), rig, SLOT(setFrequency(freqt)));
connect(rigCtl, SIGNAL(setMode(unsigned char, unsigned char)), rig, SLOT(setMode(unsigned char, unsigned char)));
connect(rigCtl, SIGNAL(setDataMode(bool, unsigned char)), rig, SLOT(setDataMode(bool, unsigned char)));
connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool)));
connect(rigCtl, SIGNAL(sendPowerOn()), rig, SLOT(powerOn()));
connect(rigCtl, SIGNAL(sendPowerOff()), rig, SLOT(powerOff()));
connect(rigCtl, SIGNAL(setAttenuator(unsigned char)), rig, SLOT(setAttenuator(unsigned char)));
connect(rigCtl, SIGNAL(setPreamp(unsigned char)), rig, SLOT(setPreamp(unsigned char)));
connect(rigCtl, SIGNAL(setDuplexMode(duplexMode)), rig, SLOT(setDuplexMode(duplexMode)));
// Levels: Set:
connect(rigCtl, SIGNAL(setRfGain(unsigned char)), rig, SLOT(setRfGain(unsigned char)));
connect(rigCtl, SIGNAL(setAfGain(unsigned char)), rig, SLOT(setAfGain(unsigned char)));
connect(rigCtl, SIGNAL(setSql(unsigned char)), rig, SLOT(setSquelch(unsigned char)));
connect(rigCtl, SIGNAL(setTxPower(unsigned char)), rig, SLOT(setTxPower(unsigned char)));
connect(rigCtl, SIGNAL(setMicGain(unsigned char)), rig, SLOT(setMicGain(unsigned char)));
connect(rigCtl, SIGNAL(setMonitorLevel(unsigned char)), rig, SLOT(setMonitorLevel(unsigned char)));
connect(rigCtl, SIGNAL(setVoxGain(unsigned char)), rig, SLOT(setVoxGain(unsigned char)));
connect(rigCtl, SIGNAL(setAntiVoxGain(unsigned char)), rig, SLOT(setAntiVoxGain(unsigned char)));
connect(rigCtl, SIGNAL(setSpectrumRefLevel(int)), rig, SLOT(setSpectrumRefLevel(int)));
}
}
}
@ -425,7 +439,7 @@ void wfmain::removeRig()
delete rigThread;
delete rig;
rig = Q_NULLPTR;
}
}
@ -1367,7 +1381,11 @@ void wfmain::loadSettings()
ui->connectBtn->setEnabled(true);
prefs.enableRigCtlD = settings->value("EnableRigCtlD", defPrefs.enableRigCtlD).toBool();
ui->enableRigctldChk->setChecked(prefs.enableRigCtlD);
prefs.rigCtlPort = settings->value("RigCtlPort", defPrefs.rigCtlPort).toInt();
ui->rigctldPortTxt->setText(QString("%1").arg(prefs.rigCtlPort));
// Call the function to start rigctld if enabled.
on_enableRigctldChk_clicked(prefs.enableRigCtlD);
udpPrefs.ipAddress = settings->value("IPAddress", udpDefPrefs.ipAddress).toString();
ui->ipAddressTxt->setEnabled(ui->lanEnableBtn->isChecked());
@ -2227,12 +2245,12 @@ void wfmain::setAppTheme(bool isCustom)
#ifndef Q_OS_LINUX
QFile f(":"+prefs.stylesheetPath); // built-in resource
#else
QFile f("/usr/share/wfview/stylesheets/" + prefs.stylesheetPath);
QFile f(PREFIX "/share/wfview/" + prefs.stylesheetPath);
#endif
if (!f.exists())
{
printf("Unable to set stylesheet, file not found\n");
printf("Tried to load: [%s]\n", QString( QString("/usr/share/wfview/stylesheets/") + prefs.stylesheetPath).toStdString().c_str() );
printf("Tried to load: [%s]\n", f.fileName().toStdString().c_str() );
}
else
{
@ -3928,9 +3946,6 @@ void wfmain::on_bandGenbtn_clicked()
void wfmain::on_aboutBtn_clicked()
{
abtBox->show();
}
void wfmain::on_fStoBtn_clicked()
@ -5250,6 +5265,63 @@ void wfmain::on_meter2selectionCombo_activated(int index)
(void)index;
}
void wfmain::on_enableRigctldChk_clicked(bool checked)
{
if (rigCtl != Q_NULLPTR)
{
rigCtl->disconnect();
delete rigCtl;
rigCtl = Q_NULLPTR;
}
if (checked) {
// Start rigctld
rigCtl = new rigCtlD(this);
rigCtl->startServer(prefs.rigCtlPort);
connect(this, SIGNAL(sendRigCaps(rigCapabilities)), rigCtl, SLOT(receiveRigCaps(rigCapabilities)));
if (rig != Q_NULLPTR) {
// We are already connected to a rig.
connect(rig, SIGNAL(stateInfo(rigStateStruct*)), rigCtl, SLOT(receiveStateInfo(rigStateStruct*)));
connect(rigCtl, SIGNAL(setFrequency(freqt)), rig, SLOT(setFrequency(freqt)));
connect(rigCtl, SIGNAL(setMode(unsigned char, unsigned char)), rig, SLOT(setMode(unsigned char, unsigned char)));
connect(rigCtl, SIGNAL(setDataMode(bool, unsigned char)), rig, SLOT(setDataMode(bool, unsigned char)));
connect(rigCtl, SIGNAL(setPTT(bool)), rig, SLOT(setPTT(bool)));
connect(rigCtl, SIGNAL(sendPowerOn()), rig, SLOT(powerOn()));
connect(rigCtl, SIGNAL(sendPowerOff()), rig, SLOT(powerOff()));
connect(rigCtl, SIGNAL(setAttenuator(unsigned char)), rig, SLOT(setAttenuator(unsigned char)));
connect(rigCtl, SIGNAL(setPreamp(unsigned char)), rig, SLOT(setPreamp(unsigned char)));
connect(rigCtl, SIGNAL(setDuplexMode(duplexMode)), rig, SLOT(setDuplexMode(duplexMode)));
// Levels: Set:
connect(rigCtl, SIGNAL(setRfGain(unsigned char)), rig, SLOT(setRfGain(unsigned char)));
connect(rigCtl, SIGNAL(setAfGain(unsigned char)), rig, SLOT(setAfGain(unsigned char)));
connect(rigCtl, SIGNAL(setSql(unsigned char)), rig, SLOT(setSquelch(unsigned char)));
connect(rigCtl, SIGNAL(setTxPower(unsigned char)), rig, SLOT(setTxPower(unsigned char)));
connect(rigCtl, SIGNAL(setMicGain(unsigned char)), rig, SLOT(setMicGain(unsigned char)));
connect(rigCtl, SIGNAL(setMonitorLevel(unsigned char)), rig, SLOT(setMonitorLevel(unsigned char)));
connect(rigCtl, SIGNAL(setVoxGain(unsigned char)), rig, SLOT(setVoxGain(unsigned char)));
connect(rigCtl, SIGNAL(setAntiVoxGain(unsigned char)), rig, SLOT(setAntiVoxGain(unsigned char)));
connect(rigCtl, SIGNAL(setSpectrumRefLevel(int)), rig, SLOT(setSpectrumRefLevel(int)));
emit sendRigCaps(rigCaps);
emit requestRigState();
}
}
prefs.enableRigCtlD = checked;
}
void wfmain::on_rigctldPortTxt_editingFinished()
{
bool okconvert = false;
unsigned int port = ui->rigctldPortTxt->text().toUInt(&okconvert);
if (okconvert)
{
prefs.rigCtlPort = port;
}
}
// --- DEBUG FUNCTION ---
void wfmain::on_debugBtn_clicked()
{

Wyświetl plik

@ -153,6 +153,7 @@ signals:
void initServer();
void sendServerConfig(SERVERCONFIG conf);
void sendRigCaps(rigCapabilities caps);
void requestRigState();
private slots:
void updateSizes(int tabIndex);
@ -472,6 +473,10 @@ private slots:
void on_meter2selectionCombo_activated(int index);
void on_enableRigctldChk_clicked(bool checked);
void on_rigctldPortTxt_editingFinished();
private:
Ui::wfmain *ui;
void closeEvent(QCloseEvent *event);

Wyświetl plik

@ -2232,7 +2232,7 @@
<widget class="QComboBox" name="meter2selectionCombo"/>
</item>
<item>
<spacer name="horizontalSpacer_5">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -2410,6 +2410,39 @@
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="enableRigctldChk">
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string>Enable RigCtld</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_6">
<property name="text">
<string>Port</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="rigctldPortTxt"/>
</item>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="vspLabel">
<property name="text">

Wyświetl plik

@ -38,6 +38,12 @@ equals(QT_ARCH, arm): DEFINES += USE_NEON
DEFINES += OUTSIDE_SPEEX
DEFINES += RANDOM_PREFIX=wf
isEmpty(PREFIX) {
PREFIX = /usr/local
}
DEFINES += PREFIX=\\\"$$PREFIX\\\"
# Choose audio system, uses QTMultimedia if both are commented out.
# DEFINES += RTAUDIO
# DEFINES += PORTAUDIO
@ -74,18 +80,25 @@ win32:DEFINES += UNAME=\\\"build\\\"
RESOURCES += qdarkstyle/style.qrc \
resources/resources.qrc
unix:target.path = $$PREFIX/bin
INSTALLS += target
# Why doesn't this seem to do anything?
DISTFILES += resources/wfview.png \
resources/install.sh
DISTFILES += resources/wfview.desktop
linux:QMAKE_POST_LINK += cp ../wfview/resources/wfview.png .;
linux:QMAKE_POST_LINK += cp ../wfview/resources/wfview.desktop .;
linux:QMAKE_POST_LINK += cp ../wfview/resources/install.sh .;
linux:QMAKE_POST_LINK += cp -r ../wfview/qdarkstyle .;
linux:QMAKE_POST_LINK += chmod 755 install.sh;
linux:QMAKE_POST_LINK += echo; echo; echo "Run install.sh as root from the build directory to install."; echo; echo;
unix:applications.files = resources/wfview.desktop
unix:applications.path = $$PREFIX/share/applications
INSTALLS += applications
unix:pixmaps.files = resources/wfview.png
unix:pixmaps.path = $$PREFIX/share/pixmaps
INSTALLS += pixmaps
unix:stylesheets.files = qdarkstyle
unix:stylesheets.path = $$PREFIX/share/wfview
INSTALLS += stylesheets
# Do not do this, it will hang on start:
# CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG_OUTPUT

Wyświetl plik

@ -57,6 +57,9 @@
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="aboutbox.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="audiohandler.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@ -108,6 +111,9 @@
<ClCompile Include="satellitesetup.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="transceiveradjustments.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="udphandler.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@ -122,12 +128,18 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<QtMoc Include="aboutbox.h">
<Filter>Header Files</Filter>
</QtMoc>
<ClInclude Include="resampler\arch.h">
<Filter>Header Files</Filter>
</ClInclude>
<QtMoc Include="audiohandler.h">
<Filter>Header Files</Filter>
</QtMoc>
<ClInclude Include="audiotaper.h">
<Filter>Header Files</Filter>
</ClInclude>
<QtMoc Include="calibrationwindow.h">
<Filter>Header Files</Filter>
</QtMoc>
@ -182,6 +194,9 @@
<ClInclude Include="resampler\speex_resampler.h">
<Filter>Header Files</Filter>
</ClInclude>
<QtMoc Include="transceiveradjustments.h">
<Filter>Header Files</Filter>
</QtMoc>
<QtMoc Include="udphandler.h">
<Filter>Header Files</Filter>
</QtMoc>
@ -207,6 +222,8 @@
<CustomBuild Include="debug\moc_predefs.h.cbt">
<Filter>Generated Files</Filter>
</CustomBuild>
@ -239,6 +256,10 @@
@ -246,6 +267,9 @@
</ItemGroup>
<ItemGroup>
<QtUic Include="aboutbox.ui">
<Filter>Form Files</Filter>
</QtUic>
<QtUic Include="calibrationwindow.ui">
<Filter>Form Files</Filter>
</QtUic>
@ -255,6 +279,9 @@
<QtUic Include="satellitesetup.ui">
<Filter>Form Files</Filter>
</QtUic>
<QtUic Include="transceiveradjustments.ui">
<Filter>Form Files</Filter>
</QtUic>
<QtUic Include="udpserversetup.ui">
<Filter>Form Files</Filter>
</QtUic>