Still working on Flex problem...

Adding debug to figure out why vfo_mode doesn't work with rigctl/rigctld
pull/224/head
mdblack98 2020-04-22 11:47:56 -05:00
rodzic dc29c94a76
commit 3feaddfd73
2 zmienionych plików z 70 dodań i 59 usunięć

Wyświetl plik

@ -240,7 +240,7 @@ declare_proto_rig(pause);
static struct test_table test_list[] =
{
{ 'F', "set_freq", ACTION(set_freq), ARG_IN, "Frequency" },
{ 'f', "get_freq", ACTION(get_freq), ARG_OUT, "Frequency" },
{ 'f', "get_freq", ACTION(get_freq), ARG_OUT, "Frequency", "VFO" },
{ 'M', "set_mode", ACTION(set_mode), ARG_IN, "Mode", "Passband" },
{ 'm', "get_mode", ACTION(get_mode), ARG_OUT, "Mode", "Passband" },
{ 'I', "set_split_freq", ACTION(set_split_freq), ARG_IN, "TX Frequency" },
@ -489,9 +489,10 @@ static int scanfc(FILE *fin, const char *format, void *p)
}
}
if (ret < 1) rig_debug(RIG_DEBUG_TRACE, "%s: ret=%d\n", __func__, ret);
if (ferror(fin)) rig_debug(RIG_DEBUG_TRACE, "%s: errno=%d, %s\n", __func__, errno, strerror(errno));
if (ret < 1) { rig_debug(RIG_DEBUG_TRACE, "%s: ret=%d\n", __func__, ret); }
if (ferror(fin)) { rig_debug(RIG_DEBUG_TRACE, "%s: errno=%d, %s\n", __func__, errno, strerror(errno)); }
return ret;
}
while (1);
@ -630,7 +631,8 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc,
{
if ((retcode = scanfc(fin, "%c", &cmd)) < 1)
{
rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#1? retcode=%d\n", __func__, retcode);
rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#1? retcode=%d\n", __func__,
retcode);
return -1;
}
@ -1598,6 +1600,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc,
*resp_sep_ptr);
}
rig_debug(RIG_DEBUG_ERR, "%s: vfo_mode=%d\n", __func__, vfo_mode);
retcode = (*cmd_entry->rig_routine)(my_rig,
fout,
fin,
@ -1613,10 +1616,10 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc,
p2 ? p2 : "",
p3 ? p3 : "");
if (retcode == RIG_EIO)
{
rig_debug(RIG_DEBUG_ERR, "%s: RIG_EIO?\n", __func__);
if (sync_cb) { sync_cb(0); } /* unlock if necessary */
return retcode;
@ -1664,6 +1667,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc,
fflush(fout);
rig_debug(RIG_DEBUG_TRACE, "%s: retcode=%d\n", __func__, retcode);
if (sync_cb) { sync_cb(0); } /* unlock if necessary */
if (retcode == -RIG_ENAVAIL)
@ -1919,7 +1923,7 @@ declare_proto_rig(get_freq)
if ((interactive && prompt) || (interactive && !prompt && ext_resp))
{
fprintf(fout, "VFO: "); /* i.e. "Frequency" */
fprintf(fout, "%s: ", cmd->arg2); /* i.e. "Frequency" */
}
fprintf(fout, "%s%c", rig_strvfo(rig->state.current_vfo), resp_sep);

Wyświetl plik

@ -489,6 +489,7 @@ int main(int argc, char *argv[])
case 'o':
vfo_mode++;
rig_debug(RIG_DEBUG_ERR, "%s: #0 vfo_mode=%d\n", __func__, vfo_mode);
break;
case 'v':
@ -527,6 +528,8 @@ int main(int argc, char *argv[])
}
}
rig_debug(RIG_DEBUG_ERR, "%s: #1 vfo_mode=%d\n", __func__, vfo_mode);
if (!vfo_mode)
{
printf("Recommend using --vfo switch for rigctld if client supports it\n");
@ -862,6 +865,7 @@ int main(int argc, char *argv[])
{
arg->rig = my_rig;
arg->clilen = sizeof(arg->cli_addr);
rig_debug(RIG_DEBUG_ERR, "%s: #2 vfo_mode=%d\n", __func__, vfo_mode);
arg->vfo_mode = vfo_mode;
arg->sock = accept(sock_listen,
(struct sockaddr *)&arg->cli_addr,
@ -1019,107 +1023,110 @@ void *handle_socket(void *arg)
do
{
rig_debug(RIG_DEBUG_ERR, "%s: vfo_mode=%d\n", __func__,
handle_data_arg->vfo_mode);
retcode = rigctl_parse(handle_data_arg->rig, fsockin, fsockout, NULL, 0,
sync_callback,
1, 0, handle_data_arg->vfo_mode, send_cmd_term, &ext_resp, &resp_sep);
if (retcode != 0) rig_debug(RIG_DEBUG_ERR, "%s: rigctl_parse retcode=%d\n", __func__, retcode);
if (retcode == -1) {
if (retcode != 0) { rig_debug(RIG_DEBUG_ERR, "%s: rigctl_parse retcode=%d\n", __func__, retcode); }
if (retcode == -1)
{
sleep(1);
continue;
}
if (ferror(fsockin) || ferror(fsockout))
{
rig_debug(RIG_DEBUG_ERR,"%s: socket error in=%d, out=%d\n", __func__, ferror(fsockin), ferror(fsockout));
retcode = 1;
rig_debug(RIG_DEBUG_ERR, "%s: socket error in=%d, out=%d\n", __func__,
ferror(fsockin), ferror(fsockout));
if (retcode == 1)
{
retcode = rig_close(my_rig);
rig_debug(RIG_DEBUG_ERR,"%s: rig_close retcode=%d\n", __func__, retcode);
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);
}
rig_debug(RIG_DEBUG_ERR, "%s: rig_open retcode=%d\n", __func__, retcode);
}
}
while (retcode == 0 || retcode == 2 || retcode == -RIG_ENAVAIL);
}
while (retcode == 0 || retcode == 2 || retcode == -RIG_ENAVAIL);
#ifdef HAVE_PTHREAD
#if 0
sync_callback(1);
sync_callback(1);
/* Release rig if there are no clients */
if (!--client_count)
{
rig_close(my_rig);
if (verbose > RIG_DEBUG_ERR)
{
printf("Closed rig model %d, '%s - no clients, will reopen for new clients'\n",
my_rig->caps->rig_model,
my_rig->caps->model_name);
}
}
sync_callback(0);
#endif
#else
/* Release rig if there are no clients */
if (!--client_count)
{
rig_close(my_rig);
if (verbose > RIG_DEBUG_ERR)
{
printf("Closed rig model %d, '%s - will reopen for new clients'\n",
printf("Closed rig model %d, '%s - no clients, will reopen for new clients'\n",
my_rig->caps->rig_model,
my_rig->caps->model_name);
}
}
sync_callback(0);
#endif
#else
rig_close(my_rig);
if (verbose > RIG_DEBUG_ERR)
{
printf("Closed rig model %d, '%s - will reopen for new clients'\n",
my_rig->caps->rig_model,
my_rig->caps->model_name);
}
#endif
if ((retcode = getnameinfo((struct sockaddr const *)&handle_data_arg->cli_addr,
handle_data_arg->clilen,
host,
sizeof(host),
serv,
sizeof(serv),
NI_NOFQDN))
< 0)
{
if ((retcode = getnameinfo((struct sockaddr const *)&handle_data_arg->cli_addr,
handle_data_arg->clilen,
host,
sizeof(host),
serv,
sizeof(serv),
NI_NOFQDN))
< 0)
{
rig_debug(RIG_DEBUG_WARN, "Peer lookup error: %s", gai_strerror(retcode));
}
rig_debug(RIG_DEBUG_WARN, "Peer lookup error: %s", gai_strerror(retcode));
}
rig_debug(RIG_DEBUG_VERBOSE,
"Connection closed from %s:%s\n",
host,
serv);
rig_debug(RIG_DEBUG_VERBOSE,
"Connection closed from %s:%s\n",
host,
serv);
handle_exit:
// for MINGW we close the handle before fclose
#ifdef __MINGW32__
retcode = closesocket(handle_data_arg->sock);
retcode = closesocket(handle_data_arg->sock);
if (retcode != 0) { rig_debug(RIG_DEBUG_ERR, "%s: fclose(fsockin) %s\n", __func__, strerror(retcode)); }
if (retcode != 0) { rig_debug(RIG_DEBUG_ERR, "%s: fclose(fsockin) %s\n", __func__, strerror(retcode)); }
#endif
fclose(fsockin);
fclose(fsockout);
fclose(fsockin);
fclose(fsockout);
// for everybody else we close the handle after fclose
#ifndef __MINGW32__
retcode = close(handle_data_arg->sock);
retcode = close(handle_data_arg->sock);
if (retcode != 0 && errno != EBADF) { rig_debug(RIG_DEBUG_ERR, "%s: close(handle_data_arg->sock) %s\n", __func__, strerror(errno)); }
if (retcode != 0 && errno != EBADF) { rig_debug(RIG_DEBUG_ERR, "%s: close(handle_data_arg->sock) %s\n", __func__, strerror(errno)); }
#endif
free(arg);
free(arg);
#ifdef HAVE_PTHREAD
pthread_exit(NULL);
pthread_exit(NULL);
#endif
return NULL;
return NULL;
}