Add support for the Kenwood TS-590SG

This rig is largely similar to the TS-590S but for some reason Kenwood
have changed most the EX command  ids. Even though hamlib makes little
use  of  the  EX  command,  it   probably  will  need  to  for  future
functionality implemenattion. Hence the new rig id.
Hamlib-3.0
Bill Somerville 2014-11-04 16:23:39 +00:00
rodzic bc1fcfac64
commit 6165bf9eda
4 zmienionych plików z 178 dodań i 5 usunięć

Wyświetl plik

@ -137,6 +137,7 @@
#define RIG_MODEL_TMD710 RIG_MAKE_MODEL(RIG_KENWOOD, 34)
#define RIG_MODEL_TMV71 RIG_MAKE_MODEL(RIG_KENWOOD, 35)
#define RIG_MODEL_F6K RIG_MAKE_MODEL(RIG_KENWOOD, 36) /* Flex 6000 Series */
#define RIG_MODEL_TS590SG RIG_MAKE_MODEL(RIG_KENWOOD, 37)
/*
* Icom

Wyświetl plik

@ -76,7 +76,8 @@ static const struct kenwood_id kenwood_id_list[] = {
{ RIG_MODEL_TS570S, 18 },
{ RIG_MODEL_TS2000, 19 },
{ RIG_MODEL_TS480, 20 },
{ RIG_MODEL_TS590S, 21 }, /* TBC */
{ RIG_MODEL_TS590S, 21 },
{ RIG_MODEL_TS590SG, 23 },
{ RIG_MODEL_NONE, UNKNOWN_ID }, /* end marker */
};
@ -97,7 +98,8 @@ static const struct kenwood_id_string kenwood_id_string_list[] = {
{ RIG_MODEL_TS570S, "018" },
{ RIG_MODEL_TS2000, "019" },
{ RIG_MODEL_TS480, "020" },
{ RIG_MODEL_TS590S, "021" }, /* TBC */
{ RIG_MODEL_TS590S, "021" },
{ RIG_MODEL_TS590SG, "023" },
{ RIG_MODEL_THD7A, "TH-D7" },
{ RIG_MODEL_THD7AG, "TH-D7G" },
{ RIG_MODEL_TMD700, "TM-D700" },
@ -1104,7 +1106,8 @@ int kenwood_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
int err;
char data_mode = '0';
if (RIG_MODEL_TS590S == rig->caps->rig_model)
if (RIG_MODEL_TS590S == rig->caps->rig_model
|| RIG_MODEL_TS590SG == rig->caps->rig_model)
{
/* supports DATA sub modes */
switch (mode)
@ -1140,7 +1143,8 @@ int kenwood_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
if (err != RIG_OK)
return err;
if (RIG_MODEL_TS590S == rig->caps->rig_model)
if (RIG_MODEL_TS590S == rig->caps->rig_model
|| RIG_MODEL_TS590SG == rig->caps->rig_model)
{
/* supports DATA sub modes - see above */
sprintf (buf, "DA%c", data_mode);
@ -1232,7 +1236,8 @@ int kenwood_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
*mode = kenwood2rmode(modebuf[2] - '0', caps->mode_table);
if (RIG_MODEL_TS590S == rig->caps->rig_model)
if (RIG_MODEL_TS590S == rig->caps->rig_model
|| RIG_MODEL_TS590SG == rig->caps->rig_model)
{
/* supports DATA sub-modes */
retval = kenwood_safe_transaction (rig, "DA", modebuf, 6, 4);

Wyświetl plik

@ -188,6 +188,7 @@ extern const struct rig_caps r5000_caps;
extern const struct rig_caps ts480_caps;
extern const struct rig_caps ts590_caps;
extern const struct rig_caps ts590sg_caps;
extern const struct rig_caps thf6a_caps;
extern const struct rig_caps transfox_caps;

Wyświetl plik

@ -232,6 +232,172 @@ const struct rig_caps ts590_caps = {
.vfo_op = kenwood_vfo_op,
};
const struct rig_caps ts590sg_caps = {
.rig_model = RIG_MODEL_TS590SG,
.model_name = "TS-590SG",
.mfg_name = "Kenwood",
.version = BACKEND_VER ".1",
.copyright = "LGPL",
.status = RIG_STATUS_BETA,
.rig_type = RIG_TYPE_TRANSCEIVER,
.ptt_type = RIG_PTT_RIG_MICDATA,
.dcd_type = RIG_DCD_RIG,
.port_type = RIG_PORT_SERIAL,
.serial_rate_min = 4800,
.serial_rate_max = 115200,
.serial_data_bits = 8,
.serial_stop_bits = 1,
.serial_parity = RIG_PARITY_NONE,
.serial_handshake = RIG_HANDSHAKE_HARDWARE,
.write_delay = 0,
.post_write_delay = 0,
.timeout = 500,
.retry = 3,
.preamp = {12, RIG_DBLST_END,},
.attenuator = {12, RIG_DBLST_END,},
.max_rit = kHz (9.99),
.max_xit = kHz (9.99),
.max_ifshift = Hz (0),
.targetable_vfo = RIG_TARGETABLE_FREQ,
.transceive = RIG_TRN_RIG,
.chan_list = { /* TBC */
{ 0, 89, RIG_MTYPE_MEM, TS590_CHANNEL_CAPS },
{ 90, 99, RIG_MTYPE_EDGE, TS590_CHANNEL_CAPS },
RIG_CHAN_END,
},
.rx_range_list1 = {
{kHz(30), Hz(59999999), TS590_ALL_MODES, -1, -1, TS590_VFO, TS590_ANTS},
RIG_FRNG_END,
}, /*!< Receive frequency range list for ITU region 1 */
.tx_range_list1 = {
{kHz(1810), kHz(1850), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS}, /* 100W class */
{kHz(1810), kHz(1850), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS}, /* 25W class */
{kHz(3500), kHz(3800), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{kHz(3500), kHz(3800), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{MHz(7), kHz(7200), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{MHz(7), kHz(7200), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{kHz(10100), kHz(10150), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{kHz(10100), kHz(10150), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{MHz(14), kHz(14350), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{MHz(14), kHz(14350), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{kHz(18068), kHz(18168), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{kHz(18068), kHz(18168), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{MHz(21), kHz(21450), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{MHz(21), kHz(21450), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{kHz(24890), kHz(24990), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{kHz(24890), kHz(24990), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{MHz(28), kHz(29700), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{MHz(28), kHz(29700), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{MHz(50), kHz(52000), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{MHz(50), kHz(52000), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
RIG_FRNG_END,
}, /*!< Transmit frequency range list for ITU region 1 */
.rx_range_list2 = {
{kHz(30), Hz(59999999), TS590_ALL_MODES, -1, -1, TS590_VFO, TS590_ANTS},
RIG_FRNG_END,
}, /*!< Receive frequency range list for ITU region 2 */
.tx_range_list2 = {
{kHz(1800), MHz(2) - 1, TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS}, /* 100W class */
{kHz(1800), MHz(2) - 1, TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS}, /* 25W class */
{kHz(3500), MHz(4) - 1, TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{kHz(3500), MHz(4) - 1, TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{kHz(5250), kHz(5450), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{kHz(5250), kHz(5450), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{MHz(7), kHz(7300), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{MHz(7), kHz(7300), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{kHz(10100), kHz(10150), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{kHz(10100), kHz(10150), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{MHz(14), kHz(14350), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{MHz(14), kHz(14350), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{kHz(18068), kHz(18168), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{kHz(18068), kHz(18168), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{MHz(21), kHz(21450), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{MHz(21), kHz(21450), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{kHz(24890), kHz(24990), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{kHz(24890), kHz(24990), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{MHz(28), kHz(29700), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{MHz(28), kHz(29700), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
{MHz(50), kHz(52000), TS590_OTHER_TX_MODES, 5000, 100000, TS590_VFO, TS590_ANTS},
{MHz(50), kHz(52000), TS590_AM_TX_MODES, 5000, 25000, TS590_VFO, TS590_ANTS},
RIG_FRNG_END,
}, /*!< Transmit frequency range list for ITU region 2 */
.tuning_steps = {
{TS590_ALL_MODES,kHz(1)},
{TS590_ALL_MODES,Hz(2500)},
{TS590_ALL_MODES,kHz(5)},
{TS590_ALL_MODES,Hz(6250)},
{TS590_ALL_MODES,kHz(10)},
{TS590_ALL_MODES,Hz(12500)},
{TS590_ALL_MODES,kHz(15)},
{TS590_ALL_MODES,kHz(20)},
{TS590_ALL_MODES,kHz(25)},
{TS590_ALL_MODES,kHz(30)},
{TS590_ALL_MODES,kHz(100)},
{TS590_ALL_MODES,kHz(500)},
{TS590_ALL_MODES,MHz(1)},
{TS590_ALL_MODES,0}, /* any tuning step */
RIG_TS_END,
},
/* mode/filter list, remember: order matters! */
.filters = {
{RIG_MODE_SSB, kHz(2.2)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_RTTY|RIG_MODE_RTTYR, Hz(500)},
{RIG_MODE_AM, kHz(6)},
{RIG_MODE_FM, kHz(12)},
RIG_FLT_END,
},
.priv = (void *) &ts590_priv_caps,
.rig_init = kenwood_init,
.rig_cleanup = kenwood_cleanup,
.rig_open = kenwood_open,
.set_freq = kenwood_set_freq,
.get_freq = kenwood_get_freq,
.set_rit = kenwood_set_rit, /* FIXME should this switch to rit mode or just set the frequency? */
.get_rit = kenwood_get_rit,
.set_xit = kenwood_set_xit, /* FIXME should this switch to xit mode or just set the frequency? */
.get_xit = kenwood_get_xit,
.set_mode = kenwood_set_mode,
.get_mode = kenwood_get_mode,
.set_vfo = kenwood_set_vfo,
.get_vfo = kenwood_get_vfo_if,
.set_split_vfo = kenwood_set_split_vfo,
.get_split_vfo = kenwood_get_split_vfo_if,
.get_ptt = kenwood_get_ptt,
.set_ptt = kenwood_set_ptt,
.get_dcd = kenwood_get_dcd,
.set_powerstat = kenwood_set_powerstat,
.get_powerstat = kenwood_get_powerstat,
.get_info = kenwood_get_info,
.reset = kenwood_reset,
.set_ant = kenwood_set_ant,
.get_ant = kenwood_get_ant,
.scan_ops = TS590_SCAN_OPS,
.scan = kenwood_scan, /* not working, invalid arguments using rigctl; kenwood_scan does only support on/off and not tone and CTCSS scan */
.has_set_level = RIG_LEVEL_SET(TS590_LEVEL_ALL),
.has_get_level = TS590_LEVEL_ALL,
.set_level = kenwood_set_level,
.get_level = kenwood_get_level,
.has_get_func = TS590_FUNC_ALL,
.has_set_func = TS590_FUNC_ALL,
.set_func = kenwood_set_func,
.get_func = kenwood_get_func,
.set_ctcss_tone = kenwood_set_ctcss_tone,
.get_ctcss_tone = kenwood_get_ctcss_tone,
.ctcss_list = kenwood38_ctcss_list,
.set_trn = kenwood_set_trn,
.get_trn = kenwood_get_trn,
.send_morse = kenwood_send_morse,
.set_mem = kenwood_set_mem,
.get_mem = kenwood_get_mem,
.set_channel = kenwood_set_channel,
.get_channel = kenwood_get_channel,
.vfo_ops = TS590_VFO_OPS,
.vfo_op = kenwood_vfo_op,
};
/*
* Function definitions below