Partially implemented set_channel

git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@2556 7ae35d74-ebe9-4afe-98af-79ac388436b8
Hamlib-1.2.9
Terry Embry, KJ4EED 2009-01-04 14:23:43 +00:00
rodzic 7adc0f0824
commit a18e75470f
2 zmienionych plików z 138 dodań i 80 usunięć

Wyświetl plik

@ -287,7 +287,7 @@ TUNE, TOGGLE.
Perform scan operation/channel: STOP, MEM, SLCT, PRIO, PROG, DELTA, VFO, PLT. Perform scan operation/channel: STOP, MEM, SLCT, PRIO, PROG, DELTA, VFO, PLT.
.TP .TP
.B H, set_channel .B H, set_channel
Set memory channel data. Not implemented yet. Set memory channel data. Partially implemented.
.TP .TP
.B h, get_channel .B h, get_channel
Get memory channel data. Get memory channel data.

Wyświetl plik

@ -5,7 +5,7 @@
* It takes commands in interactive mode as well as * It takes commands in interactive mode as well as
* from command line options. * from command line options.
* *
* $Id: rigctl_parse.c,v 1.12 2009-01-01 17:21:02 mrtembry Exp $ * $Id: rigctl_parse.c,v 1.13 2009-01-04 14:23:43 mrtembry Exp $
* *
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
@ -1408,8 +1408,12 @@ declare_proto_rig(set_channel)
const channel_cap_t *mem_caps = NULL; const channel_cap_t *mem_caps = NULL;
const chan_t *chan_list; const chan_t *chan_list;
channel_t chan; channel_t chan;
int status;
char s[16];
return -RIG_ENIMPL; rig_debug(RIG_DEBUG_TRACE, "set_channel: arg1[0] = %d\n", arg1[0]);
memset(&chan, 0, sizeof(channel_t));
if (isdigit(arg1[0])) { if (isdigit(arg1[0])) {
chan.vfo = RIG_VFO_MEM; chan.vfo = RIG_VFO_MEM;
@ -1432,71 +1436,125 @@ declare_proto_rig(set_channel)
if (!mem_caps) if (!mem_caps)
return -RIG_ECONF; return -RIG_ECONF;
#ifdef FIXME rig_debug(RIG_DEBUG_TRACE, "set_channel: mem_caps->bank_num = %d, mem_caps->freq = %d\n", mem_caps->bank_num, mem_caps->freq);
if (mem_caps->bank_num)
sscanf(arg1, "%d", &chan.bank_num);
if (mem_caps->vfo)
chan.vfo = rig_parse_vfo(arg1);
if (mem_caps->ant)
sscanf(arg1, "%d", &chan.ant);
if (mem_caps->freq)
sscanf(arg1, "%"SCNfreq, &chan.freq);
if (mem_caps->mode)
chan.mode = rig_parse_mode(arg1);
if (mem_caps->width)
sscanf(arg1, "%d", (int*)&chan.width);
if (mem_caps->tx_freq) if (mem_caps->bank_num) {
sscanf(arg1, "%"SCNfreq, &chan.tx_freq); printf("Bank Num: ");
if (mem_caps->tx_mode) scanf("%d", &chan.bank_num);
chan.tx_mode = rig_parse_mode(arg1); }
if (mem_caps->tx_width) if (mem_caps->vfo) {
sscanf(arg1, "%d", (int*)&chan.tx_width); printf("vfo (VFOA,MEM,etc...): ");
scanf("%s", s);
if (mem_caps->split) chan.vfo = rig_parse_vfo(s);
sscanf(arg1, "%d", &chan.split); }
if (mem_caps->tx_vfo) if (mem_caps->ant) {
chan.tx_vfo = rig_parse_vfo(arg1); printf("ant: ");
if (mem_caps->rptr_shift) scanf("%d", &chan.ant);
chan.rptr_shift = rig_parse_rptr_shift(arg1); }
if (mem_caps->rptr_offs) if (mem_caps->freq) {
sscanf(arg1, "%d", &chan.rptr_offs); printf("Frequency: ");
if (mem_caps->tuning_step) scanf("%"SCNfreq, &chan.freq);
sscanf(arg1, "%d", &chan.tuning_step); }
if (mem_caps->rit) if (mem_caps->mode) {
sscanf(arg1, "%d", &chan.rit); printf("mode (FM,LSB,etc...): ");
if (mem_caps->xit) scanf("%s", s);
sscanf(arg1, "%d", &chan.xit); chan.mode = rig_parse_mode(s);
if (mem_caps->funcs) }
sscanf(arg1, "%x", &chan.funcs); if (mem_caps->width) {
printf("width: ");
scanf("%ld", &chan.width);
}
if (mem_caps->tx_freq) {
printf("tx freq (VFOA,MEM,etc...): ");
scanf("%"SCNfreq, &chan.tx_freq);
}
if (mem_caps->tx_mode) {
printf("tx mode (FM,LSB,etc...): ");
scanf("%s", s);
chan.tx_mode = rig_parse_mode(s);
}
if (mem_caps->tx_width) {
printf("tx width: ");
scanf("%ld", &chan.tx_width);
}
if (mem_caps->split) {
printf("split (0,1): ");
scanf("%d", &status);
chan.split = status;
}
if (mem_caps->tx_vfo) {
printf("tx vfo (VFOA,MEM,etc...): ");
scanf("%s", s);
chan.tx_vfo = rig_parse_vfo(s);
}
if (mem_caps->rptr_shift) {
printf("rptr shift (+-0): ");
scanf("%s", s);
chan.rptr_shift = rig_parse_rptr_shift(s);
}
if (mem_caps->rptr_offs) {
printf("rptr offset: ");
scanf("%ld", &chan.rptr_offs);
}
if (mem_caps->tuning_step) {
printf("tuning step: ");
scanf("%ld", &chan.tuning_step);
}
if (mem_caps->rit) {
printf("rit (Hz,0=off): ");
scanf("%ld", &chan.rit);
}
if (mem_caps->xit) {
printf("xit (Hz,0=off): ");
scanf("%ld", &chan.xit);
}
if (mem_caps->funcs) {
printf("funcs: ");
scanf("%lx", &chan.funcs);
}
#if 0 #if 0
/* for all levels, ask */ /* for all levels, ask */
if (mem_caps->levels) if (mem_caps->levels)
sscanf(arg1, "%d", &chan.levels); sscanf(arg1, "%d", &chan.levels);
#endif #endif
if (mem_caps->ctcss_tone) if (mem_caps->ctcss_tone) {
sscanf(arg1, "%d", &chan.ctcss_tone); printf("ctcss tone freq in tenth of Hz (0=off): ");
if (mem_caps->ctcss_sql) scanf("%d", &chan.ctcss_tone);
sscanf(arg1, "%d", &chan.ctcss_sql); }
if (mem_caps->dcs_code) if (mem_caps->ctcss_sql) {
sscanf(arg1, "%d", &chan.dcs_code); printf("ctcss sql freq in tenth of Hz (0=off): ");
if (mem_caps->dcs_sql) scanf("%d", &chan.ctcss_sql);
sscanf(arg1, "%d", &chan.dcs_sql); }
if (mem_caps->scan_group) if (mem_caps->dcs_code) {
sscanf(arg1, "%d", &chan.scan_group); printf("dcs code: ");
if (mem_caps->flags) scanf("%d", &chan.dcs_code);
sscanf(arg1, "%d", &chan.flags); }
if (mem_caps->channel_desc) if (mem_caps->dcs_sql) {
strcpy(chan.channel_desc, arg1); printf("dcs sql: ");
scanf("%d", &chan.dcs_sql);
}
if (mem_caps->scan_group) {
printf("scan group: ");
scanf("%d", &chan.scan_group);
}
if (mem_caps->flags) {
printf("flags: ");
scanf("%d", &chan.flags);
}
if (mem_caps->channel_desc) {
printf("channel desc: ");
scanf("%s", s);
strcpy(chan.channel_desc, s);
}
#if 0 #if 0
/* TODO: same as levels */ /* TODO: same as levels */
if (mem_caps->ext_levels) if (mem_caps->ext_levels)
sscanf(arg1, "%d", &chan.ext_levels); sscanf(arg1, "%d", &chan.ext_levels);
#endif #endif
#endif status = rig_set_channel(rig, &chan);
return RIG_OK; return status;
} }
/* 'h' */ /* 'h' */