diff --git a/repeaterattributes.h b/repeaterattributes.h index e436ffa..b0389a2 100644 --- a/repeaterattributes.h +++ b/repeaterattributes.h @@ -27,5 +27,6 @@ enum rptAccessTxRx { }; Q_DECLARE_METATYPE(enum duplexMode) +Q_DECLARE_METATYPE(enum rptAccessTxRx) #endif // REPEATERATTRIBUTES_H diff --git a/repeatersetup.cpp b/repeatersetup.cpp index 6db969e..db8e56b 100644 --- a/repeatersetup.cpp +++ b/repeatersetup.cpp @@ -12,7 +12,6 @@ repeaterSetup::repeaterSetup(QWidget *parent) : // populate the DCS combo box: populateDTCS(); - } repeaterSetup::~repeaterSetup() @@ -209,19 +208,30 @@ void repeaterSetup::receiveDuplexMode(duplexMode dm) } } -void repeaterSetup::handleToneMode(rptAccessTxRx tmode) +void repeaterSetup::handleRptAccessMode(rptAccessTxRx tmode) { (void)tmode; } -void repeaterSetup::handleCTCSS(quint16 tone) +void repeaterSetup::handleTone(quint16 tone) { - (void)tone; + int tindex = ui->rptToneCombo->findData(tone); + ui->rptToneCombo->setCurrentIndex(tindex); } -void repeaterSetup::handleDCS(quint16 dcode) +void repeaterSetup::handleTSQL(quint16 tsql) { - (void)dcode; + //int tindex = ui->rptToneCombo->findData(tone); + //ui->rptToneCombo->setCurrentIndex(tindex); + (void)tsql; +} + +void repeaterSetup::handleDTCS(quint16 dcode, bool tinv, bool rinv) +{ + int dindex = ui->rptDTCSCombo->findData(dcode); + ui->rptDTCSCombo->setCurrentIndex(dindex); + ui->rptDTCSInvertTx->setChecked(tinv); + ui->rptDTCSInvertRx->setChecked(rinv); } void repeaterSetup::on_rptSimplexBtn_clicked() @@ -259,14 +269,23 @@ void repeaterSetup::on_rptReadRigBtn_clicked() void repeaterSetup::on_rptToneCombo_activated(int index) { - quint16 ctcss=0; - ctcss = ui->rptToneCombo->itemData(index).toUInt(); - emit setCTCSS(ctcss); + quint16 tsql=0; + tsql = (quint16)ui->rptToneCombo->itemData(index).toUInt(); + emit setTSQL(tsql); } void repeaterSetup::on_rptDTCSCombo_activated(int index) { quint16 dcode=0; - dcode = ui->rptDTCSCombo->itemData(index).toUInt(); - emit setDCS(dcode); + bool tinv = ui->rptDTCSInvertTx->isChecked(); + bool rinv = ui->rptDTCSInvertRx->isChecked(); + dcode = (quint16)ui->rptDTCSCombo->itemData(index).toUInt(); + emit setDTCS(dcode, tinv, rinv); +} + +void repeaterSetup::on_debugBtn_clicked() +{ + emit getTSQL(); + //emit getTone(); + //emit getDTCS(); } diff --git a/repeatersetup.h b/repeatersetup.h index f7c0ef8..18d14ae 100644 --- a/repeatersetup.h +++ b/repeatersetup.h @@ -20,34 +20,33 @@ public: signals: void getDuplexMode(); void setDuplexMode(duplexMode dm); - void setCTCSS(quint16 tone); - void setDCS(quint16 dcode); - void setToneMode(rptAccessTxRx tmode); - void getToneMode(); + void setTone(quint16 tone); + void setTSQL(quint16 tsql); + void setDTCS(quint16 dcode, bool tinv, bool rinv); + void getTone(); + void getTSQL(); + void getDTCS(); + void setRptAccessMode(rptAccessTxRx tmode); + void getRptAccessMode(); public slots: void receiveDuplexMode(duplexMode dm); - void handleToneMode(rptAccessTxRx tmode); - void handleCTCSS(quint16 tone); - void handleDCS(quint16 dcode); + void handleRptAccessMode(rptAccessTxRx tmode); + void handleTone(quint16 tone); + void handleTSQL(quint16 tsql); + void handleDTCS(quint16 dcscode, bool tinv, bool rinv); private slots: - - void on_rptSimplexBtn_clicked(); - void on_rptDupPlusBtn_clicked(); - void on_rptDupMinusBtn_clicked(); - void on_rptAutoBtn_clicked(); - void on_rptReadRigBtn_clicked(); - void on_rptToneCombo_activated(int index); - void on_rptDTCSCombo_activated(int index); + void on_debugBtn_clicked(); + private: Ui::repeaterSetup *ui; diff --git a/repeatersetup.ui b/repeatersetup.ui index eaef7eb..cf17876 100644 --- a/repeatersetup.ui +++ b/repeatersetup.ui @@ -40,6 +40,13 @@ + + + + Debug + + + diff --git a/rigcommander.cpp b/rigcommander.cpp index 34414c6..729e2e5 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -86,14 +86,6 @@ void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs) setup(); // --- - /* is this used for anything now??? - this->ip = ip; - this->cport = cport; - this->sport = sport; - this->aport = aport; - this->username = username; - this->password = password; - */ if (udp == Q_NULLPTR) { udp = new udpHandler(prefs); @@ -651,8 +643,133 @@ void rigCommander::getDuplexMode() prepDataAndSend(payload); } +void rigCommander::getTransmitFrequency() +{ + QByteArray payload; + payload.setRawData("\x1C\x03", 2); + prepDataAndSend(payload); +} +void rigCommander::setTone(quint16 tone) +{ + freqt f; + f.Hz = tone; + QByteArray fenc = makeFreqPayload(f); + qDebug() << __func__ << "tone encoded: "; + printHex(fenc); + QByteArray payload; + payload.setRawData("\x1B\x00", 2); + payload.append(fenc); + //prepDataAndSend(payload); +} + +void rigCommander::setTSQL(quint16 tsql) +{ + freqt f; + f.Hz = tsql; + QByteArray fenc = makeFreqPayload(f); + qDebug() << __func__ << "tsql encoded: "; + printHex(fenc); + + QByteArray payload; + payload.setRawData("\x1B\x00", 2); + payload.append(fenc); + //prepDataAndSend(payload); +} + +void rigCommander::setDTCS(quint16 dcscode, bool tinv, bool rinv) +{ + freqt f; + f.Hz = dcscode; + QByteArray denc = makeFreqPayload(f); + qDebug() << __func__ << "dtcs encoded: "; + printHex(denc); + + (void)tinv; + (void)rinv; + + QByteArray payload; + payload.setRawData("\x1B\x02", 2); + payload.append(denc); + //prepDataAndSend(payload); +} + +void rigCommander::getTone() +{ + QByteArray payload; + payload.setRawData("\x1B\x00", 2); + prepDataAndSend(payload); +} + +void rigCommander::getTSQL() +{ + QByteArray payload; + payload.setRawData("\x1B\x01", 2); + prepDataAndSend(payload); +} + +void rigCommander::getDTCS() +{ + QByteArray payload; + payload.setRawData("\x1B\x02", 2); + prepDataAndSend(payload); +} + +void rigCommander::getRptAccessMode() +{ + QByteArray payload; + payload.setRawData("\x16\x5D", 2); + prepDataAndSend(payload); +} + +void rigCommander::setRptAccessMode(rptAccessTxRx ratr) +{ + QByteArray payload; + payload.setRawData("\x16\x5D", 2); + payload.append((unsigned char)ratr); + prepDataAndSend(payload); +} + +void rigCommander::setIPP(bool enabled) +{ + QByteArray payload; + payload.setRawData("\x16\x65", 2); + if(enabled) + { + payload.append("\x01"); + } else { + payload.append("\x00"); + } + prepDataAndSend(payload); +} + +void rigCommander::getIPP() +{ + QByteArray payload; + payload.setRawData("\x16\x65", 2); + prepDataAndSend(payload); +} + +void rigCommander::setSatelliteMode(bool enabled) +{ + QByteArray payload; + payload.setRawData("\x16\x5A", 2); + if(enabled) + { + payload.append("\x01"); + } else { + payload.append("\x00"); + } + prepDataAndSend(payload); +} + +void rigCommander::getSatelliteMode() +{ + QByteArray payload; + payload.setRawData("\x16\x5A", 2); + prepDataAndSend(payload); +} void rigCommander::getPTT() { diff --git a/rigcommander.h b/rigcommander.h index 70786c7..0c17b93 100644 --- a/rigcommander.h +++ b/rigcommander.h @@ -54,6 +54,7 @@ public slots: void commSetup(unsigned char rigCivAddr, udpPreferences prefs); void closeComm(); + // Spectrum: void enableSpectOutput(); void disableSpectOutput(); void enableSpectrumDisplay(); @@ -70,20 +71,38 @@ public slots: void setScopeEdge(char edge); void getScopeEdge(); void getScopeMode(); + + // Frequency, Mode, PTT: void setFrequency(freqt freq); - void setMode(unsigned char mode, unsigned char modeFilter); void getFrequency(); - void getBandStackReg(char band, char regCode); + void setMode(unsigned char mode, unsigned char modeFilter); void getMode(); - void getPTT(); - void setPTT(bool pttOn); void setDataMode(bool dataOn); void getDataMode(); + void getBandStackReg(char band, char regCode); + + // PTT and ATU: + void getPTT(); + void setPTT(bool pttOn); + void startATU(); + void setATU(bool enabled); + void getATUStatus(); + + // Repeater: void setDuplexMode(duplexMode dm); void getDuplexMode(); + void getTransmitFrequency(); + void setTone(quint16 tone); + void setTSQL(quint16 tsql); + void getTSQL(); + void getTone(); + void setDTCS(quint16 dcscode, bool tinv, bool rinv); + void getDTCS(); + void setRptAccessMode(rptAccessTxRx ratr); + void getRptAccessMode(); + // Get Levels: void getLevels(); // all supported levels - void getRfGain(); void getAfGain(); void getSql(); @@ -97,18 +116,10 @@ public slots: void getLANGain(); void getACCGain(); void getACCGain(unsigned char ab); + void getModInput(bool dataOn); + void getModInputLevel(rigInput input); - - void getSMeter(); - void getRFPowerMeter(); - void getSWRMeter(); - void getALCMeter(); - void getCompReductionMeter(); - void getVdMeter(); - void getIDMeter(); - - void getMeters(meterKind meter); // all supported meters per transmit or receive - + // Set Levels: void setSquelch(unsigned char level); void setRfGain(unsigned char level); void setAfGain(unsigned char level); @@ -118,57 +129,109 @@ public slots: void setLANGain(unsigned char gain); void setACCGain(unsigned char gain); void setACCGain(unsigned char gain, unsigned char ab); - void setCompLevel(unsigned char compLevel); void setMonitorLevel(unsigned char monitorLevel); void setVoxGain(unsigned char gain); void setAntiVoxGain(unsigned char gain); - - void getModInput(bool dataOn); void setModInput(rigInput input, bool dataOn); - void setModInputLevel(rigInput input, unsigned char level); - void getModInputLevel(rigInput input); - void startATU(); - void setATU(bool enabled); - void getATUStatus(); + // NB, NR, IP+: + void setIPP(bool enabled); + void getIPP(); + // Maybe put some of these into a struct? + // setReceiverDSPParam(dspParam param); + //void getNRLevel(); + //void getNREnabled(); + //void getNBLevel(); + //void getNBEnabled(); + //void getNotchEnabled(); + //void getNotchLevel(); + //void setNotchEnabled(bool enabled); + //void setNotchLevel(unsigned char level); + + + // Meters: + void getSMeter(); + void getRFPowerMeter(); + void getSWRMeter(); + void getALCMeter(); + void getCompReductionMeter(); + void getVdMeter(); + void getIDMeter(); + void getMeters(meterKind meter); // all supported meters per transmit or receive + + // Rig ID and CIV: void getRigID(); void findRigs(); void setCIVAddr(unsigned char civAddr); + + // Calibration: void getRefAdjustCourse(); void getRefAdjustFine(); void setRefAdjustCourse(unsigned char level); void setRefAdjustFine(unsigned char level); + + // Satellite: + void setSatelliteMode(bool enabled); + void getSatelliteMode(); + + // UDP: void handleNewData(const QByteArray& data); void receiveAudioData(const audioPacket& data); void handleSerialPortError(const QString port, const QString errorText); - void handleStatusUpdate(const QString text); void changeLatency(const quint16 value); + void dataFromServer(QByteArray data); + + // Speech: void sayFrequency(); void sayMode(); void sayAll(); + + // Housekeeping: + void handleStatusUpdate(const QString text); void getDebug(); - void dataFromServer(QByteArray data); signals: + // Communication: void commReady(); - void haveSpectrumData(QByteArray spectrum, double startFreq, double endFreq); // pass along data to UI - void haveRigID(rigCapabilities rigCaps); - void discoveredRigID(rigCapabilities rigCaps); void haveSerialPortError(const QString port, const QString errorText); void haveStatusUpdate(const QString text); - void haveFrequency(freqt freqStruct); - void haveMode(unsigned char mode, unsigned char filter); - void haveDataMode(bool dataModeEnabled); - void haveDuplexMode(duplexMode); - void haveBandStackReg(float freq, char mode, bool dataOn); + void dataForComm(const QByteArray &outData); + + // UDP: + void haveChangeLatency(quint16 value); + void haveDataForServer(QByteArray outData); + void haveAudioData(audioPacket data); + void initUdpHandler(); + void haveSetVolume(unsigned char level); + + // Spectrum: + void haveSpectrumData(QByteArray spectrum, double startFreq, double endFreq); // pass along data to UI void haveSpectrumBounds(); void haveScopeSpan(char span); void haveSpectrumMode(spectrumMode spectmode); void haveScopeEdge(char edge); void haveSpectrumRefLevel(int level); + // Rig ID: + void haveRigID(rigCapabilities rigCaps); + void discoveredRigID(rigCapabilities rigCaps); + + // Frequency, Mode, data, and bandstack: + void haveFrequency(freqt freqStruct); + void haveMode(unsigned char mode, unsigned char filter); + void haveDataMode(bool dataModeEnabled); + void haveBandStackReg(float freq, char mode, bool dataOn); + + // Repeater: + void haveDuplexMode(duplexMode); + void haveRptAccessMode(rptAccessTxRx ratr); + void haveTone(quint16 tone); + void haveTSQL(quint16 tsql); + void haveDTCS(quint16 dcscode); + + // Levels: void haveRfGain(unsigned char level); void haveAfGain(unsigned char level); void haveSql(unsigned char level); @@ -179,12 +242,14 @@ signals: void haveVoxGain(unsigned char gain); void haveAntiVoxGain(unsigned char gain); + // Modulation source and gain: void haveModInput(rigInput input, bool isData); void haveLANGain(unsigned char gain); void haveUSBGain(unsigned char gain); void haveACCGain(unsigned char gain, unsigned char ab); void haveModSrcGain(rigInput input, unsigned char gain); + // Meters: void haveMeter(meterKind meter, unsigned char level); void haveSMeter(unsigned char level); void haveRFMeter(unsigned char level); @@ -194,19 +259,17 @@ signals: void haveVdMeter(unsigned char voltage); void haveIdMeter(unsigned char current); - void thing(); + // Calibration: void haveRefAdjustCourse(unsigned char level); void haveRefAdjustFine(unsigned char level); - void dataForComm(const QByteArray &outData); - void getMoreDebug(); - void finished(); + + // PTT and ATU: void havePTTStatus(bool pttOn); void haveATUStatus(unsigned char status); - void haveChangeLatency(quint16 value); - void haveDataForServer(QByteArray outData); - void haveAudioData(audioPacket data); - void initUdpHandler(); - void haveSetVolume(unsigned char level); + + // Housekeeping: + void getMoreDebug(); + void finished(); private: void setup(); @@ -276,9 +339,8 @@ private: bool foundRig; double frequencyMhz; - unsigned char civAddr; // IC-7300: 0x94 is default = 148decimal + unsigned char civAddr; unsigned char incomingCIVAddr; // place to store the incoming CIV. - //const unsigned char compCivAddr = 0xE1; // 0xE1 is new default, 0xE0 was before. bool pttAllowed; QString rigSerialPort; diff --git a/wfmain.cpp b/wfmain.cpp index 9bb5fe1..66dc49b 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -368,6 +368,7 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent qRegisterMetaType(); qRegisterMetaType(); + qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); @@ -395,6 +396,16 @@ wfmain::wfmain(const QString serialPortCL, const QString hostCL, QWidget *parent connect(rpt, SIGNAL(getDuplexMode()), rig, SLOT(getDuplexMode())); connect(rpt, SIGNAL(setDuplexMode(duplexMode)), rig, SLOT(setDuplexMode(duplexMode))); connect(rig, SIGNAL(haveDuplexMode(duplexMode)), rpt, SLOT(receiveDuplexMode(duplexMode))); + connect(rpt, SIGNAL(getTone()), rig, SLOT(getTone())); + connect(rpt, SIGNAL(getTSQL()), rig, SLOT(getTSQL())); + connect(rpt, SIGNAL(getDTCS()), rig, SLOT(getDTCS())); + connect(rpt, SIGNAL(getRptAccessMode()), rig, SLOT(getRptAccessMode())); + connect(rpt, SIGNAL(setRptAccessMode(rptAccessTxRx)), rig, SLOT(setRptAccessMode(rptAccessTxRx))); + connect(rig, SIGNAL(haveTone(quint16)), rpt, SLOT(handleTone(quint16))); + connect(rig, SIGNAL(haveTSQL(quint16)), rpt, SLOT(handleTSQL(quint16))); + connect(rig, SIGNAL(haveDTCS(quint16)), rpt, SLOT(handleDTCS(quint16,bool,bool))); + connect(rig, SIGNAL(haveRptAccessMode(rptAccessTxRx)), rpt, SLOT(handleRptAccessMode(rptAccessTxRx))); + connect(this, SIGNAL(getDuplexMode()), rig, SLOT(getDuplexMode())); //connect(this, SIGNAL(setDuplexMode(duplexMode)), rig, SLOT(setDuplexMode(duplexMode))); diff --git a/wfmain.ui b/wfmain.ui index fa1a5d2..7f52bc1 100644 --- a/wfmain.ui +++ b/wfmain.ui @@ -6,7 +6,7 @@ 0 0 - 810 + 905 582 @@ -2050,7 +2050,7 @@ 0 0 - 810 + 905 22 @@ -2074,6 +2074,5 @@ -