[Hamlib-commits] Hamlib -- Ham radio control libraries branch Hamlib-4.0 updated. da275881623af0ec3
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: Nate B. <n0...@us...> - 2020-12-06 15:27:17
|
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, Hamlib-4.0 has been updated via da275881623af0ec34ffce32d3e95c3b7fdc1d25 (commit) via afa8561ac89330ec84cda128dd2637a3e632321b (commit) via bb655924f5e69566273dd131873b8c9f6b2d9e63 (commit) via cbc1e03c7cd8a012d10692d67b04d8527e6cf9d8 (commit) via 8eb44409527c8e7df3a3d47fcea4e2d64d544e41 (commit) via 1fb9a32877e7debe2d8526656368615ac4e4be3b (commit) via 6659acd53f029e996437ea08a08f39dbbf3bd8cf (commit) via f55efa984b5afa3ab20b49e9eb1ba8a93d851b65 (commit) via deeb7beb362e890c6764d0dc900222e00d31aaf7 (commit) via 196a97eab8cc1eb79eacff3198fd7fd0d04a2019 (commit) from 763bb9ae556ba7dc5ee571cab2ebaa9bf65fa1e9 (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 da275881623af0ec34ffce32d3e95c3b7fdc1d25 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Dec 6 08:49:13 2020 -0600 Fix example.c to include rotator.h (cherry picked from commit 1b2236bb2e031ec4ff4d3242b31e38c8e19f46b9) diff --git a/tests/example.c b/tests/example.c index f021b980..4d895d09 100644 --- a/tests/example.c +++ b/tests/example.c @@ -12,6 +12,7 @@ #include <string.h> #include <hamlib/rig.h> #include <hamlib/riglist.h> +#include <hamlib/rotator.h> #include "sprintflst.h" #if 0 commit afa8561ac89330ec84cda128dd2637a3e632321b Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Dec 6 08:41:37 2020 -0600 Fix ft891 set_mode https://github.com/Hamlib/Hamlib/issues/455 (cherry picked from commit a0829063d8cd4f638ee726b7ce81d2db5100322d) diff --git a/rigs/yaesu/ft891.c b/rigs/yaesu/ft891.c index f33e2652..d2131d84 100644 --- a/rigs/yaesu/ft891.c +++ b/rigs/yaesu/ft891.c @@ -50,7 +50,7 @@ const struct rig_caps ft891_caps = RIG_MODEL(RIG_MODEL_FT891), .model_name = "FT-891", .mfg_name = "Yaesu", - .version = NEWCAT_VER ".0", + .version = NEWCAT_VER ".1", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -507,7 +507,7 @@ int ft891_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) // Copy A to B snprintf(priv->cmd_str, sizeof(priv->cmd_str), "AB;"); - if (RIG_OK != (err = newcat_get_cmd(rig))) + if (RIG_OK != (err = newcat_set_cmd(rig))) { return err; } commit bb655924f5e69566273dd131873b8c9f6b2d9e63 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Dec 6 08:20:11 2020 -0600 Update newcat.h version (cherry picked from commit 1c86ef28cfac1fcead103cf0090f39b58dddc94e) diff --git a/rigs/yaesu/newcat.h b/rigs/yaesu/newcat.h index 4443fd03..02d121af 100644 --- a/rigs/yaesu/newcat.h +++ b/rigs/yaesu/newcat.h @@ -50,7 +50,7 @@ typedef char ncboolean; /* shared function version */ -#define NEWCAT_VER "20201204" +#define NEWCAT_VER "20201206" /* Hopefully large enough for future use, 128 chars plus '\0' */ #define NEWCAT_DATA_LEN 129 commit cbc1e03c7cd8a012d10692d67b04d8527e6cf9d8 Author: Mikael Nousiainen <mik...@ik...> Date: Sun Dec 6 14:25:29 2020 +0200 Remove TODOs (cherry picked from commit 2526fa2ae306fe102f3d4c6750b7a661403b9583) diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 61664dc6..57226e4f 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -2868,9 +2868,6 @@ int newcat_set_powerstat(RIG *rig, powerstat_t status) return -RIG_ENAVAIL; } - // TODO: According to FTDX3000 CAT manual: "This command requires dummy data be initially sent. Then after one second and before two seconds the command is sent." - // TODO: According to FTDX5000 CAT manual: "Send the PS1; command twice every one second." - snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PS%c%c", ps, cat_term); err = write_block(&state->rigport, priv->cmd_str, strlen(priv->cmd_str)); @@ -7563,7 +7560,6 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) return err; } - // TODO: check if ft-2000 needs this fix too? if (is_ft950 || is_ftdx5000) { // Some Yaesu rigs cannot query SH in modes such as AM/FM commit 8eb44409527c8e7df3a3d47fcea4e2d64d544e41 Author: Mikael Nousiainen <mik...@ik...> Date: Sun Dec 6 14:21:39 2020 +0200 Do not expect a reply from GS-232B stop command. Fix GS-232B retry error code. (cherry picked from commit b062ddce22056cf2f7f3060cbcee132784ff621d) diff --git a/rotators/gs232a/gs232b.c b/rotators/gs232a/gs232b.c index 8a5bf593..b085a29a 100644 --- a/rotators/gs232a/gs232b.c +++ b/rotators/gs232a/gs232b.c @@ -106,13 +106,12 @@ transaction_write: retval = read_string(&rs->rotport, data, data_len, REPLY_EOM, strlen(REPLY_EOM)); - if (strncmp(data, "\r\n", 2) == 0 - || strchr(data, '>')) + if (strncmp(data, "\r\n", 2) == 0 || strchr(data, '>')) { - rig_debug(RIG_DEBUG_ERR, "%s: wrong response nbytes=%d\n", __func__, - (int)strlen(data)); + rig_debug(RIG_DEBUG_ERR, "%s: Invalid response for '%s': '%s' (length=%d)\n", + __func__, cmdstr, data, (int) strlen(data)); dump_hex((unsigned char *)data, strlen(data)); - retval = -1; // force retry + retval = -RIG_EPROTO; // force retry } @@ -253,13 +252,12 @@ gs232b_rot_get_position(ROT *rot, azimuth_t *az, elevation_t *el) static int gs232b_rot_stop(ROT *rot) { - char buf[32]; int retval; rig_debug(RIG_DEBUG_TRACE, "%s called\n", __func__); /* All Stop */ - retval = gs232b_transaction(rot, "S" EOM, buf, sizeof(buf), 0); + retval = gs232b_transaction(rot, "S" EOM, NULL, 0, 0); if (retval != RIG_OK) { commit 1fb9a32877e7debe2d8526656368615ac4e4be3b Author: Mikael Nousiainen <mik...@ik...> Date: Sun Dec 6 00:11:44 2020 +0200 Tuning FT-2000 filter code (cherry picked from commit 5be6a06e9a107109b4f2d188f0fe1fe4870a4387) diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index ead6e0c8..61664dc6 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -7545,7 +7545,7 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) int err; int w; int sh_command_valid = 1; - char narrow = '!'; + int narrow = 0; char cmd[] = "SH"; char main_sub_vfo = '0'; @@ -8473,6 +8473,11 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) } /* end if is_ftdx101 */ else if (is_ft2000) { + if ((narrow = get_narrow(rig, RIG_VFO_MAIN)) < 0) + { + return -RIG_EPROTO; + } + switch (mode) { case RIG_MODE_CW: @@ -8497,17 +8502,13 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) case RIG_MODE_PKTUSB: case RIG_MODE_PKTLSB: - if (w <= 4) + if (w <= 8) { *width = 200; } - else if (w <= 6) - { - *width = 500; - } else if (w <= 16) { - *width = 2400; + *width = 500; } else { commit 6659acd53f029e996437ea08a08f39dbbf3bd8cf Author: Mikael Nousiainen <mik...@ik...> Date: Sun Dec 6 00:00:15 2020 +0200 Tuning FT-2000 filter code (cherry picked from commit 72cc9b773cf3f7471621526e166c5e0ad5be3849) diff --git a/rigs/yaesu/ft2000.c b/rigs/yaesu/ft2000.c index 67d7944a..e246da3e 100644 --- a/rigs/yaesu/ft2000.c +++ b/rigs/yaesu/ft2000.c @@ -194,10 +194,9 @@ const struct rig_caps ft2000_caps = {RIG_MODE_SSB, Hz(1800)}, /* Narrow SSB */ {RIG_MODE_SSB, Hz(3000)}, /* Wide SSB */ {RIG_MODE_SSB, Hz(4000)}, /* Wide SSB */ - {FT2000_PKTSSB_RX_MODES, Hz(2400)}, /* Normal PKTSSB */ - {FT2000_PKTSSB_RX_MODES, Hz(1800)}, /* Narrow PKTSSB */ - {FT2000_PKTSSB_RX_MODES, Hz(3000)}, /* Wide PKTSSB */ - {FT2000_PKTSSB_RX_MODES, Hz(4000)}, /* Wide PKTSSB */ + {FT2000_PKTSSB_RX_MODES, Hz(500)}, /* Normal PKTSSB */ + {FT2000_PKTSSB_RX_MODES, Hz(200)}, /* Narrow PKTSSB */ + {FT2000_PKTSSB_RX_MODES, Hz(2400)}, /* Wide PKTSSB */ {FT2000_AM_RX_MODES, Hz(9000)}, /* Normal AM */ {FT2000_AM_RX_MODES, Hz(6000)}, /* Narrow AM */ {FT2000_FM_RX_MODES, Hz(16000)}, /* Normal FM */ diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 9a0b7eef..ead6e0c8 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -6642,7 +6642,7 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) case RIG_MODE_AM: case RIG_MODE_FM: case RIG_MODE_PKTFM: - if (width < rig_passband_normal(rig, mode)) + if (width > 0 && width < rig_passband_normal(rig, mode)) { err = newcat_set_narrow(rig, vfo, TRUE); } @@ -6734,7 +6734,7 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) case RIG_MODE_AM: case RIG_MODE_FM: case RIG_MODE_PKTFM: - if (width < rig_passband_normal(rig, mode)) + if (width > 0 && width < rig_passband_normal(rig, mode)) { err = newcat_set_narrow(rig, vfo, TRUE); } @@ -6875,7 +6875,7 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) return err; case RIG_MODE_PKTFM: - if (width < rig_passband_normal(rig, mode)) + if (width > 0 && width < rig_passband_normal(rig, mode)) { err = newcat_set_narrow(rig, vfo, TRUE); } @@ -6992,7 +6992,7 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) case RIG_MODE_FM: case RIG_MODE_PKTFM: case RIG_MODE_FMN: - if (width < rig_passband_normal(rig, mode)) + if (width > 0 && width < rig_passband_normal(rig, mode)) { err = newcat_set_narrow(rig, vfo, TRUE); } @@ -7104,7 +7104,7 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) case RIG_MODE_FM: case RIG_MODE_PKTFM: case RIG_MODE_FMN: - if (width < rig_passband_normal(rig, mode)) + if (width > 0 && width < rig_passband_normal(rig, mode)) { err = newcat_set_narrow(rig, vfo, TRUE); } @@ -7199,7 +7199,7 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) case RIG_MODE_AM: case RIG_MODE_FM: case RIG_MODE_PKTFM: - if (width < rig_passband_normal(rig, mode)) + if (width > 0 && width < rig_passband_normal(rig, mode)) { err = newcat_set_narrow(rig, vfo, TRUE); } @@ -7234,6 +7234,19 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) break; + case RIG_MODE_PKTUSB: + case RIG_MODE_PKTLSB: + // Narrow mode overrides DSP filter width on FT-2000 + newcat_set_narrow(rig, vfo, FALSE); + + // Packet SSB bandwidth is 2400 Hz at value 31 + if (width == RIG_PASSBAND_NORMAL) { w = 31; } + else if (width <= 200) { w = 8; } + else if (width <= 500) { w = 16; } + else { w = 31; } // 2400 + + break; + case RIG_MODE_RTTY: case RIG_MODE_RTTYR: // Narrow mode overrides DSP filter width on FT-2000 @@ -7246,8 +7259,6 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) break; - case RIG_MODE_PKTUSB: - case RIG_MODE_PKTLSB: case RIG_MODE_LSB: case RIG_MODE_USB: // Narrow mode overrides DSP filter width on FT-2000 @@ -7264,17 +7275,6 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) case RIG_MODE_AM: case RIG_MODE_FM: case RIG_MODE_PKTFM: - if (width < rig_passband_normal(rig, mode)) - { - err = newcat_set_narrow(rig, vfo, TRUE); - } - else - { - err = newcat_set_narrow(rig, vfo, FALSE); - } - - return err; - case RIG_MODE_AMN: case RIG_MODE_FMN: return RIG_OK; @@ -7295,7 +7295,7 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) case RIG_MODE_FM: case RIG_MODE_PKTFM: case RIG_MODE_FMN: - if (width < rig_passband_normal(rig, mode)) + if (width > 0 && width < rig_passband_normal(rig, mode)) { err = newcat_set_narrow(rig, vfo, TRUE); } @@ -7338,7 +7338,7 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) case RIG_MODE_AM: case RIG_MODE_FM: case RIG_MODE_PKTFM: - if (width < rig_passband_normal(rig, mode)) + if (width > 0 && width < rig_passband_normal(rig, mode)) { err = newcat_set_narrow(rig, vfo, TRUE); } @@ -8477,6 +8477,26 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) { case RIG_MODE_CW: case RIG_MODE_CWR: + if (w <= 4) + { + *width = 200; + } + else if (w <= 6) + { + *width = 500; + } + else if (w <= 16) + { + *width = 2400; + } + else + { + *width = 3000; + } + break; + + case RIG_MODE_PKTUSB: + case RIG_MODE_PKTLSB: if (w <= 4) { *width = 200; @@ -8511,8 +8531,6 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) } break; - case RIG_MODE_PKTUSB: - case RIG_MODE_PKTLSB: case RIG_MODE_LSB: case RIG_MODE_USB: if (w <= 8) commit f55efa984b5afa3ab20b49e9eb1ba8a93d851b65 Author: Mikael Nousiainen <mik...@ik...> Date: Sat Dec 5 23:43:07 2020 +0200 Tuning FT-2000 filter code (cherry picked from commit 27eaa1b1f79407bd9029a3360dea1b362468cdf5) diff --git a/rigs/yaesu/ft2000.c b/rigs/yaesu/ft2000.c index ec5800da..67d7944a 100644 --- a/rigs/yaesu/ft2000.c +++ b/rigs/yaesu/ft2000.c @@ -184,15 +184,22 @@ const struct rig_caps ft2000_caps = /* mode/filter list, .remember = order matters! */ .filters = { - {FT2000_CW_RTTY_PKT_RX_MODES, Hz(500)}, /* Normal CW, RTTY, PKT/USER */ - {FT2000_CW_RTTY_PKT_RX_MODES, Hz(100)}, /* Narrow CW, RTTY, PKT/USER */ - {FT2000_CW_RTTY_PKT_RX_MODES, Hz(2400)}, /* Wide CW, RTTY, PKT/USER */ + {RIG_MODE_CW|RIG_MODE_CWR, Hz(500)}, /* Normal CW, RTTY, PKT/USER */ + {RIG_MODE_CW|RIG_MODE_CWR, Hz(200)}, /* Narrow CW, RTTY, PKT/USER */ + {RIG_MODE_CW|RIG_MODE_CWR, Hz(2400)}, /* Wide CW, RTTY, PKT/USER */ + {RIG_MODE_RTTY|RIG_MODE_RTTYR, Hz(500)}, /* Normal RTTY */ + {RIG_MODE_RTTY|RIG_MODE_RTTYR, Hz(300)}, /* Narrow RTTY */ + {RIG_MODE_RTTY|RIG_MODE_RTTYR, Hz(2400)}, /* Wide RTTY */ {RIG_MODE_SSB, Hz(2400)}, /* Normal SSB */ {RIG_MODE_SSB, Hz(1800)}, /* Narrow SSB */ {RIG_MODE_SSB, Hz(3000)}, /* Wide SSB */ {RIG_MODE_SSB, Hz(4000)}, /* Wide SSB */ - {RIG_MODE_AM, Hz(9000)}, /* Normal AM */ - {RIG_MODE_AM, Hz(6000)}, /* Narrow AM */ + {FT2000_PKTSSB_RX_MODES, Hz(2400)}, /* Normal PKTSSB */ + {FT2000_PKTSSB_RX_MODES, Hz(1800)}, /* Narrow PKTSSB */ + {FT2000_PKTSSB_RX_MODES, Hz(3000)}, /* Wide PKTSSB */ + {FT2000_PKTSSB_RX_MODES, Hz(4000)}, /* Wide PKTSSB */ + {FT2000_AM_RX_MODES, Hz(9000)}, /* Normal AM */ + {FT2000_AM_RX_MODES, Hz(6000)}, /* Narrow AM */ {FT2000_FM_RX_MODES, Hz(16000)}, /* Normal FM */ {FT2000_FM_RX_MODES, Hz(9000)}, /* Narrow FM */ diff --git a/rigs/yaesu/ft2000.h b/rigs/yaesu/ft2000.h index 4517b82e..37ee5c12 100644 --- a/rigs/yaesu/ft2000.h +++ b/rigs/yaesu/ft2000.h @@ -39,13 +39,12 @@ #define FT2000_SSB_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB) #define FT2000_AM_RX_MODES (RIG_MODE_AM|RIG_MODE_AMN) -#define FT2000_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM) -#define FT2000_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\ - RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR) +#define FT2000_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_FMN|RIG_MODE_PKTFM) +#define FT2000_PKTSSB_RX_MODES (RIG_MODE_PKTLSB|RIG_MODE_PKTUSB) /* TRX caps */ -#define FT2000_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_RTTY| \ +#define FT2000_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY| \ RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|\ RIG_MODE_FM|RIG_MODE_FMN) /* 100 W class */ #define FT2000_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_AMN) /* set 25W max */ diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index d9ad4fe3..9a0b7eef 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -7220,15 +7220,27 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) // We need details on the widths here, manuals lack information. switch (mode) { - case RIG_MODE_RTTY: - case RIG_MODE_RTTYR: case RIG_MODE_CW: case RIG_MODE_CWR: // Narrow mode overrides DSP filter width on FT-2000 newcat_set_narrow(rig, vfo, FALSE); + // CW bandwidth is 2400 Hz at value 16 if (width == RIG_PASSBAND_NORMAL) { w = 16; } - else if (width <= 100) { w = 4; } + else if (width <= 200) { w = 4; } + else if (width <= 500) { w = 6; } + else if (width <= 2400) { w = 16; } + else { w = 31; } // No effect? + + break; + + case RIG_MODE_RTTY: + case RIG_MODE_RTTYR: + // Narrow mode overrides DSP filter width on FT-2000 + newcat_set_narrow(rig, vfo, FALSE); + + if (width == RIG_PASSBAND_NORMAL) { w = 16; } + else if (width <= 300) { w = 8; } else if (width <= 500) { w = 16; } else { w = 31; } // 2400 @@ -8463,13 +8475,31 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) { switch (mode) { - case RIG_MODE_RTTY: - case RIG_MODE_RTTYR: case RIG_MODE_CW: case RIG_MODE_CWR: if (w <= 4) { - *width = 100; + *width = 200; + } + else if (w <= 6) + { + *width = 500; + } + else if (w <= 16) + { + *width = 2400; + } + else + { + *width = 2400; + } + break; + + case RIG_MODE_RTTY: + case RIG_MODE_RTTYR: + if (w <= 8) + { + *width = 300; } else if (w <= 16) { commit deeb7beb362e890c6764d0dc900222e00d31aaf7 Author: Mikael Nousiainen <mik...@ik...> Date: Sat Dec 5 23:11:12 2020 +0200 Add missing levels and fix filters for Yaesu FT-2000 (cherry picked from commit e2ca90841cc4f24a8e60490f84776ffb5db72c5b) diff --git a/rigs/yaesu/ft2000.c b/rigs/yaesu/ft2000.c index d486ab02..ec5800da 100644 --- a/rigs/yaesu/ft2000.c +++ b/rigs/yaesu/ft2000.c @@ -25,7 +25,6 @@ * */ - #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -185,16 +184,17 @@ const struct rig_caps ft2000_caps = /* mode/filter list, .remember = order matters! */ .filters = { - {FT2000_CW_RTTY_PKT_RX_MODES, Hz(1800)}, /* Normal CW, RTTY, PKT/USER */ - {FT2000_CW_RTTY_PKT_RX_MODES, Hz(500)}, /* Narrow CW, RTTY, PKT/USER */ + {FT2000_CW_RTTY_PKT_RX_MODES, Hz(500)}, /* Normal CW, RTTY, PKT/USER */ + {FT2000_CW_RTTY_PKT_RX_MODES, Hz(100)}, /* Narrow CW, RTTY, PKT/USER */ {FT2000_CW_RTTY_PKT_RX_MODES, Hz(2400)}, /* Wide CW, RTTY, PKT/USER */ {RIG_MODE_SSB, Hz(2400)}, /* Normal SSB */ {RIG_MODE_SSB, Hz(1800)}, /* Narrow SSB */ {RIG_MODE_SSB, Hz(3000)}, /* Wide SSB */ + {RIG_MODE_SSB, Hz(4000)}, /* Wide SSB */ {RIG_MODE_AM, Hz(9000)}, /* Normal AM */ {RIG_MODE_AM, Hz(6000)}, /* Narrow AM */ - {FT2000_FM_RX_MODES, Hz(12000)}, /* Normal FM */ - {FT2000_FM_RX_MODES, Hz(8000)}, /* Narrow FM */ + {FT2000_FM_RX_MODES, Hz(16000)}, /* Normal FM */ + {FT2000_FM_RX_MODES, Hz(9000)}, /* Narrow FM */ RIG_FLT_END, }, diff --git a/rigs/yaesu/ft2000.h b/rigs/yaesu/ft2000.h index 09d1d1b1..4517b82e 100644 --- a/rigs/yaesu/ft2000.h +++ b/rigs/yaesu/ft2000.h @@ -28,60 +28,49 @@ #ifndef _FT2000_H #define _FT2000_H 1 -#if 0 -#define TRUE 1 -#define FALSE 0 -#define ON TRUE -#define OFF FALSE -#endif - -#define FT2000_VFO_ALL (RIG_VFO_A|RIG_VFO_B) +#define FT2000_VFO_ALL (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MEM) /* Receiver caps */ -#define FT2000_ALL_RX_MODES (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) +#define FT2000_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_AMN|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_FM|RIG_MODE_FMN) #define FT2000_SSB_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB) -#define FT2000_AM_RX_MODES (RIG_MODE_AM) +#define FT2000_AM_RX_MODES (RIG_MODE_AM|RIG_MODE_AMN) #define FT2000_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM) #define FT2000_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\ RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR) - - - /* TRX caps */ #define FT2000_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_RTTY| \ - RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM) /* 100 W class */ -#define FT2000_AM_TX_MODES (RIG_MODE_AM) /* set 25W max */ + RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|\ + RIG_MODE_FM|RIG_MODE_FMN) /* 100 W class */ +#define FT2000_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_AMN) /* set 25W max */ -/* TBC */ #define FT2000_LEVELS (RIG_LEVEL_ATT|RIG_LEVEL_PREAMP|\ - RIG_LEVEL_ALC|RIG_LEVEL_RAWSTR|RIG_LEVEL_SWR|\ + RIG_LEVEL_ALC|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_SWR|\ RIG_LEVEL_RFPOWER|RIG_LEVEL_RF|RIG_LEVEL_SQL|\ RIG_LEVEL_MICGAIN|RIG_LEVEL_IF|RIG_LEVEL_CWPITCH|\ RIG_LEVEL_KEYSPD|RIG_LEVEL_AF|RIG_LEVEL_AGC|\ RIG_LEVEL_METER|RIG_LEVEL_BKINDL|RIG_LEVEL_SQL|\ RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_COMP|\ - RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF) + RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF|\ + RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_RFPOWER_METER|\ + RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER) -/* TBC */ #define FT2000_FUNCS (RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_LOCK|\ RIG_FUNC_MON|RIG_FUNC_NB|RIG_FUNC_NR|RIG_FUNC_VOX|\ RIG_FUNC_FBKIN|RIG_FUNC_COMP|RIG_FUNC_ANF|RIG_FUNC_MN|\ RIG_FUNC_RIT|RIG_FUNC_XIT|\ RIG_FUNC_TUNER) -/* TBC */ #define FT2000_VFO_OPS (RIG_OP_TUNE|RIG_OP_CPY|RIG_OP_XCHG|\ RIG_OP_UP|RIG_OP_DOWN|RIG_OP_BAND_UP|RIG_OP_BAND_DOWN|\ RIG_OP_TO_VFO|RIG_OP_FROM_VFO|RIG_OP_TOGGLE) -/* TBC */ #define FT2000_STR_CAL { 16, \ { \ { 0, -54 }, /* S0 */ \ diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index e112876f..d9ad4fe3 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -2868,6 +2868,9 @@ int newcat_set_powerstat(RIG *rig, powerstat_t status) return -RIG_ENAVAIL; } + // TODO: According to FTDX3000 CAT manual: "This command requires dummy data be initially sent. Then after one second and before two seconds the command is sent." + // TODO: According to FTDX5000 CAT manual: "Send the PS1; command twice every one second." + snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PS%c%c", ps, cat_term); err = write_block(&state->rigport, priv->cmd_str, strlen(priv->cmd_str)); @@ -5404,7 +5407,7 @@ int newcat_set_mem(RIG *rig, vfo_t vfo, int ch) /* Out of Range, or empty */ if (!mem_caps) { - return -RIG_ENAVAIL; + return -RIG_EINVAL; } /* set to usable vfo if needed */ @@ -7212,9 +7215,89 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) return RIG_OK; } } // end is_ftdx101 + else if (is_ft2000) + { + // We need details on the widths here, manuals lack information. + switch (mode) + { + case RIG_MODE_RTTY: + case RIG_MODE_RTTYR: + case RIG_MODE_CW: + case RIG_MODE_CWR: + // Narrow mode overrides DSP filter width on FT-2000 + newcat_set_narrow(rig, vfo, FALSE); + + if (width == RIG_PASSBAND_NORMAL) { w = 16; } + else if (width <= 100) { w = 4; } + else if (width <= 500) { w = 16; } + else { w = 31; } // 2400 + + break; + + case RIG_MODE_PKTUSB: + case RIG_MODE_PKTLSB: + case RIG_MODE_LSB: + case RIG_MODE_USB: + // Narrow mode overrides DSP filter width on FT-2000 + newcat_set_narrow(rig, vfo, FALSE); + + if (width == RIG_PASSBAND_NORMAL) { w = 16; } + else if (width <= 1800) { w = 8; } + else if (width <= 2400) { w = 16; } + else if (width <= 3000) { w = 25; } + else { w = 31; } // 4000 + + break; + + case RIG_MODE_AM: + case RIG_MODE_FM: + case RIG_MODE_PKTFM: + if (width < rig_passband_normal(rig, mode)) + { + err = newcat_set_narrow(rig, vfo, TRUE); + } + else + { + err = newcat_set_narrow(rig, vfo, FALSE); + } + + return err; + + case RIG_MODE_AMN: + case RIG_MODE_FMN: + return RIG_OK; + + default: + return -RIG_EINVAL; + } + + if ((err = set_roofing_filter_for_width(rig, vfo, width)) != RIG_OK) + { + return err; + } + + switch (mode) + { + case RIG_MODE_AM: + case RIG_MODE_AMN: + case RIG_MODE_FM: + case RIG_MODE_PKTFM: + case RIG_MODE_FMN: + if (width < rig_passband_normal(rig, mode)) + { + err = newcat_set_narrow(rig, vfo, TRUE); + } + else + { + err = newcat_set_narrow(rig, vfo, FALSE); + } + + return err; + } + } else { - // FT-450, FT-2000, FTDX 9000 + // FT-450, FTDX 9000 // We need details on the widths here, manuals lack information. switch (mode) { @@ -7224,7 +7307,8 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) case RIG_MODE_RTTYR: case RIG_MODE_CW: case RIG_MODE_CWR: - if (width <= 500) { w = 6; } + if (width == RIG_PASSBAND_NORMAL) { w = 16; } + else if (width <= 500) { w = 6; } else if (width <= 1800) { w = 16; } else { w = 24; } @@ -7232,7 +7316,8 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) case RIG_MODE_LSB: case RIG_MODE_USB: - if (width <= 1800) { w = 8; } + if (width == RIG_PASSBAND_NORMAL) { w = 16; } + else if (width <= 1800) { w = 8; } else if (width <= 2400) { w = 16; } else { w = 25; } // 3000 @@ -7466,6 +7551,7 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) return err; } + // TODO: check if ft-2000 needs this fix too? if (is_ft950 || is_ftdx5000) { // Some Yaesu rigs cannot query SH in modes such as AM/FM @@ -8373,9 +8459,74 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) rig_debug(RIG_DEBUG_TRACE, "%s: end if FTDX101D\n", __func__); } /* end if is_ftdx101 */ + else if (is_ft2000) + { + switch (mode) + { + case RIG_MODE_RTTY: + case RIG_MODE_RTTYR: + case RIG_MODE_CW: + case RIG_MODE_CWR: + if (w <= 4) + { + *width = 100; + } + else if (w <= 16) + { + *width = 500; + } + else + { + *width = 2400; + } + break; + + case RIG_MODE_PKTUSB: + case RIG_MODE_PKTLSB: + case RIG_MODE_LSB: + case RIG_MODE_USB: + if (w <= 8) + { + *width = 1800; + } + else if (w <= 16) + { + *width = 2400; + } + else if (w <= 25) + { + *width = 3000; + } + else + { + *width = 4000; + } + break; + + case RIG_MODE_AM: + *width = narrow ? 6000 : 9000; + break; + + case RIG_MODE_PKTFM: + case RIG_MODE_FM: + *width = narrow ? 9000 : 16000; + break; + + case RIG_MODE_FMN: + *width = 9000; + break; + + case RIG_MODE_AMN: + *width = 6000; + break; + + default: + return -RIG_EINVAL; + } /* end switch (mode) */ + } /* end if is_ft2000 */ else { - /* FT450, FT2000, FT9000 */ + /* FT450, FT9000 */ switch (mode) { case RIG_MODE_PKTUSB: @@ -8398,13 +8549,24 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) { *width = rig_passband_normal(rig, mode); } - break; case RIG_MODE_AM: + *width = narrow ? 6000 : 9000; + break; + case RIG_MODE_PKTFM: case RIG_MODE_FM: - return RIG_OK; + *width = narrow ? 9000 : 16000; + break; + + case RIG_MODE_FMN: + *width = 9000; + break; + + case RIG_MODE_AMN: + *width = 6000; + break; default: return -RIG_EINVAL; commit 196a97eab8cc1eb79eacff3198fd7fd0d04a2019 Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Dec 5 10:01:55 2020 -0600 Fix compilation with libxml2 https://github.com/Hamlib/Hamlib/issues/456 (cherry picked from commit 99d568df7248099d6cefdf7d2ac615767e462a49) diff --git a/tests/memload.c b/tests/memload.c index e1a7a1ee..ceeb5f31 100644 --- a/tests/memload.c +++ b/tests/memload.c @@ -99,7 +99,7 @@ int xml_load(RIG *my_rig, const char *infilename) set_chan(my_rig, &chan, node); - status = rig_set_channel(my_rig, &chan); + status = rig_set_channel(my_rig, RIG_VFO_NONE, &chan); if (status != RIG_OK) { diff --git a/tests/memsave.c b/tests/memsave.c index 6ac39523..81a56cc6 100644 --- a/tests/memsave.c +++ b/tests/memsave.c @@ -36,6 +36,7 @@ # include <libxml/tree.h> static int dump_xml_chan(RIG *rig, + vfo_t vfo, channel_t **chan, int channel_num, const chan_t *chan_list, @@ -61,7 +62,7 @@ int xml_save(RIG *rig, const char *outfilename) printf("About to save data, enter cloning mode: %s\n", rig->caps->clone_combo_get); - retval = rig_get_chan_all_cb(rig, dump_xml_chan, root); + retval = rig_get_chan_all_cb(rig, RIG_VFO_NONE, dump_xml_chan, root); if (retval != RIG_OK) { @@ -90,6 +91,7 @@ int xml_parm_save(RIG *rig, const char *outfilename) #ifdef HAVE_XML2 int dump_xml_chan(RIG *rig, + vfo_t vfo, channel_t **chan_pp, int chan_num, const chan_t *chan_list, ----------------------------------------------------------------------- Summary of changes: rigs/yaesu/ft2000.c | 22 +++-- rigs/yaesu/ft2000.h | 42 +++------ rigs/yaesu/ft891.c | 4 +- rigs/yaesu/newcat.c | 237 ++++++++++++++++++++++++++++++++++++++++++++--- rigs/yaesu/newcat.h | 2 +- rotators/gs232a/gs232b.c | 12 +-- tests/example.c | 1 + tests/memload.c | 2 +- tests/memsave.c | 4 +- 9 files changed, 264 insertions(+), 62 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |