kopia lustrzana https://github.com/Hamlib/Hamlib
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
rodzic
bc1fcfac64
commit
6165bf9eda
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
166
kenwood/ts590.c
166
kenwood/ts590.c
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue