Code optimization

Use has_get/set_func instead of rig cap
1.4.0
PianetaRadio 2024-02-25 20:52:04 +01:00 zatwierdzone przez GitHub
rodzic 7909e2a0de
commit 0ae620b732
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
3 zmienionych plików z 88 dodań i 39 usunięć

Wyświetl plik

@ -187,13 +187,23 @@ void DialogConfig::on_buttonBox_accepted()
configFile.setValue("autoPowerOn", ui->checkBox_autoPowerOn->isChecked()); configFile.setValue("autoPowerOn", ui->checkBox_autoPowerOn->isChecked());
} }
int printRigList(const struct rig_caps *rigCaps, void *data) //Load rig list from hamlib and save into file rig.lst #ifdef RIGCAPS_NOT_CONST //rig_caps is no longer constant starting from hamlib v.4.6
int printRigList(struct rig_caps *rigCaps, void *data) //Load rig list from hamlib and save into file rig.lst
{ {
if (data) return 0; if (data) return 0;
QTextStream stream(&rigFile); QTextStream stream(&rigFile);
stream << rigCaps->rig_model << " " << rigCaps->mfg_name << " " << rigCaps->model_name << "\n"; stream << rigCaps->rig_model << " " << rigCaps->mfg_name << " " << rigCaps->model_name << "\n";
return 1; return 1;
} }
#else
int printRigList(const struct rig_caps *rigCaps, void *data)
{
if (data) return 0;
QTextStream stream(&rigFile);
stream << rigCaps->rig_model << " " << rigCaps->mfg_name << " " << rigCaps->model_name << "\n";
return 1;
}
#endif
bool createRigFile() bool createRigFile()
{ {

Wyświetl plik

@ -1,6 +1,6 @@
/** /**
** This file is part of the CatRadio project. ** This file is part of the CatRadio project.
** Copyright 2022 Gianfranco Sordetti IZ8EWD <iz8ewd@pianetaradio.it>. ** Copyright 2022-2024 Gianfranco Sordetti IZ8EWD <iz8ewd@pianetaradio.it>.
** **
** This program is free software: you can redistribute it and/or modify ** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by ** it under the terms of the GNU General Public License as published by
@ -217,8 +217,8 @@ MainWindow::~MainWindow()
void MainWindow::guiInit() void MainWindow::guiInit()
{ {
//* Power on/off cap //* Power on/off cap
//if (rig_has_set_func(my_rig, RIG_FUNCTION_SET_POWERSTAT)==0) if (rig_has_set_func(my_rig, RIG_FUNCTION_SET_POWERSTAT)==0)
if (my_rig->caps->set_powerstat == NULL) //if (my_rig->caps->set_powerstat == NULL)
{ {
ui->pushButton_Power->setDisabled(true); //Power pushbutton disabled ui->pushButton_Power->setDisabled(true); //Power pushbutton disabled
rigCap.onoff = 0; rigCap.onoff = 0;
@ -230,8 +230,8 @@ void MainWindow::guiInit()
} }
//* PTT cap //* PTT cap
//if (rig_has_set_func(my_rig, RIG_FUNCTION_SET_PTT)==0) if (rig_has_set_func(my_rig, RIG_FUNCTION_SET_PTT)==0)
if (my_rig->caps->set_ptt == NULL) //if (my_rig->caps->set_ptt == NULL)
{ {
ui->pushButton_PTT->setDisabled(true); //PTT pushbutton disabled ui->pushButton_PTT->setDisabled(true); //PTT pushbutton disabled
rigCap.ptt = 0; rigCap.ptt = 0;
@ -268,16 +268,24 @@ void MainWindow::guiInit()
guiCmd.bwidthList = 1; //Command to populate BW combobox in guiUpdate() guiCmd.bwidthList = 1; //Command to populate BW combobox in guiUpdate()
} }
//* ANT comboBox
ui->comboBox_Ant->clear();
if (!rig_has_set_func(my_rig, RIG_FUNCTION_SET_ANT)) ui->comboBox_Ant->setEnabled(false);
//* AGC level comboBox //* AGC level comboBox
ui->comboBox_AGC->clear(); ui->comboBox_AGC->clear();
for (i = 0; i < HAMLIB_MAX_AGC_LEVELS && i < my_rig->caps->agc_level_count; i++) ui->comboBox_AGC->addItem(rig_stragclevel(my_rig->caps->agc_levels[i])); if (!rig_has_set_level(my_rig, RIG_LEVEL_AGC)) ui->comboBox_AGC->setEnabled(false);
if (i==0) //Print all levels if list is not specified else
{ {
ui->comboBox_AGC->addItem(rig_stragclevel(RIG_AGC_OFF)); for (i = 0; i < HAMLIB_MAX_AGC_LEVELS && i < my_rig->state.agc_level_count; i++) ui->comboBox_AGC->addItem(rig_stragclevel(my_rig->state.agc_levels[i]));
ui->comboBox_AGC->addItem(rig_stragclevel(RIG_AGC_AUTO)); if (i==0) //Print all levels if list is not specified
ui->comboBox_AGC->addItem(rig_stragclevel(RIG_AGC_FAST)); {
ui->comboBox_AGC->addItem(rig_stragclevel(RIG_AGC_MEDIUM)); ui->comboBox_AGC->addItem(rig_stragclevel(RIG_AGC_OFF));
ui->comboBox_AGC->addItem(rig_stragclevel(RIG_AGC_SLOW)); ui->comboBox_AGC->addItem(rig_stragclevel(RIG_AGC_AUTO));
ui->comboBox_AGC->addItem(rig_stragclevel(RIG_AGC_FAST));
ui->comboBox_AGC->addItem(rig_stragclevel(RIG_AGC_MEDIUM));
ui->comboBox_AGC->addItem(rig_stragclevel(RIG_AGC_SLOW));
}
} }
//* Meters & Sub-meter comboBox //* Meters & Sub-meter comboBox
@ -296,6 +304,7 @@ void MainWindow::guiInit()
//* Attenuator comboBox //* Attenuator comboBox
ui->comboBox_Att->clear(); ui->comboBox_Att->clear();
if (!rig_has_set_level(my_rig, RIG_LEVEL_ATT)) ui->comboBox_Att->setEnabled(false);
ui->comboBox_Att->addItem("0"); ui->comboBox_Att->addItem("0");
for (i = 0; i < HAMLIB_MAXDBLSTSIZ && my_rig->state.attenuator[i] != 0; i++) for (i = 0; i < HAMLIB_MAXDBLSTSIZ && my_rig->state.attenuator[i] != 0; i++)
{ {
@ -304,6 +313,7 @@ void MainWindow::guiInit()
//* Preamp comboBox //* Preamp comboBox
ui->comboBox_Preamp->clear(); ui->comboBox_Preamp->clear();
if (!rig_has_set_level(my_rig, RIG_LEVEL_PREAMP)) ui->comboBox_Preamp->setEnabled(false);
ui->comboBox_Preamp->addItem("0"); ui->comboBox_Preamp->addItem("0");
for (i = 0; i < HAMLIB_MAXDBLSTSIZ && my_rig->state.preamp[i] != 0; i++) for (i = 0; i < HAMLIB_MAXDBLSTSIZ && my_rig->state.preamp[i] != 0; i++)
{ {
@ -519,6 +529,7 @@ void MainWindow::guiUpdate()
{ {
for (i=0; i<HAMLIB_FRQRANGESIZ; i++) //Tx range list for (i=0; i<HAMLIB_FRQRANGESIZ; i++) //Tx range list
{ {
//qDebug()<<rigGet.freqMain<<my_rig->state.tx_range_list[i].startf<<my_rig->state.tx_range_list[i].endf;
if (rigGet.freqMain >= my_rig->state.tx_range_list[i].startf && rigGet.freqMain <= my_rig->state.tx_range_list[i].endf) break; if (rigGet.freqMain >= my_rig->state.tx_range_list[i].startf && rigGet.freqMain <= my_rig->state.tx_range_list[i].endf) break;
} }
rigGet.rangeListTxIndex = i; rigGet.rangeListTxIndex = i;
@ -537,7 +548,8 @@ void MainWindow::guiUpdate()
if (guiCmd.antList) if (guiCmd.antList)
{ {
ui->comboBox_Ant->clear(); ui->comboBox_Ant->clear();
if (my_rig->state.tx_range_list[rigGet.rangeListRxIndex].ant == RIG_ANT_NONE) ui->comboBox_Ant->addItem("NONE"); //RIG_ANT_NONE if (!rig_has_get_func(my_rig, RIG_FUNCTION_GET_ANT)) ui->comboBox_Ant->addItem("");
else if (my_rig->state.tx_range_list[rigGet.rangeListRxIndex].ant == RIG_ANT_NONE) ui->comboBox_Ant->addItem("NONE"); //RIG_ANT_NONE
else for (i=0; i < RIG_ANT_MAX; i++) else for (i=0; i < RIG_ANT_MAX; i++)
{ {
if (my_rig->state.tx_range_list[rigGet.rangeListRxIndex].ant & (1UL << i)) if (my_rig->state.tx_range_list[rigGet.rangeListRxIndex].ant & (1UL << i))
@ -804,7 +816,7 @@ void MainWindow::on_pushButton_Connect_toggled(bool checked)
rigCom.connected = 1; rigCom.connected = 1;
guiInit(); guiInit();
connectMsg = "Connected to "; connectMsg = "Connected to ";
connectMsg.append(my_rig->caps->model_name); connectMsg.append(my_rig->state.model_name);
if (rigCap.onoff == 0 || rigGet.onoff == RIG_POWER_ON || rigGet.onoff == RIG_POWER_UNKNOWN) if (rigCap.onoff == 0 || rigGet.onoff == RIG_POWER_ON || rigGet.onoff == RIG_POWER_UNKNOWN)
{ {
freq_t retfreq; freq_t retfreq;

Wyświetl plik

@ -90,7 +90,8 @@ RIG *RigDaemon::rigConnect(int *retcode)
if (*retcode != RIG_OK) return nullptr; //Rig not connected if (*retcode != RIG_OK) return nullptr; //Rig not connected
else //Rig connected else //Rig connected
{ {
if (my_rig->caps->get_powerstat != NULL) rig_get_powerstat(my_rig, &rigGet.onoff); if (rig_has_get_func(my_rig, RIG_FUNCTION_GET_POWERSTAT)) rig_get_powerstat(my_rig, &rigGet.onoff);
//if (my_rig->caps->get_powerstat != NULL) rig_get_powerstat(my_rig, &rigGet.onoff);
else rigGet.onoff = RIG_POWER_UNKNOWN; else rigGet.onoff = RIG_POWER_UNKNOWN;
return my_rig; return my_rig;
} }
@ -225,7 +226,7 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* VFO Exchange //* VFO Exchange
if (rigCmd.vfoXchange) if (rigCmd.vfoXchange)
{ {
if (my_rig->caps->vfo_ops & RIG_OP_XCHG) if (my_rig->state.vfo_ops & RIG_OP_XCHG)
{ {
mode_t tempMode = rigGet.mode; mode_t tempMode = rigGet.mode;
retcode = rig_vfo_op(my_rig, RIG_VFO_CURR, RIG_OP_XCHG); retcode = rig_vfo_op(my_rig, RIG_VFO_CURR, RIG_OP_XCHG);
@ -237,7 +238,7 @@ void RigDaemon::rigUpdate(RIG *my_rig)
} }
} }
else if (my_rig->caps->vfo_ops & RIG_OP_TOGGLE) else if (my_rig->state.vfo_ops & RIG_OP_TOGGLE)
{ {
freq_t tempFreq = rigGet.freqMain; freq_t tempFreq = rigGet.freqMain;
mode_t tempMode = rigGet.mode; mode_t tempMode = rigGet.mode;
@ -256,7 +257,7 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* VFO Copy //* VFO Copy
if (rigCmd.vfoCopy) if (rigCmd.vfoCopy)
{ {
if (my_rig->caps->vfo_ops & RIG_OP_CPY) if (my_rig->state.vfo_ops & RIG_OP_CPY)
{ {
retcode = rig_vfo_op(my_rig, RIG_VFO_CURR, RIG_OP_CPY); retcode = rig_vfo_op(my_rig, RIG_VFO_CURR, RIG_OP_CPY);
if (retcode == RIG_OK) if (retcode == RIG_OK)
@ -285,7 +286,7 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* Band Up //* Band Up
if (rigCmd.bandUp) if (rigCmd.bandUp)
{ {
if (my_rig->caps->vfo_ops & RIG_OP_BAND_UP) if (my_rig->state.vfo_ops & RIG_OP_BAND_UP)
{ {
retcode = rig_vfo_op(my_rig, RIG_VFO_CURR, RIG_OP_BAND_UP); retcode = rig_vfo_op(my_rig, RIG_VFO_CURR, RIG_OP_BAND_UP);
if (retcode == RIG_OK) indexCmd = 21; if (retcode == RIG_OK) indexCmd = 21;
@ -296,7 +297,7 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* Band Down //* Band Down
if (rigCmd.bandDown) if (rigCmd.bandDown)
{ {
if (my_rig->caps->vfo_ops & RIG_OP_BAND_DOWN) if (my_rig->state.vfo_ops & RIG_OP_BAND_DOWN)
{ {
retcode = rig_vfo_op(my_rig, RIG_VFO_CURR, RIG_OP_BAND_DOWN); retcode = rig_vfo_op(my_rig, RIG_VFO_CURR, RIG_OP_BAND_DOWN);
if (retcode == RIG_OK) indexCmd = 21; if (retcode == RIG_OK) indexCmd = 21;
@ -323,7 +324,7 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* Tune //* Tune
if (rigCmd.tune) if (rigCmd.tune)
{ {
if (my_rig->caps->vfo_ops & RIG_OP_TUNE) rig_vfo_op(my_rig, RIG_VFO_CURR, RIG_OP_TUNE); if (my_rig->state.vfo_ops & RIG_OP_TUNE) rig_vfo_op(my_rig, RIG_VFO_CURR, RIG_OP_TUNE);
rigCmd.tune = 0; rigCmd.tune = 0;
} }
@ -541,7 +542,8 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* Repeater shift //* Repeater shift
if (rigCmd.rptShift) if (rigCmd.rptShift)
{ {
if (my_rig->caps->set_rptr_shift) if (rig_has_set_func(my_rig, RIG_FUNCTION_SET_RPTR_SHIFT))
//if (my_rig->caps->set_rptr_shift)
{ {
retcode = rig_set_rptr_shift(my_rig, RIG_VFO_CURR, rigSet.rptShift); retcode = rig_set_rptr_shift(my_rig, RIG_VFO_CURR, rigSet.rptShift);
if (retcode == RIG_OK) rigGet.rptShift = rigSet.rptShift; if (retcode == RIG_OK) rigGet.rptShift = rigSet.rptShift;
@ -551,7 +553,8 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* Repeater offset //* Repeater offset
if (rigCmd.rptOffset) if (rigCmd.rptOffset)
{ {
if (my_rig->caps->set_rptr_offs) if (rig_has_set_func(my_rig, RIG_FUNCTION_SET_RPTR_OFFS))
//if (my_rig->caps->set_rptr_offs)
{ {
retcode = rig_set_rptr_offs(my_rig, RIG_VFO_CURR, rigSet.rptOffset); retcode = rig_set_rptr_offs(my_rig, RIG_VFO_CURR, rigSet.rptOffset);
if (retcode == RIG_OK) rigGet.rptOffset = rigSet.rptOffset; if (retcode == RIG_OK) rigGet.rptOffset = rigSet.rptOffset;
@ -651,55 +654,79 @@ void RigDaemon::rigUpdate(RIG *my_rig)
if ((indexCmd == 3 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0) rig_get_func(my_rig, RIG_VFO_CURR, RIG_FUNC_TUNER, &rigGet.tuner); if ((indexCmd == 3 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0) rig_get_func(my_rig, RIG_VFO_CURR, RIG_FUNC_TUNER, &rigGet.tuner);
//* Antenna //* Antenna
if ((indexCmd == 4 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0) rig_get_ant(my_rig, RIG_VFO_CURR, RIG_ANT_CURR, &retvalue, &rigGet.ant, &rigGet.antTx, &rigGet.antRx); if ((indexCmd == 4 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{
if (rig_has_get_func(my_rig, RIG_FUNCTION_GET_ANT)) rig_get_ant(my_rig, RIG_VFO_CURR, RIG_ANT_CURR, &retvalue, &rigGet.ant, &rigGet.antTx, &rigGet.antRx);
}
//* AGC //* AGC
if ((indexCmd == 5 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0) if ((indexCmd == 5 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{ {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_AGC, &retvalue); if (rig_has_get_level(my_rig, RIG_LEVEL_AGC))
rigGet.agc = levelagcvalue(retvalue.i); {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_AGC, &retvalue);
rigGet.agc = levelagcvalue(retvalue.i);
}
} }
//* Attenuator //* Attenuator
if ((indexCmd == 6 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0) if ((indexCmd == 6 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{ {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_ATT, &retvalue); if (rig_has_get_level(my_rig, RIG_LEVEL_ATT))
rigGet.att = retvalue.i; {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_ATT, &retvalue);
rigGet.att = retvalue.i;
}
} }
//* Preamp //* Preamp
if ((indexCmd == 7 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0) if ((indexCmd == 7 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{ {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_PREAMP, &retvalue); if (rig_has_get_level(my_rig, RIG_LEVEL_PREAMP))
rigGet.pre = retvalue.i; {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_PREAMP, &retvalue);
rigGet.pre = retvalue.i;
}
} }
//* RF power //* RF power
if ((indexCmd == 8 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0) if ((indexCmd == 8 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{ {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_RFPOWER, &retvalue); if (rig_has_get_level(my_rig, RIG_LEVEL_RFPOWER))
rigGet.rfPower = retvalue.f; {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_RFPOWER, &retvalue);
rigGet.rfPower = retvalue.f;
}
} }
//* RF gain //* RF gain
if ((indexCmd == 9 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0) if ((indexCmd == 9 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{ {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_RF, &retvalue); if (rig_has_get_level(my_rig, RIG_LEVEL_RF))
rigGet.rfGain = retvalue.f; {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_RF, &retvalue);
rigGet.rfGain = retvalue.f;
}
} }
//* AF gain //* AF gain
if ((indexCmd == 10 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0) if ((indexCmd == 10 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{ {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_AF, &retvalue); if (rig_has_get_level(my_rig, RIG_LEVEL_AF))
rigGet.afGain = retvalue.f; {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_AF, &retvalue);
rigGet.afGain = retvalue.f;
}
} }
//* Squelch //* Squelch
if ((indexCmd == 11 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0) if ((indexCmd == 11 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{ {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_SQL, &retvalue); if (rig_has_get_level(my_rig, RIG_LEVEL_SQL))
rigGet.squelch = retvalue.f; {
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_SQL, &retvalue);
rigGet.squelch = retvalue.f;
}
} }
//* MIC //* MIC