kopia lustrzana https://github.com/Hamlib/Hamlib
Starting to implement Yaeus band change memory
BS command has a big response so have to increase some buffer sizes https://github.com/Hamlib/Hamlib/issues/423pull/426/head
rodzic
a70e45413a
commit
cc465e7d54
|
@ -308,6 +308,33 @@ static int newcat_get_vfo_mode(RIG *rig, vfo_t *vfo_mode);
|
||||||
static int newcat_vfomem_toggle(RIG *rig);
|
static int newcat_vfomem_toggle(RIG *rig);
|
||||||
static ncboolean newcat_valid_command(RIG *rig, char const *const command);
|
static ncboolean newcat_valid_command(RIG *rig, char const *const command);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The BS command needs to know what band we're on so we can restore band info
|
||||||
|
* So this converts freq to band index
|
||||||
|
*/
|
||||||
|
static int newcat_band_index(freq_t freq)
|
||||||
|
{
|
||||||
|
// FTDX101D has band=12=MW...what is that?
|
||||||
|
int band = 11; // general
|
||||||
|
|
||||||
|
if (freq >= 1.8) { band = 0; }
|
||||||
|
else if (freq >= 3.5) { band = 1; }
|
||||||
|
else if (freq >= 5) { band = 2; }
|
||||||
|
else if (freq >= 7) { band = 3; }
|
||||||
|
else if (freq >= 10) { band = 4; }
|
||||||
|
else if (freq >= 14) { band = 5; }
|
||||||
|
else if (freq >= 18) { band = 6; }
|
||||||
|
else if (freq >= 21) { band = 7; }
|
||||||
|
else if (freq >= 24.5) { band = 8; }
|
||||||
|
else if (freq >= 28) { band = 9; }
|
||||||
|
else if (freq >= 50) { band = 10; }
|
||||||
|
// what about 11-16?
|
||||||
|
else if (freq >= 70) { band = 17; }
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: band=%d\n", __func__, band);
|
||||||
|
return band;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ************************************
|
* ************************************
|
||||||
*
|
*
|
||||||
|
@ -348,6 +375,7 @@ int newcat_init(RIG *rig)
|
||||||
priv->rig_id = NC_RIGID_NONE;
|
priv->rig_id = NC_RIGID_NONE;
|
||||||
priv->current_mem = NC_MEM_CHANNEL_NONE;
|
priv->current_mem = NC_MEM_CHANNEL_NONE;
|
||||||
priv->fast_set_commands = FALSE;
|
priv->fast_set_commands = FALSE;
|
||||||
|
priv->has_bs_cmd = 1; // assume true until proven otherwise..in set_freq
|
||||||
|
|
||||||
return RIG_OK;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
@ -665,6 +693,26 @@ int newcat_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: band changing? old=%d, new=%d\n", __func__,
|
||||||
|
newcat_band_index(freq), newcat_band_index(rig->state.current_freq));
|
||||||
|
|
||||||
|
// Restore band memory if we can
|
||||||
|
if (priv->has_bs_cmd
|
||||||
|
&& newcat_band_index(freq) != newcat_band_index(rig->state.current_freq))
|
||||||
|
{
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "BS%c", cat_term);
|
||||||
|
|
||||||
|
if (RIG_OK != (err = newcat_set_cmd(rig)))
|
||||||
|
{
|
||||||
|
priv->has_bs_cmd = 0; // guess we can't do this so don't try again
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: rig does not have BS command\n", __func__);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: need to restore band settings\n", __func__);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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 */
|
||||||
|
@ -4903,7 +4951,7 @@ int newcat_get_channel(RIG *rig, channel_t *chan, int read_only)
|
||||||
const char *newcat_get_info(RIG *rig)
|
const char *newcat_get_info(RIG *rig)
|
||||||
{
|
{
|
||||||
struct newcat_priv_data *priv = (struct newcat_priv_data *)rig->state.priv;
|
struct newcat_priv_data *priv = (struct newcat_priv_data *)rig->state.priv;
|
||||||
static char idbuf[129]; /* extra large static string array */
|
static char idbuf[513]; /* extra large static string array */
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||||
|
|
||||||
|
|
|
@ -52,8 +52,8 @@ typedef char ncboolean;
|
||||||
/* shared function version */
|
/* shared function version */
|
||||||
#define NEWCAT_VER "20201016"
|
#define NEWCAT_VER "20201016"
|
||||||
|
|
||||||
/* Hopefully large enough for future use, 128 chars plus '\0' */
|
/* Hopefully large enough for future use, 512 chars plus '\0' */
|
||||||
#define NEWCAT_DATA_LEN 129
|
#define NEWCAT_DATA_LEN 513
|
||||||
|
|
||||||
/* arbitrary value for now. 11 bits (8N2+1) == 2.2917 mS @ 4800 bps */
|
/* arbitrary value for now. 11 bits (8N2+1) == 2.2917 mS @ 4800 bps */
|
||||||
#define NEWCAT_DEFAULT_READ_TIMEOUT (NEWCAT_DATA_LEN * 5)
|
#define NEWCAT_DEFAULT_READ_TIMEOUT (NEWCAT_DATA_LEN * 5)
|
||||||
|
@ -96,6 +96,7 @@ struct newcat_priv_data
|
||||||
struct timespec cache_start;
|
struct timespec cache_start;
|
||||||
char last_if_response[NEWCAT_DATA_LEN];
|
char last_if_response[NEWCAT_DATA_LEN];
|
||||||
int poweron; /* to prevent powering on more than once */
|
int poweron; /* to prevent powering on more than once */
|
||||||
|
int has_bs_cmd; // used to restore band memory */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue