From 1a4745a7c21b5e55653540e8a003f2ad0cee6d9f Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Wed, 16 Nov 2022 16:50:33 -0600 Subject: [PATCH] Split MDS 4710/9710 --- NEWS | 4 +- include/hamlib/riglist.h | 1 + rigs/mds/4710.c | 93 +++++++++++++++++++++++++++++++++++ rigs/mds/9710.c | 91 ++++++++++++++++++++++++++++++++++ rigs/mds/Makefile.am | 2 +- rigs/mds/mds.c | 103 ++------------------------------------- rigs/mds/mds.h | 21 +++++++- 7 files changed, 213 insertions(+), 102 deletions(-) create mode 100644 rigs/mds/4710.c create mode 100644 rigs/mds/9710.c diff --git a/NEWS b/NEWS index b390133be..f0f126141 100644 --- a/NEWS +++ b/NEWS @@ -17,7 +17,9 @@ Version 4.6 Version 4.5.1 * 2022-XX-XX - * Add MDS 4710 rig + * Fix dumpcaps filter printout to only show declared filters + * Fix triggering PTT on XGComms device on Linux + * Add MDS 4710/9710 rigs * Fix level_gran in all rigs * Add RIG_FUNC_TUNER to flrig.c * Fix FT-991 level_gran (needs to be done for lots of rigs) diff --git a/include/hamlib/riglist.h b/include/hamlib/riglist.h index fd7a1d931..0850f5ed0 100644 --- a/include/hamlib/riglist.h +++ b/include/hamlib/riglist.h @@ -665,6 +665,7 @@ #define RIG_MDS 36 #define RIG_BACKEND_MDS "MDS" #define RIG_MODEL_MDS4710 RIG_MAKE_MODEL(RIG_MDS, 1) +#define RIG_MODEL_MDS9710 RIG_MAKE_MODEL(RIG_MDS, 2) /* * TODO: RIG_MODEL_KWZ30, KNEISNER +DOERING diff --git a/rigs/mds/4710.c b/rigs/mds/4710.c new file mode 100644 index 000000000..8d3725e5b --- /dev/null +++ b/rigs/mds/4710.c @@ -0,0 +1,93 @@ +#include "mds.h" + +const struct rig_caps mds_4710_caps = +{ + RIG_MODEL(RIG_MODEL_MDS4710), + .model_name = "4710", + .mfg_name = "MDS", + .version = "20221114.0", + .copyright = "LGPL", + .status = RIG_STATUS_BETA, + .rig_type = RIG_TYPE_TRANSCEIVER, + .ptt_type = RIG_PTT_RIG, + .dcd_type = RIG_DCD_NONE, + .port_type = RIG_PORT_SERIAL, + .serial_rate_min = 110, + .serial_rate_max = 38400, + .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 = 1000, + .retry = 3, + + .has_get_func = RIG_FUNC_NONE, + .has_set_func = RIG_FUNC_NONE, + .has_get_level = MDS_LEVELS, + .has_set_level = RIG_LEVEL_NONE, + .has_get_parm = RIG_PARM_NONE, + .has_set_parm = RIG_PARM_NONE, +// .level_gran = { [LVL_CWPITCH] = { .step = { .i = 10 } } }, +// .ctcss_list = common_ctcss_list, +// .dcs_list = full_dcs_list, +// 2050 does have channels...not implemented yet as no need yet +// .chan_list = { +// { 0, 18, RIG_MTYPE_MEM, DUMMY_MEM_CAP }, +// { 19, 19, RIG_MTYPE_CALL }, +// { 20, NB_CHAN-1, RIG_MTYPE_EDGE }, +// RIG_CHAN_END, +// }, +// .scan_ops = DUMMY_SCAN, +// .vfo_ops = DUMMY_VFO_OP, + .transceive = RIG_TRN_RIG, + .rx_range_list1 = { + { + .startf = MHz(380), .endf = MHz(530), .modes = MDS_ALL_MODES, + .low_power = 0, .high_power = 0, MDS_VFOS, RIG_ANT_1, "USA" + }, + RIG_FRNG_END, + }, + .rx_range_list2 = {RIG_FRNG_END,}, + .tx_range_list1 = { + {MHz(380), MHz(400), MDS_ALL_MODES, W(.1), W(5), RIG_VFO_A, RIG_ANT_NONE, "USA"}, + {MHz(400), MHz(450), MDS_ALL_MODES, W(.1), W(5), RIG_VFO_A, RIG_ANT_NONE, "USA"}, + {MHz(450), MHz(512), MDS_ALL_MODES, W(.1), W(5), RIG_VFO_A, RIG_ANT_NONE, "USA"}, + {MHz(406), MHz(530), MDS_ALL_MODES, W(.1), W(5), RIG_VFO_A, RIG_ANT_NONE, "USA"}, + RIG_FRNG_END, + }, +// .tx_range_list2 = {RIG_FRNG_END,} + .tuning_steps = { + // Rem: no support for changing tuning step + {MDS_ALL_MODES, 6250}, + RIG_TS_END, + }, + + .filters = { + {MDS_ALL_MODES, RIG_FLT_ANY}, + RIG_FLT_END + }, + .priv = NULL, + + .rig_init = mds_init, + .rig_open = mds_open, + .rig_cleanup = mds_cleanup, + +// .set_conf = dummy_set_conf, +// .get_conf = dummy_get_conf, + + .set_freq = mds_set_freq, + .get_freq = mds_get_freq, +// .set_mode = mds_set_mode, +// .get_mode = mds_get_mode, + +// .set_level = dummy_set_level, +// .get_level = mds_get_level, + + .get_info = mds_get_info, + .set_ptt = mds_set_ptt, + .get_ptt = mds_get_ptt, +// .get_dcd = dummy_get_dcd, + .hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS +}; diff --git a/rigs/mds/9710.c b/rigs/mds/9710.c new file mode 100644 index 000000000..614ff22ef --- /dev/null +++ b/rigs/mds/9710.c @@ -0,0 +1,91 @@ +#include "mds.h" + +const struct rig_caps mds_9710_caps = +{ + RIG_MODEL(RIG_MODEL_MDS9710), + .model_name = "9710", + .mfg_name = "MDS", + .version = "20221116.0", + .copyright = "LGPL", + .status = RIG_STATUS_BETA, + .rig_type = RIG_TYPE_TRANSCEIVER, + .ptt_type = RIG_PTT_RIG, + .dcd_type = RIG_DCD_NONE, + .port_type = RIG_PORT_SERIAL, + .serial_rate_min = 110, + .serial_rate_max = 38400, + .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 = 1000, + .retry = 3, + + .has_get_func = RIG_FUNC_NONE, + .has_set_func = RIG_FUNC_NONE, + .has_get_level = MDS_LEVELS, + .has_set_level = RIG_LEVEL_NONE, + .has_get_parm = RIG_PARM_NONE, + .has_set_parm = RIG_PARM_NONE, +// .level_gran = { [LVL_CWPITCH] = { .step = { .i = 10 } } }, +// .ctcss_list = common_ctcss_list, +// .dcs_list = full_dcs_list, +// 2050 does have channels...not implemented yet as no need yet +// .chan_list = { +// { 0, 18, RIG_MTYPE_MEM, DUMMY_MEM_CAP }, +// { 19, 19, RIG_MTYPE_CALL }, +// { 20, NB_CHAN-1, RIG_MTYPE_EDGE }, +// RIG_CHAN_END, +// }, +// .scan_ops = DUMMY_SCAN, +// .vfo_ops = DUMMY_VFO_OP, + .transceive = RIG_TRN_RIG, + .rx_range_list1 = { + { + .startf = MHz(800), .endf = MHz(880), .modes = MDS_ALL_MODES, + .startf = MHz(880), .endf = MHz(960), .modes = MDS_ALL_MODES, + .low_power = 0, .high_power = 0, MDS_ALL_MODES, RIG_ANT_1, + }, + RIG_FRNG_END, + }, + .rx_range_list2 = {RIG_FRNG_END,}, + .tx_range_list1 = { + {MHz(380), MHz(530), MDS_ALL_MODES, W(.1), W(5), RIG_VFO_A, RIG_ANT_NONE}, + RIG_FRNG_END, + }, +// .tx_range_list2 = {RIG_FRNG_END,} + .tuning_steps = { + // Rem: no support for changing tuning step + {MDS_ALL_MODES, 6250}, + RIG_TS_END, + }, + + .filters = { + {MDS_ALL_MODES, RIG_FLT_ANY}, + RIG_FLT_END + }, + .priv = NULL, + + .rig_init = mds_init, + .rig_open = mds_open, + .rig_cleanup = mds_cleanup, + +// .set_conf = dummy_set_conf, +// .get_conf = dummy_get_conf, + + .set_freq = mds_set_freq, + .get_freq = mds_get_freq, +// .set_mode = mds_set_mode, +// .get_mode = mds_get_mode, + +// .set_level = dummy_set_level, +// .get_level = mds_get_level, + + .get_info = mds_get_info, + .set_ptt = mds_set_ptt, + .get_ptt = mds_get_ptt, +// .get_dcd = dummy_get_dcd, + .hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS +}; diff --git a/rigs/mds/Makefile.am b/rigs/mds/Makefile.am index 12bfe7ee5..20144ede1 100644 --- a/rigs/mds/Makefile.am +++ b/rigs/mds/Makefile.am @@ -1,4 +1,4 @@ -MDSSRC = mds.c mds.h +MDSSRC = mds.c mds.h 4710.c 9710.c noinst_LTLIBRARIES = libhamlib-mds.la libhamlib_mds_la_SOURCES = $(MDSSRC) diff --git a/rigs/mds/mds.c b/rigs/mds/mds.c index e2a9e1ef6..37f73c253 100644 --- a/rigs/mds/mds.c +++ b/rigs/mds/mds.c @@ -35,20 +35,15 @@ #define MAXCMDLEN 32 -#define MDS_VFOS (RIG_VFO_A) - -#define MDS_MODES (RIG_MODE_NONE) - -#define MDS_LEVELS (RIG_LEVEL_NONE) - - -const struct rig_caps mds_caps; +extern const struct rig_caps mds_4710_caps; +extern const struct rig_caps mds_9710_caps; DECLARE_INITRIG_BACKEND(mds) { rig_debug(RIG_DEBUG_VERBOSE, "%s: _init called\n", __func__); - rig_register(&mds_caps); + rig_register(&mds_4710_caps); + rig_register(&mds_9710_caps); rig_debug(RIG_DEBUG_VERBOSE, "%s: _init back from rig_register\n", __func__); return RIG_OK; @@ -568,93 +563,3 @@ int mds_open(RIG *rig) retval = mds_transaction(rig, "PTT 0", 0, &response); RETURNFUNC(retval); } - -const struct rig_caps mds_caps = -{ - RIG_MODEL(RIG_MODEL_MDS4710), - .model_name = "4710", - .mfg_name = "MDS", - .version = "20221114.0", - .copyright = "LGPL", - .status = RIG_STATUS_BETA, - .rig_type = RIG_TYPE_TRANSCEIVER, -// .targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE, - .ptt_type = RIG_PTT_RIG, - .dcd_type = RIG_DCD_NONE, - .port_type = RIG_PORT_SERIAL, - .serial_rate_min = 110, - .serial_rate_max = 38400, - .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 = 1000, - .retry = 3, - - .has_get_func = RIG_FUNC_NONE, - .has_set_func = RIG_FUNC_NONE, - .has_get_level = MDS_LEVELS, - .has_set_level = RIG_LEVEL_NONE, - .has_get_parm = RIG_PARM_NONE, - .has_set_parm = RIG_PARM_NONE, -// .level_gran = { [LVL_CWPITCH] = { .step = { .i = 10 } } }, -// .ctcss_list = common_ctcss_list, -// .dcs_list = full_dcs_list, -// 2050 does have channels...not implemented yet as no need yet -// .chan_list = { -// { 0, 18, RIG_MTYPE_MEM, DUMMY_MEM_CAP }, -// { 19, 19, RIG_MTYPE_CALL }, -// { 20, NB_CHAN-1, RIG_MTYPE_EDGE }, -// RIG_CHAN_END, -// }, -// .scan_ops = DUMMY_SCAN, -// .vfo_ops = DUMMY_VFO_OP, - .transceive = RIG_TRN_RIG, - .rx_range_list1 = { - { - .startf = MHz(380), .endf = MHz(530), .modes = RIG_MODE_ALL, - .low_power = 0, .high_power = 0, MDS_VFOS, RIG_ANT_1 - }, - RIG_FRNG_END, - }, - .rx_range_list2 = {RIG_FRNG_END,}, - .tx_range_list1 = { - {MHz(380), MHz(530), RIG_MODE_ALL, W(.1), W(5), RIG_VFO_A, RIG_ANT_NONE}, - RIG_FRNG_END, - }, -// .tx_range_list2 = {RIG_FRNG_END,} - .tuning_steps = { - // Rem: no support for changing tuning step - {RIG_MODE_ALL, 6250}, - RIG_TS_END, - }, - - .filters = { - {RIG_MODE_ALL, RIG_FLT_ANY}, - RIG_FLT_END - }, - .priv = NULL, - - .rig_init = mds_init, - .rig_open = mds_open, - .rig_cleanup = mds_cleanup, - -// .set_conf = dummy_set_conf, -// .get_conf = dummy_get_conf, - - .set_freq = mds_set_freq, - .get_freq = mds_get_freq, -// .set_mode = mds_set_mode, -// .get_mode = mds_get_mode, - -// .set_level = dummy_set_level, -// .get_level = mds_get_level, - - .get_info = mds_get_info, - .set_ptt = mds_set_ptt, - .get_ptt = mds_get_ptt, -// .get_dcd = dummy_get_dcd, - .hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS -}; diff --git a/rigs/mds/mds.h b/rigs/mds/mds.h index b9d0cfce1..2b985eb80 100644 --- a/rigs/mds/mds.h +++ b/rigs/mds/mds.h @@ -1,9 +1,28 @@ +#include + #define MDS_DATA_LEN 256 #define MDS_RET_LEN 256 + +#define MDS_VFOS (RIG_VFO_A) + +#define MDS_ALL_MODES (RIG_MODE_USB) + +#define MDS_LEVELS (RIG_LEVEL_NONE) + + struct mds_priv_data { char cmd_str[MDS_DATA_LEN]; /* command string buffer */ char ret_data[MDS_RET_LEN]; /* returned data--max value, most are less */ }; -extern const struct rig_caps barrett_caps; +extern const struct rig_caps mds_4710_caps; +extern const struct rig_caps mds_9710_caps; +int mds_init(RIG *rig); +int mds_open(RIG *rig); +int mds_cleanup(RIG *rig); +int mds_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt); +int mds_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt); +int mds_get_freq(RIG *rig, vfo_t vfo, freq_t *freq); +int mds_set_freq(RIG *rig, vfo_t vfo, freq_t freq); +const char *mds_get_info(RIG *rig);