kopia lustrzana https://github.com/Hamlib/Hamlib
FT-991 patch
Attached fixes some problems with the Yaesu FT-991 exposed by recent WSJT-x releases. Made Yaesu newcat_get_cmd globally available. Fixes a small bug in a debug print for frequency. Adds a couple of TRACE debugs. FT-991 now does split mode. Tested and working on WSJT-X r5675 JT65/JT9 and WSPR mode. 73 Mike W9MDBHamlib-3.0
rodzic
fff8033141
commit
dffa130175
173
yaesu/ft991.c
173
yaesu/ft991.c
|
@ -34,6 +34,7 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
#include "hamlib/rig.h"
|
#include "hamlib/rig.h"
|
||||||
#include "bandplan.h"
|
#include "bandplan.h"
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
|
@ -53,9 +54,9 @@ const struct rig_caps ft991_caps = {
|
||||||
.rig_model = RIG_MODEL_FT991,
|
.rig_model = RIG_MODEL_FT991,
|
||||||
.model_name = "FT-991",
|
.model_name = "FT-991",
|
||||||
.mfg_name = "Yaesu",
|
.mfg_name = "Yaesu",
|
||||||
.version = NEWCAT_VER ".1",
|
.version = NEWCAT_VER ".2",
|
||||||
.copyright = "LGPL",
|
.copyright = "LGPL",
|
||||||
.status = RIG_STATUS_ALPHA,
|
.status = RIG_STATUS_BETA,
|
||||||
.rig_type = RIG_TYPE_TRANSCEIVER,
|
.rig_type = RIG_TYPE_TRANSCEIVER,
|
||||||
.ptt_type = RIG_PTT_RIG,
|
.ptt_type = RIG_PTT_RIG,
|
||||||
.dcd_type = RIG_DCD_NONE,
|
.dcd_type = RIG_DCD_NONE,
|
||||||
|
@ -192,12 +193,12 @@ const struct rig_caps ft991_caps = {
|
||||||
.get_freq = newcat_get_freq,
|
.get_freq = newcat_get_freq,
|
||||||
.set_mode = newcat_set_mode,
|
.set_mode = newcat_set_mode,
|
||||||
.get_mode = newcat_get_mode,
|
.get_mode = newcat_get_mode,
|
||||||
.set_vfo = newcat_set_vfo,
|
|
||||||
.get_vfo = newcat_get_vfo,
|
.get_vfo = newcat_get_vfo,
|
||||||
.set_ptt = newcat_set_ptt,
|
.set_ptt = newcat_set_ptt,
|
||||||
.get_ptt = newcat_get_ptt,
|
.get_ptt = newcat_get_ptt,
|
||||||
.set_split_vfo = newcat_set_split_vfo,
|
.set_split_vfo = ft991_set_split_vfo,
|
||||||
.get_split_vfo = newcat_get_split_vfo,
|
.get_split_vfo = ft991_get_split_vfo,
|
||||||
|
.get_split_mode = ft991_get_split_mode,
|
||||||
.set_rit = newcat_set_rit,
|
.set_rit = newcat_set_rit,
|
||||||
.get_rit = newcat_get_rit,
|
.get_rit = newcat_get_rit,
|
||||||
.set_xit = newcat_set_xit,
|
.set_xit = newcat_set_xit,
|
||||||
|
@ -231,13 +232,173 @@ const struct rig_caps ft991_caps = {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* rig_set_split_vfo*
|
||||||
|
*
|
||||||
|
* Set split operation for a given VFO
|
||||||
|
*
|
||||||
|
* Parameter | Type | Accepted/Expected Values
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
* RIG * | input | pointer to private data
|
||||||
|
* vfo | input | currVFO, VFOA, VFOB, MEM
|
||||||
|
* split | input | 0 = off, 1 = on
|
||||||
|
* tx_vfo | input | currVFO, VFOA, VFOB
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
* Returns RIG_OK on success or an error code on failure
|
||||||
|
*
|
||||||
|
* Comments: Passing currVFO to vfo or tx_vfo will use the currently
|
||||||
|
* selected VFO obtained from the priv->current_vfo data structure.
|
||||||
|
* Only VFOA and VFOB are valid assignments for the tx_vfo.
|
||||||
|
* The tx_vfo is loaded first when assigning MEM to vfo to ensure
|
||||||
|
* the correct TX VFO is selected by the rig in split mode.
|
||||||
|
* An error is returned if vfo and tx_vfo are the same.
|
||||||
|
*/
|
||||||
|
int ft991_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo)
|
||||||
|
{
|
||||||
|
struct newcat_priv_data *priv;
|
||||||
|
struct rig_state *state;
|
||||||
|
unsigned char ci;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||||
|
|
||||||
|
if (!rig)
|
||||||
|
return -RIG_EINVAL;
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: passed vfo = 0x%02x\n", __func__, vfo);
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: passed split = 0x%02x\n", __func__, split);
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: passed tx_vfo = 0x%02x\n", __func__, tx_vfo);
|
||||||
|
|
||||||
|
priv = (struct newcat_priv_data *)rig->state.priv;
|
||||||
|
state = &rig->state;
|
||||||
|
|
||||||
|
// RX VFO and TX VFO cannot be the same, no support for MEM as TX VFO
|
||||||
|
if (vfo == tx_vfo || tx_vfo == RIG_VFO_MEM)
|
||||||
|
return -RIG_ENTARGET;
|
||||||
|
|
||||||
|
switch(split) {
|
||||||
|
case RIG_SPLIT_ON:
|
||||||
|
ci = '3';
|
||||||
|
break;
|
||||||
|
case RIG_SPLIT_OFF:
|
||||||
|
ci = '2';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -RIG_EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "FT%c;", ci);
|
||||||
|
if ( RIG_OK != (err = write_block(&state->rigport, priv->cmd_str, strlen(priv->cmd_str)))) {
|
||||||
|
rig_debug(RIG_DEBUG_ERR, "%s: write_block err = %d\n", __func__, err);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
return RIG_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* rig_get_split_vfo*
|
||||||
|
*
|
||||||
|
* Get split mode status for a given VFO
|
||||||
|
*
|
||||||
|
* Parameter | Type | Accepted/Expected Values
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
* RIG * | input | pointer to private data
|
||||||
|
* vfo | input | currVFO, Main, VFO, VFOA, VFOB, MEM
|
||||||
|
* split * | output | 0 = on, 1 = off
|
||||||
|
* tx_vfo * | output | VFOA, VFOB
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
* Returns RIG_OK on success or an error code on failure
|
||||||
|
*
|
||||||
|
* Comments: The passed value for the vfo is ignored since can only split one way
|
||||||
|
*/
|
||||||
|
int ft991_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo)
|
||||||
|
{
|
||||||
|
struct newcat_priv_data *priv;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||||
|
|
||||||
|
if (!rig)
|
||||||
|
return -RIG_EINVAL;
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: passed vfo = 0x%02x\n", __func__, vfo);
|
||||||
|
|
||||||
|
priv = (struct newcat_priv_data *)rig->state.priv;
|
||||||
|
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "FT;");
|
||||||
|
if (RIG_OK != (err = newcat_get_cmd (rig)))
|
||||||
|
return err;
|
||||||
|
|
||||||
|
// Get split mode status
|
||||||
|
*split = priv->ret_data[2]=='1'; // 1=VFOB TX so is in split mode
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: set split = 0x%02x\n", __func__, *split);
|
||||||
|
|
||||||
|
*tx_vfo = RIG_VFO_A;
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: set tx_vfo = 0x%02x\n", __func__, *tx_vfo);
|
||||||
|
|
||||||
|
return RIG_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* rig_get_split_mode*
|
||||||
|
*
|
||||||
|
* Get the '991 split TX mode
|
||||||
|
*
|
||||||
|
* Parameter | Type | Accepted/expected values
|
||||||
|
* ------------------------------------------------------------------
|
||||||
|
* *rig | input | pointer to private data
|
||||||
|
* vfo | input | currVFO, VFOA, VFOB, MEM
|
||||||
|
* *tx_mode | output | supported modes
|
||||||
|
* *tx_width | output | supported widths
|
||||||
|
* ------------------------------------------------------------------
|
||||||
|
* Returns RIG_OK on success or an error code on failure
|
||||||
|
*
|
||||||
|
* Comments: Checks to see if the 991 is in split mode, if so it
|
||||||
|
* checks which VFO is set for TX and then gets the
|
||||||
|
* mode and passband of that VFO and stores it into *tx_mode
|
||||||
|
* and tx_width respectively. If not in split mode returns
|
||||||
|
* RIG_MODE_NONE and 0 Hz.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
int ft991_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, pbwidth_t *tx_width)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
split_t split;
|
||||||
|
vfo_t split_vfo;
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||||
|
|
||||||
|
if (!rig)
|
||||||
|
return -RIG_EINVAL;
|
||||||
|
|
||||||
|
err = ft991_get_split_vfo(rig, vfo, &split, &split_vfo);
|
||||||
|
if (err != RIG_OK)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
switch ((int)split) {
|
||||||
|
case TRUE: /* '991 is in split mode */
|
||||||
|
err = newcat_get_mode(rig, split_vfo, tx_mode, tx_width);
|
||||||
|
if (err != RIG_OK)
|
||||||
|
return err;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
*tx_mode = RIG_MODE_NONE;
|
||||||
|
*tx_width = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return RIG_OK;
|
||||||
|
}
|
||||||
|
|
||||||
int ft991_init(RIG *rig) {
|
int ft991_init(RIG *rig) {
|
||||||
struct newcat_priv_data *priv;
|
struct newcat_priv_data *priv;
|
||||||
rig_debug(RIG_DEBUG_VERBOSE,"%s called\n", __func__);
|
rig_debug(RIG_DEBUG_VERBOSE,"%s called, version %s\n", __func__,rig->caps->version);
|
||||||
int ret = newcat_init(rig);
|
int ret = newcat_init(rig);
|
||||||
if (ret != RIG_OK) return ret;
|
if (ret != RIG_OK) return ret;
|
||||||
priv = (struct newcat_priv_data *)rig->state.priv;
|
priv = (struct newcat_priv_data *)rig->state.priv;
|
||||||
priv->width_frequency = 9;
|
priv->width_frequency = 9;
|
||||||
priv->offset_rit = 13;
|
priv->offset_rit = 13;
|
||||||
|
rig->state.current_vfo = RIG_VFO_A;
|
||||||
return RIG_OK;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
|
|
||||||
/* TRX caps */
|
/* TRX caps */
|
||||||
|
|
||||||
#define FT991_OTHER_TX_MODES (RIG_MODE_CW| RIG_MODE_USB| RIG_MODE_LSB ) /* 100 W class */
|
#define FT991_OTHER_TX_MODES (RIG_MODE_CW| RIG_MODE_USB| RIG_MODE_LSB | RIG_MODE_PKTUSB | RIG_MODE_PKTLSB ) /* 100 W class */
|
||||||
#define FT991_AM_TX_MODES (RIG_MODE_AM) /* set 25W max */
|
#define FT991_AM_TX_MODES (RIG_MODE_AM) /* set 25W max */
|
||||||
|
|
||||||
#define FT991_LEVELS (RIG_LEVEL_ATT|RIG_LEVEL_PREAMP|\
|
#define FT991_LEVELS (RIG_LEVEL_ATT|RIG_LEVEL_PREAMP|\
|
||||||
|
@ -67,7 +67,7 @@
|
||||||
|
|
||||||
#define FT991_VFO_OPS (RIG_OP_TUNE|RIG_OP_CPY|RIG_OP_XCHG|\
|
#define FT991_VFO_OPS (RIG_OP_TUNE|RIG_OP_CPY|RIG_OP_XCHG|\
|
||||||
RIG_OP_UP|RIG_OP_DOWN|RIG_OP_BAND_UP|RIG_OP_BAND_DOWN|\
|
RIG_OP_UP|RIG_OP_DOWN|RIG_OP_BAND_UP|RIG_OP_BAND_DOWN|\
|
||||||
RIG_OP_TO_VFO|RIG_OP_FROM_VFO|RIG_OP_TOGGLE)
|
RIG_OP_TO_VFO|RIG_OP_FROM_VFO)
|
||||||
|
|
||||||
/* TBC */
|
/* TBC */
|
||||||
#define FT991_STR_CAL { 16, \
|
#define FT991_STR_CAL { 16, \
|
||||||
|
@ -122,5 +122,10 @@
|
||||||
|
|
||||||
/* Prototypes */
|
/* Prototypes */
|
||||||
int ft991_init(RIG *rig);
|
int ft991_init(RIG *rig);
|
||||||
|
int ft991_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo);
|
||||||
|
int ft991_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo);
|
||||||
|
int ft991_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, pbwidth_t *tx_width);
|
||||||
|
/* Reuse newcat_get_cmd */
|
||||||
|
extern int newcat_get_cmd(RIG *rig);
|
||||||
|
|
||||||
#endif /* _FT991_H */
|
#endif /* _FT991_H */
|
||||||
|
|
244
yaesu/newcat.c
244
yaesu/newcat.c
|
@ -58,6 +58,7 @@ typedef enum nc_rigid_e {
|
||||||
NC_RIGID_NONE = 0,
|
NC_RIGID_NONE = 0,
|
||||||
NC_RIGID_FT450 = 241,
|
NC_RIGID_FT450 = 241,
|
||||||
NC_RIGID_FT950 = 310,
|
NC_RIGID_FT950 = 310,
|
||||||
|
NC_RIGID_FT991 = 135,
|
||||||
NC_RIGID_FT2000 = 251,
|
NC_RIGID_FT2000 = 251,
|
||||||
NC_RIGID_FT2000D = 252,
|
NC_RIGID_FT2000D = 252,
|
||||||
NC_RIGID_FT1200 = 583,
|
NC_RIGID_FT1200 = 583,
|
||||||
|
@ -77,6 +78,7 @@ typedef struct _yaesu_newcat_commands {
|
||||||
char *command;
|
char *command;
|
||||||
ncboolean ft450;
|
ncboolean ft450;
|
||||||
ncboolean ft950;
|
ncboolean ft950;
|
||||||
|
ncboolean ft991;
|
||||||
ncboolean ft2000;
|
ncboolean ft2000;
|
||||||
ncboolean ft9000;
|
ncboolean ft9000;
|
||||||
ncboolean ft5000;
|
ncboolean ft5000;
|
||||||
|
@ -100,112 +102,113 @@ typedef struct _yaesu_newcat_commands {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static const yaesu_newcat_commands_t valid_commands[] = {
|
static const yaesu_newcat_commands_t valid_commands[] = {
|
||||||
/* Command FT-450 FT-950 FT-2000 FT-9000 FT-5000 FT-1200*/
|
/* Command FT-450 FT-950 FT-991 FT-2000 FT-9000 FT-5000 FT-1200*/
|
||||||
{"AB", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"AB", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"AC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"AC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"AG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"AG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"AI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"AI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"AM", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"AM", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"AN", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"AN", FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"BA", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE },
|
{"BA", FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE },
|
||||||
{"BC", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"BC", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"BD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"BD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"BI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"BI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"BP", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"BP", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"BS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"BS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"BU", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"BU", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"BY", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"BY", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"CH", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"CH", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"CN", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"CN", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"CO", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"CO", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"CS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"CS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"CT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"CT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"DA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"DA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"DN", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"DN", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"DT", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE },
|
{"DT", FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE },
|
||||||
{"DP", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE },
|
{"DP", FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE },
|
||||||
{"DS", TRUE, FALSE, TRUE, TRUE, TRUE, FALSE },
|
{"DS", TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE },
|
||||||
{"ED", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"ED", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"EK", FALSE, TRUE, TRUE, TRUE, FALSE, TRUE },
|
{"EK", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE },
|
||||||
{"EN", FALSE, FALSE, FALSE, FALSE, FALSE, TRUE },
|
{"EN", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE },
|
||||||
{"EU", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"EU", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"EX", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"EX", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"FA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"FA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"FB", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"FB", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"FK", FALSE, TRUE, TRUE, TRUE, FALSE, FALSE },
|
{"FK", FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE },
|
||||||
{"FR", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"FR", FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"FS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"FS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"FT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"FT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"GT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"GT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"ID", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"ID", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"IF", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"IF", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"IS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"IS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"KM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"KM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"KP", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"KP", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"KR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"KR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"KS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"KS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"KY", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"KY", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"LK", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"LK", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"LM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"LM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"MA", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"MA", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"MC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"MC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"MD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"MD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"MG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"MG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"MK", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE },
|
{"MK", TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE },
|
||||||
{"ML", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"ML", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"MR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"MR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"MS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"MS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"MW", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"MW", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"MX", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"MX", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"NA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"NA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"NB", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"NB", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"NL", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"NL", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"NR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"NR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"OI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"OI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"OS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"OS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"PA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"PA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"PB", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"PB", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"PC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"PC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"PL", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"PL", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"PR", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"PR", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"PS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"PS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"QI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"QI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"QR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"QR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"QS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"QS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"RA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"RA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"RC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"RC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"RD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"RD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"RF", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"RF", FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"RG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"RG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"RI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"RI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"RL", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"RL", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"RM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"RM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"RO", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"RO", FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"RP", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE },
|
{"RP", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE },
|
||||||
{"RS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"RS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"RT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"RT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"RU", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"RU", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"SC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"SC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"SD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"SD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"SF", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"SF", FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"SH", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"SH", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"SM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"SM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"SQ", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"SQ", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"ST", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE },
|
{"ST", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE },
|
||||||
{"SV", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"SV", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"TS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"TS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"TX", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"TX", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"UL", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"UL", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"UP", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"UP", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"VD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"VD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"VF", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"VF", FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"VG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"VG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"VM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"VM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"VR", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE },
|
{"VR", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE },
|
||||||
{"VS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"VS", TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"VV", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE },
|
{"VV", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE },
|
||||||
{"VX", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"VX", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
{"XT", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
{"XT", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE },
|
||||||
|
{"ZI", FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE },
|
||||||
};
|
};
|
||||||
int valid_commands_count = sizeof(valid_commands) / sizeof(yaesu_newcat_commands_t);
|
int valid_commands_count = sizeof(valid_commands) / sizeof(yaesu_newcat_commands_t);
|
||||||
|
|
||||||
|
@ -224,9 +227,10 @@ static int newcat_set_faststep(RIG * rig, ncboolean fast_step);
|
||||||
static int newcat_get_faststep(RIG * rig, ncboolean * fast_step);
|
static int newcat_get_faststep(RIG * rig, ncboolean * fast_step);
|
||||||
static int newcat_get_rigid(RIG * rig);
|
static int newcat_get_rigid(RIG * rig);
|
||||||
static int newcat_get_vfo_mode(RIG * rig, vfo_t * vfo_mode);
|
static int newcat_get_vfo_mode(RIG * rig, vfo_t * vfo_mode);
|
||||||
static int newcat_get_cmd(RIG * rig);
|
|
||||||
static int newcat_vfomem_toggle(RIG * rig);
|
static int newcat_vfomem_toggle(RIG * rig);
|
||||||
static ncboolean newcat_valid_command(RIG *rig, char *command);
|
static ncboolean newcat_valid_command(RIG *rig, char *command);
|
||||||
|
/* NewCAT Exposed Functions */
|
||||||
|
int newcat_get_cmd(RIG * rig);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -429,18 +433,20 @@ int newcat_set_freq(RIG *rig, vfo_t vfo, freq_t freq) {
|
||||||
if (width_frequency == 0) width_frequency = 8; // default to 8
|
if (width_frequency == 0) width_frequency = 8; // default to 8
|
||||||
|
|
||||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "F%c%0*d%c", c, width_frequency, (int)freq, cat_term);
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "F%c%0*d%c", c, width_frequency, (int)freq, cat_term);
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: cmd_str = %s\n", __func__, priv->cmd_str);
|
rig_debug(RIG_DEBUG_TRACE, "%s:%d cmd_str = %s\n", __func__, __LINE__, priv->cmd_str);
|
||||||
if (RIG_OK != (err = write_block(&state->rigport, priv->cmd_str, strlen(priv->cmd_str))))
|
if (RIG_OK != (err = write_block(&state->rigport, priv->cmd_str, strlen(priv->cmd_str))))
|
||||||
{
|
{
|
||||||
|
rig_debug(RIG_DEBUG_VERBOSE, "%s:%d write_block err = %d\n", __func__, __LINE__, err);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RIG_MODEL_FT450 == caps->rig_model && priv->ret_data[2] != target_vfo)
|
if (RIG_MODEL_FT450 == caps->rig_model && priv->ret_data[2] != target_vfo)
|
||||||
{
|
{
|
||||||
/* revert current VFO */
|
/* revert current VFO */
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: cmd_str = %s\n", __func__, priv->ret_data);
|
rig_debug(RIG_DEBUG_TRACE, "%s:%d cmd_str = %s\n", __func__, __LINE__, priv->ret_data);
|
||||||
if (RIG_OK != (err = write_block(&state->rigport, priv->ret_data, strlen(priv->ret_data))))
|
if (RIG_OK != (err = write_block(&state->rigport, priv->ret_data, strlen(priv->ret_data))))
|
||||||
{
|
{
|
||||||
|
rig_debug(RIG_DEBUG_VERBOSE, "%s:%d write_block err = %d\n", __func__, __LINE__, err);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -505,7 +511,7 @@ int newcat_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) {
|
||||||
sscanf(priv->ret_data+2, "%"SCNfreq, freq);
|
sscanf(priv->ret_data+2, "%"SCNfreq, freq);
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_TRACE,
|
rig_debug(RIG_DEBUG_TRACE,
|
||||||
"%s: freq = %"PRIfreq" Hz for vfo 0x%02x\n", __func__, freq, vfo);
|
"%s: freq = %"PRIfreq" Hz for vfo 0x%02x\n", __func__, *freq, vfo);
|
||||||
|
|
||||||
return RIG_OK;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
@ -728,16 +734,6 @@ int newcat_set_vfo(RIG *rig, vfo_t vfo) {
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: called, passed vfo = 0x%02x\n", __func__, vfo);
|
rig_debug(RIG_DEBUG_TRACE, "%s: called, passed vfo = 0x%02x\n", __func__, vfo);
|
||||||
|
|
||||||
if (newcat_is_rig(rig, RIG_MODEL_FT991))
|
|
||||||
{
|
|
||||||
if (vfo==RIG_VFO_A) { /* FT991 does not have VS -- pretend we do for VFO_A */
|
|
||||||
return RIG_OK;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return -RIG_EINVAL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!newcat_valid_command(rig, command))
|
if (!newcat_valid_command(rig, command))
|
||||||
return -RIG_ENAVAIL;
|
return -RIG_ENAVAIL;
|
||||||
|
|
||||||
|
@ -3280,6 +3276,7 @@ ncboolean newcat_valid_command(RIG *rig, char *command) {
|
||||||
const struct rig_caps *caps;
|
const struct rig_caps *caps;
|
||||||
ncboolean is_ft450;
|
ncboolean is_ft450;
|
||||||
ncboolean is_ft950;
|
ncboolean is_ft950;
|
||||||
|
ncboolean is_ft991;
|
||||||
ncboolean is_ft2000;
|
ncboolean is_ft2000;
|
||||||
ncboolean is_ft9000;
|
ncboolean is_ft9000;
|
||||||
ncboolean is_ft5000;
|
ncboolean is_ft5000;
|
||||||
|
@ -3289,6 +3286,7 @@ ncboolean newcat_valid_command(RIG *rig, char *command) {
|
||||||
int search_low;
|
int search_low;
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s %s\n", __func__,command);
|
||||||
|
|
||||||
if (!rig) {
|
if (!rig) {
|
||||||
rig_debug(RIG_DEBUG_ERR, "%s: Rig argument is invalid\n", __func__);
|
rig_debug(RIG_DEBUG_ERR, "%s: Rig argument is invalid\n", __func__);
|
||||||
|
@ -3309,13 +3307,14 @@ ncboolean newcat_valid_command(RIG *rig, char *command) {
|
||||||
|
|
||||||
is_ft450 = newcat_is_rig(rig, RIG_MODEL_FT450);
|
is_ft450 = newcat_is_rig(rig, RIG_MODEL_FT450);
|
||||||
is_ft950 = newcat_is_rig(rig, RIG_MODEL_FT950);
|
is_ft950 = newcat_is_rig(rig, RIG_MODEL_FT950);
|
||||||
|
is_ft991 = newcat_is_rig(rig, RIG_MODEL_FT991);
|
||||||
is_ft2000 = newcat_is_rig(rig, RIG_MODEL_FT2000);
|
is_ft2000 = newcat_is_rig(rig, RIG_MODEL_FT2000);
|
||||||
is_ft9000 = newcat_is_rig(rig, RIG_MODEL_FT9000);
|
is_ft9000 = newcat_is_rig(rig, RIG_MODEL_FT9000);
|
||||||
is_ft5000 = newcat_is_rig(rig, RIG_MODEL_FTDX5000);
|
is_ft5000 = newcat_is_rig(rig, RIG_MODEL_FTDX5000);
|
||||||
is_ft1200 = newcat_is_rig(rig, RIG_MODEL_FT1200);
|
is_ft1200 = newcat_is_rig(rig, RIG_MODEL_FT1200);
|
||||||
|
|
||||||
|
|
||||||
if (!is_ft450 && !is_ft950 && !is_ft2000 && !is_ft5000 && !is_ft9000 & !is_ft1200 ) {
|
if (!is_ft450 && !is_ft950 && !is_ft991 && !is_ft2000 && !is_ft5000 && !is_ft9000 & !is_ft1200 ) {
|
||||||
rig_debug(RIG_DEBUG_ERR, "%s: '%s' is unknown\n",
|
rig_debug(RIG_DEBUG_ERR, "%s: '%s' is unknown\n",
|
||||||
__func__, caps->model_name);
|
__func__, caps->model_name);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -3345,6 +3344,8 @@ ncboolean newcat_valid_command(RIG *rig, char *command) {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else if (is_ft950 && valid_commands[search_index].ft950)
|
else if (is_ft950 && valid_commands[search_index].ft950)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
else if (is_ft991 && valid_commands[search_index].ft991)
|
||||||
|
return TRUE;
|
||||||
else if (is_ft2000 && valid_commands[search_index].ft2000)
|
else if (is_ft2000 && valid_commands[search_index].ft2000)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else if (is_ft5000 && valid_commands[search_index].ft5000)
|
else if (is_ft5000 && valid_commands[search_index].ft5000)
|
||||||
|
@ -3617,6 +3618,7 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
||||||
char narrow = '0';
|
char narrow = '0';
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s vfo=%d, mode=%d, width=%d\n", __func__, vfo, mode, width);
|
||||||
|
|
||||||
if (!newcat_valid_command(rig, "SH"))
|
if (!newcat_valid_command(rig, "SH"))
|
||||||
return -RIG_ENAVAIL;
|
return -RIG_ENAVAIL;
|
||||||
|
|
Ładowanie…
Reference in New Issue