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());
}
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;
QTextStream stream(&rigFile);
stream << rigCaps->rig_model << " " << rigCaps->mfg_name << " " << rigCaps->model_name << "\n";
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()
{

Wyświetl plik

@ -1,6 +1,6 @@
/**
** 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
** it under the terms of the GNU General Public License as published by
@ -217,8 +217,8 @@ MainWindow::~MainWindow()
void MainWindow::guiInit()
{
//* Power on/off cap
//if (rig_has_set_func(my_rig, RIG_FUNCTION_SET_POWERSTAT)==0)
if (my_rig->caps->set_powerstat == NULL)
if (rig_has_set_func(my_rig, RIG_FUNCTION_SET_POWERSTAT)==0)
//if (my_rig->caps->set_powerstat == NULL)
{
ui->pushButton_Power->setDisabled(true); //Power pushbutton disabled
rigCap.onoff = 0;
@ -230,8 +230,8 @@ void MainWindow::guiInit()
}
//* PTT cap
//if (rig_has_set_func(my_rig, RIG_FUNCTION_SET_PTT)==0)
if (my_rig->caps->set_ptt == NULL)
if (rig_has_set_func(my_rig, RIG_FUNCTION_SET_PTT)==0)
//if (my_rig->caps->set_ptt == NULL)
{
ui->pushButton_PTT->setDisabled(true); //PTT pushbutton disabled
rigCap.ptt = 0;
@ -268,16 +268,24 @@ void MainWindow::guiInit()
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
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 (i==0) //Print all levels if list is not specified
if (!rig_has_set_level(my_rig, RIG_LEVEL_AGC)) ui->comboBox_AGC->setEnabled(false);
else
{
ui->comboBox_AGC->addItem(rig_stragclevel(RIG_AGC_OFF));
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));
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]));
if (i==0) //Print all levels if list is not specified
{
ui->comboBox_AGC->addItem(rig_stragclevel(RIG_AGC_OFF));
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
@ -296,6 +304,7 @@ void MainWindow::guiInit()
//* Attenuator comboBox
ui->comboBox_Att->clear();
if (!rig_has_set_level(my_rig, RIG_LEVEL_ATT)) ui->comboBox_Att->setEnabled(false);
ui->comboBox_Att->addItem("0");
for (i = 0; i < HAMLIB_MAXDBLSTSIZ && my_rig->state.attenuator[i] != 0; i++)
{
@ -304,6 +313,7 @@ void MainWindow::guiInit()
//* Preamp comboBox
ui->comboBox_Preamp->clear();
if (!rig_has_set_level(my_rig, RIG_LEVEL_PREAMP)) ui->comboBox_Preamp->setEnabled(false);
ui->comboBox_Preamp->addItem("0");
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
{
//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;
}
rigGet.rangeListTxIndex = i;
@ -537,7 +548,8 @@ void MainWindow::guiUpdate()
if (guiCmd.antList)
{
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++)
{
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;
guiInit();
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)
{
freq_t retfreq;

Wyświetl plik

@ -90,7 +90,8 @@ RIG *RigDaemon::rigConnect(int *retcode)
if (*retcode != RIG_OK) return nullptr; //Rig not 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;
return my_rig;
}
@ -225,7 +226,7 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* VFO Exchange
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;
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;
mode_t tempMode = rigGet.mode;
@ -256,7 +257,7 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* VFO Copy
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);
if (retcode == RIG_OK)
@ -285,7 +286,7 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* Band Up
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);
if (retcode == RIG_OK) indexCmd = 21;
@ -296,7 +297,7 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* Band Down
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);
if (retcode == RIG_OK) indexCmd = 21;
@ -323,7 +324,7 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* 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;
}
@ -541,7 +542,8 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* Repeater shift
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);
if (retcode == RIG_OK) rigGet.rptShift = rigSet.rptShift;
@ -551,7 +553,8 @@ void RigDaemon::rigUpdate(RIG *my_rig)
//* Repeater offset
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);
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);
//* 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
if ((indexCmd == 5 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_AGC, &retvalue);
rigGet.agc = levelagcvalue(retvalue.i);
if (rig_has_get_level(my_rig, RIG_LEVEL_AGC))
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_AGC, &retvalue);
rigGet.agc = levelagcvalue(retvalue.i);
}
}
//* Attenuator
if ((indexCmd == 6 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_ATT, &retvalue);
rigGet.att = retvalue.i;
if (rig_has_get_level(my_rig, RIG_LEVEL_ATT))
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_ATT, &retvalue);
rigGet.att = retvalue.i;
}
}
//* Preamp
if ((indexCmd == 7 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_PREAMP, &retvalue);
rigGet.pre = retvalue.i;
if (rig_has_get_level(my_rig, RIG_LEVEL_PREAMP))
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_PREAMP, &retvalue);
rigGet.pre = retvalue.i;
}
}
//* RF power
if ((indexCmd == 8 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_RFPOWER, &retvalue);
rigGet.rfPower = retvalue.f;
if (rig_has_get_level(my_rig, RIG_LEVEL_RFPOWER))
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_RFPOWER, &retvalue);
rigGet.rfPower = retvalue.f;
}
}
//* RF gain
if ((indexCmd == 9 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_RF, &retvalue);
rigGet.rfGain = retvalue.f;
if (rig_has_get_level(my_rig, RIG_LEVEL_RF))
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_RF, &retvalue);
rigGet.rfGain = retvalue.f;
}
}
//* AF gain
if ((indexCmd == 10 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_AF, &retvalue);
rigGet.afGain = retvalue.f;
if (rig_has_get_level(my_rig, RIG_LEVEL_AF))
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_AF, &retvalue);
rigGet.afGain = retvalue.f;
}
}
//* Squelch
if ((indexCmd == 11 && !rigGet.ptt && rigCom.fullPoll) || indexCmd == 0)
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_SQL, &retvalue);
rigGet.squelch = retvalue.f;
if (rig_has_get_level(my_rig, RIG_LEVEL_SQL))
{
rig_get_level(my_rig, RIG_VFO_CURR, RIG_LEVEL_SQL, &retvalue);
rigGet.squelch = retvalue.f;
}
}
//* MIC