[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. 1b2236bb2e031ec4ff4d3
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: Michael B. <mdb...@us...> - 2020-12-06 14:52:42
|
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 1b2236bb2e031ec4ff4d3242b31e38c8e19f46b9 (commit) via a0829063d8cd4f638ee726b7ce81d2db5100322d (commit) via 1c86ef28cfac1fcead103cf0090f39b58dddc94e (commit) via 2eb3a557d023f0fff90cbf5e1dd723b08e6584d2 (commit) via 2526fa2ae306fe102f3d4c6750b7a661403b9583 (commit) via b062ddce22056cf2f7f3060cbcee132784ff621d (commit) via 5be6a06e9a107109b4f2d188f0fe1fe4870a4387 (commit) via 72cc9b773cf3f7471621526e166c5e0ad5be3849 (commit) via 27eaa1b1f79407bd9029a3360dea1b362468cdf5 (commit) via e2ca90841cc4f24a8e60490f84776ffb5db72c5b (commit) via 99d568df7248099d6cefdf7d2ac615767e462a49 (commit) from 12335d5c254af24950d678a797aef2661ebc4f9d (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 1b2236bb2e031ec4ff4d3242b31e38c8e19f46b9 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Dec 6 08:49:13 2020 -0600 Fix example.c to include rotator.h 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 a0829063d8cd4f638ee726b7ce81d2db5100322d 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 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 1c86ef28cfac1fcead103cf0090f39b58dddc94e Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Dec 6 08:20:11 2020 -0600 Update newcat.h version 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 2eb3a557d023f0fff90cbf5e1dd723b08e6584d2 Merge: 99d568df 2526fa2a Author: Michael Black <mdb...@ya...> Date: Sun Dec 6 08:18:54 2020 -0600 Merge pull request #457 from mikaelnousiainen/yaesu-ft2000-fixes Yaesu FT-2000 + GS-232B fixes commit 2526fa2ae306fe102f3d4c6750b7a661403b9583 Author: Mikael Nousiainen <mik...@ik...> Date: Sun Dec 6 14:25:29 2020 +0200 Remove TODOs diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index c1d5d4cb..af6d0db7 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 b062ddce22056cf2f7f3060cbcee132784ff621d 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. 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 5be6a06e9a107109b4f2d188f0fe1fe4870a4387 Author: Mikael Nousiainen <mik...@ik...> Date: Sun Dec 6 00:11:44 2020 +0200 Tuning FT-2000 filter code diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 04dcbea0..c1d5d4cb 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 72cc9b773cf3f7471621526e166c5e0ad5be3849 Author: Mikael Nousiainen <mik...@ik...> Date: Sun Dec 6 00:00:15 2020 +0200 Tuning FT-2000 filter code 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 06073153..04dcbea0 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 27eaa1b1f79407bd9029a3360dea1b362468cdf5 Author: Mikael Nousiainen <mik...@ik...> Date: Sat Dec 5 23:43:07 2020 +0200 Tuning FT-2000 filter code 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 d2c64440..06073153 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 e2ca90841cc4f24a8e60490f84776ffb5db72c5b Author: Mikael Nousiainen <mik...@ik...> Date: Sat Dec 5 23:11:12 2020 +0200 Add missing levels and fix filters for Yaesu FT-2000 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 27ac0fea..d2c64440 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 99d568df7248099d6cefdf7d2ac615767e462a49 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 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 |