added --serial-speed and --set-conf options, plus misc fixes

git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@793 7ae35d74-ebe9-4afe-98af-79ac388436b8
Hamlib-1.1.3
Stéphane Fillod, F8CFE 2001-12-26 23:33:37 +00:00
rodzic f81832418a
commit 8b0b686e0d
2 zmienionych plików z 67 dodań i 7 usunięć

Wyświetl plik

@ -55,9 +55,15 @@ Use \fBtype\fP device as the kind of the Push-To-Talk device to operate on.
Use \fBtype\fP device as the kind of the Data Carrier Detect device Use \fBtype\fP device as the kind of the Data Carrier Detect device
to operate on. to operate on.
.TP .TP
.B \-s, --serial-speed=baud
Set serial speed to \fBbaud\fP rate. Uses maximal rig speed as default.
.TP
.B \-c, --civaddr=id .B \-c, --civaddr=id
Use \fBid\fP as the CI-V address to communicate with the rig. Only for Icom rigs. Use \fBid\fP as the CI-V address to communicate with the rig. Only for Icom rigs.
.TP .TP
.B \-C, \-\-set\-conf=parm=val[,parm=val]*
Set config parameter.
.TP
.B \-v, \-\-verbose .B \-v, \-\-verbose
Set verbose mode, cumulative. Set verbose mode, cumulative.
.TP .TP

Wyświetl plik

@ -4,7 +4,7 @@
* This program let programs control a radio through * This program let programs control a radio through
* the mean of RPC services using Hamlib. * the mean of RPC services using Hamlib.
* *
* $Id: rpcrigd.c,v 1.1 2001-10-16 19:29:03 f4cfe Exp $ * $Id: rpcrigd.c,v 1.2 2001-12-26 23:33:37 fillods Exp $
* *
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
@ -61,7 +61,7 @@ void rigprog_1(struct svc_req *rqstp, register SVCXPRT *transp);
* NB: do NOT use -W since it's reserved by POSIX. * NB: do NOT use -W since it's reserved by POSIX.
* TODO: add an option to read from a file * TODO: add an option to read from a file
*/ */
#define SHORT_OPTIONS "m:r:p:P:d:D:c:vhVl" #define SHORT_OPTIONS "m:r:p:P:d:D:c:s:C:vhV"
static struct option long_options[] = static struct option long_options[] =
{ {
{"model", 1, 0, 'm'}, {"model", 1, 0, 'm'},
@ -70,8 +70,9 @@ static struct option long_options[] =
{"dcd-file", 1, 0, 'd'}, {"dcd-file", 1, 0, 'd'},
{"ptt-type", 1, 0, 'P'}, {"ptt-type", 1, 0, 'P'},
{"dcd-type", 1, 0, 'D'}, {"dcd-type", 1, 0, 'D'},
{"serial-speed", 1, 0, 's'},
{"civaddr", 1, 0, 'c'}, {"civaddr", 1, 0, 'c'},
{"list", 0, 0, 'l'}, {"set-conf", 1, 0, 'C'},
{"verbose", 0, 0, 'v'}, {"verbose", 0, 0, 'v'},
{"help", 0, 0, 'h'}, {"help", 0, 0, 'h'},
{"version", 0, 0, 'V'}, {"version", 0, 0, 'V'},
@ -79,9 +80,34 @@ static struct option long_options[] =
}; };
int set_conf(RIG *my_rig, char *conf_parms)
{
char *p, *q, *n;
int ret;
p = conf_parms;
while (p && *p != '\0') {
/* FIXME: left hand value of = cannot be null */
q = strchr(p, '=');
if (q) *q++ = '\0';
n = strchr(q, ',');
if (n) *n++ = '\0';
ret = rig_set_conf(my_rig, rig_token_lookup(my_rig, p), q);
if (ret != RIG_OK)
return ret;
p = n;
}
return RIG_OK;
}
RIG *the_rpc_rig; RIG *the_rpc_rig;
#define MAXCONFLEN 128
int int
main (int argc, char *argv[]) main (int argc, char *argv[])
{ {
@ -95,6 +121,8 @@ main (int argc, char *argv[])
ptt_type_t ptt_type = RIG_PTT_NONE; ptt_type_t ptt_type = RIG_PTT_NONE;
dcd_type_t dcd_type = RIG_DCD_NONE; dcd_type_t dcd_type = RIG_DCD_NONE;
char *civaddr = NULL; /* NULL means no need to set conf */ char *civaddr = NULL; /* NULL means no need to set conf */
int serial_rate = 0;
char conf_parms[MAXCONFLEN] = "";
/* Arguments parsing */ /* Arguments parsing */
@ -163,6 +191,22 @@ main (int argc, char *argv[])
} }
civaddr = optarg; civaddr = optarg;
break; break;
case 's':
if (!optarg) {
usage(); /* wrong arg count */
exit(1);
}
serial_rate = atoi(optarg);
break;
case 'C':
if (!optarg) {
usage(); /* wrong arg count */
exit(1);
}
if (*conf_parms != '\0')
strcat(conf_parms, ",");
strncat(conf_parms, optarg, MAXCONFLEN-strlen(conf_parms));
break;
case 'v': case 'v':
verbose++; verbose++;
break; break;
@ -182,7 +226,13 @@ main (int argc, char *argv[])
if (!the_rpc_rig) { if (!the_rpc_rig) {
fprintf(stderr, "Unknown rig num %d, or initialization error.\n", fprintf(stderr, "Unknown rig num %d, or initialization error.\n",
my_model); my_model);
fprintf(stderr, "Please check with --list option.\n"); fprintf(stderr, "Please check with rigctl --list option.\n");
exit(2);
}
retcode = set_conf(the_rpc_rig, conf_parms);
if (retcode != RIG_OK) {
fprintf(stderr, "Config parameter error: %s\n", rigerror(retcode));
exit(2); exit(2);
} }
@ -200,11 +250,15 @@ main (int argc, char *argv[])
strncpy(the_rpc_rig->state.pttport.pathname, ptt_file, FILPATHLEN); strncpy(the_rpc_rig->state.pttport.pathname, ptt_file, FILPATHLEN);
if (dcd_file) if (dcd_file)
strncpy(the_rpc_rig->state.dcdport.pathname, dcd_file, FILPATHLEN); strncpy(the_rpc_rig->state.dcdport.pathname, dcd_file, FILPATHLEN);
/* FIXME: bound checking and port type == serial */
if (serial_rate != 0)
the_rpc_rig->state.rigport.parm.serial.rate = serial_rate;
if (civaddr) if (civaddr)
rig_set_conf(the_rpc_rig, rig_token_lookup(the_rpc_rig, "civaddr"), civaddr); rig_set_conf(the_rpc_rig, rig_token_lookup(the_rpc_rig, "civaddr"), civaddr);
if ((retcode = rig_open(the_rpc_rig)) != RIG_OK) { retcode = rig_open(the_rpc_rig);
if (retcode != RIG_OK) {
fprintf(stderr,"rig_open: error = %s \n", rigerror(retcode)); fprintf(stderr,"rig_open: error = %s \n", rigerror(retcode));
exit(2); exit(2);
} }
@ -271,8 +325,9 @@ void usage()
" -d, --dcd-file=DEVICE set device of the DCD device to operate on\n" " -d, --dcd-file=DEVICE set device of the DCD device to operate on\n"
" -P, --ptt-type=TYPE set type of the PTT device to operate on\n" " -P, --ptt-type=TYPE set type of the PTT device to operate on\n"
" -D, --dcd-type=TYPE set type of the DCD device to operate on\n" " -D, --dcd-type=TYPE set type of the DCD device to operate on\n"
" -s, --serial-speed=BAUD set serial speed of the serial port\n"
" -c, --civaddr=ID set CI-V address (for Icom rigs only)\n" " -c, --civaddr=ID set CI-V address (for Icom rigs only)\n"
" -l, --list list all model numbers and exit\n" " -C, --set-conf=PARM=VAL set config parameters\n"
" -v, --verbose set verbose mode, cumulative\n" " -v, --verbose set verbose mode, cumulative\n"
" -h, --help display this help and exit\n" " -h, --help display this help and exit\n"
" -V, --version output version information and exit\n\n" " -V, --version output version information and exit\n\n"
@ -288,4 +343,3 @@ void version()
printf("%s\n", hamlib_copyright); printf("%s\n", hamlib_copyright);
} }