diff --git a/tests/rigctld.c b/tests/rigctld.c index 88cace9a7..0eb629007 100644 --- a/tests/rigctld.c +++ b/tests/rigctld.c @@ -83,7 +83,6 @@ /* * Reminder: when adding long options, * keep up to date SHORT_OPTIONS, usage()'s output and man page. thanks. - * NB: do NOT use -W since it's reserved by POSIX. * TODO: add an option to read from a file */ #define SHORT_OPTIONS "m:r:p:d:P:D:s:c:T:t:C:W:x:z:lLuovhVZ" @@ -108,6 +107,7 @@ static struct option long_options[] = {"help", 0, 0, 'h'}, {"version", 0, 0, 'V'}, {"twiddle_timeout", 1, 0, 'W'}, + {"twiddle_rit" , 0, 0, 'Y'}, {"uplink", 1, 0, 'x'}, {"debug-time-stamps", 0, 0, 'Z'}, {0, 0, 0, 0} @@ -249,6 +249,7 @@ int main(int argc, char *argv[]) int sock_listen; int reuseaddr = 1; int twiddle = 0; + int twiddle_rit = 0; int uplink = 0; char host[NI_MAXHOST]; char serv[NI_MAXSERV]; @@ -526,6 +527,10 @@ int main(int argc, char *argv[]) twiddle = atoi(optarg); break; + case 'Y': + twiddle_rit=1; + break; + case 'x': if (!optarg) { @@ -586,9 +591,10 @@ int main(int argc, char *argv[]) } my_rig->state.twiddle_timeout = twiddle; + my_rig->state.twiddle_rit = twiddle_rit; my_rig->state.uplink = uplink; - rig_debug(RIG_DEBUG_TRACE, "%s: twiddle=%d, uplink=%d\n", __func__, - my_rig->state.twiddle_timeout, my_rig->state.uplink); + rig_debug(RIG_DEBUG_TRACE, "%s: twiddle=%d, uplink=%d, twiddle_rit=%d\n", __func__, + my_rig->state.twiddle_timeout, my_rig->state.uplink, my_rig->state.twiddle_rit); /* * ex: RIG_PTT_PARALLEL and /dev/parport0 @@ -1097,16 +1103,20 @@ void *handle_socket(void *arg) if (ferror(fsockout)) fsockout = get_fsockout(handle_data_arg); rig_debug(RIG_DEBUG_ERR, "%s: socket error in=%d, out=%d\n", __func__, ferror(fsockin), ferror(fsockout)); - - do + // if we get an error from the rig we'll try to repoen + // that may fix things when COM ports drop and such + int retry=4; + if (retcode == 2) { - retcode = rig_close(my_rig); - hl_usleep(1000 * 1000); - rig_debug(RIG_DEBUG_ERR, "%s: rig_close retcode=%d\n", __func__, retcode); - retcode = rig_open(my_rig); - rig_debug(RIG_DEBUG_ERR, "%s: rig_open retcode=%d\n", __func__, retcode); + do + { + retcode = rig_close(my_rig); + hl_usleep(1000 * 1000); + rig_debug(RIG_DEBUG_ERR, "%s: rig_close retcode=%d\n", __func__, retcode); + retcode = rig_open(my_rig); + rig_debug(RIG_DEBUG_ERR, "%s: rig_open retcode=%d\n", __func__, retcode); + } while (retry-- > 0 && retcode != RIG_OK); } - while (retcode != RIG_OK); } } while (retcode == 0 || retcode == 2 || retcode == -RIG_ENAVAIL); @@ -1213,6 +1223,7 @@ void usage(void) " -o, --vfo do not default to VFO_CURR, require extra vfo arg\n" " -v, --verbose set verbose mode, cumulative (-v to -vvvvv)\n" " -W, --twiddle_timeout timeout after detecting vfo manual change\n" + " -W, --twiddle_rit suppress VFOB getfreq so RIT can be twiddled" " -x, --uplink set uplink get_freq ignore, 1=Sub, 2=Main\n" " -Z, --debug-time-stamps enable time stamps for debug messages\n" " -h, --help display this help and exit\n"