[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. dc375c6d005c1c143a708
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: n0nb <n0...@us...> - 2024-03-25 22:26:59
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Hamlib -- Ham radio control libraries". The branch, master has been updated via dc375c6d005c1c143a7088e5792d10d6638e29f0 (commit) via 624e00dcb4d95c7cbb2b6d5f7c4fa2f237106573 (commit) via 31ea63b2f3f2ba476f65e43b35a4d841179ce1bd (commit) via c3429084fb2ff9d4d5e8efcc06411063566234c7 (commit) via 12ae80c0c5a9b02fd2bae405ae836eef6421e26a (commit) via 7a7b52b89c015d812748ba7ddebe83704d4fed7a (commit) via 1881b2e20618889150dfd47a22b1a4f99afd1886 (commit) via 1b3481ba9517662d4e9859c93a0b5f8108a5e755 (commit) via f51e7ef760300c3711b4e640b8c4a0e071656b55 (commit) via 2feb4cc65cd3cde925f3f872d09c912cd339b3eb (commit) via 538d41b9e8c7dfe9a80e4410b2eab7af9cf956d7 (commit) via 9331f9e5f40844ed3e9249e37d20916baa28e570 (commit) via 68bcae6ee86ed0b495575fd2da8f70953c311be7 (commit) from 1de9a5cede92b4847a32966c6b087ca91b74d113 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit dc375c6d005c1c143a7088e5792d10d6638e29f0 Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Mar 25 14:46:26 2024 -0500 Fix rig_get_split_vfo -- was almost always using cache diff --git a/src/rig.c b/src/rig.c index 3db6567e7..e19f0cfee 100644 --- a/src/rig.c +++ b/src/rig.c @@ -5825,7 +5825,7 @@ int HAMLIB_API rig_get_split_vfo(RIG *rig, struct rig_cache *cachep = CACHE(rig); int retcode; int cache_ms; - int use_cache; + int use_cache = 0; if (CHECK_RIG_ARG(rig)) { @@ -5854,6 +5854,7 @@ int HAMLIB_API rig_get_split_vfo(RIG *rig, if (caps->get_split_vfo == NULL || use_cache) { + rig_debug(RIG_DEBUG_TRACE, "%s: ?get_split_vfo=%d use_cache=%d\n", __func__, caps->get_split_vfo != NULL, use_cache); // if we can't get the vfo we will return whatever we have cached *split = cachep->split; *tx_vfo = cachep->split_vfo; commit 624e00dcb4d95c7cbb2b6d5f7c4fa2f237106573 Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Mar 25 11:29:18 2024 -0500 Fix FLRig reading of bandwith when FIXED or "k" is read back diff --git a/rigs/dummy/flrig.c b/rigs/dummy/flrig.c index f61c96cd5..5afa4c6e0 100644 --- a/rigs/dummy/flrig.c +++ b/rigs/dummy/flrig.c @@ -1811,9 +1811,11 @@ static int flrig_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) *width = atoi(p); - if (strstr(p, "k")) { *width *= 10000; } + if (strstr(p, "k")) { *width = *width * 1000; } - if (strcmp(p, "FIXED")) + rig_debug(RIG_DEBUG_ERR, "%s: p=%s, *width=%d\n", __func__, p, (int)(*width)); + + if (strcmp(p, "FIXED") == 0) { switch (*mode) { commit 31ea63b2f3f2ba476f65e43b35a4d841179ce1bd Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Mar 25 10:23:40 2024 -0500 Fix IC7300 bandwidth reading for AM/BM ....still need to fix setting bandwidth for AM/FM diff --git a/rigs/icom/ic7300.c b/rigs/icom/ic7300.c index 98d010e60..58a45a25d 100644 --- a/rigs/icom/ic7300.c +++ b/rigs/icom/ic7300.c @@ -50,11 +50,11 @@ int ic9700_get_clock(RIG *rig, int *year, int *month, int *day, int ic9700_set_vfo(RIG *rig, vfo_t vfo); -#define IC7300_ALL_RX_MODES (RIG_MODE_FM|RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|RIG_MODE_PKTAM) +#define IC7300_ALL_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|RIG_MODE_PKTAM) #define IC7300_1HZ_TS_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|RIG_MODE_PKTAM) #define IC7300_NOT_TS_MODES (IC7300_ALL_RX_MODES &~IC7300_1HZ_TS_MODES) -#define IC7300_OTHER_TX_MODES (RIG_MODE_FM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR) +#define IC7300_OTHER_TX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR) #define IC7300_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_PKTAM) #define IC7300_FUNCS (RIG_FUNC_NB|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_SBKIN|RIG_FUNC_FBKIN|RIG_FUNC_NR|RIG_FUNC_MON|RIG_FUNC_MN|RIG_FUNC_ANF|RIG_FUNC_LOCK|RIG_FUNC_RIT|RIG_FUNC_XIT|RIG_FUNC_SCOPE|RIG_FUNC_TUNER|RIG_FUNC_TRANSCEIVE|RIG_FUNC_SPECTRUM|RIG_FUNC_SPECTRUM_HOLD|RIG_FUNC_SEND_MORSE|RIG_FUNC_SEND_VOICE_MEM|RIG_FUNC_OVF_STATUS) diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index e6e1bb6a4..a59d456cd 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -440,6 +440,7 @@ struct icom_addr #define TOK_FILTER_USBD TOKEN_BACKEND(5) #define TOK_FILTER_USB TOKEN_BACKEND(6) #define TOK_FILTER_CW TOKEN_BACKEND(7) +#define TOK_FILTER_FM TOKEN_BACKEND(8) const struct confparams icom_cfg_params[] = { @@ -474,6 +475,10 @@ const struct confparams icom_cfg_params[] = TOK_FILTER_CW, "filter_cw", "Filter to use CW", "Filter to use for CW/CWR when setting mode", "0", RIG_CONF_NUMERIC, {.n = {0, 3, 1}} }, + { + TOK_FILTER_FM, "filter_fm", "Filter to use FM", "Filter to use for FM/PKTFM when setting mode", + "0", RIG_CONF_NUMERIC, {.n = {0, 3, 1}} + }, {RIG_CONF_END, NULL,} }; @@ -1977,9 +1982,9 @@ pbwidth_t icom_get_dsp_flt(RIG *rig, rmode_t mode) } // TODO: Skip for Xiegu G90 too???? - if (mode == RIG_MODE_FM || mode == RIG_MODE_FMN - || RIG_MODEL_X108G == rig->caps->rig_model - || RIG_MODEL_X5105 == rig->caps->rig_model) + if (RIG_MODEL_X108G == rig->caps->rig_model + || RIG_MODEL_X5105 == rig->caps->rig_model + || RIG_MODEL_G90 == rig->caps->rig_model) { priv->no_1a_03_cmd = ENUM_1A_03_NO; } @@ -1992,7 +1997,7 @@ pbwidth_t icom_get_dsp_flt(RIG *rig, rmode_t mode) retval = icom_transaction(rig, C_CTL_MEM, fw_sub_cmd, 0, 0, resbuf, &res_len); - if (-RIG_ERJCTED == retval) + if (-RIG_ERJCTED == retval && !RIG_IS_IC7300) { if (priv->no_1a_03_cmd == ENUM_1A_03_UNK) { @@ -2108,6 +2113,13 @@ int icom_set_dsp_flt(RIG *rig, rmode_t mode, pbwidth_t width) flt_idx = width <= 500 ? ((width + 49) / 50) - 1 : ((width + 99) / 100) + 4; } + else if (mode & (RIG_MODE_FM | RIG_MODE_PKTFM)) + { + if (width <= 7000) width = 7000; + else if (width <= 10000) width = 10000; + else width=15000; + RETURNFUNC(RIG_OK); + } else { rig_debug(RIG_DEBUG_VERBOSE, "%s: unknown mode=%s\n", __func__, @@ -2311,17 +2323,22 @@ static int icom_set_mode_x26(RIG *rig, vfo_t vfo, rmode_t mode, buf[2] = priv->filter_usbd; } - if (priv->filter_usb > 0 && (mode == RIG_MODE_USB || mode == RIG_MODE_LSB)) + else if (priv->filter_usb > 0 && (mode == RIG_MODE_USB || mode == RIG_MODE_LSB)) { rig_debug(RIG_DEBUG_TRACE, "%s: filter usb=%d\n", __func__, priv->filter_usb); buf[2] = priv->filter_usb; } - if (priv->filter_cw > 0 && (mode == RIG_MODE_CW || mode == RIG_MODE_CWR)) + else if (priv->filter_cw > 0 && (mode == RIG_MODE_CW || mode == RIG_MODE_CWR)) { rig_debug(RIG_DEBUG_TRACE, "%s: filter cw=%d\n", __func__, priv->filter_cw); buf[2] = priv->filter_cw; } + else if (priv->filter_fm > 0 && (mode == RIG_MODE_FM || mode == RIG_MODE_PKTFM)) + { + rig_debug(RIG_DEBUG_TRACE, "%s: filter fm=%d\n", __func__, priv->filter_fm); + buf[2] = priv->filter_fm; + } int vfo_number = icom_get_vfo_number_x25x26(rig, vfo); @@ -2532,7 +2549,7 @@ int icom_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) } if (((width != RIG_PASSBAND_NOCHANGE) && (width != current_width)) - || (priv->filter_usbd > 0 || priv->filter_usb > 0 || priv->filter_cw > 0)) + || (priv->filter_usbd > 0 || priv->filter_usb > 0 || priv->filter_cw > 0 || priv->filter_fm > 0)) { icom_set_dsp_flt(rig, mode, width); } @@ -2609,7 +2626,7 @@ static int icom_get_mode_without_data(RIG *rig, vfo_t vfo, rmode_t *mode, { priv_data->filter = 0; - if (mode_len == 2) { priv_data->filter = modebuf[2]; } + if (mode_len == 1) { priv_data->filter = modebuf[2]; } rig_debug(RIG_DEBUG_TRACE, "%s(%d): modebuf[0]=0x%02x, modebuf[1]=0x%02x, mode_len=%d\n", __func__, @@ -2683,7 +2700,16 @@ static int icom_get_mode_without_data(RIG *rig, vfo_t vfo, rmode_t *mode, *width = filter_width; - if (*mode == RIG_MODE_FM) { *width = 12000; } + if (*mode == RIG_MODE_FM) + { + *width = 12000; // some default to 12000 + if (RIG_IS_IC7300) + { + if (priv_data->filter == 1) *width = 15000; + else if (priv_data->filter == 2) *width = 10000; + else if (priv_data->filter == 3) *width = 7000; + } + } RETURNFUNC2(RIG_OK); } @@ -5089,6 +5115,15 @@ int icom_set_conf(RIG *rig, hamlib_token_t token, const char *val) break; + case TOK_FILTER_FM: + priv->filter_fm = atoi(val); + + if (priv->filter_fm > 3) { priv->filter_fm = 3; } + + if (priv->filter_fm < 1) { priv->filter_fm = 1; } + + break; + default: RETURNFUNC(-RIG_EINVAL); } diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 0f4c80d8e..3c5d5e81a 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -296,6 +296,7 @@ struct icom_priv_data int filter_usbd; /*!< Filter number to use for USBD/LSBD when setting mode */ int filter_usb; /*!< Filter number to use for USB/LSB when setting mode */ int filter_cw; /*!< Filter number to use for CW/CWR when setting mode */ + int filter_fm; /*!< Filter number to use for CW/CWR when setting mode */ }; extern const struct ts_sc_list r8500_ts_sc_list[]; commit c3429084fb2ff9d4d5e8efcc06411063566234c7 Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Mar 25 10:22:48 2024 -0500 Allow FLRig to use "k" values for bandwidth diff --git a/rigs/dummy/flrig.c b/rigs/dummy/flrig.c index be53202b5..f61c96cd5 100644 --- a/rigs/dummy/flrig.c +++ b/rigs/dummy/flrig.c @@ -143,7 +143,7 @@ struct rig_caps flrig_caps = RIG_MODEL(RIG_MODEL_FLRIG), .model_name = "", .mfg_name = "FLRig", - .version = "20240302.0", + .version = "20240325.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -1808,15 +1808,19 @@ static int flrig_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) /* we might get two values and then we want the 2nd one */ if (strchr(value, '|') != NULL) { p = strchr(value, '|') + 1; } + *width = atoi(p); + + if (strstr(p, "k")) { *width *= 10000; } + if (strcmp(p, "FIXED")) { - switch(*mode) + switch (*mode) { - case RIG_MODE_PKTAM: - case RIG_MODE_AM: - case RIG_MODE_PKTFM: - case RIG_MODE_FM: *width = 10000;break; + case RIG_MODE_PKTAM: + case RIG_MODE_AM: + case RIG_MODE_PKTFM: + case RIG_MODE_FM: *width = 10000; break; } } } commit 12ae80c0c5a9b02fd2bae405ae836eef6421e26a Merge: 1881b2e20 7a7b52b89 Author: Michael Black <mdb...@ya...> Date: Sun Mar 24 22:36:03 2024 -0500 Merge pull request #1529 from DJ3CE/k3kx3_swr Add SWR get_level to K3 (KX3, KX2) commit 7a7b52b89c015d812748ba7ddebe83704d4fed7a Author: Cedric DJ3CE <dj...@da...> Date: Fri Jan 12 01:45:28 2024 +0100 Add SWR get_level to K3 (KX3, KX2) Capabilities, level_gran and k3_get_level diff --git a/rigs/kenwood/k3.c b/rigs/kenwood/k3.c index 19fff8297..eb70d37c0 100644 --- a/rigs/kenwood/k3.c +++ b/rigs/kenwood/k3.c @@ -63,7 +63,8 @@ #define KX3_LEVEL_ALL (RIG_LEVEL_ATT|RIG_LEVEL_PREAMP|RIG_LEVEL_AGC|RIG_LEVEL_SQL|\ RIG_LEVEL_STRENGTH|RIG_LEVEL_RFPOWER|RIG_LEVEL_KEYSPD|\ RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_MICGAIN|RIG_LEVEL_COMP|\ - RIG_LEVEL_NR|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_RAWSTR|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS) + RIG_LEVEL_NR|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_RAWSTR|RIG_LEVEL_RFPOWER_METER|\ + RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_SWR) /* * Elecraft K3/K3S extra level definitions @@ -2313,6 +2314,18 @@ int k3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) break; + case RIG_LEVEL_SWR: + retval = kenwood_safe_transaction(rig, "SW", levelbuf, sizeof(levelbuf), 5); + + if (retval != RIG_OK) + { + return retval; + } + + sscanf(levelbuf + 2, "%d", &val->i); + val->f = (float) val->i / 10.0f; + break; + default: return kenwood_get_level(rig, vfo, level, val); } diff --git a/rigs/kenwood/level_gran_elecraft.h b/rigs/kenwood/level_gran_elecraft.h index ad36095ca..4e3a24498 100644 --- a/rigs/kenwood/level_gran_elecraft.h +++ b/rigs/kenwood/level_gran_elecraft.h @@ -27,4 +27,5 @@ [LVL_COMP] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/100.0f } }, [LVL_VOXGAIN] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/100.0f } }, [LVL_ALC] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/100.0f } }, + [LVL_SWR] = { .min = { .f = 1.0 }, .max = { .f = 99.9 }, .step = { .f = 1.0f/10.0f } }, commit 1881b2e20618889150dfd47a22b1a4f99afd1886 Author: Mike Black W9MDB <mdb...@ya...> Date: Sat Mar 23 11:52:26 2024 -0500 Fix FT1000MP rig_set_freq to set cache diff --git a/rigs/yaesu/ft1000mp.c b/rigs/yaesu/ft1000mp.c index 02897bb14..2a7f48f6a 100644 --- a/rigs/yaesu/ft1000mp.c +++ b/rigs/yaesu/ft1000mp.c @@ -313,7 +313,7 @@ struct rig_caps ft1000mp_caps = RIG_MODEL(RIG_MODEL_FT1000MP), .model_name = "FT-1000MP", .mfg_name = "Yaesu", - .version = "20240323.0", + .version = "20240323.1", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -849,14 +849,19 @@ static int ft1000mp_set_freq(RIG *rig, vfo_t vfo, freq_t freq) vfo = rig->state.current_vfo; } + // round freq to 10Hz intervals due to rig restriction + freq = round(freq / 10.0) * 10.0; + switch (vfo) { case RIG_VFO_A: cmd_index = FT1000MP_NATIVE_FREQA_SET; + CACHE(rig)->freqMainA = freq; break; case RIG_VFO_B: cmd_index = FT1000MP_NATIVE_FREQB_SET; + CACHE(rig)->freqMainB = freq; break; case RIG_VFO_MEM: @@ -874,9 +879,6 @@ static int ft1000mp_set_freq(RIG *rig, vfo_t vfo, freq_t freq) */ memcpy(&p->p_cmd, &ncmd[cmd_index].nseq, YAESU_CMD_LENGTH); - // round freq to 10Hz intervals due to rig restriction - freq = round(freq / 10.0) * 10.0; - to_bcd(p->p_cmd, freq / 10, 8); /* store bcd format in in p_cmd */ rig_debug(RIG_DEBUG_TRACE, "%s: freq = %"PRIfreq" Hz\n", __func__, @@ -885,6 +887,7 @@ static int ft1000mp_set_freq(RIG *rig, vfo_t vfo, freq_t freq) cmd = p->p_cmd; /* get native sequence */ write_block(RIGPORT(rig), cmd, YAESU_CMD_LENGTH); + RETURNFUNC(RIG_OK); } commit 1b3481ba9517662d4e9859c93a0b5f8108a5e755 Author: Mike Black W9MDB <mdb...@ya...> Date: Sat Mar 23 09:57:15 2024 -0500 Fix FT-1000MP get_freq diff --git a/NEWS b/NEWS index 1cd13356e..47caff7a4 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,7 @@ Version 5.x -- future * Change FT1000MP Mark V model names to align with FT1000MP Version 4.6 + * Added SDR Radio SDRConsole -- TS-2000 is now hardware flow control so need separate entry * Added --set-conf=filter_usb, filter_usbd, and filter_cw to allow Icom rigs set mode to set filter number too * Added macros for applications to obtain pointers to Hamlib structures(issues #1445, #1420, #487). Internal conversion is still a WIP, but use of these macros will make the final cutover transparent to applications. diff --git a/rigs/yaesu/ft1000mp.c b/rigs/yaesu/ft1000mp.c index 084a9c7c4..02897bb14 100644 --- a/rigs/yaesu/ft1000mp.c +++ b/rigs/yaesu/ft1000mp.c @@ -313,7 +313,7 @@ struct rig_caps ft1000mp_caps = RIG_MODEL(RIG_MODEL_FT1000MP), .model_name = "FT-1000MP", .mfg_name = "Yaesu", - .version = "20240229.0", + .version = "20240323.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -939,8 +939,6 @@ static int ft1000mp_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) *freq = CACHE(rig)->freqMainB; } - return RIG_OK; - RETURNFUNC(RIG_OK); } commit f51e7ef760300c3711b4e640b8c4a0e071656b55 Author: Mike Black W9MDB <mdb...@ya...> Date: Sat Mar 23 08:46:56 2024 -0500 Add SDRConsole rig entry since TS-2000 is now hardware flow control by default diff --git a/include/hamlib/riglist.h b/include/hamlib/riglist.h index 85fdc4fe2..4f09e4991 100644 --- a/include/hamlib/riglist.h +++ b/include/hamlib/riglist.h @@ -204,6 +204,7 @@ #define RIG_MODEL_FX4 RIG_MAKE_MODEL(RIG_KENWOOD,53) #define RIG_MODEL_THETIS RIG_MAKE_MODEL(RIG_KENWOOD, 54) #define RIG_MODEL_TRUSDX RIG_MAKE_MODEL(RIG_KENWOOD, 55) +#define RIG_MODEL_SDRCONSOLE RIG_MAKE_MODEL(RIG_KENWOOD, 56) /* * Icom diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 4ff44d1cb..19b54fabe 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -6190,6 +6190,7 @@ DECLARE_INITRIG_BACKEND(kenwood) rig_register(&kx3_caps); rig_register(&k4_caps); rig_register(&xg3_caps); + rig_register(&sdrconsole_caps); rig_register(&ts440_caps); rig_register(&ts940_caps); diff --git a/rigs/kenwood/kenwood.h b/rigs/kenwood/kenwood.h index 7e97593ae..eb6aee8e0 100644 --- a/rigs/kenwood/kenwood.h +++ b/rigs/kenwood/kenwood.h @@ -291,6 +291,7 @@ extern struct rig_caps kx3_caps; extern struct rig_caps k4_caps; extern struct rig_caps xg3_caps; extern struct rig_caps trc80_caps; +extern struct rig_caps sdrconsole_caps; extern struct rig_caps thd7a_caps; extern struct rig_caps thd72a_caps; diff --git a/rigs/kenwood/ts2000.c b/rigs/kenwood/ts2000.c index a1e2bf999..5e127407e 100644 --- a/rigs/kenwood/ts2000.c +++ b/rigs/kenwood/ts2000.c @@ -1915,3 +1915,249 @@ struct rig_caps ts2000_caps = .hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS }; +/* + * SDRConsole TS-2000 rig capabilities + * SDRConsole does not use hardware flow control for example + */ +struct rig_caps sdrconsole_caps = +{ + RIG_MODEL(RIG_MODEL_SDRCONSOLE), + .model_name = "SDRConsole", + .mfg_name = "SDR Radio", + .version = BACKEND_VER ".2", + .copyright = "LGPL", + .status = RIG_STATUS_STABLE, + .rig_type = RIG_TYPE_TRANSCEIVER, + .ptt_type = RIG_PTT_RIG, + .dcd_type = RIG_DCD_RIG, + .port_type = RIG_PORT_SERIAL, + .serial_rate_min = 1200, + .serial_rate_max = 115200, + .serial_data_bits = 8, + .serial_stop_bits = 1, + .serial_parity = RIG_PARITY_NONE, + .serial_handshake = RIG_HANDSHAKE_NONE, + .write_delay = 0, + .post_write_delay = 0, /* ms */ + .timeout = 200, + .retry = 3, + + .has_get_func = TS2000_FUNC_ALL, + .has_set_func = TS2000_FUNC_ALL, + .has_get_level = TS2000_LEVEL_GET, + .has_set_level = TS2000_LEVEL_SET, + .has_get_parm = RIG_PARM_NONE, + .has_set_parm = RIG_PARM_NONE, + .level_gran = + { +#include "level_gran_kenwood.h" + [LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 30 }, .step = { .i = 1 } }, + [LVL_KEYSPD] = {.min = {.i = 10}, .max = {.i = 60}, .step = {.i = 1}}, + [LVL_CWPITCH] = {.min = {.i = 400}, .max = {.i = 1000}, .step = {.i = 50}}, + [LVL_BKIN_DLYMS] = {.min = {.i = 0}, .max = {.i = 1000}, .step = {.i = 50}}, + [LVL_SLOPE_LOW] = {.min = {.i = 0}, .max = {.i = 1000}, .step = {.i = 10}}, + [LVL_SLOPE_HIGH] = {.min = {.i = 0}, .max = {.i = 5000}, .step = {.i = 10}}, + }, + .parm_gran = {}, + .vfo_ops = TS2000_VFO_OPS, + .scan_ops = TS2000_SCAN_OP, + .ctcss_list = ts2000_ctcss_list, + .dcs_list = ts2000_dcs_list, + .preamp = { 12, RIG_DBLST_END, }, + .attenuator = { 12, RIG_DBLST_END, }, + .max_rit = kHz(20), + .max_xit = kHz(20), + .max_ifshift = kHz(1), + .targetable_vfo = RIG_TARGETABLE_FREQ, + .transceive = RIG_TRN_RIG, + .agc_level_count = 5, + .agc_levels = { RIG_AGC_OFF, RIG_AGC_SLOW, RIG_AGC_MEDIUM, RIG_AGC_FAST, RIG_AGC_SUPERFAST }, + .bank_qty = 0, + .chan_desc_sz = 7, + + .chan_list = { + { 0, 299, RIG_MTYPE_MEM, TS2000_MEM_CAP }, + { 1, 3, RIG_MTYPE_MORSE }, + RIG_CHAN_END, + }, + + .rx_range_list1 = { + {kHz(300), MHz(60), TS2000_ALL_MODES, -1, -1, TS2000_MAINVFO, TS2000_ANTS}, + {MHz(144), MHz(146), TS2000_ALL_MODES, -1, -1, TS2000_MAINVFO}, + {MHz(430), MHz(440), TS2000_ALL_MODES, -1, -1, TS2000_MAINVFO}, + {MHz(144), MHz(146), TS2000_ALL_MODES, -1, -1, TS2000_SUBVFO}, + {MHz(430), MHz(440), TS2000_ALL_MODES, -1, -1, TS2000_SUBVFO}, + RIG_FRNG_END, + }, /* rx range */ + .tx_range_list1 = { + {kHz(1830), kHz(1850), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {kHz(1830), kHz(1850), TS2000_AM_TX_MODES, 2000, 25000, TS2000_MAINVFO, TS2000_ANTS}, + {kHz(3500), kHz(3800), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {kHz(3500), kHz(3800), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(7), kHz(7100), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(7), kHz(7100), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(10.1), MHz(10.15), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(10.1), MHz(10.15), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(14), kHz(14350), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(14), kHz(14350), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {kHz(18068), kHz(18168), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {kHz(18068), kHz(18168), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(21), kHz(21450), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(21), kHz(21450), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {kHz(24890), kHz(24990), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {kHz(24890), kHz(24990), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(28), kHz(29700), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(28), kHz(29700), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(50), MHz(50.2), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(50), MHz(50.2), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(144), MHz(146), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO}, + {MHz(144), MHz(146), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO}, + {MHz(430), MHz(440), TS2000_OTHER_TX_MODES, W(5), W(50), TS2000_MAINVFO}, + {MHz(430), MHz(440), TS2000_AM_TX_MODES, W(5), W(12.5), TS2000_MAINVFO}, + RIG_FRNG_END, + }, /* tx range */ + + .rx_range_list2 = { + {kHz(300), MHz(60), TS2000_ALL_MODES, -1, -1, TS2000_MAINVFO, TS2000_ANTS}, + {MHz(142), MHz(152), TS2000_ALL_MODES, -1, -1, TS2000_MAINVFO}, + {MHz(420), MHz(450), TS2000_ALL_MODES, -1, -1, TS2000_MAINVFO}, + {MHz(118), MHz(174), TS2000_ALL_MODES, -1, -1, TS2000_SUBVFO}, + {MHz(220), MHz(512), TS2000_ALL_MODES, -1, -1, TS2000_SUBVFO}, + RIG_FRNG_END, + }, /* rx range */ + .tx_range_list2 = { + {kHz(1800), MHz(2), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {kHz(1800), MHz(2), TS2000_AM_TX_MODES, 2000, 25000, TS2000_MAINVFO, TS2000_ANTS}, + {kHz(3500), MHz(4), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {kHz(3500), MHz(4), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(7), kHz(7300), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(7), kHz(7300), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(10.1), MHz(10.15), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(10.1), MHz(10.15), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(14), kHz(14350), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(14), kHz(14350), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {kHz(18068), kHz(18168), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {kHz(18068), kHz(18168), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(21), kHz(21450), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(21), kHz(21450), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {kHz(24890), kHz(24990), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {kHz(24890), kHz(24990), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(28), kHz(29700), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(28), kHz(29700), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(50), MHz(54), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(50), MHz(54), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO, TS2000_ANTS}, + {MHz(144), MHz(148), TS2000_OTHER_TX_MODES, W(5), W(100), TS2000_MAINVFO}, + {MHz(144), MHz(148), TS2000_AM_TX_MODES, W(5), W(25), TS2000_MAINVFO}, + {MHz(430), MHz(450), TS2000_OTHER_TX_MODES, W(5), W(50), TS2000_MAINVFO}, + {MHz(430), MHz(450), TS2000_AM_TX_MODES, W(5), W(12.5), TS2000_MAINVFO}, + RIG_FRNG_END, + }, /* tx range */ + + .tuning_steps = { + {RIG_MODE_SSB | RIG_MODE_CW | RIG_MODE_RTTY, 1}, + {TS2000_ALL_MODES, 10}, + {TS2000_ALL_MODES, 100}, + {TS2000_ALL_MODES, kHz(1)}, + {TS2000_ALL_MODES, kHz(2.5)}, + {TS2000_ALL_MODES, kHz(5)}, + {RIG_MODE_AM | RIG_MODE_FM, kHz(6.25)}, + {TS2000_ALL_MODES, kHz(10)}, + {RIG_MODE_AM | RIG_MODE_FM, kHz(12.5)}, + {RIG_MODE_AM | RIG_MODE_FM, kHz(12.5)}, + {RIG_MODE_AM | RIG_MODE_FM, kHz(15)}, + {RIG_MODE_AM | RIG_MODE_FM, kHz(20)}, + {RIG_MODE_AM | RIG_MODE_FM, kHz(25)}, + {RIG_MODE_AM | RIG_MODE_FM, kHz(30)}, + {RIG_MODE_AM | RIG_MODE_FM, kHz(50)}, + {RIG_MODE_AM | RIG_MODE_FM, kHz(100)}, + {TS2000_ALL_MODES, MHz(1)}, + {TS2000_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, Hz(200)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(50)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(1000)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(80)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(100)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(150)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(300)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(400)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(500)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(600)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(2000)}, + {RIG_MODE_RTTY | RIG_MODE_RTTYR, Hz(500)}, + {RIG_MODE_RTTY | RIG_MODE_RTTYR, Hz(250)}, + {RIG_MODE_RTTY | RIG_MODE_RTTYR, Hz(1000)}, + {RIG_MODE_RTTY | RIG_MODE_RTTYR, Hz(1500)}, + {RIG_MODE_AM, kHz(6)}, + {RIG_MODE_AM, kHz(2.4)}, + {RIG_MODE_FM, kHz(12)}, + {RIG_MODE_FM, kHz(6)}, + RIG_FLT_END, + }, + + .str_cal = TS2000_STR_CAL, + .swr_cal = TS2000_SWR_CAL, + + .ext_tokens = ts2000_ext_tokens, + .extfuncs = ts2000_ext_funcs, + .extlevels = ts2000_ext_levels, + + .priv = (void *)& ts2000_priv_caps, + + .rig_init = ts2000_init, + .rig_open = kenwood_open, + .rig_close = kenwood_close, + .rig_cleanup = kenwood_cleanup, + .set_freq = kenwood_set_freq, + .get_freq = kenwood_get_freq, + .set_rit = ts2000_set_rit, + .get_rit = ts2000_get_rit, + .set_xit = ts2000_set_rit, + .get_xit = ts2000_get_rit, + .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, + .set_ctcss_tone = kenwood_set_ctcss_tone_tn, + .get_ctcss_tone = kenwood_get_ctcss_tone, + .set_ctcss_sql = kenwood_set_ctcss_sql, + .get_ctcss_sql = kenwood_get_ctcss_sql, + .get_ptt = kenwood_get_ptt, + .set_ptt = kenwood_set_ptt, + .get_dcd = kenwood_get_dcd, + .set_func = ts2000_set_func, + .get_func = ts2000_get_func, + .set_level = ts2000_set_level, + .get_level = ts2000_get_level, + .set_ext_func = ts2000_set_ext_func, + .get_ext_func = ts2000_get_ext_func, + .set_ext_level = ts2000_set_ext_level, + .get_ext_level = ts2000_get_ext_level, + .set_ant = kenwood_set_ant, + .get_ant = kenwood_get_ant, + .send_morse = kenwood_send_morse, + .wait_morse = rig_wait_morse, + .send_voice_mem = kenwood_send_voice_mem, + .stop_voice_mem = kenwood_stop_voice_mem, + .vfo_op = kenwood_vfo_op, + .scan = kenwood_scan, + .set_mem = kenwood_set_mem, + .get_mem = kenwood_get_mem, + .get_channel = ts2000_get_channel, + .set_channel = ts2000_set_channel, + .set_trn = kenwood_set_trn, + .get_trn = kenwood_get_trn, + .set_powerstat = kenwood_set_powerstat, + .get_powerstat = kenwood_get_powerstat, + .get_info = kenwood_get_info, + .reset = kenwood_reset, + + .hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS +}; diff --git a/simulators/simic705.c b/simulators/simic705.c index e6bad1bb0..c0579d53e 100644 --- a/simulators/simic705.c +++ b/simulators/simic705.c @@ -37,8 +37,8 @@ int keyspd = 85; // 85=20WPM // we make B different from A to ensure we see a difference at startup float freqA = 14074000; float freqB = 14074500; -mode_t modeA = RIG_MODE_PKTUSB; -mode_t modeB = RIG_MODE_PKTUSB; +mode_t modeA = RIG_MODE_FM; +mode_t modeB = RIG_MODE_FM; int datamodeA = 0; int datamodeB = 0; pbwidth_t widthA = 0; @@ -110,6 +110,7 @@ void frameParse(int fd, unsigned char *frame, int len) return; } +printf("Here#1\n"); dumphex(frame, len); if (frame[0] != 0xfe && frame[1] != 0xfe) diff --git a/src/conf.c b/src/conf.c index 8302f89a2..5e00e8d38 100644 --- a/src/conf.c +++ b/src/conf.c @@ -1452,6 +1452,7 @@ int HAMLIB_API rig_set_conf(RIG *rig, hamlib_token_t token, const char *val) */ int HAMLIB_API rig_get_conf(RIG *rig, hamlib_token_t token, char *val) { + printf("tokendid=%lx, %s\n", token, val); return rig_get_conf2(rig, token, val, 128); } commit 2feb4cc65cd3cde925f3f872d09c912cd339b3eb Author: Mike Black W9MDB <mdb...@ya...> Date: Thu Mar 21 17:04:37 2024 -0500 Fix IC7700 get_mode_without_data diff --git a/rigs/icom/ic7700.c b/rigs/icom/ic7700.c index f9be28d1d..b9b1edc43 100644 --- a/rigs/icom/ic7700.c +++ b/rigs/icom/ic7700.c @@ -277,7 +277,7 @@ struct rig_caps ic7700_caps = RIG_MODEL(RIG_MODEL_IC7700), .model_name = "IC-7700", .mfg_name = "Icom", - .version = BACKEND_VER ".4", + .version = BACKEND_VER ".5", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 921259642..e6e1bb6a4 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -2578,7 +2578,7 @@ static int icom_get_mode_without_data(RIG *rig, vfo_t vfo, rmode_t *mode, // Use command 0x26 to get selected/unselected or Main/Sub VFO mode, data mode and filter width // IC-7800 can set, but not read with 0x26 (although manual states otherwise?) - if ((rs->targetable_vfo & RIG_TARGETABLE_MODE) && !RIG_IS_IC7800 + if ((rs->targetable_vfo & RIG_TARGETABLE_MODE) && !RIG_IS_IC7800 && !RIG_IS_IC7700 && !force_vfo_swap) { retval = icom_get_mode_x26(rig, vfo, &mode_len, modebuf); commit 538d41b9e8c7dfe9a80e4410b2eab7af9cf956d7 Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Mar 19 17:51:03 2024 -0500 Fix Xiegu X6100 https://github.com/Hamlib/Hamlib/issues/1499 diff --git a/rigs/icom/xiegu.c b/rigs/icom/xiegu.c index 9fa3142dd..97efc7c0b 100644 --- a/rigs/icom/xiegu.c +++ b/rigs/icom/xiegu.c @@ -139,6 +139,10 @@ int xiegu_rig_open(RIG *rig) int cmd = 0x19; int subcmd = 0x00; unsigned short iid; + + retval = icom_rig_open(rig); + if (retval != RIG_OK) return retval; + retval = icom_transaction(rig, cmd, subcmd, NULL, 0, id, &id_len); if (retval == RIG_OK) @@ -149,12 +153,13 @@ int xiegu_rig_open(RIG *rig) { case 0x0090: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "G90/G90S");break; case 0x0106: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "G106/G106C");break; - case 0x6100: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "X6100");break; + case 0x6100: + case 0xa400: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "X6100");break; default: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "Unknown");break; } } - return icom_rig_open(rig); + return retval; } /* @@ -349,7 +354,7 @@ struct rig_caps x108g_caps = static struct icom_priv_caps x6100_priv_caps = { - 0x70, /* default address */ + 0xa4, /* default address */ 0, /* 731 mode */ 0, /* no XCHG */ ic7200_ts_sc_list, commit 9331f9e5f40844ed3e9249e37d20916baa28e570 Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Mar 19 16:19:52 2024 -0500 Fix TS890S to not give an error for STRENGTH or WATTS but return 0 as appropriate diff --git a/rigs/kenwood/ts890s.c b/rigs/kenwood/ts890s.c index 2b8ca60c7..ede63c181 100644 --- a/rigs/kenwood/ts890s.c +++ b/rigs/kenwood/ts890s.c @@ -322,7 +322,16 @@ int kenwood_ts890_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) if ((ptt == RIG_PTT_OFF) != (level == RIG_LEVEL_STRENGTH)) { /* We're sorry, the number you have dialed is not in service */ - return -RIG_ENAVAIL; + if (level == RIG_LEVEL_RFPOWER_METER_WATTS) + { + val->f = 0; + } + else + { + val->i = 0; + } + + return RIG_OK; } /* Find out which meter type is in use */ @@ -482,7 +491,7 @@ struct rig_caps ts890s_caps = RIG_MODEL(RIG_MODEL_TS890S), .model_name = "TS-890S", .mfg_name = "Kenwood", - .version = BACKEND_VER ".14", + .version = BACKEND_VER ".15", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, commit 68bcae6ee86ed0b495575fd2da8f70953c311be7 Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Mar 18 17:24:07 2024 -0500 Some improvements on codan rigs diff --git a/rigs/codan/codan.c b/rigs/codan/codan.c index 6f9fc1cb8..f1fe2b51a 100644 --- a/rigs/codan/codan.c +++ b/rigs/codan/codan.c @@ -151,8 +151,8 @@ int codan_init(RIG *rig) int codan_open(RIG *rig) { char *results = NULL; - codan_transaction(rig, "scan off\r", 1, &results); - codan_transaction(rig, "echo off", 1, &results); + codan_transaction(rig, "\recho off", 1, &results); + codan_transaction(rig, "ver", 1, &results); //codan_transaction(rig, "prompt time", 1, &results); codan_transaction(rig, "login", 1, &results); diff --git a/rigs/codan/codan.h b/rigs/codan/codan.h index cd02ac1c0..ad334276a 100644 --- a/rigs/codan/codan.h +++ b/rigs/codan/codan.h @@ -24,9 +24,9 @@ #include "hamlib/rig.h" -#define BACKEND_VER "20211228" +#define BACKEND_VER "20240318" -#define EOM "\x0d" +#define EOM "\x0a" #define TRUE 1 #define FALSE 0 // For the current implemented command set 64 is long enough ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + include/hamlib/riglist.h | 1 + rigs/codan/codan.c | 4 +- rigs/codan/codan.h | 4 +- rigs/dummy/flrig.c | 20 +-- rigs/icom/ic7300.c | 4 +- rigs/icom/ic7700.c | 2 +- rigs/icom/icom.c | 55 +++++++-- rigs/icom/icom.h | 1 + rigs/icom/xiegu.c | 11 +- rigs/kenwood/k3.c | 15 ++- rigs/kenwood/kenwood.c | 1 + rigs/kenwood/kenwood.h | 1 + rigs/kenwood/level_gran_elecraft.h | 1 + rigs/kenwood/ts2000.c | 246 +++++++++++++++++++++++++++++++++++++ rigs/kenwood/ts890s.c | 13 +- rigs/yaesu/ft1000mp.c | 13 +- simulators/simic705.c | 5 +- src/conf.c | 1 + src/rig.c | 3 +- 20 files changed, 363 insertions(+), 39 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |