kopia lustrzana https://github.com/Hamlib/Hamlib
Added working TS-2000 files. There are some changes left out but this
is the minimum I could commit and have a functional rig. The cost is that I've broken kylix and others that duplicate rig.h. I'm in the process of repairing the damage. Please be patient. I hope a day or so, but am asking for up to a week. E-mail me about *anything* you find broken. Kylix (and similar) is (are) known to not work. git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1083 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.1.4
rodzic
9820f82939
commit
7212a11aa8
1282
include/hamlib/rig.h
1282
include/hamlib/rig.h
Plik diff jest za duży
Load Diff
|
@ -1,9 +1,9 @@
|
||||||
TSSRCLIST = ts850.c ts870s.c ts570.c ts450s.c ts950.c ts50s.c \
|
TSSRCLIST = ts850.c ts870s.c ts570.c ts450s.c ts950.c ts50s.c \
|
||||||
ts790.c thd7.c thf7.c
|
ts790.c thd7.c thf7.c ts2000.c
|
||||||
|
|
||||||
lib_LTLIBRARIES = libhamlib-kenwood.la
|
lib_LTLIBRARIES = libhamlib-kenwood.la
|
||||||
libhamlib_kenwood_la_SOURCES = $(TSSRCLIST) kenwood.c th.c ts2k.c
|
libhamlib_kenwood_la_SOURCES = $(TSSRCLIST) kenwood.c th.c ts2k.c
|
||||||
libhamlib_kenwood_la_LDFLAGS = -no-undefined -module -version-info 0:0:0
|
libhamlib_kenwood_la_LDFLAGS = -no-undefined -module -version-info 0:0:0
|
||||||
libhamlib_kenwood_la_LIBADD = ../src/libhamlib.la
|
libhamlib_kenwood_la_LIBADD = ../src/libhamlib.la
|
||||||
|
|
||||||
noinst_HEADERS = kenwood.h th.h ts2k.h ts2000.h
|
noinst_HEADERS = kenwood.h th.h ts2k.h
|
||||||
|
|
147
kenwood/ts2k.c
147
kenwood/ts2k.c
|
@ -2,7 +2,7 @@
|
||||||
* Hamlib Kenwood backend - TS2000 description
|
* Hamlib Kenwood backend - TS2000 description
|
||||||
* Copyright (c) 2000-2002 by Stephane Fillod
|
* Copyright (c) 2000-2002 by Stephane Fillod
|
||||||
*
|
*
|
||||||
* $Id: ts2k.c,v 1.4 2002-06-29 09:54:50 dedmons Exp $
|
* $Id: ts2k.c,v 1.5 2002-06-30 10:17:03 dedmons Exp $
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or modify
|
* This library is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU Library General Public License as
|
* it under the terms of the GNU Library General Public License as
|
||||||
|
@ -44,9 +44,7 @@
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <hamlib/rig.h>
|
#include <hamlib/rig.h>
|
||||||
/* we shouldn't depend on kenwood right now */
|
#include "kenwood.h"
|
||||||
//#include "kenwood.h"
|
|
||||||
#include "ts2000.h"
|
|
||||||
#include "ts2k.h"
|
#include "ts2k.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,7 +63,7 @@
|
||||||
* Hamlib Kenwood backend - main file
|
* Hamlib Kenwood backend - main file
|
||||||
* Copyright (c) 2000-2002 by Stephane Fillod
|
* Copyright (c) 2000-2002 by Stephane Fillod
|
||||||
*
|
*
|
||||||
* $Id: ts2k.c,v 1.4 2002-06-29 09:54:50 dedmons Exp $
|
* $Id: ts2k.c,v 1.5 2002-06-30 10:17:03 dedmons Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -157,7 +155,7 @@ const int ts2k_ctcss_list[] = {
|
||||||
670, 719, 744, 770, 797, 825, 854, 885, 915, 948,
|
670, 719, 744, 770, 797, 825, 854, 885, 915, 948,
|
||||||
974, 1000, 1035, 1072, 1109, 1148, 1188, 1230, 1273, 1318,
|
974, 1000, 1035, 1072, 1109, 1148, 1188, 1230, 1273, 1318,
|
||||||
1365, 1413, 1462, 1514, 1567, 1622, 1679, 1738, 1799, 1862,
|
1365, 1413, 1462, 1514, 1567, 1622, 1679, 1738, 1799, 1862,
|
||||||
1928, 2035, 2107, 2181, 2257, 2336, 2418, 2503, 17500,
|
1928, 2035, 2107, 2181, 2257, 2336, 2418, 2503, // 17500,
|
||||||
/* Note: 17500 is not available as ctcss, only tone. --kd7eni */
|
/* Note: 17500 is not available as ctcss, only tone. --kd7eni */
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
|
@ -197,9 +195,9 @@ ts2k_transaction(RIG * rig, const char *cmdstr, int cmd_len,
|
||||||
int retval;
|
int retval;
|
||||||
const char *cmdtrm = EOM_KEN; /* Default Command/Reply termination char */
|
const char *cmdtrm = EOM_KEN; /* Default Command/Reply termination char */
|
||||||
int retry_read = 0;
|
int retry_read = 0;
|
||||||
// char *errtxt;
|
char *errtxt;
|
||||||
|
|
||||||
#define MAX_RETRY_READ 32
|
#define MAX_RETRY_READ 5
|
||||||
|
|
||||||
rs = &rig->state;
|
rs = &rig->state;
|
||||||
rs->hold_decode = 1;
|
rs->hold_decode = 1;
|
||||||
|
@ -357,19 +355,19 @@ int ts2k_set_vfo(RIG * rig, vfo_t vfo)
|
||||||
switch (vfo) {
|
switch (vfo) {
|
||||||
case RIG_VFO_A:
|
case RIG_VFO_A:
|
||||||
case RIG_VFO_B:
|
case RIG_VFO_B:
|
||||||
// case RIG_VFO_AB: // split
|
case RIG_VFO_AB: // split
|
||||||
// case RIG_VFO_BA:
|
case RIG_VFO_BA:
|
||||||
// case RIG_VFO_SAT: // FIXME: Not even close to correct
|
case RIG_CTRL_SAT: // FIXME: Not even close to correct
|
||||||
case RIG_VFO_MAIN:
|
case RIG_VFO_MAIN:
|
||||||
// case RIG_VFO_MEM_A:
|
case RIG_VFO_MEM_A:
|
||||||
// case RIG_VFO_CALL_A:
|
case RIG_VFO_CALL_A:
|
||||||
ctrl = TS2K_CTRL_ON_MAIN; // FIXME : these are independent!
|
ctrl = TS2K_CTRL_ON_MAIN; // FIXME : these are independent!
|
||||||
ptt = TS2K_PTT_ON_MAIN;
|
ptt = TS2K_PTT_ON_MAIN;
|
||||||
break;
|
break;
|
||||||
case RIG_VFO_C:
|
case RIG_VFO_C:
|
||||||
case RIG_VFO_SUB:
|
case RIG_VFO_SUB:
|
||||||
// case RIG_VFO_MEM_C:
|
case RIG_VFO_MEM_C:
|
||||||
// case RIG_VFO_CALL_C:
|
case RIG_VFO_CALL_C:
|
||||||
ctrl = TS2K_CTRL_ON_SUB;
|
ctrl = TS2K_CTRL_ON_SUB;
|
||||||
ptt = TS2K_PTT_ON_SUB;
|
ptt = TS2K_PTT_ON_SUB;
|
||||||
break;
|
break;
|
||||||
|
@ -388,9 +386,9 @@ int ts2k_set_vfo(RIG * rig, vfo_t vfo)
|
||||||
|| (vfo == RIG_VFO_MAIN)
|
|| (vfo == RIG_VFO_MAIN)
|
||||||
|| (vfo == RIG_VFO_CURR)
|
|| (vfo == RIG_VFO_CURR)
|
||||||
|| (vfo == RIG_VFO_VFO)
|
|| (vfo == RIG_VFO_VFO)
|
||||||
|| (vfo == RIG_VFO_ALL) // yea, I know
|
// || (vfo == RIG_VFO_ALL) // yea, I know
|
||||||
/* bit mask checks */
|
/* bit mask checks */
|
||||||
// || (vfo & RIG_CTRL_SAT) // "fr...;", "ft...;" won't do!
|
|| (vfo & RIG_CTRL_SAT) // "fr...;", "ft...;" won't do!
|
||||||
;
|
;
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_ERR, __FUNCTION__ \
|
rig_debug(RIG_DEBUG_ERR, __FUNCTION__ \
|
||||||
|
@ -408,16 +406,16 @@ int ts2k_set_vfo(RIG * rig, vfo_t vfo)
|
||||||
|
|
||||||
// RX Active Tuning
|
// RX Active Tuning
|
||||||
switch (vfo) {
|
switch (vfo) {
|
||||||
//ouch! case RIG_VFO_AB: // TX is opposite
|
case RIG_VFO_AB: // TX is opposite
|
||||||
case RIG_VFO_A:
|
case RIG_VFO_A:
|
||||||
case RIG_VFO_C:
|
case RIG_VFO_C:
|
||||||
vfo_function = '0';
|
vfo_function = '0';
|
||||||
break;
|
break;
|
||||||
//ouch! case RIG_VFO_BA: // TX is opposite
|
case RIG_VFO_BA: // TX is opposite
|
||||||
case RIG_VFO_B:
|
case RIG_VFO_B:
|
||||||
vfo_function = '1';
|
vfo_function = '1';
|
||||||
break;
|
break;
|
||||||
/* case RIG_VFO_MEM_A:
|
case RIG_VFO_MEM_A:
|
||||||
case RIG_VFO_MEM_C:
|
case RIG_VFO_MEM_C:
|
||||||
vfo_function = '2';
|
vfo_function = '2';
|
||||||
break;
|
break;
|
||||||
|
@ -425,7 +423,7 @@ int ts2k_set_vfo(RIG * rig, vfo_t vfo)
|
||||||
case RIG_VFO_CALL_C:
|
case RIG_VFO_CALL_C:
|
||||||
vfo_function = '3';
|
vfo_function = '3';
|
||||||
break;
|
break;
|
||||||
ouch! */
|
|
||||||
default:
|
default:
|
||||||
rig_debug(RIG_DEBUG_ERR, __FUNCTION__
|
rig_debug(RIG_DEBUG_ERR, __FUNCTION__
|
||||||
": unsupported VFO %u\n", vfo);
|
": unsupported VFO %u\n", vfo);
|
||||||
|
@ -447,14 +445,14 @@ ouch! */
|
||||||
switch (vfo) {
|
switch (vfo) {
|
||||||
case RIG_VFO_A:
|
case RIG_VFO_A:
|
||||||
case RIG_VFO_C:
|
case RIG_VFO_C:
|
||||||
//ouch! case RIG_VFO_BA: // opposite of above
|
case RIG_VFO_BA: // opposite of above
|
||||||
vfo_function = '0';
|
vfo_function = '0';
|
||||||
break;
|
break;
|
||||||
//ouch! case RIG_VFO_AB: // opposite of above
|
case RIG_VFO_AB: // opposite of above
|
||||||
case RIG_VFO_B:
|
case RIG_VFO_B:
|
||||||
vfo_function = '1';
|
vfo_function = '1';
|
||||||
break;
|
break;
|
||||||
/* case RIG_VFO_MEM_A:
|
case RIG_VFO_MEM_A:
|
||||||
case RIG_VFO_MEM_C: // FIXME: need to handle vfo/mem split
|
case RIG_VFO_MEM_C: // FIXME: need to handle vfo/mem split
|
||||||
vfo_function = '2';
|
vfo_function = '2';
|
||||||
break;
|
break;
|
||||||
|
@ -462,7 +460,7 @@ ouch! */
|
||||||
case RIG_VFO_CALL_C:
|
case RIG_VFO_CALL_C:
|
||||||
vfo_function = '3';
|
vfo_function = '3';
|
||||||
break;
|
break;
|
||||||
"I'll be back!" ouch!*/
|
|
||||||
default:
|
default:
|
||||||
rig_debug(RIG_DEBUG_ERR, __FUNCTION__
|
rig_debug(RIG_DEBUG_ERR, __FUNCTION__
|
||||||
": unsupported VFO %u\n",
|
": unsupported VFO %u\n",
|
||||||
|
@ -483,8 +481,7 @@ ouch! */
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
} else { // Check further for special modes not using "fr...;", "ft...;"
|
} else { // Check further for special modes not using "fr...;", "ft...;"
|
||||||
// if(vfo & RIG_CTRL_SAT) { // test the SAT bit
|
if(vfo & RIG_CTRL_SAT) { // test the SAT bit
|
||||||
if(vfo & 0) { // test the SAT bit
|
|
||||||
retval = ts2k_sat_on(rig, vfo);
|
retval = ts2k_sat_on(rig, vfo);
|
||||||
if (retval != RIG_OK)
|
if (retval != RIG_OK)
|
||||||
return retval;
|
return retval;
|
||||||
|
@ -515,8 +512,8 @@ int ts2k_sat_on(RIG *rig, vfo_t vfo)
|
||||||
|
|
||||||
acklen = 20;
|
acklen = 20;
|
||||||
|
|
||||||
// if(!(vfo & RIG_CTRL_SAT))
|
if(!(vfo & RIG_CTRL_SAT))
|
||||||
// return -RIG_EINTERNAL; // All right. Who called us!?
|
return -RIG_EINTERNAL; // All right. Who called us!?
|
||||||
|
|
||||||
// cmdlen = sprintf(cmd, "sa%07u;", 0); // Initial string to modify
|
// cmdlen = sprintf(cmd, "sa%07u;", 0); // Initial string to modify
|
||||||
acklen = ts2k_transaction(rig, "sa;", 3, ack, &acklen);
|
acklen = ts2k_transaction(rig, "sa;", 3, ack, &acklen);
|
||||||
|
@ -544,15 +541,13 @@ int ts2k_sat_on(RIG *rig, vfo_t vfo)
|
||||||
// FIXME: Add Sat Trace here!
|
// FIXME: Add Sat Trace here!
|
||||||
|
|
||||||
// Trace REV
|
// Trace REV
|
||||||
// if(vfo & RIG_CTRL_REV)
|
if(vfo & RIG_CTRL_REV)
|
||||||
if(vfo & 0)
|
|
||||||
ack[7] = '1'; // sat trace REV
|
ack[7] = '1'; // sat trace REV
|
||||||
else
|
else
|
||||||
ack[7] = '0';
|
ack[7] = '0';
|
||||||
|
|
||||||
// CTRL to main or sub?
|
// CTRL to main or sub?
|
||||||
// if ((vfo & RIG_VFO_CTRL) && (vfo & RIG_CTRL_SUB))
|
if ((vfo & RIG_VFO_CTRL) && (vfo & RIG_CTRL_SUB))
|
||||||
if ((vfo & 0) && (vfo & 0)) // ouch!
|
|
||||||
ack[5] = '1'; // sat CTRL on sub
|
ack[5] = '1'; // sat CTRL on sub
|
||||||
else
|
else
|
||||||
ack[5] = '0'; // sat CTRL on main
|
ack[5] = '0'; // sat CTRL on main
|
||||||
|
@ -621,9 +616,7 @@ int ts2k_get_vfo(RIG * rig, vfo_t * vfo)
|
||||||
rig_debug(RIG_DEBUG_ERR, __FUNCTION__": SAT=%s\n", vfobuf);
|
rig_debug(RIG_DEBUG_ERR, __FUNCTION__": SAT=%s\n", vfobuf);
|
||||||
if(vfobuf[2] == '1') {
|
if(vfobuf[2] == '1') {
|
||||||
/* yes, we're in satellite mode! */
|
/* yes, we're in satellite mode! */
|
||||||
// *vfo = RIG_CTRL_SAT; // FIXME: set the rest!
|
*vfo = RIG_CTRL_SAT; // FIXME: set the rest!
|
||||||
// we know what it is, we're just not tellin'
|
|
||||||
*vfo = RIG_VFO_CURR; // FIXME: set the rest!
|
|
||||||
/* TODO: write get_sat() and let it do the work */
|
/* TODO: write get_sat() and let it do the work */
|
||||||
return RIG_OK;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
@ -674,7 +667,7 @@ int ts2k_get_vfo(RIG * rig, vfo_t * vfo)
|
||||||
// only valid on Main--no checks required.
|
// only valid on Main--no checks required.
|
||||||
*vfo = RIG_VFO_B;
|
*vfo = RIG_VFO_B;
|
||||||
break;
|
break;
|
||||||
/* case '2':
|
case '2':
|
||||||
if (ctrl_ptt[3] == '0') // we use CTRL as Active Transceiver.
|
if (ctrl_ptt[3] == '0') // we use CTRL as Active Transceiver.
|
||||||
*vfo = RIG_VFO_MEM_A;
|
*vfo = RIG_VFO_MEM_A;
|
||||||
else if (ctrl_ptt[3] == '1')
|
else if (ctrl_ptt[3] == '1')
|
||||||
|
@ -690,7 +683,7 @@ int ts2k_get_vfo(RIG * rig, vfo_t * vfo)
|
||||||
else
|
else
|
||||||
return -RIG_EPROTO;
|
return -RIG_EPROTO;
|
||||||
break;
|
break;
|
||||||
sniff, sniff*/
|
|
||||||
default: // Different or newer rig types...
|
default: // Different or newer rig types...
|
||||||
rig_debug(RIG_DEBUG_ERR,
|
rig_debug(RIG_DEBUG_ERR,
|
||||||
"ts2k_get_vfo: unsupported VFO %c\n",
|
"ts2k_get_vfo: unsupported VFO %c\n",
|
||||||
|
@ -699,8 +692,8 @@ sniff, sniff*/
|
||||||
|
|
||||||
} // end switch
|
} // end switch
|
||||||
} else { // end rx == tx; start split checks.
|
} else { // end rx == tx; start split checks.
|
||||||
rig_debug(RIG_DEBUG_ERR, "ts2k_get_vfo: Split gone.\n");
|
rig_debug(RIG_DEBUG_ERR, "ts2k_get_vfo: Split.\n");
|
||||||
/*
|
|
||||||
if (r_vfo == '0' && vfobuf[2] == '1')
|
if (r_vfo == '0' && vfobuf[2] == '1')
|
||||||
*vfo = RIG_VFO_AB;
|
*vfo = RIG_VFO_AB;
|
||||||
else if (r_vfo == '1' && vfobuf[2] == '0')
|
else if (r_vfo == '1' && vfobuf[2] == '0')
|
||||||
|
@ -711,7 +704,6 @@ sniff, sniff*/
|
||||||
":FIXME: vfo<->mem split! -kd7eni!\n");
|
":FIXME: vfo<->mem split! -kd7eni!\n");
|
||||||
return -RIG_EPROTO;
|
return -RIG_EPROTO;
|
||||||
}
|
}
|
||||||
ouch!*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return RIG_OK;
|
return RIG_OK;
|
||||||
|
@ -2269,9 +2261,9 @@ int ts2k_get_rptr_shift(RIG * rig, vfo_t vfo, rptr_shift_t * rptr_shift)
|
||||||
case '2':
|
case '2':
|
||||||
*rptr_shift = RIG_RPT_SHIFT_PLUS;
|
*rptr_shift = RIG_RPT_SHIFT_PLUS;
|
||||||
break;
|
break;
|
||||||
// case '3':
|
case '3':
|
||||||
// *rptr_shift = RIG_RPT_SHIFT_1750;
|
*rptr_shift = RIG_RPT_SHIFT_1750;
|
||||||
// break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
|
@ -2409,7 +2401,7 @@ int ts2k_set_split_freq(RIG * rig, vfo_t vfo, freq_t tx_freq)
|
||||||
* send a ' ' or you'll get a "?;" response. Always
|
* send a ' ' or you'll get a "?;" response. Always
|
||||||
* set memory with (e.g.) "mc1020;". --kd7eni
|
* set memory with (e.g.) "mc1020;". --kd7eni
|
||||||
*/
|
*/
|
||||||
int ts2k_get_channel(RIG * rig, vfo_t vfo, channel_t *chan)
|
int ts2k_get_channel(RIG * rig, channel_t *chan)
|
||||||
{
|
{
|
||||||
// channel_t tch; // needed?
|
// channel_t tch; // needed?
|
||||||
char rxtx, mrtxt[2][60], mrcmd[15], ack[60], tmp[20];
|
char rxtx, mrtxt[2][60], mrcmd[15], ack[60], tmp[20];
|
||||||
|
@ -2427,10 +2419,8 @@ int ts2k_get_channel(RIG * rig, vfo_t vfo, channel_t *chan)
|
||||||
}
|
}
|
||||||
|
|
||||||
// get needed info if rig's mem pointers used
|
// get needed info if rig's mem pointers used
|
||||||
|
if( ( vfo == RIG_VFO_MEM_A
|
||||||
// if( ( vfo == RIG_VFO_MEM_A
|
|| vfo == RIG_VFO_MEM_C ) ) {
|
||||||
// || vfo == RIG_VFO_MEM_C ) ) {
|
|
||||||
if( vfo == RIG_VFO_MEM ) // which one! (tmp I hope!)
|
|
||||||
rig_debug(RIG_DEBUG_ERR, __FUNCTION__": using rig's ptr\n");
|
rig_debug(RIG_DEBUG_ERR, __FUNCTION__": using rig's ptr\n");
|
||||||
retval = ts2k_get_vfo(rig, &curr_vfo);
|
retval = ts2k_get_vfo(rig, &curr_vfo);
|
||||||
CHKERR(retval);
|
CHKERR(retval);
|
||||||
|
@ -2438,7 +2428,6 @@ int ts2k_get_channel(RIG * rig, vfo_t vfo, channel_t *chan)
|
||||||
CHKERR(retval);
|
CHKERR(retval);
|
||||||
chan->channel_num = curr_mem;
|
chan->channel_num = curr_mem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mrtxt_len = ack_len = 60;
|
mrtxt_len = ack_len = 60;
|
||||||
|
@ -2495,7 +2484,7 @@ int ts2k_get_channel(RIG * rig, vfo_t vfo, channel_t *chan)
|
||||||
// At any rate, it's currently unused.
|
// At any rate, it's currently unused.
|
||||||
chan->bank_num = 0; // I merge the two--do not use! --Dale
|
chan->bank_num = 0; // I merge the two--do not use! --Dale
|
||||||
|
|
||||||
//ouch! chan->lock = int_n(tmp, &mrtxt[0][18], 1);
|
chan->lock = int_n(tmp, &mrtxt[0][18], 1);
|
||||||
chan->freq = int_n(tmp, &mrtxt[0][06], 11);
|
chan->freq = int_n(tmp, &mrtxt[0][06], 11);
|
||||||
chan->mode = ts2k_mode_list[ int_n(tmp, &mrtxt[0][17], 1) ];
|
chan->mode = ts2k_mode_list[ int_n(tmp, &mrtxt[0][17], 1) ];
|
||||||
if(chan->mode == RIG_MODE_AM || chan->tx_mode == RIG_MODE_FM)
|
if(chan->mode == RIG_MODE_AM || chan->tx_mode == RIG_MODE_FM)
|
||||||
|
@ -2529,7 +2518,7 @@ int ts2k_get_channel(RIG * rig, vfo_t vfo, channel_t *chan)
|
||||||
chan->ctcss_sql = int_n(tmp, &mrtxt[1][19], 1);
|
chan->ctcss_sql = int_n(tmp, &mrtxt[1][19], 1);
|
||||||
chan->dcs_code = ts2k_dcs_list[ int_n(tmp, &mrtxt[1][24], 3) ];
|
chan->dcs_code = ts2k_dcs_list[ int_n(tmp, &mrtxt[1][24], 3) ];
|
||||||
chan->dcs_sql = int_n(tmp, &mrtxt[1][19], 1);
|
chan->dcs_sql = int_n(tmp, &mrtxt[1][19], 1);
|
||||||
//ouch! chan->scan_group = int_n(tmp, &mrtxt[1][40], 1);
|
chan->scan_group = int_n(tmp, &mrtxt[1][40], 1);
|
||||||
// chan->flags = curr_vfo; // n/a
|
// chan->flags = curr_vfo; // n/a
|
||||||
// FIXME : The following may have trailing garbage
|
// FIXME : The following may have trailing garbage
|
||||||
strncpy( chan->channel_desc, &mrtxt[1][41], 8);
|
strncpy( chan->channel_desc, &mrtxt[1][41], 8);
|
||||||
|
@ -2537,10 +2526,10 @@ int ts2k_get_channel(RIG * rig, vfo_t vfo, channel_t *chan)
|
||||||
|
|
||||||
#ifdef _USEVFO
|
#ifdef _USEVFO
|
||||||
// if curr mem is changed at top, this'll restore it
|
// if curr mem is changed at top, this'll restore it
|
||||||
/* if( ( vfo == RIG_VFO_MEM_A
|
if( ( vfo == RIG_VFO_MEM_A
|
||||||
|| vfo == RIG_VFO_MEM_C ) ) {
|
|| vfo == RIG_VFO_MEM_C ) ) {
|
||||||
}
|
}
|
||||||
now we're in the dark, ouch!*/
|
|
||||||
rig_debug(RIG_DEBUG_ERR, __FUNCTION__": restoring mem=%i\n", curr_mem);
|
rig_debug(RIG_DEBUG_ERR, __FUNCTION__": restoring mem=%i\n", curr_mem);
|
||||||
retval = ts2k_set_mem(rig, curr_vfo, curr_mem);
|
retval = ts2k_set_mem(rig, curr_vfo, curr_mem);
|
||||||
CHKERR(retval);
|
CHKERR(retval);
|
||||||
|
@ -2565,9 +2554,9 @@ now we're in the dark, ouch!*/
|
||||||
* for the design document and hopefully I'll know which way
|
* for the design document and hopefully I'll know which way
|
||||||
* to go when things aren't the way they should be. We'll
|
* to go when things aren't the way they should be. We'll
|
||||||
* see how things go.
|
* see how things go.
|
||||||
* --Dale kd7eni
|
* --Dale kd7e
|
||||||
*/
|
*/
|
||||||
int ts2k_set_channel(RIG * rig, vfo_t vfo, channel_t *chan)
|
int ts2k_set_channel(RIG * rig, const channel_t *chan)
|
||||||
{
|
{
|
||||||
char mrtxt[2][60], mrcmd[10], ack[60];
|
char mrtxt[2][60], mrcmd[10], ack[60];
|
||||||
int retval, i, j, mr_len[2], ack_len;
|
int retval, i, j, mr_len[2], ack_len;
|
||||||
|
@ -2618,7 +2607,7 @@ int ts2k_set_channel(RIG * rig, vfo_t vfo, channel_t *chan)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
p5 = (unsigned int) j; // FIXME: either not found, or last!
|
p5 = (unsigned int) j; // FIXME: either not found, or last!
|
||||||
//ouch! p6 = (unsigned int) chan->lock;
|
p6 = (unsigned int) chan->lock;
|
||||||
p7 = 0; // FIXME: to lazy to sort this out right now
|
p7 = 0; // FIXME: to lazy to sort this out right now
|
||||||
p8 = 0; // " " " " "
|
p8 = 0; // " " " " "
|
||||||
p9 = 0; // " " " " "
|
p9 = 0; // " " " " "
|
||||||
|
@ -2627,7 +2616,7 @@ int ts2k_set_channel(RIG * rig, vfo_t vfo, channel_t *chan)
|
||||||
p12 = 0; // " " " " "
|
p12 = 0; // " " " " "
|
||||||
p13 = 0; // " " " " "
|
p13 = 0; // " " " " "
|
||||||
p14 = 0; // " " " " "
|
p14 = 0; // " " " " "
|
||||||
//ouch! p15 = (unsigned int) chan->scan_group;
|
p15 = (unsigned int) chan->scan_group;
|
||||||
p16 = &(chan->channel_desc[0]);
|
p16 = &(chan->channel_desc[0]);
|
||||||
|
|
||||||
mr_len[i] = sprintf( &(mrtxt[i][0]),
|
mr_len[i] = sprintf( &(mrtxt[i][0]),
|
||||||
|
@ -2667,19 +2656,19 @@ int ts2k_vfo_ctrl(RIG * rig, vfo_t vfo)
|
||||||
switch (vfo) {
|
switch (vfo) {
|
||||||
case RIG_VFO_A:
|
case RIG_VFO_A:
|
||||||
case RIG_VFO_B:
|
case RIG_VFO_B:
|
||||||
//ouch! case RIG_VFO_AB: // split
|
case RIG_VFO_AB: // split
|
||||||
//ouch! case RIG_VFO_BA:
|
case RIG_VFO_BA:
|
||||||
//ouch! case RIG_VFO_SAT: // Should be PTT on main CTRL on sub (?)
|
case RIG_CTRL_SAT: // Should be PTT on main CTRL on sub (?)
|
||||||
case RIG_VFO_MAIN:
|
case RIG_VFO_MAIN:
|
||||||
//ouch! case RIG_VFO_MEM_A:
|
case RIG_VFO_MEM_A:
|
||||||
//ouch! case RIG_VFO_CALL_A:
|
case RIG_VFO_CALL_A:
|
||||||
ctrl = TS2K_CTRL_ON_MAIN; // FIXME : these are independent!
|
ctrl = TS2K_CTRL_ON_MAIN; // FIXME : these are independent!
|
||||||
ptt = TS2K_PTT_ON_MAIN;
|
ptt = TS2K_PTT_ON_MAIN;
|
||||||
break;
|
break;
|
||||||
case RIG_VFO_C:
|
case RIG_VFO_C:
|
||||||
case RIG_VFO_SUB:
|
case RIG_VFO_SUB:
|
||||||
//ouch! case RIG_VFO_MEM_C:
|
case RIG_VFO_MEM_C:
|
||||||
//ouch! case RIG_VFO_CALL_C:
|
case RIG_VFO_CALL_C:
|
||||||
ctrl = TS2K_CTRL_ON_SUB;
|
ctrl = TS2K_CTRL_ON_SUB;
|
||||||
ptt = TS2K_PTT_ON_SUB;
|
ptt = TS2K_PTT_ON_SUB;
|
||||||
break;
|
break;
|
||||||
|
@ -2742,7 +2731,7 @@ int ts2k_set_split_mode(RIG * rig,
|
||||||
vfo_t vfo, rmode_t txmode, pbwidth_t txwidth)
|
vfo_t vfo, rmode_t txmode, pbwidth_t txwidth)
|
||||||
{
|
{
|
||||||
vfo_t vtmp;
|
vfo_t vtmp;
|
||||||
/*
|
|
||||||
switch(vfo) {
|
switch(vfo) {
|
||||||
case RIG_VFO_AB:
|
case RIG_VFO_AB:
|
||||||
vtmp = RIG_VFO_B; break;
|
vtmp = RIG_VFO_B; break;
|
||||||
|
@ -2751,8 +2740,6 @@ int ts2k_set_split_mode(RIG * rig,
|
||||||
default:
|
default:
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
}
|
}
|
||||||
rig.c, knows all, sees all. ouch!*/
|
|
||||||
vtmp = vfo;
|
|
||||||
return ts2k_set_mode(rig, vtmp, txmode, txwidth);
|
return ts2k_set_mode(rig, vtmp, txmode, txwidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2760,7 +2747,6 @@ int ts2k_get_split_mode(RIG *rig,
|
||||||
vfo_t vfo, rmode_t *txmode, pbwidth_t *txwidth)
|
vfo_t vfo, rmode_t *txmode, pbwidth_t *txwidth)
|
||||||
{
|
{
|
||||||
vfo_t vtmp;
|
vfo_t vtmp;
|
||||||
/*
|
|
||||||
switch(vfo) {
|
switch(vfo) {
|
||||||
case RIG_VFO_AB:
|
case RIG_VFO_AB:
|
||||||
vtmp = RIG_VFO_B; break;
|
vtmp = RIG_VFO_B; break;
|
||||||
|
@ -2769,8 +2755,6 @@ int ts2k_get_split_mode(RIG *rig,
|
||||||
default:
|
default:
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
}
|
}
|
||||||
rig.c, knows all, sees all. ouch!*/
|
|
||||||
vtmp = vfo;
|
|
||||||
return ts2k_get_mode(rig, vtmp, txmode, txwidth);
|
return ts2k_get_mode(rig, vtmp, txmode, txwidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2798,11 +2782,11 @@ int ts2k_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch)
|
||||||
// set proper vfo first (already done?)
|
// set proper vfo first (already done?)
|
||||||
switch(v) {
|
switch(v) {
|
||||||
case RIG_VFO_MEM: // Currently selected Main/Sub
|
case RIG_VFO_MEM: // Currently selected Main/Sub
|
||||||
//ouch! case RIG_VFO_MEM_A: // Main
|
case RIG_VFO_MEM_A: // Main
|
||||||
//ouch! case RIG_VFO_MEM_C: // Sub
|
case RIG_VFO_MEM_C: // Sub
|
||||||
// FIXME: we should set the group and fall through
|
// FIXME: we should set the group and fall through
|
||||||
/* nobreak */
|
/* nobreak */
|
||||||
// case RIG_VFO_VFO: // Currently selected Main/Sub???
|
// case RIG_VFO_VFO: // Currently selected Main/Sub
|
||||||
case RIG_VFO_A: // Main
|
case RIG_VFO_A: // Main
|
||||||
case RIG_VFO_B: // Main
|
case RIG_VFO_B: // Main
|
||||||
case RIG_VFO_C: // Sub
|
case RIG_VFO_C: // Sub
|
||||||
|
@ -2810,9 +2794,8 @@ int ts2k_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch)
|
||||||
CHKERR(retval);
|
CHKERR(retval);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//ouch! case RIG_VFO_CALL_A:
|
case RIG_VFO_CALL_A: //
|
||||||
//ouch! case RIG_VFO_CALL_C:
|
case RIG_VFO_CALL_C:
|
||||||
// Can't feel a thing!
|
|
||||||
default:
|
default:
|
||||||
rig_debug(RIG_DEBUG_ERR, __FUNCTION__": vfo 'defaulted'\n");
|
rig_debug(RIG_DEBUG_ERR, __FUNCTION__": vfo 'defaulted'\n");
|
||||||
return -RIG_ENIMPL; // unimplemented, but valid scan
|
return -RIG_ENIMPL; // unimplemented, but valid scan
|
||||||
|
@ -2891,8 +2874,8 @@ int ts2k_get_parm(RIG *rig, setting_t parm, value_t *val)
|
||||||
cmdlen = sprintf(cmd, "ex0120000;"); break;
|
cmdlen = sprintf(cmd, "ex0120000;"); break;
|
||||||
case RIG_PARM_BACKLIGHT:
|
case RIG_PARM_BACKLIGHT:
|
||||||
cmdlen = sprintf(cmd, "ex0000000;"); break;
|
cmdlen = sprintf(cmd, "ex0000000;"); break;
|
||||||
// case RIG_PARM_KEYLIGHT:
|
case RIG_PARM_KEYLIGHT:
|
||||||
//ouch! cmdlen = sprintf(cmd, "ex0010000;"); break;
|
cmdlen = sprintf(cmd, "ex0010000;"); break;
|
||||||
case RIG_PARM_APO:
|
case RIG_PARM_APO:
|
||||||
cmdlen = sprintf(cmd, "ex0570000;"); break;
|
cmdlen = sprintf(cmd, "ex0570000;"); break;
|
||||||
case RIG_PARM_ANN:
|
case RIG_PARM_ANN:
|
||||||
|
@ -2910,7 +2893,7 @@ int ts2k_get_parm(RIG *rig, setting_t parm, value_t *val)
|
||||||
val->i = (int)(ack[9] - '0');
|
val->i = (int)(ack[9] - '0');
|
||||||
break;
|
break;
|
||||||
case RIG_PARM_BACKLIGHT:
|
case RIG_PARM_BACKLIGHT:
|
||||||
//ouch! case RIG_PARM_KEYLIGHT:
|
case RIG_PARM_KEYLIGHT:
|
||||||
val->f = (float)(ack[9] - '0');
|
val->f = (float)(ack[9] - '0');
|
||||||
break;
|
break;
|
||||||
case RIG_PARM_APO:
|
case RIG_PARM_APO:
|
||||||
|
@ -2945,10 +2928,10 @@ int ts2k_set_parm(RIG *rig, setting_t parm, value_t val)
|
||||||
(int) ((val.f>1.0)? 4.0 : val.f*4.0) );
|
(int) ((val.f>1.0)? 4.0 : val.f*4.0) );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* case RIG_PARM_KEYLIGHT:
|
case RIG_PARM_KEYLIGHT:
|
||||||
cmdlen = sprintf(cmd, "ex0010000%01u;", (val.i==0)? 0: 1);
|
cmdlen = sprintf(cmd, "ex0010000%01u;", (val.i==0)? 0: 1);
|
||||||
break;
|
break;
|
||||||
ouch!*/
|
|
||||||
case RIG_PARM_ANN:
|
case RIG_PARM_ANN:
|
||||||
return -RIG_ENIMPL;
|
return -RIG_ENIMPL;
|
||||||
|
|
||||||
|
|
129
kenwood/ts2k.h
129
kenwood/ts2k.h
|
@ -2,7 +2,7 @@
|
||||||
* Hamlib TS2000 backend - main header
|
* Hamlib TS2000 backend - main header
|
||||||
* Copyright (c) 2000-2002 by Stephane Fillod
|
* Copyright (c) 2000-2002 by Stephane Fillod
|
||||||
*
|
*
|
||||||
* $Id: ts2k.h,v 1.2 2002-06-29 09:54:50 dedmons Exp $
|
* $Id: ts2k.h,v 1.3 2002-06-30 10:17:03 dedmons Exp $
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or modify
|
* This library is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU Library General Public License as
|
* it under the terms of the GNU Library General Public License as
|
||||||
|
@ -125,8 +125,8 @@ int ts2k_set_trn(RIG *rig, int trn);
|
||||||
int ts2k_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch);
|
int ts2k_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch);
|
||||||
int ts2k_scan_on(RIG *rig, char ch);
|
int ts2k_scan_on(RIG *rig, char ch);
|
||||||
int ts2k_scan_off(RIG *rig);
|
int ts2k_scan_off(RIG *rig);
|
||||||
int ts2k_get_channel(RIG *rig, vfo_t vfo, channel_t *chan);
|
int ts2k_get_channel(RIG *rig, channel_t *chan);
|
||||||
int ts2k_set_channel(RIG *rig, vfo_t vfo, channel_t *chan);
|
int ts2k_set_channel(RIG *rig, const channel_t *chan);
|
||||||
char *ts2k_get_ctrl(RIG *rig);
|
char *ts2k_get_ctrl(RIG *rig);
|
||||||
int ts2k_set_ctrl(RIG *rig, int ptt, int ctrl);
|
int ts2k_set_ctrl(RIG *rig, int ptt, int ctrl);
|
||||||
int ts2k_vfo_ctrl(RIG *rig, vfo_t vfo);
|
int ts2k_vfo_ctrl(RIG *rig, vfo_t vfo);
|
||||||
|
@ -172,127 +172,4 @@ extern const struct rig_caps ts2000_caps;
|
||||||
extern BACKEND_EXPORT(int) initrigs_ts2k(void *be_handle);
|
extern BACKEND_EXPORT(int) initrigs_ts2k(void *be_handle);
|
||||||
extern BACKEND_EXPORT(rig_model_t) proberigs_ts2k(port_t *port);
|
extern BACKEND_EXPORT(rig_model_t) proberigs_ts2k(port_t *port);
|
||||||
|
|
||||||
|
|
||||||
#endif /* _TS2000_H */
|
#endif /* _TS2000_H */
|
||||||
|
|
||||||
|
|
||||||
/************** Temporary local copy of rig.h *************************/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _RIG_H_TEMP
|
|
||||||
#define _RIG_H_TEMP 1
|
|
||||||
|
|
||||||
#define RIG_RPT_SHIFT_1750 (RIG_RPT_SHIFT_PLUS + 1)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* I've cleaned up the VFO definition to make it easier to change
|
|
||||||
* when the MoonMelter is finally released. Essentially, I've
|
|
||||||
* done nothing. --Dale :)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Upper segment: "rig Major"
|
|
||||||
* Lower segment: "VFO minor"
|
|
||||||
*
|
|
||||||
* MSB LSB
|
|
||||||
* N n+1 n 0
|
|
||||||
* +-+-+-+-+-+-+-+-+-+-+-+
|
|
||||||
* | | |
|
|
||||||
* Rig VFO
|
|
||||||
* Major minor
|
|
||||||
*/
|
|
||||||
//typedef unsigned int vfo_t;
|
|
||||||
|
|
||||||
#define BIT(a) ( ((vfo_t) 1) << (a))
|
|
||||||
//#define BIT(a) (1L << (a))
|
|
||||||
|
|
||||||
#define RIG_MINOR 3
|
|
||||||
/* M=Major, m=minor */
|
|
||||||
#define RIG_SET_VFO(M,m) ((vfo_t) ( ((M) << (RIG_MINOR+1)) | (m) ))
|
|
||||||
/* Note: prior definition exibited exponential growth in bit count */
|
|
||||||
|
|
||||||
#define RIG_VFO_RESERVED RIG_SET_VFO(0, BIT(0))
|
|
||||||
#define RIG_VFO_RESERVED2 RIG_SET_VFO(0, BIT(1))
|
|
||||||
|
|
||||||
/* VFO Minor */
|
|
||||||
#define RIG_VFO1 RIG_SET_VFO(0, BIT(2))
|
|
||||||
#define RIG_VFO2 RIG_SET_VFO(0, BIT(3))
|
|
||||||
#define RIG_VFO3 RIG_SET_VFO(0, BIT(4))
|
|
||||||
/* |
|
|
||||||
* RIG_MINOR = n :== MAX >-----------------'
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Rig Major */
|
|
||||||
#define RIG_CTRL_MAIN RIG_SET_VFO(BIT(0), 0)
|
|
||||||
#define RIG_CTRL_SUB RIG_SET_VFO(BIT(1), 0)
|
|
||||||
#define RIG_CTRL_MEM RIG_SET_VFO(BIT(2), 0)
|
|
||||||
|
|
||||||
/* Standard VFO's for common use */
|
|
||||||
#define RIG_VFO_A (RIG_CTRL_MAIN | RIG_VFO1)
|
|
||||||
#define RIG_VFO_B (RIG_CTRL_MAIN | RIG_VFO2)
|
|
||||||
#define RIG_VFO_C (RIG_CTRL_SUB | RIG_VFO1)
|
|
||||||
#define RIG_VFO_MEM RIG_CTRL_MEM
|
|
||||||
/* VFOC should be VFO3 because ambiguities may arise someday */
|
|
||||||
|
|
||||||
/* VFO stuff that may be handy. */
|
|
||||||
#define RIG_VFO_MASK (RIG_VFO1 | RIG_VFO2 | RIG_VFO3)
|
|
||||||
#define RIG_CTRL_MASK (RIG_CTRL_MAIN | RIG_CTRL_SUB | RIG_CTRL_MEM)
|
|
||||||
#define RIG_VFO_VALID (RIG_CTRL_MASK | RIG_VFO_MASK)
|
|
||||||
#define RIG_VFO_TEST(v) (((v) & RIG_VFO_VALID) != 0)
|
|
||||||
|
|
||||||
/* The following are for compatibility with existing code! */
|
|
||||||
#define RIG_VFO_NONE (~RIG_VFO_VALID)
|
|
||||||
#define RIG_VFO_CURR RIG_SET_VFO(0,0)
|
|
||||||
#define RIG_VFO_ALL RIG_VFO_MASK
|
|
||||||
#define RIG_VFO_MAIN RIG_CTRL_MAIN
|
|
||||||
#define RIG_VFO_SUB RIG_CTRL_SUB
|
|
||||||
#define RIG_VFO_VFO (RIG_VFO_VALID & ~RIG_VFO_MEM)
|
|
||||||
/*
|
|
||||||
* Ahhh. Now I can live happy and die free! --Dale
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define RIG_SCAN_VFO (1L<<4) /* most basic of scans! */
|
|
||||||
|
|
||||||
#define RIG_SCAN_ALL (RIG_SCAN_STOP | RIG_SCAN_MEM | RIG_SCAN_SLCT \
|
|
||||||
| RIG_SCAN_PRIO | RIG_SCAN_PROG | RIG_SCAN_DELTA \
|
|
||||||
| RIG_SCAN_VFO)
|
|
||||||
#define RIG_SCAN_EXCLUDE(e) (RIG_SCAN_ALL & ~(e))
|
|
||||||
|
|
||||||
/* There's no reason for every back-end to write huge lists. The guys
|
|
||||||
* with about 50% features still have some work. Someone that knows
|
|
||||||
* many rigs should make RIG_LEVEL_COMMON, RIG_FUNC_COMMON --Dale
|
|
||||||
*/
|
|
||||||
#define RIG_LEVEL_ALL (RIG_LEVEL_PREAMP | RIG_LEVEL_ATT | RIG_LEVEL_VOX \
|
|
||||||
| RIG_LEVEL_AF | RIG_LEVEL_RF | RIG_LEVEL_SQL \
|
|
||||||
| RIG_LEVEL_IF | RIG_LEVEL_APF | RIG_LEVEL_NR | RIG_LEVEL_PBT_IN \
|
|
||||||
| RIG_LEVEL_PBT_OUT | RIG_LEVEL_CWPITCH | RIG_LEVEL_RFPOWER \
|
|
||||||
| RIG_LEVEL_MICGAIN | RIG_LEVEL_KEYSPD | RIG_LEVEL_NOTCHF \
|
|
||||||
| RIG_LEVEL_COMP | RIG_LEVEL_AGC | RIG_LEVEL_BKINDL \
|
|
||||||
| RIG_LEVEL_BALANCE | RIG_LEVEL_METER | RIG_LEVEL_VOXGAIN \
|
|
||||||
| RIG_LEVEL_VOXDELAY | RIG_LEVEL_ANTIVOX | RIG_LEVEL_SQLSTAT \
|
|
||||||
| RIG_LEVEL_SWR | RIG_LEVEL_ALC | RIG_LEVEL_STRENGTH )
|
|
||||||
|
|
||||||
/* simplification macro */
|
|
||||||
#define RIG_LEVEL_EXCLUDE(e) (RIG_LEVEL_ALL & ~(e))
|
|
||||||
|
|
||||||
/* more simplification macros */
|
|
||||||
#define RIG_PARM_ALL (RIG_PARM_ANN | RIG_PARM_APO | RIG_PARM_BACKLIGHT \
|
|
||||||
| RIG_PARM_BEEP | RIG_PARM_TIME | RIG_PARM_BAT )
|
|
||||||
#define RIG_PARM_EXCLUDE(e) (RIG_PARM_ALL & ~(e))
|
|
||||||
|
|
||||||
/* For the Ham who has it all --Dale */
|
|
||||||
#define RIG_FUNC_ALL (RIG_FUNC_FAGC | RIG_FUNC_NB | RIG_FUNC_COMP \
|
|
||||||
| RIG_FUNC_VOX | RIG_FUNC_TONE | RIG_FUNC_TSQL \
|
|
||||||
| RIG_FUNC_SBKIN | RIG_FUNC_FBKIN | RIG_FUNC_ANF | RIG_FUNC_NR \
|
|
||||||
| RIG_FUNC_AIP | RIG_FUNC_APF | RIG_FUNC_MON | RIG_FUNC_MN \
|
|
||||||
| RIG_FUNC_RNF | RIG_FUNC_ARO | RIG_FUNC_LOCK | RIG_FUNC_MUTE \
|
|
||||||
| RIG_FUNC_VSC | RIG_FUNC_REV | RIG_FUNC_SQL | RIG_FUNC_ABM \
|
|
||||||
| RIG_FUNC_BC | RIG_FUNC_MBC | RIG_FUNC_LMP | RIG_FUNC_AFC \
|
|
||||||
| RIG_FUNC_SATMODE | RIG_FUNC_SCOPE | RIG_FUNC_RESUME )
|
|
||||||
|
|
||||||
/* Those of us who don't have everything */
|
|
||||||
//#define RIG_FUNC_EXCLUDE(f) (RIG_FUNC_ALL & ~(f))
|
|
||||||
|
|
||||||
#endif /* _RIG_H */
|
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,10 @@
|
||||||
* License: GNU
|
* License: GNU
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* status: Never been compiled!
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Functions to initialize, read, set, and list menus
|
* Functions to initialize, read, set, and list menus
|
||||||
* for the TS-2000. These functions will be added to
|
* for the TS-2000. These functions will be added to
|
||||||
|
|
84
src/misc.c
84
src/misc.c
|
@ -2,7 +2,7 @@
|
||||||
* Hamlib Interface - toolbox
|
* Hamlib Interface - toolbox
|
||||||
* Copyright (c) 2000-2002 by Stephane Fillod and Frank Singleton
|
* Copyright (c) 2000-2002 by Stephane Fillod and Frank Singleton
|
||||||
*
|
*
|
||||||
* $Id: misc.c,v 1.17 2002-06-17 20:59:51 fillods Exp $
|
* $Id: misc.c,v 1.18 2002-06-30 10:17:03 dedmons Exp $
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or modify
|
* This library is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU Library General Public License as
|
* it under the terms of the GNU Library General Public License as
|
||||||
|
@ -253,7 +253,7 @@ int sprintf_freq(char *str, freq_t freq)
|
||||||
f = (double)freq;
|
f = (double)freq;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sprintf (str, "%g%s", f, hz);
|
return sprintf (str, "%g %s", f, hz);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * strmode(rmode_t mode)
|
const char * strmode(rmode_t mode)
|
||||||
|
@ -267,10 +267,15 @@ const char * strmode(rmode_t mode)
|
||||||
case RIG_MODE_FM: return "FM";
|
case RIG_MODE_FM: return "FM";
|
||||||
case RIG_MODE_WFM: return "WFM";
|
case RIG_MODE_WFM: return "WFM";
|
||||||
case RIG_MODE_NONE: return "";
|
case RIG_MODE_NONE: return "";
|
||||||
|
default:
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* shouldn't this use the same table as parse_vfo()?
|
||||||
|
* It already caused me one bug. :) --Dale
|
||||||
|
*/
|
||||||
const char *strvfo(vfo_t vfo)
|
const char *strvfo(vfo_t vfo)
|
||||||
{
|
{
|
||||||
switch (vfo) {
|
switch (vfo) {
|
||||||
|
@ -292,6 +297,20 @@ const char *strvfo(vfo_t vfo)
|
||||||
return "Main";
|
return "Main";
|
||||||
case RIG_VFO_SUB:
|
case RIG_VFO_SUB:
|
||||||
return "Sub";
|
return "Sub";
|
||||||
|
case RIG_CTRL_SAT:
|
||||||
|
return "SAT";
|
||||||
|
case RIG_VFO_MEM_A:
|
||||||
|
return "MEMA";
|
||||||
|
case RIG_VFO_MEM_C:
|
||||||
|
return "MEMC";
|
||||||
|
case RIG_VFO_CALL_A:
|
||||||
|
return "CALLA";
|
||||||
|
case RIG_VFO_CALL_C:
|
||||||
|
return "CALLC";
|
||||||
|
case RIG_VFO_AB:
|
||||||
|
return "VFOAB";
|
||||||
|
case RIG_VFO_BA:
|
||||||
|
return "VFOBA";
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -329,6 +348,7 @@ const char *strfunc(setting_t func)
|
||||||
case RIG_FUNC_RESUME: return "RESUME";
|
case RIG_FUNC_RESUME: return "RESUME";
|
||||||
|
|
||||||
case RIG_FUNC_NONE: return "";
|
case RIG_FUNC_NONE: return "";
|
||||||
|
default:
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -366,6 +386,7 @@ const char *strlevel(setting_t level)
|
||||||
case RIG_LEVEL_STRENGTH: return "STRENGTH";
|
case RIG_LEVEL_STRENGTH: return "STRENGTH";
|
||||||
|
|
||||||
case RIG_LEVEL_NONE: return "";
|
case RIG_LEVEL_NONE: return "";
|
||||||
|
default:
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -381,6 +402,7 @@ const char *strparm(setting_t parm)
|
||||||
case RIG_PARM_BAT: return "BAT";
|
case RIG_PARM_BAT: return "BAT";
|
||||||
|
|
||||||
case RIG_PARM_NONE: return "";
|
case RIG_PARM_NONE: return "";
|
||||||
|
default:
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -392,6 +414,7 @@ const char *strptrshift(rptr_shift_t shift)
|
||||||
case RIG_RPT_SHIFT_PLUS: return "-";
|
case RIG_RPT_SHIFT_PLUS: return "-";
|
||||||
|
|
||||||
case RIG_RPT_SHIFT_NONE: return "None";
|
case RIG_RPT_SHIFT_NONE: return "None";
|
||||||
|
default:
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -412,18 +435,22 @@ const char *strvfop(vfo_op_t op)
|
||||||
case RIG_OP_RIGHT: return "RIGHT";
|
case RIG_OP_RIGHT: return "RIGHT";
|
||||||
|
|
||||||
case RIG_OP_NONE: return "";
|
case RIG_OP_NONE: return "";
|
||||||
|
default:
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *strscan(scan_t scan)
|
const char *strscan(scan_t rscan)
|
||||||
{
|
{
|
||||||
switch (scan) {
|
switch (rscan) {
|
||||||
case RIG_SCAN_STOP: return "STOP";
|
case RIG_SCAN_STOP: return "STOP";
|
||||||
case RIG_SCAN_MEM: return "MEM";
|
case RIG_SCAN_MEM: return "MEM";
|
||||||
case RIG_SCAN_SLCT: return "SLCT";
|
case RIG_SCAN_SLCT: return "SLCT";
|
||||||
case RIG_SCAN_PRIO: return "PRIO";
|
case RIG_SCAN_PRIO: return "PRIO";
|
||||||
|
case RIG_SCAN_PROG: return "PROG";
|
||||||
case RIG_SCAN_DELTA: return "DELTA";
|
case RIG_SCAN_DELTA: return "DELTA";
|
||||||
|
case RIG_SCAN_VFO: return "VFO";
|
||||||
|
default:
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -547,16 +574,16 @@ int sprintf_vfop(char *str, vfo_op_t op)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int sprintf_scan(char *str, scan_t scan)
|
int sprintf_scan(char *str, scan_t rscan)
|
||||||
{
|
{
|
||||||
int i, len=0;
|
int i, len=0;
|
||||||
|
|
||||||
*str = '\0';
|
*str = '\0';
|
||||||
if (scan == RIG_SCAN_NONE)
|
if (rscan == RIG_SCAN_NONE)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (i = 0; i < 30; i++) {
|
for (i = 0; i < 30; i++) {
|
||||||
const char *ms = strscan(scan & (1UL<<i));
|
const char *ms = strscan(rscan & (1UL<<i));
|
||||||
if (!ms || !ms[0])
|
if (!ms || !ms[0])
|
||||||
continue; /* unknown, FIXME! */
|
continue; /* unknown, FIXME! */
|
||||||
strcat(str, ms);
|
strcat(str, ms);
|
||||||
|
@ -600,12 +627,20 @@ static struct {
|
||||||
{ RIG_VFO_A, "VFOA" },
|
{ RIG_VFO_A, "VFOA" },
|
||||||
{ RIG_VFO_B, "VFOB" },
|
{ RIG_VFO_B, "VFOB" },
|
||||||
{ RIG_VFO_C, "VFOC" },
|
{ RIG_VFO_C, "VFOC" },
|
||||||
{ RIG_VFO_CURR, "currVFO" },
|
{ RIG_VFO_AB, "VFOAB" },
|
||||||
{ RIG_VFO_ALL, "allVFO" },
|
{ RIG_VFO_BA, "VFOBA" },
|
||||||
{ RIG_VFO_MEM, "MEM" },
|
{ RIG_VFO_MEM_A, "MEMA" },
|
||||||
{ RIG_VFO_VFO, "VFO" },
|
{ RIG_VFO_MEM_C, "MEMC" },
|
||||||
|
{ RIG_CTRL_SAT, "SAT" },
|
||||||
|
{ RIG_VFO_CALL_A, "CALLA" },
|
||||||
|
{ RIG_VFO_CALL_C, "CALLC" },
|
||||||
{ RIG_VFO_MAIN, "Main" },
|
{ RIG_VFO_MAIN, "Main" },
|
||||||
{ RIG_VFO_SUB, "Sub" },
|
{ RIG_VFO_SUB, "Sub" },
|
||||||
|
// one or more of the following may be ambiguous --Dale
|
||||||
|
{ RIG_VFO_CURR, "currVFO" },
|
||||||
|
{ RIG_VFO_VFO, "VFO" },
|
||||||
|
{ RIG_VFO_MEM, "MEM" },
|
||||||
|
// { RIG_VFO_ALL, "allVFO" },
|
||||||
{ RIG_VFO_NONE, NULL },
|
{ RIG_VFO_NONE, NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -761,14 +796,16 @@ vfo_op_t parse_vfo_op(const char *s)
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
scan_t scan;
|
scan_t SCan;
|
||||||
const char *str;
|
const char *str;
|
||||||
} scan_str[] = {
|
} scan_str[] = {
|
||||||
{ RIG_SCAN_STOP, "STOP" },
|
{ RIG_SCAN_STOP, "STOP" },
|
||||||
{ RIG_SCAN_MEM, "MEM" },
|
{ RIG_SCAN_MEM, "MEM" },
|
||||||
{ RIG_SCAN_SLCT, "SLCT" },
|
{ RIG_SCAN_SLCT, "SLCT" },
|
||||||
{ RIG_SCAN_PRIO, "PRIO" },
|
{ RIG_SCAN_PRIO, "PRIO" },
|
||||||
|
{ RIG_SCAN_PROG, "PROG" },
|
||||||
{ RIG_SCAN_DELTA, "DELTA" },
|
{ RIG_SCAN_DELTA, "DELTA" },
|
||||||
|
{ RIG_SCAN_VFO, "VFO" },
|
||||||
{ RIG_SCAN_NONE, NULL },
|
{ RIG_SCAN_NONE, NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -776,19 +813,26 @@ scan_t parse_scan(const char *s)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i=0 ; scan_str[i].str != NULL; i++)
|
printf(__FUNCTION__": parsing %s...\n",s);
|
||||||
if (!strcmp(s, scan_str[i].str))
|
|
||||||
return scan_str[i].scan;
|
for (i=0 ; scan_str[i].str != NULL; i++) {
|
||||||
|
if (strcmp(s, scan_str[i].str) == 0) {
|
||||||
|
return scan_str[i].SCan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return RIG_SCAN_NONE;
|
return RIG_SCAN_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
rptr_shift_t parse_rptr_shift(const char *s)
|
rptr_shift_t parse_rptr_shift(const char *s)
|
||||||
{
|
{
|
||||||
if (!strcmp(s, "+"))
|
if (strcmp(s, "+") == 0)
|
||||||
return RIG_RPT_SHIFT_PLUS;
|
return RIG_RPT_SHIFT_PLUS;
|
||||||
else if (!strcmp(s, "-"))
|
else if (strcmp(s, "-") == 0)
|
||||||
return RIG_RPT_SHIFT_MINUS;
|
return RIG_RPT_SHIFT_MINUS;
|
||||||
|
else if (strcmp(s, "=") == 0)
|
||||||
|
return RIG_RPT_SHIFT_1750;
|
||||||
else
|
else
|
||||||
return RIG_RPT_SHIFT_NONE;
|
return RIG_RPT_SHIFT_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue