Make icom_rig_open() fail in case rig_set_powerstat() failure is auto_power_on is requested. Exit rigctld client loop if process is interrupted.

pull/943/head
Mikael Nousiainen 2022-01-23 11:49:16 +02:00
rodzic 1f428c8d95
commit 664604f7b6
2 zmienionych plików z 36 dodań i 23 usunięć

Wyświetl plik

@ -942,20 +942,31 @@ icom_rig_open(RIG *rig)
retry_open:
retval_echo = icom_get_usb_echo_off(rig);
rig_debug(RIG_DEBUG_TRACE, "%s: retval_echo=%d\n", __func__, retval_echo);
rig_debug(RIG_DEBUG_TRACE, "%s: echo status result=%d\n", __func__, retval_echo);
if (retval_echo == 0 || retval_echo == 1) { retval = RIG_OK; }
else { retval = retval_echo; }
if (retval_echo == 0 || retval_echo == 1)
{
retval = RIG_OK;
}
else
{
retval = retval_echo;
}
if (retval == RIG_OK) // then we know our echo status
{
rig_debug(RIG_DEBUG_TRACE, "%s: echo status known, getting freq\n", __func__);
rig_debug(RIG_DEBUG_TRACE, "%s: echo status known, getting frequency\n", __func__);
rs->rigport.retry = 0;
rig->state.current_vfo = icom_current_vfo(rig);
// some rigs like the IC7100 still echo when in standby
// so asking for freq now should timeout if such a rig
freq_t tfreq;
retval = rig_get_freq(rig, RIG_VFO_CURR, &tfreq);
if (retval != RIG_OK)
{
rig_debug(RIG_DEBUG_ERR, "%s: rig error getting frequency retry=%d, err=%s\n",
__func__, retry_flag, rigerror(retval));
}
}
else
{
@ -970,33 +981,35 @@ retry_open:
// this is only a fatal error if powerstat is implemented
// if not implemented than we're at an error here
if (retval != RIG_OK && retval != RIG_ENIMPL && retval != RIG_ENAVAIL)
if (retval != RIG_OK)
{
rig_debug(RIG_DEBUG_WARN, "%s: unexpected retval here: %s\n",
__func__, rigerror(retval));
rig_debug(RIG_DEBUG_WARN, "%s: rig_set_powerstat failed: =%s\n", __func__,
rigerror(retval));
rs->rigport.retry = retry_save;
rig_debug(RIG_DEBUG_ERR, "%s: rig_set_powerstat failed: %s\n", __func__,
rigerror(retval));
if (retval == RIG_ENIMPL || retval == RIG_ENAVAIL)
{
rig_debug(RIG_DEBUG_ERR, "%s: rig_set_powerstat not implemented for rig\n", __func__);
RETURNFUNC(-RIG_ECONF);
}
RETURNFUNC(retval);
}
if (retval == RIG_OK)
{
// Now that we're powered up let's try again
retval_echo = icom_get_usb_echo_off(rig);
// Now that we're powered up let's try again
retval_echo = icom_get_usb_echo_off(rig);
if (retval_echo != 0 && retval_echo != 1)
{
rig_debug(RIG_DEBUG_ERR, "%s: Unable to determine USB echo status\n", __func__);
rs->rigport.retry = retry_save;
}
if (retval_echo != 0 && retval_echo != 1)
{
rig_debug(RIG_DEBUG_ERR, "%s: Unable to determine USB echo status\n", __func__);
rs->rigport.retry = retry_save;
RETURNFUNC(retval_echo);
}
}
else if (retval != RIG_OK)
{
// didnt' ask for power on so let's retry one more time
rig_debug(RIG_DEBUG_ERR, "%s: rig error getting frequency retry=%d, err=%s\n",
__func__, retry_flag, rigerror(retval));
if (retry_flag)
{

Wyświetl plik

@ -1188,10 +1188,10 @@ void *handle_socket(void *arg)
}
mutex_rigctld(0);
}
while (!rig_opened && retry-- > 0 && retcode != RIG_OK);
while (!ctrl_c && !rig_opened && retry-- > 0 && retcode != RIG_OK);
}
}
while (retcode == RIG_OK || RIG_IS_SOFT_ERRCODE(-retcode));
while (!ctrl_c && (retcode == RIG_OK || RIG_IS_SOFT_ERRCODE(-retcode)));
#ifdef HAVE_PTHREAD
#if 0