From 7212a11aa881da1a57b741d6df946b54a8a9a529 Mon Sep 17 00:00:00 2001 From: "Dale E. Edmons, KD7ENI" Date: Sun, 30 Jun 2002 10:17:03 +0000 Subject: [PATCH] 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-79ac388436b8 --- include/hamlib/rig.h | 1282 +++++++++++++++++++++++++----------------- kenwood/Makefile.am | 4 +- kenwood/ts2k.c | 147 +++-- kenwood/ts2k.h | 129 +---- kenwood/ts2k_menu.c | 4 + src/misc.c | 84 ++- 6 files changed, 903 insertions(+), 747 deletions(-) diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 1355ae7b6..9156136ab 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -2,7 +2,7 @@ * Hamlib Interface - API header * Copyright (c) 2000-2002 by Stephane Fillod and Frank Singleton * - * $Id: rig.h,v 1.64 2002-04-23 21:49:04 fillods Exp $ + * $Id: rig.h,v 1.65 2002-06-30 10:17:03 dedmons Exp $ * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as @@ -28,7 +28,7 @@ #include /* required for struct timeval */ #if defined(__CYGWIN__) || defined(_WIN32) -#include /* HANDLE definition */ +#include /* HANDLE definition */ #endif /* __BEGIN_DECLS should be used at the beginning of your declarations, @@ -40,8 +40,8 @@ # define __BEGIN_DECLS extern "C" { # define __END_DECLS } #else -# define __BEGIN_DECLS /* empty */ -# define __END_DECLS /* empty */ +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ #endif /* HAMLIB_PARAMS is a macro used to wrap function prototypes, so that compilers @@ -59,9 +59,7 @@ #include -__BEGIN_DECLS - -extern HAMLIB_EXPORT_VAR(const char) hamlib_version[]; +__BEGIN_DECLS extern HAMLIB_EXPORT_VAR(const char) hamlib_version[]; extern HAMLIB_EXPORT_VAR(const char) hamlib_copyright[]; typedef unsigned int tone_t; @@ -69,21 +67,21 @@ typedef unsigned int tone_t; /* * Error codes that can be returned by the Hamlib functions */ -#define RIG_OK 0 /* completed sucessfully */ -#define RIG_EINVAL 1 /* invalid parameter */ -#define RIG_ECONF 2 /* invalid configuration (serial,..) */ -#define RIG_ENOMEM 3 /* memory shortage */ -#define RIG_ENIMPL 4 /* function not implemented, but will be */ -#define RIG_ETIMEOUT 5 /* communication timed out */ -#define RIG_EIO 6 /* IO error, including open failed */ -#define RIG_EINTERNAL 7 /* Internal Hamlib error, huh! */ -#define RIG_EPROTO 8 /* Protocol error */ -#define RIG_ERJCTED 9 /* Command rejected by the rig */ -#define RIG_ETRUNC 10 /* Command performed, but arg truncated */ -#define RIG_ENAVAIL 11 /* function not available */ -#define RIG_ENTARGET 12 /* VFO not targetable */ -#define RIG_BUSERROR 13 /* Error talking on the bus */ -#define RIG_BUSBUSY 14 /* Collision on the bus */ +#define RIG_OK 0 /* completed sucessfully */ +#define RIG_EINVAL 1 /* invalid parameter */ +#define RIG_ECONF 2 /* invalid configuration (serial,..) */ +#define RIG_ENOMEM 3 /* memory shortage */ +#define RIG_ENIMPL 4 /* function not implemented, but will be */ +#define RIG_ETIMEOUT 5 /* communication timed out */ +#define RIG_EIO 6 /* IO error, including open failed */ +#define RIG_EINTERNAL 7 /* Internal Hamlib error, huh! */ +#define RIG_EPROTO 8 /* Protocol error */ +#define RIG_ERJCTED 9 /* Command rejected by the rig */ +#define RIG_ETRUNC 10 /* Command performed, but arg truncated */ +#define RIG_ENAVAIL 11 /* function not available */ +#define RIG_ENTARGET 12 /* VFO not targetable */ +#define RIG_BUSERROR 13 /* Error talking on the bus */ +#define RIG_BUSBUSY 14 /* Collision on the bus */ /* Forward struct references */ @@ -98,7 +96,7 @@ typedef struct rig RIG; #define FILPATHLEN 100 #define FRQRANGESIZ 30 #define MAXCHANDESC 30 /* describe channel eg: "WWV 5Mhz" */ -#define TSLSTSIZ 20 /* max tuning step list size, zero ended */ +#define TSLSTSIZ 20 /* max tuning step list size, zero ended */ #define FLTLSTSIZ 16 /* max mode/filter list size, zero ended */ #define MAXDBLSTSIZ 8 /* max preamp/att levels supported, zero ended */ #define CHANLSTSIZ 16 /* max mem_list size, zero ended */ @@ -185,21 +183,23 @@ enum rig_status_e { RIG_STATUS_UNTESTED, /* written from specs, rig unavailable for test, feedback most wanted! */ RIG_STATUS_BETA, RIG_STATUS_STABLE, - RIG_STATUS_BUGGY, /* was stable, but something broke it! */ + RIG_STATUS_BUGGY, /* was stable, but something broke it! */ RIG_STATUS_NEW }; enum rptr_shift_e { RIG_RPT_SHIFT_NONE = 0, RIG_RPT_SHIFT_MINUS, - RIG_RPT_SHIFT_PLUS + RIG_RPT_SHIFT_PLUS, + RIG_RPT_SHIFT_1750 // ts2000 E-type '=' }; typedef enum rptr_shift_e rptr_shift_t; +/* hopefully, this is obsolete? --Dale kd7eni */ enum split_e { RIG_SPLIT_OFF = 0, - RIG_SPLIT_ON, + RIG_SPLIT_ON }; typedef enum split_e split_t; @@ -218,48 +218,97 @@ typedef signed long shortfreq_t; #define RIG_FREQ_NONE Hz(0) - -#define RIG_VFO_CURR 0 /* current "tunable channel"/VFO */ -#define RIG_VFO_NONE 0 /* used in caps */ -#define RIG_VFO_ALL -1 /* apply to all VFO (when used as target) */ - /* - * Or should it be better designated - * as a "tunable channel" (RIG_CTRL_MEM) ? --SF + * 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 :) */ -#define RIG_VFO_MEM -2 /* means Memory mode, to be used with set_vfo */ -#define RIG_VFO_VFO -3 /* means (any)VFO mode, with set_vfo */ - -#define RIG_VFO1 (1<<0) -#define RIG_VFO2 (1<<1) -#define RIG_CTRL_MAIN 1 -#define RIG_CTRL_SUB 2 /* - * one byte per "tunable channel": + * Upper segment: "rig Major" + * Lower segment: "VFO minor" * - * MSB LSB - * 8 1 - * +-+-+-+-+-+-+-+-+ - * | | | - * CTL VFO + * 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 6 +/* 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_CTRL RIG_SET_VFO(0, BIT(0)) +#define RIG_VFO_PTT RIG_SET_VFO(0, BIT(1)) + +/* VFO Minor */ +#define RIG_VFO1 RIG_SET_VFO(0, BIT(2)) // VFO_A +#define RIG_VFO2 RIG_SET_VFO(0, BIT(3)) // VFO_B +#define RIG_VFO3 RIG_SET_VFO(0, BIT(4)) // VFO_C +#define RIG_VFO4 RIG_SET_VFO(0, BIT(5)) // MEM +#define RIG_VFO5 RIG_SET_VFO(0, BIT(6)) // CALL +/* | + * RIG_MINOR = n :== MAX >-----------------' */ -/* How to call it? "tunable channel"? Control band? */ -#define RIG_CTRL_BAND(band,vfo) ( (0x80<<(8*((band)-1))) | ((vfo)<<(8*((band)-1))) ) +/* 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) +#define RIG_CTRL_CALL RIG_SET_VFO(BIT(3), 0) +#define RIG_CTRL_SPLIT RIG_SET_VFO(BIT(4), 0) +#define RIG_CTRL_SCAN RIG_SET_VFO(BIT(5), 0) +#define RIG_CTRL_SAT RIG_SET_VFO(BIT(6), 0) +#define RIG_CTRL_REV RIG_SET_VFO(BIT(7), 0) - /* macros */ -#define RIG_VFO_A (RIG_CTRL_BAND(RIG_CTRL_MAIN, RIG_VFO1)) -#define RIG_VFO_B (RIG_CTRL_BAND(RIG_CTRL_MAIN, RIG_VFO2)) -#define RIG_VFO_C (RIG_CTRL_BAND(RIG_CTRL_SUB, RIG_VFO1)) -#define RIG_VFO_MAIN (RIG_CTRL_BAND(RIG_CTRL_MAIN, RIG_VFO_CURR)) -#define RIG_VFO_SUB (RIG_CTRL_BAND(RIG_CTRL_SUB, RIG_VFO_CURR)) +/* VFO stuff that may be handy. */ +#define RIG_VFO_MASK (RIG_VFO1 | RIG_VFO2 | RIG_VFO3 | RIG_VFO4 | RIG_VFO5) +#define RIG_CTRL_MASK (RIG_CTRL_MAIN | RIG_CTRL_SUB | RIG_CTRL_MEM \ + | RIG_CTRL_CALL | RIG_CTRL_SPLIT | RIG_CTRL_SCAN \ + | RIG_CTRL_SAT | RIG_CTRL_REV) +#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! */ + +/* 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_VFO3) + +/* More standard VFO' but these are new! */ +// How is it possible for rig_get_vfo() to tell use we're split otherwise? +#define RIG_VFO_AB ((RIG_CTRL_SPLIT | RIG_CTRL_MAIN) | (RIG_VFO1 | RIG_VFO2)) +#define RIG_VFO_BA ((RIG_CTRL_REV | RIG_CTRL_SPLIT | RIG_CTRL_MAIN) \ + | (RIG_VFO1 | RIG_VFO2)) +/* memories (except temp) */ +#define RIG_VFO_MEM_A ((RIG_CTRL_MEM | RIG_CTRL_MAIN) | RIG_VFO4) +#define RIG_VFO_MEM_C ((RIG_CTRL_MEM | RIG_CTRL_SUB) | RIG_VFO4) +#define RIG_VFO_CALL_A ((RIG_CTRL_MEM | RIG_CTRL_MAIN) | RIG_VFO5) +#define RIG_VFO_CALL_C ((RIG_CTRL_CALL | RIG_CTRL_SUB) | RIG_VFO5) + +/* Standard control's for common use */ +#define RIG_VFO_MEM (RIG_CTRL_MEM | RIG_VFO_VFO) +#define RIG_VFO_MAIN RIG_CTRL_MAIN +#define RIG_VFO_SUB RIG_CTRL_SUB + +/* pseudo targets */ +#define RIG_VFO_CURR RIG_VFO_VALID +#define RIG_VFO_VFO RIG_VFO_MASK + +/* Hopefully, to following will be dropped */ +#define RIG_VFO_NONE (~RIG_VFO_VALID) +#define RIG_VFO_ALL ~RIG_VFO_MASK /* - * could RIG_VFO_ALL be useful? - * i.e. apply to all VFO, when used as target + * Ahhh. Now I can live happy and die free! --Dale */ -typedef int vfo_t; #define RIG_TARGETABLE_NONE 0x00 #define RIG_TARGETABLE_FREQ 0x01 @@ -277,19 +326,19 @@ typedef shortfreq_t pbwidth_t; enum dcd_e { RIG_DCD_OFF = 0, /* squelch closed */ - RIG_DCD_ON /* squelch open */ + RIG_DCD_ON /* squelch open */ }; typedef enum dcd_e dcd_t; enum dcd_type_e { - RIG_DCD_NONE = 0, /* not available */ - RIG_DCD_RIG, /* i.e. has get_dcd cap */ + RIG_DCD_NONE = 0, /* not available */ + RIG_DCD_RIG, /* i.e. has get_dcd cap */ RIG_DCD_SERIAL_DSR, RIG_DCD_SERIAL_CTS, - RIG_DCD_PARALLEL, /* DCD comes from ?? DATA1? STROBE? */ + RIG_DCD_PARALLEL, /* DCD comes from ?? DATA1? STROBE? */ #ifdef TODO_MORE_DCD - RIG_DCD_PTT /* follow ptt_type, i.e. ptt=RTS -> dcd=CTS on same line --SF */ + RIG_DCD_PTT /* follow ptt_type, i.e. ptt=RTS -> dcd=CTS on same line --SF */ #endif }; @@ -304,45 +353,45 @@ enum ptt_e { typedef enum ptt_e ptt_t; enum ptt_type_e { - RIG_PTT_NONE = 0, /* not available */ - RIG_PTT_RIG, /* legacy PTT */ + RIG_PTT_NONE = 0, /* not available */ + RIG_PTT_RIG, /* legacy PTT */ RIG_PTT_SERIAL_DTR, RIG_PTT_SERIAL_RTS, - RIG_PTT_PARALLEL /* PTT accessed through DATA0 */ + RIG_PTT_PARALLEL /* PTT accessed through DATA0 */ }; typedef enum ptt_type_e ptt_type_t; enum powerstat_e { - RIG_POWER_OFF = 0, - RIG_POWER_ON, - RIG_POWER_STANDBY + RIG_POWER_OFF = 0, + RIG_POWER_ON, + RIG_POWER_STANDBY }; typedef enum powerstat_e powerstat_t; enum reset_e { - RIG_RESET_NONE = 0, - RIG_RESET_SOFT, - RIG_RESET_VFO, - RIG_RESET_MCALL, /* memory clear */ - RIG_RESET_MASTER, + RIG_RESET_NONE = 0, + RIG_RESET_SOFT, + RIG_RESET_VFO, + RIG_RESET_MCALL, /* memory clear */ + RIG_RESET_MASTER, }; typedef enum reset_e reset_t; /* VFO/MEM mode are set by set_vfo */ #define RIG_OP_NONE 0 -#define RIG_OP_CPY (1<<0) /* VFO A = VFO B */ -#define RIG_OP_XCHG (1<<1) /* Exchange VFO A/B */ -#define RIG_OP_FROM_VFO (1<<2) /* VFO->MEM */ -#define RIG_OP_TO_VFO (1<<3) /* MEM->VFO */ -#define RIG_OP_MCL (1<<4) /* Memory clear */ -#define RIG_OP_UP (1<<5) /* UP */ -#define RIG_OP_DOWN (1<<6) /* DOWN */ -#define RIG_OP_BAND_UP (1<<7) /* Band UP */ -#define RIG_OP_BAND_DOWN (1<<8) /* Band DOWN */ -#define RIG_OP_LEFT (1<<9) /* LEFT */ -#define RIG_OP_RIGHT (1<<10) /* RIGHT */ +#define RIG_OP_CPY (1<<0) /* VFO A = VFO B */ +#define RIG_OP_XCHG (1<<1) /* Exchange VFO A/B */ +#define RIG_OP_FROM_VFO (1<<2) /* VFO->MEM */ +#define RIG_OP_TO_VFO (1<<3) /* MEM->VFO */ +#define RIG_OP_MCL (1<<4) /* Memory clear */ +#define RIG_OP_UP (1<<5) /* UP */ +#define RIG_OP_DOWN (1<<6) /* DOWN */ +#define RIG_OP_BAND_UP (1<<7) /* Band UP */ +#define RIG_OP_BAND_DOWN (1<<8) /* Band DOWN */ +#define RIG_OP_LEFT (1<<9) /* LEFT */ +#define RIG_OP_RIGHT (1<<10) /* RIGHT */ /* * RIG_MVOP_DUAL_ON/RIG_MVOP_DUAL_OFF (Dual watch off/Dual watch on) @@ -350,17 +399,19 @@ typedef enum reset_e reset_t; * or is it the balance (-> set_level) ? --SF */ -typedef long vfo_op_t; - - +typedef unsigned int vfo_op_t; #define RIG_SCAN_NONE 0L #define RIG_SCAN_STOP RIG_SCAN_NONE -#define RIG_SCAN_MEM (1L<<0) /* Scan all memory channels */ -#define RIG_SCAN_SLCT (1L<<1) /* Scan all selected memory channels */ -#define RIG_SCAN_PRIO (1L<<2) /* Priority watch (mem or call channel) */ -#define RIG_SCAN_PROG (1L<<3) /* Programmed(edge) scan */ -#define RIG_SCAN_DELTA (1L<<4) /* delta-f scan */ +#define RIG_SCAN_MEM (1L<<0) /* Scan all memory channels */ +#define RIG_SCAN_SLCT (1L<<1) /* Scan all selected memory channels */ +#define RIG_SCAN_PRIO (1L<<2) /* Priority watch (mem or call channel) */ +#define RIG_SCAN_PROG (1L<<3) /* Programmed(edge) scan */ +#define RIG_SCAN_DELTA (1L<<4) /* delta-f scan */ +#define RIG_SCAN_VFO (1L<<5) /* most basic scan --kd7eni */ + +#define RIG_SCAN_ALL (RIG_SCAN_MEM | RIG_SCAN_SLCT | RIG_SCAN_PRIO \ + | RIG_SCAN_PROG | RIG_SCAN_DELTA | RIG_SCAN_VFO) typedef long scan_t; @@ -382,22 +433,22 @@ typedef long token_t; #define RIG_COMBO_MAX 8 struct confparams { - token_t token; - const char *name; /* try to avoid spaces in the name */ - const char *label; - const char *tooltip; - const char *dflt; - unsigned int type; - union { - struct { - float min; - float max; - float step; - } n; - struct { - const char *combostr[RIG_COMBO_MAX]; - } c; - } u; + token_t token; + const char *name; /* try to avoid spaces in the name */ + const char *label; + const char *tooltip; + const char *dflt; + unsigned int type; + union { + struct { + float min; + float max; + float step; + } n; + struct { + const char *combostr[RIG_COMBO_MAX]; + } c; + } u; }; /* @@ -417,27 +468,28 @@ typedef long ann_t; typedef int ant_t; enum agc_level_e { - RIG_AGC_OFF = 0, - RIG_AGC_SUPERFAST, - RIG_AGC_FAST, - RIG_AGC_SLOW + RIG_AGC_OFF = 0, + RIG_AGC_SUPERFAST, + RIG_AGC_FAST, + RIG_AGC_SLOW, + RIG_AGC_USER /* some rig's are selectable :) --kd7eni */ }; enum meter_level_e { - RIG_METER_NONE = 0, - RIG_METER_SWR, - RIG_METER_COMP, - RIG_METER_ALC, - RIG_METER_IC, - RIG_METER_DB, + RIG_METER_NONE = 0, + RIG_METER_SWR, + RIG_METER_COMP, + RIG_METER_ALC, + RIG_METER_IC, + RIG_METER_DB, }; /* * Universal approach for use by set_level/get_level */ union value_u { - signed int i; - float f; + signed int i; + float f; }; typedef union value_u value_t; @@ -446,7 +498,7 @@ typedef union value_u value_t; #define RIG_LEVEL_ATT (1<<1) /* Attenuator, arg int (dB) */ #define RIG_LEVEL_VOX (1<<2) /* VOX delay, arg int (tenth of seconds) */ #define RIG_LEVEL_AF (1<<3) /* Volume, arg float [0.0..1.0] */ -#define RIG_LEVEL_RF (1<<4) /* RF gain (not TX power), arg float [0.0..1.0] or in dB ?? -20..20 ?*/ +#define RIG_LEVEL_RF (1<<4) /* RF gain (not TX power), arg float [0.0..1.0] or in dB ?? -20..20 ? */ #define RIG_LEVEL_SQL (1<<5) /* Squelch, arg float [0.0 .. 1.0] */ #define RIG_LEVEL_IF (1<<6) /* IF, arg int (Hz) */ #define RIG_LEVEL_APF (1<<7) /* APF, arg float [0.0 .. 1.0] */ @@ -464,9 +516,9 @@ typedef union value_u value_t; #define RIG_LEVEL_BALANCE (1<<19) /* Balance (Dual Watch), arg float [0.0 .. 1.0] */ #define RIG_LEVEL_METER (1<<20) /* Display meter, arg int (see enum meter_level_e) */ -#define RIG_LEVEL_VOXGAIN (1<<21) /* VOX gain level, arg float [0.0 .. 1.0] */ -#define RIG_LEVEL_VOXDELAY RIG_LEVEL_VOX /* VOX delay, arg int (tenth of seconds) */ -#define RIG_LEVEL_ANTIVOX (1<<22) /* anti-VOX level, arg float [0.0 .. 1.0] */ +#define RIG_LEVEL_VOXGAIN (1<<21) /* VOX gain level, arg float [0.0 .. 1.0] */ +#define RIG_LEVEL_VOXDELAY RIG_LEVEL_VOX /* VOX delay, arg int (tenth of seconds) */ +#define RIG_LEVEL_ANTIVOX (1<<22) /* anti-VOX level, arg float [0.0 .. 1.0] */ /* These ones are not settable */ #define RIG_LEVEL_SQLSTAT (1<<27) /* SQL status, arg int (open=1/closed=0). Deprecated, use get_dcd instead */ @@ -474,6 +526,16 @@ typedef union value_u value_t; #define RIG_LEVEL_ALC (1<<29) /* ALC, arg float */ #define RIG_LEVEL_STRENGTH (1<<30) /* Signal strength, arg int (dB) */ +#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_SQLSTAT \ + | RIG_LEVEL_SWR | RIG_LEVEL_ALC | RIG_LEVEL_STRENGTH) + #define RIG_LEVEL_FLOAT_LIST (RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_APF|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_COMP|RIG_LEVEL_BALANCE|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX) #define RIG_LEVEL_READONLY_LIST (RIG_LEVEL_SQLSTAT|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_STRENGTH) @@ -489,9 +551,14 @@ typedef union value_u value_t; #define RIG_PARM_ANN (1<<0) /* "Announce" level, see ann_t */ #define RIG_PARM_APO (1<<1) /* Auto power off, int in minute */ #define RIG_PARM_BACKLIGHT (1<<2) /* LCD light, float [0.0..1.0] */ -#define RIG_PARM_BEEP (1<<4) /* Beep on keypressed, int (0,1) */ +#define RIG_PARM_BEEP (1<<4) /* Beep on keypressed, int (0...10) */ #define RIG_PARM_TIME (1<<5) /* hh:mm:ss, int in seconds from 00:00:00 */ #define RIG_PARM_BAT (1<<6) /* battery level, float [0.0..1.0] */ +#define RIG_PARM_KEYLIGHT (1<<7) /* Button backlight, on/off */ + +#define RIG_PARM_ALL (RIG_PARM_ANN | RIG_PARM_APO | RIG_PARM_BACKLIGHT \ + | RIG_PARM_BEEP | RIG_PARM_TIME | RIG_PARM_BAT \ + | RIG_PARM_KEYLIGHT ) #define RIG_PARM_FLOAT_LIST (RIG_PARM_BACKLIGHT|RIG_PARM_BAT) #define RIG_PARM_READONLY_LIST (RIG_PARM_BAT) @@ -515,35 +582,45 @@ typedef unsigned long long setting_t; /* hope 64 bits will be enough.. */ * These are activated functions. */ #define RIG_FUNC_NONE 0 -#define RIG_FUNC_FAGC (1<<0) /* Fast AGC */ -#define RIG_FUNC_NB (1<<1) /* Noise Blanker */ -#define RIG_FUNC_COMP (1<<2) /* Compression */ -#define RIG_FUNC_VOX (1<<3) /* VOX */ -#define RIG_FUNC_TONE (1<<4) /* Tone */ -#define RIG_FUNC_TSQL (1<<5) /* may require a tone field */ -#define RIG_FUNC_SBKIN (1<<6) /* Semi Break-in */ -#define RIG_FUNC_FBKIN (1<<7) /* Full Break-in, for CW mode */ -#define RIG_FUNC_ANF (1<<8) /* Automatic Notch Filter (DSP) */ -#define RIG_FUNC_NR (1<<9) /* Noise Reduction (DSP) */ -#define RIG_FUNC_AIP (1<<10) /* AIP (Kenwood) */ -#define RIG_FUNC_APF (1<<11) /* Auto Passband Filter */ -#define RIG_FUNC_MON (1<<12) /* Monitor transmitted signal, != rev */ -#define RIG_FUNC_MN (1<<13) /* Manual Notch (Icom) */ -#define RIG_FUNC_RNF (1<<14) /* RTTY Filter Notch (Icom) */ -#define RIG_FUNC_ARO (1<<15) /* Auto Repeater Offset */ -#define RIG_FUNC_LOCK (1<<16) /* Lock */ -#define RIG_FUNC_MUTE (1<<17) /* Mute, could be emulated by LEVEL_AF*/ -#define RIG_FUNC_VSC (1<<18) /* Voice Scan Control */ -#define RIG_FUNC_REV (1<<19) /* Reverse tx and rx freqs */ -#define RIG_FUNC_SQL (1<<20) /* Turn Squelch Monitor on/off*/ -#define RIG_FUNC_ABM (1<<21) /* Auto Band Mode */ -#define RIG_FUNC_BC (1<<22) /* Beat Canceller */ -#define RIG_FUNC_MBC (1<<23) /* Manual Beat Canceller */ -#define RIG_FUNC_LMP (1<<24) /* LCD lamp ON/OFF */ -#define RIG_FUNC_AFC (1<<25) /* Auto Frequency Control ON/OFF */ -#define RIG_FUNC_SATMODE (1<<26) /* Satellite mode ON/OFF (IC-910H) */ -#define RIG_FUNC_SCOPE (1<<27) /* Simple bandscope ON/OFF (IC-910H) */ -#define RIG_FUNC_RESUME (1<<28) /* Scan resume */ +#define RIG_FUNC_FAGC (1<<0) /* Fast AGC */ +#define RIG_FUNC_NB (1<<1) /* Noise Blanker */ +#define RIG_FUNC_COMP (1<<2) /* Compression */ +#define RIG_FUNC_VOX (1<<3) /* VOX */ +#define RIG_FUNC_TONE (1<<4) /* Tone */ +#define RIG_FUNC_TSQL (1<<5) /* may require a tone field */ +#define RIG_FUNC_SBKIN (1<<6) /* Semi Break-in */ +#define RIG_FUNC_FBKIN (1<<7) /* Full Break-in, for CW mode */ +#define RIG_FUNC_ANF (1<<8) /* Automatic Notch Filter (DSP) */ +#define RIG_FUNC_NR (1<<9) /* Noise Reduction (DSP) */ +#define RIG_FUNC_AIP (1<<10) /* AIP (Kenwood) */ +#define RIG_FUNC_APF (1<<11) /* Auto Passband Filter */ +#define RIG_FUNC_MON (1<<12) /* Monitor transmitted signal, != rev */ +#define RIG_FUNC_MN (1<<13) /* Manual Notch (Icom) */ +#define RIG_FUNC_RNF (1<<14) /* RTTY Filter Notch (Icom) */ +#define RIG_FUNC_ARO (1<<15) /* Auto Repeater Offset */ +#define RIG_FUNC_LOCK (1<<16) /* Lock */ +#define RIG_FUNC_MUTE (1<<17) /* Mute, could be emulated by LEVEL_AF */ +#define RIG_FUNC_VSC (1<<18) /* Voice Scan Control */ +#define RIG_FUNC_REV (1<<19) /* Reverse tx and rx freqs */ +#define RIG_FUNC_SQL (1<<20) /* Turn Squelch Monitor on/off */ +#define RIG_FUNC_ABM (1<<21) /* Auto Band Mode */ +#define RIG_FUNC_BC (1<<22) /* Beat Canceller */ +#define RIG_FUNC_MBC (1<<23) /* Manual Beat Canceller */ +#define RIG_FUNC_LMP (1<<24) /* LCD lamp ON/OFF */ +#define RIG_FUNC_AFC (1<<25) /* Auto Frequency Control ON/OFF */ +#define RIG_FUNC_SATMODE (1<<26) /* Satellite mode ON/OFF (IC-910H) */ +#define RIG_FUNC_SCOPE (1<<27) /* Simple bandscope ON/OFF (IC-910H) */ +#define RIG_FUNC_RESUME (1<<28) /* Scan resume */ + +#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_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_BC \ + | RIG_FUNC_MBC | RIG_FUNC_LMP | RIG_FUNC_AFC \ + | RIG_FUNC_SATMODE | RIG_FUNC_SCOPE | RIG_FUNC_RESUME) /* * power unit macros, converts to mW @@ -564,7 +641,7 @@ typedef unsigned int rmode_t; /* radio mode */ #define RIG_MODE_NONE 0 #define RIG_MODE_AM (1<<0) #define RIG_MODE_CW (1<<1) -#define RIG_MODE_USB (1<<2) /* select somewhere else the filters ? */ +#define RIG_MODE_USB (1<<2) /* select somewhere else the filters ? */ #define RIG_MODE_LSB (1<<3) #define RIG_MODE_RTTY (1<<4) #define RIG_MODE_FM (1<<5) @@ -582,13 +659,13 @@ typedef unsigned int rmode_t; /* radio mode */ * what your rig have access to */ struct freq_range_list { - freq_t start; - freq_t end; - rmode_t modes; /* bitwise OR'ed RIG_MODE_* */ - int low_power; /* in mW, -1 for no power (ie. rx list) */ - int high_power; /* in mW, -1 for no power (ie. rx list) */ - vfo_t vfo; /* VFOs that can access this range */ - ant_t ant; + freq_t start; + freq_t end; + rmode_t modes; /* bitwise OR'ed RIG_MODE_* */ + int low_power; /* in mW, -1 for no power (ie. rx list) */ + int high_power; /* in mW, -1 for no power (ie. rx list) */ + vfo_t vfo; /* VFOs that can access this range */ + ant_t ant; }; typedef struct freq_range_list freq_range_t; @@ -603,8 +680,8 @@ typedef struct freq_range_list freq_range_t; * Lists the tuning steps available for each mode */ struct tuning_step_list { - rmode_t modes; /* bitwise OR'ed RIG_MODE_* */ - shortfreq_t ts; /* tuning step in Hz */ + rmode_t modes; /* bitwise OR'ed RIG_MODE_* */ + shortfreq_t ts; /* tuning step in Hz */ }; #define RIG_TS_END {RIG_MODE_NONE,0} @@ -617,8 +694,8 @@ struct tuning_step_list { * filter to use for this mode (cf rig_set_mode). */ struct filter_list { - rmode_t modes; /* bitwise OR'ed RIG_MODE_* */ - pbwidth_t width; /* passband width in Hz */ + rmode_t modes; /* bitwise OR'ed RIG_MODE_* */ + pbwidth_t width; /* passband width in Hz */ }; #define RIG_FLT_END {RIG_MODE_NONE,0} @@ -633,30 +710,35 @@ struct filter_list { */ struct channel { - int channel_num; - int bank_num; - vfo_t vfo; - int ant; - freq_t freq; - rmode_t mode; - pbwidth_t width; - freq_t tx_freq; - rmode_t tx_mode; - pbwidth_t tx_width; - split_t split; - rptr_shift_t rptr_shift; - shortfreq_t rptr_offs; - shortfreq_t tuning_step; - shortfreq_t rit; - shortfreq_t xit; - setting_t funcs; - value_t levels[RIG_SETTING_MAX]; - tone_t ctcss_tone; - tone_t ctcss_sql; - tone_t dcs_code; - tone_t dcs_sql; - int flags; /* to be defined */ - char channel_desc[MAXCHANDESC]; + int channel_num; + int bank_num; + vfo_t vfo; + int ant; + char lock; /* added, I use this --kd7eni */ + freq_t freq; + rmode_t mode; + pbwidth_t width; + freq_t tx_freq; + rmode_t tx_mode; + pbwidth_t tx_width; + split_t split; + rptr_shift_t rptr_shift; + shortfreq_t rptr_offs; + shortfreq_t tuning_step; + shortfreq_t rit; + shortfreq_t xit; + setting_t funcs; + value_t levels[RIG_SETTING_MAX]; + tone_t tone; /* added --Dale kd7eni */ + tone_t tone_sql; /* added --Dale kd7eni */ + tone_t ctcss_tone; + tone_t ctcss_sql; + tone_t dcs_code; + tone_t dcs_sql; + scan_t scan; + int scan_group; /* added, I use this often --kd7eni */ + int flags; /* to be defined */ + char channel_desc[MAXCHANDESC]; }; typedef struct channel channel_t; @@ -673,19 +755,29 @@ typedef struct channel channel_t; * } */ enum chan_type_e { - RIG_MTYPE_NONE=0, - RIG_MTYPE_MEM, /* regular */ - RIG_MTYPE_EDGE, /* scan edge */ - RIG_MTYPE_CALL, /* call channel */ - RIG_MTYPE_MEMOPAD, /* inaccessible on Icom, what about others? */ - RIG_MTYPE_SAT /* satellite */ + RIG_MTYPE_NONE = 0, + RIG_MTYPE_MEM, /* regular */ + RIG_MTYPE_EDGE, /* scan edge */ + RIG_MTYPE_CALL, /* call channel */ + RIG_MTYPE_MEMOPAD, /* inaccessible on Icom, what about others? */ + /* ts2000 can store/recall, but not read --kd7eni */ + RIG_MTYPE_SAT, /* satellite */ + + /* added some for ts2000 --kd7eni */ + RIG_MTYPE_MENU, /* menus A or B */ + RIG_MTYPE_SETUP, /* bank 0-5; seems to save only menus */ + RIG_MTYPE_PCT, /* Packet cluster buffered memories */ }; struct chan_list { - int start; /* rig memory channel _number_ */ - int end; - enum chan_type_e type; /* among EDGE, MEM, CALL, .. */ - int reserved; /* don't know yet, maybe smthing like flags */ + int start; /* rig memory channel _number_ */ + int end; + enum chan_type_e type; /* among EDGE, MEM, CALL, .. */ + int reserved; /* don't know yet, maybe smthing like flags */ + /* FIXME : some memories available only in special modes or on main + rather than sub-receiver. This could help especially if + rig only responds with error or worse, silently ignores you! + Add 'mode' or some such for future use? --D.E. kd7eni */ }; #define RIG_CHAN_END {0,0,RIG_MTYPE_NONE,0} @@ -713,230 +805,245 @@ typedef struct chan_list chan_t; * their caps. */ struct rig_caps { - rig_model_t rig_model; - const char *model_name; - const char *mfg_name; - const char *version; - const char *copyright; - enum rig_status_e status; + rig_model_t rig_model; + const char *model_name; + const char *mfg_name; + const char *version; + const char *copyright; + enum rig_status_e status; - int rig_type; - enum ptt_type_e ptt_type; - enum dcd_type_e dcd_type; - enum rig_port_e port_type; + int rig_type; + enum ptt_type_e ptt_type; + enum dcd_type_e dcd_type; + enum rig_port_e port_type; - int serial_rate_min; - int serial_rate_max; - int serial_data_bits; - int serial_stop_bits; - enum serial_parity_e serial_parity; - enum serial_handshake_e serial_handshake; + int serial_rate_min; + int serial_rate_max; + int serial_data_bits; + int serial_stop_bits; + enum serial_parity_e serial_parity; + enum serial_handshake_e serial_handshake; - int write_delay; - int post_write_delay; - int timeout; - int retry; + int write_delay; + int post_write_delay; + int timeout; + int retry; - setting_t has_get_func; - setting_t has_set_func; - setting_t has_get_level; - setting_t has_set_level; - setting_t has_get_parm; - setting_t has_set_parm; + setting_t has_get_func; + setting_t has_set_func; + setting_t has_get_level; + setting_t has_set_level; + setting_t has_get_parm; + setting_t has_set_parm; - int level_gran[RIG_SETTING_MAX]; - int parm_gran[RIG_SETTING_MAX]; + int level_gran[RIG_SETTING_MAX]; + int parm_gran[RIG_SETTING_MAX]; - const tone_t *ctcss_list; - const tone_t *dcs_list; + const tone_t *ctcss_list; + const tone_t *dcs_list; - int preamp[MAXDBLSTSIZ]; - int attenuator[MAXDBLSTSIZ]; + int preamp[MAXDBLSTSIZ]; + int attenuator[MAXDBLSTSIZ]; - shortfreq_t max_rit; - shortfreq_t max_xit; - shortfreq_t max_ifshift; + shortfreq_t max_rit; + shortfreq_t max_xit; + shortfreq_t max_ifshift; - ann_t announces; - vfo_op_t vfo_ops; - scan_t scan_ops; - int targetable_vfo; - int transceive; + ann_t announces; + vfo_op_t vfo_ops; + scan_t scan_ops; + int targetable_vfo; + int transceive; - int bank_qty; - int chan_desc_sz; + int bank_qty; + int chan_desc_sz; - chan_t chan_list[CHANLSTSIZ]; + chan_t chan_list[CHANLSTSIZ]; - freq_range_t rx_range_list1[FRQRANGESIZ]; /* ITU region 1 */ - freq_range_t tx_range_list1[FRQRANGESIZ]; - freq_range_t rx_range_list2[FRQRANGESIZ]; /* ITU region 2 */ - freq_range_t tx_range_list2[FRQRANGESIZ]; - struct tuning_step_list tuning_steps[TSLSTSIZ]; + freq_range_t rx_range_list1[FRQRANGESIZ]; /* ITU region 1 */ + freq_range_t tx_range_list1[FRQRANGESIZ]; + freq_range_t rx_range_list2[FRQRANGESIZ]; /* ITU region 2 */ + freq_range_t tx_range_list2[FRQRANGESIZ]; + struct tuning_step_list tuning_steps[TSLSTSIZ]; - struct filter_list filters[FLTLSTSIZ]; /* mode/filter table, at -6dB */ + struct filter_list filters[FLTLSTSIZ]; /* mode/filter table, at -6dB */ - const struct confparams *cfgparams; - const rig_ptr_t priv; + const struct confparams *cfgparams; + const rig_ptr_t priv; - /* - * Rig Admin API - * - */ - - int (*rig_init)(RIG *rig); - int (*rig_cleanup)(RIG *rig); - int (*rig_open)(RIG *rig); - int (*rig_close)(RIG *rig); - - /* - * General API commands, from most primitive to least.. :() - * List Set/Get functions pairs - */ - - int (*set_freq)(RIG *rig, vfo_t vfo, freq_t freq); - int (*get_freq)(RIG *rig, vfo_t vfo, freq_t *freq); + /* + * Rig Admin API + * + */ - int (*set_mode)(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width); - int (*get_mode)(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width); + int (*rig_init) (RIG * rig); + int (*rig_cleanup) (RIG * rig); + int (*rig_open) (RIG * rig); + int (*rig_close) (RIG * rig); - int (*set_vfo)(RIG *rig, vfo_t vfo); - int (*get_vfo)(RIG *rig, vfo_t *vfo); + /* + * General API commands, from most primitive to least.. :() + * List Set/Get functions pairs + */ - int (*set_ptt)(RIG *rig, vfo_t vfo, ptt_t ptt); - int (*get_ptt)(RIG *rig, vfo_t vfo, ptt_t *ptt); - int (*get_dcd)(RIG *rig, vfo_t vfo, dcd_t *dcd); + int (*set_freq) (RIG * rig, vfo_t vfo, freq_t freq); + int (*get_freq) (RIG * rig, vfo_t vfo, freq_t * freq); - int (*set_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift); - int (*get_rptr_shift)(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift); + int (*set_mode) (RIG * rig, vfo_t vfo, rmode_t mode, + pbwidth_t width); + int (*get_mode) (RIG * rig, vfo_t vfo, rmode_t * mode, + pbwidth_t * width); - int (*set_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t offs); - int (*get_rptr_offs)(RIG *rig, vfo_t vfo, shortfreq_t *offs); + int (*set_vfo) (RIG * rig, vfo_t vfo); + int (*get_vfo) (RIG * rig, vfo_t * vfo); - int (*set_split_freq)(RIG *rig, vfo_t vfo, freq_t tx_freq); - int (*get_split_freq)(RIG *rig, vfo_t vfo, freq_t *tx_freq); - int (*set_split_mode)(RIG *rig, vfo_t vfo, rmode_t tx_mode, pbwidth_t tx_width); - int (*get_split_mode)(RIG *rig, vfo_t vfo, rmode_t *tx_mode, pbwidth_t *tx_width); - int (*set_split)(RIG *rig, vfo_t vfo, split_t split); - int (*get_split)(RIG *rig, vfo_t vfo, split_t *split); + int (*set_ptt) (RIG * rig, vfo_t vfo, ptt_t ptt); + int (*get_ptt) (RIG * rig, vfo_t vfo, ptt_t * ptt); + int (*get_dcd) (RIG * rig, vfo_t vfo, dcd_t * dcd); - int (*set_rit)(RIG *rig, vfo_t vfo, shortfreq_t rit); - int (*get_rit)(RIG *rig, vfo_t vfo, shortfreq_t *rit); - int (*set_xit)(RIG *rig, vfo_t vfo, shortfreq_t xit); - int (*get_xit)(RIG *rig, vfo_t vfo, shortfreq_t *xit); + int (*set_rptr_shift) (RIG * rig, vfo_t vfo, + rptr_shift_t rptr_shift); + int (*get_rptr_shift) (RIG * rig, vfo_t vfo, + rptr_shift_t * rptr_shift); - int (*set_ts)(RIG *rig, vfo_t vfo, shortfreq_t ts); - int (*get_ts)(RIG *rig, vfo_t vfo, shortfreq_t *ts); + int (*set_rptr_offs) (RIG * rig, vfo_t vfo, shortfreq_t offs); + int (*get_rptr_offs) (RIG * rig, vfo_t vfo, shortfreq_t * offs); - int (*set_dcs_code)(RIG *rig, vfo_t vfo, tone_t code); - int (*get_dcs_code)(RIG *rig, vfo_t vfo, tone_t *code); - int (*set_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t tone); - int (*get_ctcss_tone)(RIG *rig, vfo_t vfo, tone_t *tone); + int (*set_split_freq) (RIG * rig, vfo_t vfo, freq_t tx_freq); + int (*get_split_freq) (RIG * rig, vfo_t vfo, freq_t * tx_freq); + int (*set_split_mode) (RIG * rig, vfo_t vfo, rmode_t tx_mode, + pbwidth_t tx_width); + int (*get_split_mode) (RIG * rig, vfo_t vfo, rmode_t * tx_mode, + pbwidth_t * tx_width); + int (*set_split) (RIG * rig, vfo_t vfo, split_t split); + int (*get_split) (RIG * rig, vfo_t vfo, split_t * split); - int (*set_dcs_sql)(RIG *rig, vfo_t vfo, tone_t code); - int (*get_dcs_sql)(RIG *rig, vfo_t vfo, tone_t *code); - int (*set_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t tone); - int (*get_ctcss_sql)(RIG *rig, vfo_t vfo, tone_t *tone); + int (*set_rit) (RIG * rig, vfo_t vfo, shortfreq_t rit); + int (*get_rit) (RIG * rig, vfo_t vfo, shortfreq_t * rit); + int (*set_xit) (RIG * rig, vfo_t vfo, shortfreq_t xit); + int (*get_xit) (RIG * rig, vfo_t vfo, shortfreq_t * xit); - /* - * It'd be nice to have a power2mW and mW2power functions - * that could tell at what power (watts) the rig is running. - * Unfortunately, on most rigs, the formula is not the same - * on all bands/modes. Have to work this out.. --SF - */ - int (*power2mW)(RIG *rig, unsigned int *mwpower, float power, freq_t freq, rmode_t mode); - int (*mW2power)(RIG *rig, float *power, unsigned int mwpower, freq_t freq, rmode_t mode); + int (*set_ts) (RIG * rig, vfo_t vfo, shortfreq_t ts); + int (*get_ts) (RIG * rig, vfo_t vfo, shortfreq_t * ts); - int (*set_powerstat)(RIG *rig, powerstat_t status); - int (*get_powerstat)(RIG *rig, powerstat_t *status); - int (*reset)(RIG *rig, reset_t reset); + int (*set_dcs_code) (RIG * rig, vfo_t vfo, tone_t code); + int (*get_dcs_code) (RIG * rig, vfo_t vfo, tone_t * code); + int (*set_tone) (RIG * rig, vfo_t vfo, tone_t tone); + int (*get_tone) (RIG * rig, vfo_t vfo, tone_t * tone); + int (*set_ctcss_tone) (RIG * rig, vfo_t vfo, tone_t tone); + int (*get_ctcss_tone) (RIG * rig, vfo_t vfo, tone_t * tone); - int (*set_ant)(RIG *rig, vfo_t vfo, ant_t ant); - int (*get_ant)(RIG *rig, vfo_t vfo, ant_t *ant); + int (*set_dcs_sql) (RIG * rig, vfo_t vfo, tone_t code); + int (*get_dcs_sql) (RIG * rig, vfo_t vfo, tone_t * code); + int (*set_tone_sql) (RIG * rig, vfo_t vfo, tone_t tone); + int (*get_tone_sql) (RIG * rig, vfo_t vfo, tone_t * tone); + int (*set_ctcss_sql) (RIG * rig, vfo_t vfo, tone_t tone); + int (*get_ctcss_sql) (RIG * rig, vfo_t vfo, tone_t * tone); - int (*set_level)(RIG *rig, vfo_t vfo, setting_t level, value_t val); - int (*get_level)(RIG *rig, vfo_t vfo, setting_t level, value_t *val); + /* + * It'd be nice to have a power2mW and mW2power functions + * that could tell at what power (watts) the rig is running. + * Unfortunately, on most rigs, the formula is not the same + * on all bands/modes. Have to work this out.. --SF + */ + int (*power2mW) (RIG * rig, unsigned int *mwpower, float power, + freq_t freq, rmode_t mode); + int (*mW2power) (RIG * rig, float *power, unsigned int mwpower, + freq_t freq, rmode_t mode); - int (*set_func)(RIG *rig, vfo_t vfo, setting_t func, int status); - int (*get_func)(RIG *rig, vfo_t vfo, setting_t func, int *status); + int (*set_powerstat) (RIG * rig, powerstat_t status); + int (*get_powerstat) (RIG * rig, powerstat_t * status); + int (*reset) (RIG * rig, reset_t reset); - int (*set_parm)(RIG *rig, setting_t parm, value_t val); - int (*get_parm)(RIG *rig, setting_t parm, value_t *val); + int (*set_ant) (RIG * rig, vfo_t vfo, ant_t ant); + int (*get_ant) (RIG * rig, vfo_t vfo, ant_t * ant); - int (*set_conf)(RIG *rig, token_t token, const char *val); - int (*get_conf)(RIG *rig, token_t token, char *val); + int (*set_level) (RIG * rig, vfo_t vfo, setting_t level, + value_t val); + int (*get_level) (RIG * rig, vfo_t vfo, setting_t level, + value_t * val); - int (*send_dtmf)(RIG *rig, vfo_t vfo, const char *digits); - int (*recv_dtmf)(RIG *rig, vfo_t vfo, char *digits, int *length); - int (*send_morse)(RIG *rig, vfo_t vfo, const char *msg); + int (*set_func) (RIG * rig, vfo_t vfo, setting_t func, int status); + int (*get_func) (RIG * rig, vfo_t vfo, setting_t func, + int *status); - int (*set_bank)(RIG *rig, vfo_t vfo, int bank); - int (*set_mem)(RIG *rig, vfo_t vfo, int ch); - int (*get_mem)(RIG *rig, vfo_t vfo, int *ch); - int (*vfo_op)(RIG *rig, vfo_t vfo, vfo_op_t op); - int (*scan)(RIG *rig, vfo_t vfo, scan_t scan, int ch); + int (*set_parm) (RIG * rig, setting_t parm, value_t val); + int (*get_parm) (RIG * rig, setting_t parm, value_t * val); - int (*set_trn)(RIG *rig, int trn); - int (*get_trn)(RIG *rig, int *trn); + int (*set_conf) (RIG * rig, token_t token, const char *val); + int (*get_conf) (RIG * rig, token_t token, char *val); + + int (*send_dtmf) (RIG * rig, vfo_t vfo, const char *digits); + int (*recv_dtmf) (RIG * rig, vfo_t vfo, char *digits, int *length); + int (*send_morse) (RIG * rig, vfo_t vfo, const char *msg); + + int (*set_bank) (RIG * rig, vfo_t vfo, int bank); + int (*set_mem) (RIG * rig, vfo_t vfo, int ch); + int (*get_mem) (RIG * rig, vfo_t vfo, int *ch); + int (*vfo_op) (RIG * rig, vfo_t vfo, vfo_op_t op); + int (*scan) (RIG * rig, vfo_t vfo, scan_t scan, int ch); + + int (*set_trn) (RIG * rig, int trn); + int (*get_trn) (RIG * rig, int *trn); - int (*decode_event)(RIG *rig); + int (*decode_event) (RIG * rig); /* * Convenience Functions */ - int (*set_channel)(RIG *rig, const channel_t *chan); - int (*get_channel)(RIG *rig, channel_t *chan); + int (*set_channel) (RIG * rig, channel_t * chan); + int (*get_channel) (RIG * rig, channel_t * chan); - /* get firmware info, etc. */ - const char* (*get_info)(RIG *rig); + /* get firmware info, etc. */ + const char *(*get_info) (RIG * rig); - /* more to come... */ + /* more to come... */ }; /* * yeah, looks like OO painstakingly programmed in C, sigh */ typedef struct { - union { - enum rig_port_e rig; /* serial, network, etc. */ - enum ptt_type_e ptt; - enum dcd_type_e dcd; - } type; - int fd; - FILE *stream; + union { + enum rig_port_e rig; /* serial, network, etc. */ + enum ptt_type_e ptt; + enum dcd_type_e dcd; + } type; + int fd; + FILE *stream; #if defined(__CYGWIN__) || defined(_WIN32) - HANDLE handle; /* for serial special handling (PTT,DCD,..) */ + HANDLE handle; /* for serial special handling (PTT,DCD,..) */ #endif - int write_delay; /* delay in ms between each byte sent out */ - int post_write_delay; /* for some yaesu rigs */ - struct timeval post_write_date; /* hamlib internal use */ - int timeout; /* in ms */ - int retry; /* maximum number of retries, 0 to disable */ + int write_delay; /* delay in ms between each byte sent out */ + int post_write_delay; /* for some yaesu rigs */ + struct timeval post_write_date; /* hamlib internal use */ + int timeout; /* in ms */ + int retry; /* maximum number of retries, 0 to disable */ - char pathname[FILPATHLEN]; - union { - struct { - int rate; - int data_bits; - int stop_bits; - enum serial_parity_e parity; - enum serial_handshake_e handshake; - } serial; - struct { + char pathname[FILPATHLEN]; + union { + struct { + int rate; + int data_bits; + int stop_bits; + enum serial_parity_e parity; + enum serial_handshake_e handshake; + } serial; + struct { int pin; - } parallel; - struct { - /* place holder */ - } device; + } parallel; + struct { + /* place holder */ + } device; #ifdef NET - struct { + struct { struct sockaddr saddr; - } network; + } network; #endif - } parm; + } parm; } port_t; /* @@ -952,63 +1059,63 @@ struct rig_state { /* * overridable fields */ - port_t rigport; - port_t pttport; - port_t dcdport; + port_t rigport; + port_t pttport; + port_t dcdport; - double vfo_comp; /* VFO compensation in PPM, 0.0 to disable */ + double vfo_comp; /* VFO compensation in PPM, 0.0 to disable */ - int itu_region; - freq_range_t rx_range_list[FRQRANGESIZ]; /* these ones can be updated */ - freq_range_t tx_range_list[FRQRANGESIZ]; + int itu_region; + freq_range_t rx_range_list[FRQRANGESIZ]; /* these ones can be updated */ + freq_range_t tx_range_list[FRQRANGESIZ]; - struct tuning_step_list tuning_steps[TSLSTSIZ]; + struct tuning_step_list tuning_steps[TSLSTSIZ]; - struct filter_list filters[FLTLSTSIZ]; /* mode/filter table, at -6dB */ + struct filter_list filters[FLTLSTSIZ]; /* mode/filter table, at -6dB */ - chan_t chan_list[CHANLSTSIZ]; /* channel list, zero ended */ + chan_t chan_list[CHANLSTSIZ]; /* channel list, zero ended */ - shortfreq_t max_rit; /* max absolute RIT */ - shortfreq_t max_xit; /* max absolute XIT */ - shortfreq_t max_ifshift; /* max absolute IF-SHIFT */ + shortfreq_t max_rit; /* max absolute RIT */ + shortfreq_t max_xit; /* max absolute XIT */ + shortfreq_t max_ifshift; /* max absolute IF-SHIFT */ - ann_t announces; + ann_t announces; - int preamp[MAXDBLSTSIZ]; /* in dB, 0 terminated */ - int attenuator[MAXDBLSTSIZ]; /* in dB, 0 terminated */ + int preamp[MAXDBLSTSIZ]; /* in dB, 0 terminated */ + int attenuator[MAXDBLSTSIZ]; /* in dB, 0 terminated */ - setting_t has_get_func; - setting_t has_set_func; /* updatable, e.g. for optional DSP, etc. */ - setting_t has_get_level; - setting_t has_set_level; - setting_t has_get_parm; - setting_t has_set_parm; + setting_t has_get_func; + setting_t has_set_func; /* updatable, e.g. for optional DSP, etc. */ + setting_t has_get_level; + setting_t has_set_level; + setting_t has_get_parm; + setting_t has_set_parm; - int level_gran[RIG_SETTING_MAX]; /* level granularity */ + int level_gran[RIG_SETTING_MAX]; /* level granularity */ - - /* + + /* * non overridable fields, internal use */ - int hold_decode; /* set to 1 to hold the event decoder (async) otherwise 0 */ - vfo_t current_vfo; + int hold_decode; /* set to 1 to hold the event decoder (async) otherwise 0 */ + vfo_t current_vfo; - int transceive; /* whether the transceive mode is on */ + int transceive; /* whether the transceive mode is on */ - int vfo_list; + int vfo_list; - int comm_state; /* opened or not */ - /* - * Pointer to private data - * stuff like CI_V_address for Icom goes in this *priv 51 area - */ - rig_ptr_t priv; - - /* - * internal use by hamlib++ for event handling - */ - rig_ptr_t obj; + int comm_state; /* opened or not */ + /* + * Pointer to private data + * stuff like CI_V_address for Icom goes in this *priv 51 area + */ + rig_ptr_t priv; + + /* + * internal use by hamlib++ for event handling + */ + rig_ptr_t obj; }; @@ -1022,15 +1129,16 @@ struct rig_state { * * Event based programming, really appropriate in a GUI. * So far, Icoms are able to do that in Transceive mode, and PCR-1000 too. + * TS-2000 does also (90%). --kd7eni */ -typedef int (*freq_cb_t)(RIG *, vfo_t, freq_t, rig_ptr_t); -typedef int (*mode_cb_t)(RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t); -typedef int (*vfo_cb_t)(RIG *, vfo_t, rig_ptr_t); -typedef int (*ptt_cb_t)(RIG *, vfo_t, ptt_t, rig_ptr_t); -typedef int (*dcd_cb_t)(RIG *, vfo_t, dcd_t, rig_ptr_t); +typedef int (*freq_cb_t) (RIG *, vfo_t, freq_t, rig_ptr_t); +typedef int (*mode_cb_t) (RIG *, vfo_t, rmode_t, pbwidth_t, rig_ptr_t); +typedef int (*vfo_cb_t) (RIG *, vfo_t, rig_ptr_t); +typedef int (*ptt_cb_t) (RIG *, vfo_t, ptt_t, rig_ptr_t); +typedef int (*dcd_cb_t) (RIG *, vfo_t, dcd_t, rig_ptr_t); struct rig_callbacks { - freq_cb_t freq_event; + freq_cb_t freq_event; rig_ptr_t freq_arg; mode_cb_t mode_event; rig_ptr_t mode_arg; @@ -1057,161 +1165,301 @@ struct rig { /* --------------- API function prototypes -----------------*/ -extern HAMLIB_EXPORT(RIG *) rig_init HAMLIB_PARAMS((rig_model_t rig_model)); -extern HAMLIB_EXPORT(int) rig_open HAMLIB_PARAMS((RIG *rig)); +extern HAMLIB_EXPORT(RIG *) +rig_init HAMLIB_PARAMS((rig_model_t rig_model)); +extern HAMLIB_EXPORT(int) +rig_open HAMLIB_PARAMS((RIG * rig)); /* * General API commands, from most primitive to least.. :() * List Set/Get functions pairs */ -extern HAMLIB_EXPORT(int) rig_set_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t freq)); -extern HAMLIB_EXPORT(int) rig_get_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t *freq)); +extern HAMLIB_EXPORT(int) +rig_set_freq HAMLIB_PARAMS((RIG * rig, vfo_t vfo, freq_t freq)); +extern HAMLIB_EXPORT(int) +rig_get_freq HAMLIB_PARAMS((RIG * rig, vfo_t vfo, freq_t * freq)); -extern HAMLIB_EXPORT(int) rig_set_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)); -extern HAMLIB_EXPORT(int) rig_get_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)); +extern HAMLIB_EXPORT(int) +rig_set_mode +HAMLIB_PARAMS((RIG * rig, vfo_t vfo, rmode_t mode, pbwidth_t width)); +extern HAMLIB_EXPORT(int) +rig_get_mode +HAMLIB_PARAMS((RIG * rig, vfo_t vfo, rmode_t * mode, pbwidth_t * width)); -extern HAMLIB_EXPORT(int) rig_set_vfo HAMLIB_PARAMS((RIG *rig, vfo_t vfo)); -extern HAMLIB_EXPORT(int) rig_get_vfo HAMLIB_PARAMS((RIG *rig, vfo_t *vfo)); +extern HAMLIB_EXPORT(int) +rig_set_vfo HAMLIB_PARAMS((RIG * rig, vfo_t vfo)); +extern HAMLIB_EXPORT(int) +rig_get_vfo HAMLIB_PARAMS((RIG * rig, vfo_t * vfo)); -extern HAMLIB_EXPORT(int) rig_set_ptt HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ptt_t ptt)); -extern HAMLIB_EXPORT(int) rig_get_ptt HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ptt_t *ptt)); +extern HAMLIB_EXPORT(int) +rig_set_ptt HAMLIB_PARAMS((RIG * rig, vfo_t vfo, ptt_t ptt)); +extern HAMLIB_EXPORT(int) +rig_get_ptt HAMLIB_PARAMS((RIG * rig, vfo_t vfo, ptt_t * ptt)); -extern HAMLIB_EXPORT(int) rig_get_dcd HAMLIB_PARAMS((RIG *rig, vfo_t vfo, dcd_t *dcd)); +extern HAMLIB_EXPORT(int) +rig_get_dcd HAMLIB_PARAMS((RIG * rig, vfo_t vfo, dcd_t * dcd)); -extern HAMLIB_EXPORT(int) rig_set_rptr_shift HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)); -extern HAMLIB_EXPORT(int) rig_get_rptr_shift HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)); -extern HAMLIB_EXPORT(int) rig_set_rptr_offs HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t rptr_offs)); -extern HAMLIB_EXPORT(int) rig_get_rptr_offs HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs)); +extern HAMLIB_EXPORT(int) +rig_set_rptr_shift +HAMLIB_PARAMS((RIG * rig, vfo_t vfo, rptr_shift_t rptr_shift)); +extern HAMLIB_EXPORT(int) +rig_get_rptr_shift +HAMLIB_PARAMS((RIG * rig, vfo_t vfo, rptr_shift_t * rptr_shift)); +extern HAMLIB_EXPORT(int) +rig_set_rptr_offs +HAMLIB_PARAMS((RIG * rig, vfo_t vfo, shortfreq_t rptr_offs)); +extern HAMLIB_EXPORT(int) +rig_get_rptr_offs +HAMLIB_PARAMS((RIG * rig, vfo_t vfo, shortfreq_t * rptr_offs)); -extern HAMLIB_EXPORT(int) rig_set_ctcss_tone HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t tone)); -extern HAMLIB_EXPORT(int) rig_get_ctcss_tone HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *tone)); -extern HAMLIB_EXPORT(int) rig_set_dcs_code HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t code)); -extern HAMLIB_EXPORT(int) rig_get_dcs_code HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *code)); +extern HAMLIB_EXPORT(int) +rig_set_tone HAMLIB_PARAMS((RIG * rig, vfo_t vfo, tone_t tone)); +extern HAMLIB_EXPORT(int) +rig_set_ctcss_tone HAMLIB_PARAMS((RIG * rig, vfo_t vfo, tone_t tone)); +extern HAMLIB_EXPORT(int) +rig_get_tone HAMLIB_PARAMS((RIG * rig, vfo_t vfo, tone_t * tone)); +extern HAMLIB_EXPORT(int) +rig_get_ctcss_tone HAMLIB_PARAMS((RIG * rig, vfo_t vfo, tone_t * tone)); +extern HAMLIB_EXPORT(int) +rig_set_dcs_code HAMLIB_PARAMS((RIG * rig, vfo_t vfo, tone_t code)); +extern HAMLIB_EXPORT(int) +rig_get_dcs_code HAMLIB_PARAMS((RIG * rig, vfo_t vfo, tone_t * code)); -extern HAMLIB_EXPORT(int) rig_set_ctcss_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t tone)); -extern HAMLIB_EXPORT(int) rig_get_ctcss_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *tone)); -extern HAMLIB_EXPORT(int) rig_set_dcs_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t code)); -extern HAMLIB_EXPORT(int) rig_get_dcs_sql HAMLIB_PARAMS((RIG *rig, vfo_t vfo, tone_t *code)); +extern HAMLIB_EXPORT(int) +rig_set_tone_sql HAMLIB_PARAMS((RIG * rig, vfo_t vfo, tone_t tone)); +extern HAMLIB_EXPORT(int) +rig_get_tone_sql HAMLIB_PARAMS((RIG * rig, vfo_t vfo, tone_t * tone)); +extern HAMLIB_EXPORT(int) +rig_set_ctcss_sql HAMLIB_PARAMS((RIG * rig, vfo_t vfo, tone_t tone)); +extern HAMLIB_EXPORT(int) +rig_get_ctcss_sql HAMLIB_PARAMS((RIG * rig, vfo_t vfo, tone_t * tone)); +extern HAMLIB_EXPORT(int) +rig_set_dcs_sql HAMLIB_PARAMS((RIG * rig, vfo_t vfo, tone_t code)); +extern HAMLIB_EXPORT(int) +rig_get_dcs_sql HAMLIB_PARAMS((RIG * rig, vfo_t vfo, tone_t * code)); -extern HAMLIB_EXPORT(int) rig_set_split_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t tx_freq)); -extern HAMLIB_EXPORT(int) rig_get_split_freq HAMLIB_PARAMS((RIG *rig, vfo_t vfo, freq_t *tx_freq)); -extern HAMLIB_EXPORT(int) rig_set_split_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t tx_mode, pbwidth_t tx_width)); -extern HAMLIB_EXPORT(int) rig_get_split_mode HAMLIB_PARAMS((RIG *rig, vfo_t vfo, rmode_t *tx_mode, pbwidth_t *tx_width)); -extern HAMLIB_EXPORT(int) rig_set_split HAMLIB_PARAMS((RIG *rig, vfo_t vfo, split_t split)); -extern HAMLIB_EXPORT(int) rig_get_split HAMLIB_PARAMS((RIG *rig, vfo_t vfo, split_t *split)); +extern HAMLIB_EXPORT(int) +rig_set_split_freq HAMLIB_PARAMS((RIG * rig, vfo_t vfo, freq_t tx_freq)); +extern HAMLIB_EXPORT(int) +rig_get_split_freq HAMLIB_PARAMS((RIG * rig, vfo_t vfo, freq_t * tx_freq)); +extern HAMLIB_EXPORT(int) +rig_set_split_mode +HAMLIB_PARAMS((RIG * rig, vfo_t vfo, rmode_t tx_mode, pbwidth_t tx_width)); +extern HAMLIB_EXPORT(int) +rig_get_split_mode +HAMLIB_PARAMS( + (RIG * rig, vfo_t vfo, rmode_t * tx_mode, + pbwidth_t * tx_width)); +extern HAMLIB_EXPORT(int) +rig_set_split HAMLIB_PARAMS((RIG * rig, vfo_t vfo, split_t split)); +extern HAMLIB_EXPORT(int) +rig_get_split HAMLIB_PARAMS((RIG * rig, vfo_t vfo, split_t * split)); -extern HAMLIB_EXPORT(int) rig_set_rit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t rit)); -extern HAMLIB_EXPORT(int) rig_get_rit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *rit)); -extern HAMLIB_EXPORT(int) rig_set_xit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t xit)); -extern HAMLIB_EXPORT(int) rig_get_xit HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *xit)); +extern HAMLIB_EXPORT(int) +rig_set_rit HAMLIB_PARAMS((RIG * rig, vfo_t vfo, shortfreq_t rit)); +extern HAMLIB_EXPORT(int) +rig_get_rit HAMLIB_PARAMS((RIG * rig, vfo_t vfo, shortfreq_t * rit)); +extern HAMLIB_EXPORT(int) +rig_set_xit HAMLIB_PARAMS((RIG * rig, vfo_t vfo, shortfreq_t xit)); +extern HAMLIB_EXPORT(int) +rig_get_xit HAMLIB_PARAMS((RIG * rig, vfo_t vfo, shortfreq_t * xit)); -extern HAMLIB_EXPORT(int) rig_set_ts HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t ts)); -extern HAMLIB_EXPORT(int) rig_get_ts HAMLIB_PARAMS((RIG *rig, vfo_t vfo, shortfreq_t *ts)); +extern HAMLIB_EXPORT(int) +rig_set_ts HAMLIB_PARAMS((RIG * rig, vfo_t vfo, shortfreq_t ts)); +extern HAMLIB_EXPORT(int) +rig_get_ts HAMLIB_PARAMS((RIG * rig, vfo_t vfo, shortfreq_t * ts)); -extern HAMLIB_EXPORT(int) rig_power2mW HAMLIB_PARAMS((RIG *rig, unsigned int *mwpower, float power, freq_t freq, rmode_t mode)); -extern HAMLIB_EXPORT(int) rig_mW2power HAMLIB_PARAMS((RIG *rig, float *power, unsigned int mwpower, freq_t freq, rmode_t mode)); +extern HAMLIB_EXPORT(int) +rig_power2mW +HAMLIB_PARAMS( + (RIG * rig, unsigned int *mwpower, float power, freq_t freq, + rmode_t mode)); +extern HAMLIB_EXPORT(int) +rig_mW2power +HAMLIB_PARAMS( + (RIG * rig, float *power, unsigned int mwpower, freq_t freq, + rmode_t mode)); -extern HAMLIB_EXPORT(shortfreq_t) rig_get_resolution HAMLIB_PARAMS((RIG *rig, rmode_t mode)); +extern HAMLIB_EXPORT(shortfreq_t) +rig_get_resolution HAMLIB_PARAMS((RIG * rig, rmode_t mode)); -extern HAMLIB_EXPORT(int) rig_set_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t level, value_t val)); -extern HAMLIB_EXPORT(int) rig_get_level HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t level, value_t *val)); +extern HAMLIB_EXPORT(int) +rig_set_level +HAMLIB_PARAMS((RIG * rig, vfo_t vfo, setting_t level, value_t val)); +extern HAMLIB_EXPORT(int) +rig_get_level +HAMLIB_PARAMS((RIG * rig, vfo_t vfo, setting_t level, value_t * val)); #define rig_get_strength(r,v,s) rig_get_level((r),(v),RIG_LEVEL_STRENGTH, (value_t*)(s)) -extern HAMLIB_EXPORT(int) rig_set_parm HAMLIB_PARAMS((RIG *rig, setting_t parm, value_t val)); -extern HAMLIB_EXPORT(int) rig_get_parm HAMLIB_PARAMS((RIG *rig, setting_t parm, value_t *val)); +extern HAMLIB_EXPORT(int) +rig_set_parm HAMLIB_PARAMS((RIG * rig, setting_t parm, value_t val)); +extern HAMLIB_EXPORT(int) +rig_get_parm HAMLIB_PARAMS((RIG * rig, setting_t parm, value_t * val)); -extern HAMLIB_EXPORT(int) rig_set_conf HAMLIB_PARAMS((RIG *rig, token_t token, const char *val)); -extern HAMLIB_EXPORT(int) rig_get_conf HAMLIB_PARAMS((RIG *rig, token_t token, char *val)); +extern HAMLIB_EXPORT(int) +rig_set_conf HAMLIB_PARAMS((RIG * rig, token_t token, const char *val)); +extern HAMLIB_EXPORT(int) +rig_get_conf HAMLIB_PARAMS((RIG * rig, token_t token, char *val)); -extern HAMLIB_EXPORT(int) rig_set_powerstat HAMLIB_PARAMS((RIG *rig, powerstat_t status)); -extern HAMLIB_EXPORT(int) rig_get_powerstat HAMLIB_PARAMS((RIG *rig, powerstat_t *status)); +extern HAMLIB_EXPORT(int) +rig_set_powerstat HAMLIB_PARAMS((RIG * rig, powerstat_t status)); +extern HAMLIB_EXPORT(int) +rig_get_powerstat HAMLIB_PARAMS((RIG * rig, powerstat_t * status)); -extern HAMLIB_EXPORT(int) rig_reset HAMLIB_PARAMS((RIG *rig, reset_t reset)); /* dangerous! */ +extern HAMLIB_EXPORT(int) +rig_reset HAMLIB_PARAMS((RIG * rig, reset_t reset)); /* dangerous! */ -extern HAMLIB_EXPORT(int) rig_token_foreach HAMLIB_PARAMS((RIG *rig, int (*cfunc)(const struct confparams *, rig_ptr_t), rig_ptr_t data)); -extern HAMLIB_EXPORT(const struct confparams*) rig_confparam_lookup HAMLIB_PARAMS((RIG *rig, const char *name)); -extern HAMLIB_EXPORT(token_t) rig_token_lookup HAMLIB_PARAMS((RIG *rig, const char *name)); +extern HAMLIB_EXPORT(int) +rig_token_foreach +HAMLIB_PARAMS( + (RIG * rig, + int (*cfunc) (const struct confparams *, rig_ptr_t), + rig_ptr_t data)); +extern HAMLIB_EXPORT(const struct confparams *) +rig_confparam_lookup HAMLIB_PARAMS((RIG * rig, const char *name)); +extern HAMLIB_EXPORT(token_t) +rig_token_lookup HAMLIB_PARAMS((RIG * rig, const char *name)); -extern HAMLIB_EXPORT(int) rig_close HAMLIB_PARAMS((RIG *rig)); -extern HAMLIB_EXPORT(int) rig_cleanup HAMLIB_PARAMS((RIG *rig)); +extern HAMLIB_EXPORT(int) +rig_close HAMLIB_PARAMS((RIG * rig)); +extern HAMLIB_EXPORT(int) +rig_cleanup HAMLIB_PARAMS((RIG * rig)); -extern HAMLIB_EXPORT(rig_model_t) rig_probe HAMLIB_PARAMS((port_t *p)); +extern HAMLIB_EXPORT(rig_model_t) +rig_probe HAMLIB_PARAMS((port_t * p)); -extern HAMLIB_EXPORT(int) rig_set_ant HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ant_t ant)); /* antenna */ -extern HAMLIB_EXPORT(int) rig_get_ant HAMLIB_PARAMS((RIG *rig, vfo_t vfo, ant_t *ant)); +extern HAMLIB_EXPORT(int) +rig_set_ant HAMLIB_PARAMS((RIG * rig, vfo_t vfo, ant_t ant)); /* antenna */ +extern HAMLIB_EXPORT(int) +rig_get_ant HAMLIB_PARAMS((RIG * rig, vfo_t vfo, ant_t * ant)); -extern HAMLIB_EXPORT(setting_t) rig_has_get_level HAMLIB_PARAMS((RIG *rig, setting_t level)); -extern HAMLIB_EXPORT(setting_t) rig_has_set_level HAMLIB_PARAMS((RIG *rig, setting_t level)); +extern HAMLIB_EXPORT(setting_t) +rig_has_get_level HAMLIB_PARAMS((RIG * rig, setting_t level)); +extern HAMLIB_EXPORT(setting_t) +rig_has_set_level HAMLIB_PARAMS((RIG * rig, setting_t level)); -extern HAMLIB_EXPORT(setting_t) rig_has_get_parm HAMLIB_PARAMS((RIG *rig, setting_t parm)); -extern HAMLIB_EXPORT(setting_t) rig_has_set_parm HAMLIB_PARAMS((RIG *rig, setting_t parm)); +extern HAMLIB_EXPORT(setting_t) +rig_has_get_parm HAMLIB_PARAMS((RIG * rig, setting_t parm)); +extern HAMLIB_EXPORT(setting_t) +rig_has_set_parm HAMLIB_PARAMS((RIG * rig, setting_t parm)); -extern HAMLIB_EXPORT(setting_t) rig_has_get_func HAMLIB_PARAMS((RIG *rig, setting_t func)); -extern HAMLIB_EXPORT(setting_t) rig_has_set_func HAMLIB_PARAMS((RIG *rig, setting_t func)); +extern HAMLIB_EXPORT(setting_t) +rig_has_get_func HAMLIB_PARAMS((RIG * rig, setting_t func)); +extern HAMLIB_EXPORT(setting_t) +rig_has_set_func HAMLIB_PARAMS((RIG * rig, setting_t func)); -extern HAMLIB_EXPORT(int) rig_set_func HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t func, int status)); -extern HAMLIB_EXPORT(int) rig_get_func HAMLIB_PARAMS((RIG *rig, vfo_t vfo, setting_t func, int *status)); +extern HAMLIB_EXPORT(int) +rig_set_func +HAMLIB_PARAMS((RIG * rig, vfo_t vfo, setting_t func, int status)); +extern HAMLIB_EXPORT(int) +rig_get_func +HAMLIB_PARAMS((RIG * rig, vfo_t vfo, setting_t func, int *status)); -extern HAMLIB_EXPORT(int) rig_send_dtmf HAMLIB_PARAMS((RIG *rig, vfo_t vfo, const char *digits)); -extern HAMLIB_EXPORT(int) rig_recv_dtmf HAMLIB_PARAMS((RIG *rig, vfo_t vfo, char *digits, int *length)); -extern HAMLIB_EXPORT(int) rig_send_morse HAMLIB_PARAMS((RIG *rig, vfo_t vfo, const char *msg)); +extern HAMLIB_EXPORT(int) +rig_send_dtmf HAMLIB_PARAMS((RIG * rig, vfo_t vfo, const char *digits)); +extern HAMLIB_EXPORT(int) +rig_recv_dtmf +HAMLIB_PARAMS((RIG * rig, vfo_t vfo, char *digits, int *length)); +extern HAMLIB_EXPORT(int) +rig_send_morse HAMLIB_PARAMS((RIG * rig, vfo_t vfo, const char *msg)); -extern HAMLIB_EXPORT(int) rig_set_bank HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int bank)); -extern HAMLIB_EXPORT(int) rig_set_mem HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int ch)); -extern HAMLIB_EXPORT(int) rig_get_mem HAMLIB_PARAMS((RIG *rig, vfo_t vfo, int *ch)); -extern HAMLIB_EXPORT(int) rig_vfo_op HAMLIB_PARAMS((RIG *rig, vfo_t vfo, vfo_op_t op)); -extern HAMLIB_EXPORT(vfo_op_t) rig_has_vfo_op HAMLIB_PARAMS((RIG *rig, vfo_op_t op)); -extern HAMLIB_EXPORT(int) rig_scan HAMLIB_PARAMS((RIG *rig, vfo_t vfo, scan_t scan, int ch)); -extern HAMLIB_EXPORT(scan_t) rig_has_scan HAMLIB_PARAMS((RIG *rig, scan_t scan)); +extern HAMLIB_EXPORT(int) +rig_set_bank HAMLIB_PARAMS((RIG * rig, vfo_t vfo, int bank)); +extern HAMLIB_EXPORT(int) +rig_set_mem HAMLIB_PARAMS((RIG * rig, vfo_t vfo, int ch)); +extern HAMLIB_EXPORT(int) +rig_get_mem HAMLIB_PARAMS((RIG * rig, vfo_t vfo, int *ch)); +extern HAMLIB_EXPORT(int) +rig_vfo_op HAMLIB_PARAMS((RIG * rig, vfo_t vfo, vfo_op_t op)); +extern HAMLIB_EXPORT(vfo_op_t) +rig_has_vfo_op HAMLIB_PARAMS((RIG * rig, vfo_op_t op)); +extern HAMLIB_EXPORT(int) +rig_scan HAMLIB_PARAMS((RIG * rig, vfo_t vfo, scan_t scan, int ch)); +extern HAMLIB_EXPORT(scan_t) +rig_has_scan HAMLIB_PARAMS((RIG * rig, scan_t scan)); -extern HAMLIB_EXPORT(int) rig_restore_channel HAMLIB_PARAMS((RIG *rig, const channel_t *chan)); /* curr VFO */ -extern HAMLIB_EXPORT(int) rig_save_channel HAMLIB_PARAMS((RIG *rig, channel_t *chan)); -extern HAMLIB_EXPORT(int) rig_set_channel HAMLIB_PARAMS((RIG *rig, const channel_t *chan)); /* mem */ -extern HAMLIB_EXPORT(int) rig_get_channel HAMLIB_PARAMS((RIG *rig, channel_t *chan)); +extern HAMLIB_EXPORT(int) +rig_restore_channel HAMLIB_PARAMS((RIG * rig, const channel_t * chan)); /* curr VFO */ +extern HAMLIB_EXPORT(int) +rig_save_channel HAMLIB_PARAMS((RIG * rig, channel_t * chan)); +extern HAMLIB_EXPORT(int) +rig_set_channel HAMLIB_PARAMS((RIG * rig, const channel_t * chan)); /* mem */ +extern HAMLIB_EXPORT(int) +rig_get_channel HAMLIB_PARAMS((RIG * rig, channel_t * chan)); -extern HAMLIB_EXPORT(int) rig_set_trn HAMLIB_PARAMS((RIG *rig, int trn)); -extern HAMLIB_EXPORT(int) rig_get_trn HAMLIB_PARAMS((RIG *rig, int *trn)); -extern HAMLIB_EXPORT(int) rig_set_freq_callback HAMLIB_PARAMS((RIG *, freq_cb_t, rig_ptr_t)); -extern HAMLIB_EXPORT(int) rig_set_mode_callback HAMLIB_PARAMS((RIG *, mode_cb_t, rig_ptr_t)); -extern HAMLIB_EXPORT(int) rig_set_vfo_callback HAMLIB_PARAMS((RIG *, vfo_cb_t, rig_ptr_t)); -extern HAMLIB_EXPORT(int) rig_set_ptt_callback HAMLIB_PARAMS((RIG *, ptt_cb_t, rig_ptr_t)); -extern HAMLIB_EXPORT(int) rig_set_dcd_callback HAMLIB_PARAMS((RIG *, dcd_cb_t, rig_ptr_t)); +extern HAMLIB_EXPORT(int) +rig_set_trn HAMLIB_PARAMS((RIG * rig, int trn)); +extern HAMLIB_EXPORT(int) +rig_get_trn HAMLIB_PARAMS((RIG * rig, int *trn)); +extern HAMLIB_EXPORT(int) +rig_set_freq_callback HAMLIB_PARAMS((RIG *, freq_cb_t, rig_ptr_t)); +extern HAMLIB_EXPORT(int) +rig_set_mode_callback HAMLIB_PARAMS((RIG *, mode_cb_t, rig_ptr_t)); +extern HAMLIB_EXPORT(int) +rig_set_vfo_callback HAMLIB_PARAMS((RIG *, vfo_cb_t, rig_ptr_t)); +extern HAMLIB_EXPORT(int) +rig_set_ptt_callback HAMLIB_PARAMS((RIG *, ptt_cb_t, rig_ptr_t)); +extern HAMLIB_EXPORT(int) +rig_set_dcd_callback HAMLIB_PARAMS((RIG *, dcd_cb_t, rig_ptr_t)); -extern HAMLIB_EXPORT(const char *) rig_get_info HAMLIB_PARAMS((RIG *rig)); +extern HAMLIB_EXPORT(const char *) +rig_get_info HAMLIB_PARAMS((RIG * rig)); -extern HAMLIB_EXPORT(const struct rig_caps *) rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model)); -extern HAMLIB_EXPORT(const freq_range_t *) rig_get_range HAMLIB_PARAMS((const freq_range_t range_list[], freq_t freq, rmode_t mode)); +extern HAMLIB_EXPORT(const struct rig_caps *) +rig_get_caps HAMLIB_PARAMS((rig_model_t rig_model)); +extern HAMLIB_EXPORT(const freq_range_t *) +rig_get_range +HAMLIB_PARAMS( + (const freq_range_t range_list[], freq_t freq, + rmode_t mode)); -extern HAMLIB_EXPORT(pbwidth_t) rig_passband_normal HAMLIB_PARAMS((RIG *rig, rmode_t mode)); -extern HAMLIB_EXPORT(pbwidth_t) rig_passband_narrow HAMLIB_PARAMS((RIG *rig, rmode_t mode)); -extern HAMLIB_EXPORT(pbwidth_t) rig_passband_wide HAMLIB_PARAMS((RIG *rig, rmode_t mode)); +extern HAMLIB_EXPORT(pbwidth_t) +rig_passband_normal HAMLIB_PARAMS((RIG * rig, rmode_t mode)); +extern HAMLIB_EXPORT(pbwidth_t) +rig_passband_narrow HAMLIB_PARAMS((RIG * rig, rmode_t mode)); +extern HAMLIB_EXPORT(pbwidth_t) +rig_passband_wide HAMLIB_PARAMS((RIG * rig, rmode_t mode)); -extern HAMLIB_EXPORT(const char *) rigerror HAMLIB_PARAMS((int errnum)); +extern HAMLIB_EXPORT(const char *) +rigerror HAMLIB_PARAMS((int errnum)); -extern HAMLIB_EXPORT(int) rig_setting2idx HAMLIB_PARAMS((setting_t s)); +extern HAMLIB_EXPORT(int) +rig_setting2idx HAMLIB_PARAMS((setting_t s)); #define rig_idx2setting(i) (1ULL<<(i)) /* * Even if these functions are prefixed with "rig_", they are not rig specific * Maybe "hamlib_" would have been better. Let me know. --SF */ -extern HAMLIB_EXPORT(void) rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level)); -extern HAMLIB_EXPORT(int) rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level)); -extern HAMLIB_EXPORT(void) rig_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level, const char *fmt, ...)); +extern HAMLIB_EXPORT(void) +rig_set_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level)); +extern HAMLIB_EXPORT(int) +rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level)); +extern HAMLIB_EXPORT(void) +rig_debug +HAMLIB_PARAMS((enum rig_debug_level_e debug_level, const char *fmt, ...)); -extern HAMLIB_EXPORT(int) rig_register HAMLIB_PARAMS((const struct rig_caps *caps)); -extern HAMLIB_EXPORT(int) rig_unregister HAMLIB_PARAMS((rig_model_t rig_model)); -extern HAMLIB_EXPORT(int) rig_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct rig_caps*, rig_ptr_t), rig_ptr_t data)); -extern HAMLIB_EXPORT(int) rig_load_backend HAMLIB_PARAMS((const char *be_name)); -extern HAMLIB_EXPORT(int) rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model)); -extern HAMLIB_EXPORT(int) rig_load_all_backends HAMLIB_PARAMS(()); -extern HAMLIB_EXPORT(rig_model_t) rig_probe_all HAMLIB_PARAMS((port_t *p)); +extern HAMLIB_EXPORT(int) +rig_register HAMLIB_PARAMS((const struct rig_caps * caps)); +extern HAMLIB_EXPORT(int) +rig_unregister HAMLIB_PARAMS((rig_model_t rig_model)); +extern HAMLIB_EXPORT(int) +rig_list_foreach +HAMLIB_PARAMS( + (int (*cfunc) (const struct rig_caps *, rig_ptr_t), + rig_ptr_t data)); +extern HAMLIB_EXPORT(int) +rig_load_backend HAMLIB_PARAMS((const char *be_name)); +extern HAMLIB_EXPORT(int) +rig_check_backend HAMLIB_PARAMS((rig_model_t rig_model)); +extern HAMLIB_EXPORT(int) +rig_load_all_backends HAMLIB_PARAMS(()); +extern HAMLIB_EXPORT(rig_model_t) +rig_probe_all HAMLIB_PARAMS((port_t * p)); __END_DECLS - -#endif /* _RIG_H */ - +#endif /* _RIG_H */ diff --git a/kenwood/Makefile.am b/kenwood/Makefile.am index 09c8ad9bd..292501726 100644 --- a/kenwood/Makefile.am +++ b/kenwood/Makefile.am @@ -1,9 +1,9 @@ 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 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_LIBADD = ../src/libhamlib.la -noinst_HEADERS = kenwood.h th.h ts2k.h ts2000.h +noinst_HEADERS = kenwood.h th.h ts2k.h diff --git a/kenwood/ts2k.c b/kenwood/ts2k.c index 6e3762ee7..1e78f3f7f 100644 --- a/kenwood/ts2k.c +++ b/kenwood/ts2k.c @@ -2,7 +2,7 @@ * Hamlib Kenwood backend - TS2000 description * 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 * it under the terms of the GNU Library General Public License as @@ -44,9 +44,7 @@ #include #include -/* we shouldn't depend on kenwood right now */ -//#include "kenwood.h" -#include "ts2000.h" +#include "kenwood.h" #include "ts2k.h" @@ -65,7 +63,7 @@ * Hamlib Kenwood backend - main file * 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, 974, 1000, 1035, 1072, 1109, 1148, 1188, 1230, 1273, 1318, 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 */ 0, }; @@ -197,9 +195,9 @@ ts2k_transaction(RIG * rig, const char *cmdstr, int cmd_len, int retval; const char *cmdtrm = EOM_KEN; /* Default Command/Reply termination char */ int retry_read = 0; -// char *errtxt; + char *errtxt; -#define MAX_RETRY_READ 32 +#define MAX_RETRY_READ 5 rs = &rig->state; rs->hold_decode = 1; @@ -357,19 +355,19 @@ int ts2k_set_vfo(RIG * rig, vfo_t vfo) switch (vfo) { case RIG_VFO_A: case RIG_VFO_B: -// case RIG_VFO_AB: // split -// case RIG_VFO_BA: -// case RIG_VFO_SAT: // FIXME: Not even close to correct + case RIG_VFO_AB: // split + case RIG_VFO_BA: + case RIG_CTRL_SAT: // FIXME: Not even close to correct case RIG_VFO_MAIN: -// case RIG_VFO_MEM_A: -// case RIG_VFO_CALL_A: + case RIG_VFO_MEM_A: + case RIG_VFO_CALL_A: ctrl = TS2K_CTRL_ON_MAIN; // FIXME : these are independent! ptt = TS2K_PTT_ON_MAIN; break; case RIG_VFO_C: case RIG_VFO_SUB: -// case RIG_VFO_MEM_C: -// case RIG_VFO_CALL_C: + case RIG_VFO_MEM_C: + case RIG_VFO_CALL_C: ctrl = TS2K_CTRL_ON_SUB; ptt = TS2K_PTT_ON_SUB; break; @@ -388,9 +386,9 @@ int ts2k_set_vfo(RIG * rig, vfo_t vfo) || (vfo == RIG_VFO_MAIN) || (vfo == RIG_VFO_CURR) || (vfo == RIG_VFO_VFO) - || (vfo == RIG_VFO_ALL) // yea, I know +// || (vfo == RIG_VFO_ALL) // yea, I know /* 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__ \ @@ -408,16 +406,16 @@ int ts2k_set_vfo(RIG * rig, vfo_t vfo) // RX Active Tuning switch (vfo) { -//ouch! case RIG_VFO_AB: // TX is opposite + case RIG_VFO_AB: // TX is opposite case RIG_VFO_A: case RIG_VFO_C: vfo_function = '0'; break; -//ouch! case RIG_VFO_BA: // TX is opposite + case RIG_VFO_BA: // TX is opposite case RIG_VFO_B: vfo_function = '1'; break; -/* case RIG_VFO_MEM_A: + case RIG_VFO_MEM_A: case RIG_VFO_MEM_C: vfo_function = '2'; break; @@ -425,7 +423,7 @@ int ts2k_set_vfo(RIG * rig, vfo_t vfo) case RIG_VFO_CALL_C: vfo_function = '3'; break; -ouch! */ + default: rig_debug(RIG_DEBUG_ERR, __FUNCTION__ ": unsupported VFO %u\n", vfo); @@ -447,14 +445,14 @@ ouch! */ switch (vfo) { case RIG_VFO_A: case RIG_VFO_C: -//ouch! case RIG_VFO_BA: // opposite of above + case RIG_VFO_BA: // opposite of above vfo_function = '0'; break; -//ouch! case RIG_VFO_AB: // opposite of above + case RIG_VFO_AB: // opposite of above case RIG_VFO_B: vfo_function = '1'; break; -/* case RIG_VFO_MEM_A: + case RIG_VFO_MEM_A: case RIG_VFO_MEM_C: // FIXME: need to handle vfo/mem split vfo_function = '2'; break; @@ -462,7 +460,7 @@ ouch! */ case RIG_VFO_CALL_C: vfo_function = '3'; break; -"I'll be back!" ouch!*/ + default: rig_debug(RIG_DEBUG_ERR, __FUNCTION__ ": unsupported VFO %u\n", @@ -483,8 +481,7 @@ ouch! */ return retval; } else { // Check further for special modes not using "fr...;", "ft...;" -// if(vfo & RIG_CTRL_SAT) { // test the SAT bit - if(vfo & 0) { // test the SAT bit + if(vfo & RIG_CTRL_SAT) { // test the SAT bit retval = ts2k_sat_on(rig, vfo); if (retval != RIG_OK) return retval; @@ -515,8 +512,8 @@ int ts2k_sat_on(RIG *rig, vfo_t vfo) acklen = 20; -// if(!(vfo & RIG_CTRL_SAT)) -// return -RIG_EINTERNAL; // All right. Who called us!? + if(!(vfo & RIG_CTRL_SAT)) + return -RIG_EINTERNAL; // All right. Who called us!? // cmdlen = sprintf(cmd, "sa%07u;", 0); // Initial string to modify 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! // Trace REV -// if(vfo & RIG_CTRL_REV) - if(vfo & 0) + if(vfo & RIG_CTRL_REV) ack[7] = '1'; // sat trace REV else ack[7] = '0'; // CTRL to main or sub? -// if ((vfo & RIG_VFO_CTRL) && (vfo & RIG_CTRL_SUB)) - if ((vfo & 0) && (vfo & 0)) // ouch! + if ((vfo & RIG_VFO_CTRL) && (vfo & RIG_CTRL_SUB)) ack[5] = '1'; // sat CTRL on sub else 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); if(vfobuf[2] == '1') { /* yes, we're in satellite mode! */ -// *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! + *vfo = RIG_CTRL_SAT; // FIXME: set the rest! /* TODO: write get_sat() and let it do the work */ return RIG_OK; } @@ -674,7 +667,7 @@ int ts2k_get_vfo(RIG * rig, vfo_t * vfo) // only valid on Main--no checks required. *vfo = RIG_VFO_B; break; -/* case '2': + case '2': if (ctrl_ptt[3] == '0') // we use CTRL as Active Transceiver. *vfo = RIG_VFO_MEM_A; else if (ctrl_ptt[3] == '1') @@ -690,7 +683,7 @@ int ts2k_get_vfo(RIG * rig, vfo_t * vfo) else return -RIG_EPROTO; break; -sniff, sniff*/ + default: // Different or newer rig types... rig_debug(RIG_DEBUG_ERR, "ts2k_get_vfo: unsupported VFO %c\n", @@ -699,8 +692,8 @@ sniff, sniff*/ } // end switch } 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') *vfo = RIG_VFO_AB; else if (r_vfo == '1' && vfobuf[2] == '0') @@ -711,7 +704,6 @@ sniff, sniff*/ ":FIXME: vfo<->mem split! -kd7eni!\n"); return -RIG_EPROTO; } -ouch!*/ } return RIG_OK; @@ -2269,9 +2261,9 @@ int ts2k_get_rptr_shift(RIG * rig, vfo_t vfo, rptr_shift_t * rptr_shift) case '2': *rptr_shift = RIG_RPT_SHIFT_PLUS; break; -// case '3': -// *rptr_shift = RIG_RPT_SHIFT_1750; -// break; + case '3': + *rptr_shift = RIG_RPT_SHIFT_1750; + break; default: 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 * 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? 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 - -// if( ( vfo == RIG_VFO_MEM_A -// || vfo == RIG_VFO_MEM_C ) ) { - if( vfo == RIG_VFO_MEM ) // which one! (tmp I hope!) + if( ( vfo == RIG_VFO_MEM_A + || vfo == RIG_VFO_MEM_C ) ) { rig_debug(RIG_DEBUG_ERR, __FUNCTION__": using rig's ptr\n"); retval = ts2k_get_vfo(rig, &curr_vfo); CHKERR(retval); @@ -2438,7 +2428,6 @@ int ts2k_get_channel(RIG * rig, vfo_t vfo, channel_t *chan) CHKERR(retval); chan->channel_num = curr_mem; } - #endif 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. 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->mode = ts2k_mode_list[ int_n(tmp, &mrtxt[0][17], 1) ]; 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->dcs_code = ts2k_dcs_list[ int_n(tmp, &mrtxt[1][24], 3) ]; 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 // FIXME : The following may have trailing garbage 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 // 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 ) ) { } -now we're in the dark, ouch!*/ + rig_debug(RIG_DEBUG_ERR, __FUNCTION__": restoring mem=%i\n", curr_mem); retval = ts2k_set_mem(rig, curr_vfo, curr_mem); CHKERR(retval); @@ -2565,9 +2554,9 @@ now we're in the dark, ouch!*/ * for the design document and hopefully I'll know which way * to go when things aren't the way they should be. We'll * 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]; 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; } 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 p8 = 0; // " " " " " p9 = 0; // " " " " " @@ -2627,7 +2616,7 @@ int ts2k_set_channel(RIG * rig, vfo_t vfo, channel_t *chan) p12 = 0; // " " " " " p13 = 0; // " " " " " p14 = 0; // " " " " " -//ouch! p15 = (unsigned int) chan->scan_group; + p15 = (unsigned int) chan->scan_group; p16 = &(chan->channel_desc[0]); mr_len[i] = sprintf( &(mrtxt[i][0]), @@ -2667,19 +2656,19 @@ int ts2k_vfo_ctrl(RIG * rig, vfo_t vfo) switch (vfo) { case RIG_VFO_A: case RIG_VFO_B: -//ouch! case RIG_VFO_AB: // split -//ouch! case RIG_VFO_BA: -//ouch! case RIG_VFO_SAT: // Should be PTT on main CTRL on sub (?) + case RIG_VFO_AB: // split + case RIG_VFO_BA: + case RIG_CTRL_SAT: // Should be PTT on main CTRL on sub (?) case RIG_VFO_MAIN: -//ouch! case RIG_VFO_MEM_A: -//ouch! case RIG_VFO_CALL_A: + case RIG_VFO_MEM_A: + case RIG_VFO_CALL_A: ctrl = TS2K_CTRL_ON_MAIN; // FIXME : these are independent! ptt = TS2K_PTT_ON_MAIN; break; case RIG_VFO_C: case RIG_VFO_SUB: -//ouch! case RIG_VFO_MEM_C: -//ouch! case RIG_VFO_CALL_C: + case RIG_VFO_MEM_C: + case RIG_VFO_CALL_C: ctrl = TS2K_CTRL_ON_SUB; ptt = TS2K_PTT_ON_SUB; break; @@ -2742,7 +2731,7 @@ int ts2k_set_split_mode(RIG * rig, vfo_t vfo, rmode_t txmode, pbwidth_t txwidth) { vfo_t vtmp; -/* + switch(vfo) { case RIG_VFO_AB: vtmp = RIG_VFO_B; break; @@ -2751,8 +2740,6 @@ int ts2k_set_split_mode(RIG * rig, default: return -RIG_EINVAL; } -rig.c, knows all, sees all. ouch!*/ - vtmp = vfo; 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 vtmp; -/* switch(vfo) { case RIG_VFO_AB: vtmp = RIG_VFO_B; break; @@ -2769,8 +2755,6 @@ int ts2k_get_split_mode(RIG *rig, default: return -RIG_EINVAL; } -rig.c, knows all, sees all. ouch!*/ - vtmp = vfo; 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?) switch(v) { case RIG_VFO_MEM: // Currently selected Main/Sub -//ouch! case RIG_VFO_MEM_A: // Main -//ouch! case RIG_VFO_MEM_C: // Sub + case RIG_VFO_MEM_A: // Main + case RIG_VFO_MEM_C: // Sub // FIXME: we should set the group and fall through /* 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_B: // Main case RIG_VFO_C: // Sub @@ -2810,9 +2794,8 @@ int ts2k_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch) CHKERR(retval); break; -//ouch! case RIG_VFO_CALL_A: -//ouch! case RIG_VFO_CALL_C: -// Can't feel a thing! + case RIG_VFO_CALL_A: // + case RIG_VFO_CALL_C: default: rig_debug(RIG_DEBUG_ERR, __FUNCTION__": vfo 'defaulted'\n"); 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; case RIG_PARM_BACKLIGHT: cmdlen = sprintf(cmd, "ex0000000;"); break; -// case RIG_PARM_KEYLIGHT: -//ouch! cmdlen = sprintf(cmd, "ex0010000;"); break; + case RIG_PARM_KEYLIGHT: + cmdlen = sprintf(cmd, "ex0010000;"); break; case RIG_PARM_APO: cmdlen = sprintf(cmd, "ex0570000;"); break; 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'); break; case RIG_PARM_BACKLIGHT: -//ouch! case RIG_PARM_KEYLIGHT: + case RIG_PARM_KEYLIGHT: val->f = (float)(ack[9] - '0'); break; 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) ); break; -/* case RIG_PARM_KEYLIGHT: + case RIG_PARM_KEYLIGHT: cmdlen = sprintf(cmd, "ex0010000%01u;", (val.i==0)? 0: 1); break; -ouch!*/ + case RIG_PARM_ANN: return -RIG_ENIMPL; diff --git a/kenwood/ts2k.h b/kenwood/ts2k.h index 3a319b030..76017e3b4 100644 --- a/kenwood/ts2k.h +++ b/kenwood/ts2k.h @@ -2,7 +2,7 @@ * Hamlib TS2000 backend - main header * 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 * 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_on(RIG *rig, char ch); int ts2k_scan_off(RIG *rig); -int ts2k_get_channel(RIG *rig, vfo_t vfo, channel_t *chan); -int ts2k_set_channel(RIG *rig, vfo_t vfo, channel_t *chan); +int ts2k_get_channel(RIG *rig, channel_t *chan); +int ts2k_set_channel(RIG *rig, const channel_t *chan); char *ts2k_get_ctrl(RIG *rig); int ts2k_set_ctrl(RIG *rig, int ptt, int ctrl); 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(rig_model_t) proberigs_ts2k(port_t *port); - #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 */ - diff --git a/kenwood/ts2k_menu.c b/kenwood/ts2k_menu.c index 18b657367..761edd9de 100644 --- a/kenwood/ts2k_menu.c +++ b/kenwood/ts2k_menu.c @@ -6,6 +6,10 @@ * License: GNU */ +/* + * status: Never been compiled! + */ + /* * Functions to initialize, read, set, and list menus * for the TS-2000. These functions will be added to diff --git a/src/misc.c b/src/misc.c index d418ae082..cdabbbc27 100644 --- a/src/misc.c +++ b/src/misc.c @@ -2,7 +2,7 @@ * Hamlib Interface - toolbox * 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 * 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; } - return sprintf (str, "%g%s", f, hz); + return sprintf (str, "%g %s", f, hz); } 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_WFM: return "WFM"; case RIG_MODE_NONE: return ""; + default: } 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) { switch (vfo) { @@ -292,6 +297,20 @@ const char *strvfo(vfo_t vfo) return "Main"; case RIG_VFO_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; } @@ -329,6 +348,7 @@ const char *strfunc(setting_t func) case RIG_FUNC_RESUME: return "RESUME"; case RIG_FUNC_NONE: return ""; + default: } return NULL; } @@ -366,6 +386,7 @@ const char *strlevel(setting_t level) case RIG_LEVEL_STRENGTH: return "STRENGTH"; case RIG_LEVEL_NONE: return ""; + default: } return NULL; } @@ -381,6 +402,7 @@ const char *strparm(setting_t parm) case RIG_PARM_BAT: return "BAT"; case RIG_PARM_NONE: return ""; + default: } return NULL; } @@ -392,6 +414,7 @@ const char *strptrshift(rptr_shift_t shift) case RIG_RPT_SHIFT_PLUS: return "-"; case RIG_RPT_SHIFT_NONE: return "None"; + default: } return NULL; } @@ -412,18 +435,22 @@ const char *strvfop(vfo_op_t op) case RIG_OP_RIGHT: return "RIGHT"; case RIG_OP_NONE: return ""; + default: } 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_MEM: return "MEM"; case RIG_SCAN_SLCT: return "SLCT"; case RIG_SCAN_PRIO: return "PRIO"; + case RIG_SCAN_PROG: return "PROG"; case RIG_SCAN_DELTA: return "DELTA"; + case RIG_SCAN_VFO: return "VFO"; + default: } 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; *str = '\0'; - if (scan == RIG_SCAN_NONE) + if (rscan == RIG_SCAN_NONE) return 0; for (i = 0; i < 30; i++) { - const char *ms = strscan(scan & (1UL<