[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. ba5ab4ba70806537f36b6
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: Michael B. <mdb...@us...> - 2020-11-03 18:35:23
|
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 ba5ab4ba70806537f36b6eed2efd6693132b1d50 (commit) via 11058e63ff99ac345342b64e743e73ac746bb0fa (commit) via 20fc303686ee4fdb94d20d746936fd1249d091ec (commit) via 072cd6107f55a45acfd32abd2999c0698fda357f (commit) via 51b4e0966c56b4b8b1cfcef897b30e7a9bbc9752 (commit) via 335a75518c2690f8adcd52e00bdd14112ebc0ec8 (commit) via ccdeffbcd82b4ca7ac96e1c6436cf04d36f3320b (commit) via fd9e5d841b63675df33350fbec5f885c8e90fb95 (commit) via 5721db70be80957797162271c84629280bc06edf (commit) via 74356b3a99c836bbcb3f784ce2f39284a02cfb0b (commit) via fe672e8115de4bd557498e26bfb199e196548e20 (commit) via 06cc95de56dcb3fcb58f79e88c75387437416773 (commit) via f55d50c7bcfc5a32e6a9fa7c6c0ab21e2a2791a8 (commit) via c8eaafb499948cb28ea41205dbd4b81ae0d76a90 (commit) via 07447c881d8efd68205f06a183fab08cb09372ce (commit) via 73d05831f3e896c5b336f1588bcb643c2a4f821a (commit) via 378cbfb0082cfd02fcfff740f56afdedf21dd225 (commit) via 0fef98fc43c37c9da7ccea2cd29123aa30ae29b9 (commit) via ce7a30f038417be93507b44f5aa1ff723aa5ac80 (commit) via 9f65348f496cdb4325a5ff916e0d8a30637a7aba (commit) via 31b20c003cc1b4025fff51a85d76468dbfd22031 (commit) via bd47d262b8e415e04a569126a31406641b9d8ea3 (commit) via cc529aab0cd57347a562d1cc3ca040400ed5afbf (commit) via aeabe40acde2fb7a86e204bcde7d707bc41e8f8a (commit) via 06f99b9a630adbd5ce87def21dae3175143e166f (commit) via b1c5a2b9ccb7034d819881de05d29a80b2d1fdc6 (commit) via 0e1fd6e6f9a331ecc515f4b3d153fcd85ac4d293 (commit) via 3af4de57816431d3f0ca45d09a92e34dbd86b2d4 (commit) via b460c24d5a93160b5898fa1fff67f75b7ce92da0 (commit) via e67c053091354be405b85cfd0c16143430806454 (commit) via ca00333c0f657073f3be74d25f24809a23294b5c (commit) via 6e74284e55ffd914bdaa6a86fac1bb7a851c2bd5 (commit) via ac72d7bf0aa30c57a425dd1a63285dafc448efd0 (commit) via ad77e23fe54f105e25bfa5ffc36f156e364ea63f (commit) via 2eb22413154fa38b414a18314ca61caf05421d7e (commit) via 3ffbeae881255945d0ba1e8b0e662963813de149 (commit) via 03d318bfbcb89560f07dee1bad045622c641ed8e (commit) via 07dc84f6e75d27ce782f096ec06d634a4a14901f (commit) via 25adec088a00933cabb8f1f5256dc0b70d6a109a (commit) via d4e434fa2057fa966c913775de4f1fff4591bcc4 (commit) via bb71728ebe76426177b471adf63531d5a1211b2d (commit) via 24775b40fe0341dbb595a39f670a393e1006aa5f (commit) via d306b34e2fb0240261870e9a079110e17619d396 (commit) via c4a007cb5fae6d71a8ec5bab86e8e3b52caa125c (commit) via bebc2d9f17515514d5abc96dea3d2f79726f9120 (commit) via 20d00263bcd5e3a80bad11d060d00fe2cc56ad07 (commit) via 61074cd238a573abc7bf600735d1e69927c1cf49 (commit) via cc465e7d54e19686e0af7cbdddfb098584c4bc12 (commit) via a70e45413a793afbdc2ec196c24208037f3fa6f1 (commit) via ec60ffface1c85b8ea7c885c36d06b05a92c1780 (commit) via 956be046e748066577a34508cbfe68718954edcf (commit) via 3a49428f58efdb0fb353cf2817735f74d4f9e71f (commit) via 3116fc77f069d17d4149b21c91aec365e0b5f8d0 (commit) via 0cb37ec8ea1f0e8d9ac6cf8235677e4565408014 (commit) via 93e7663ac2a39a7b3de5983636590e5034be53c2 (commit) via 131d45551caa7bb1aff1edade65b4b4ae3fa1d67 (commit) via 948e9d5f9944ff37ca1a7db4ea98f187b6f50183 (commit) via 4e748df12b699724861ee1d949ddfceb783a55dc (commit) via 53c09369eaaa78cb9f199cc5ea718870f52763f0 (commit) via b67d39611f03819adcf67581b68cf54c284ff4be (commit) via 1c34b044ddeaece44e7b138e120efdb80b95d954 (commit) via b09eadad562d89816d078b9363ef44e5de9188ff (commit) via f7d1b74ff69196ab53cd2819261ee342df68ac8f (commit) via be2524b4c91feef2ecf3e6891d3b5e452aed3ec7 (commit) via ce19b843baf8d60d8961788f1d1414a0189bdb59 (commit) via 211de272dfcc46d985ebf8bdaccb00e985e1e929 (commit) via d8e63850ad68a8546a6c503ae11cc5f2360a7beb (commit) via db2017c0eac6bbeb963e33a87d6b773fa60133a9 (commit) via df61e2ec7189990bc91d04f92fe1d43d8be3a6fd (commit) via f2d89ab7cebd4b4aa9acdb75a600d46c255fac33 (commit) via 3770c441bf80d8d91c1c6106588069e513422c1c (commit) via c152fcb279372073920b9dc35885aafe7db85579 (commit) via ed5815f1b4d18458d7105fa59cfdb3d9b9d2b4d1 (commit) via 68aaa426bb6e7af5f48bfdb92db1552b29f3dbdc (commit) via d4e1e9127260d0268ce9df5faa8a20d049cedbd0 (commit) via fea5ed875d8c201f83f4a35a4d6b55062f0c2ccd (commit) via 1c379029b34e0e4562c3d72a4461d125174e1211 (commit) via 88bda82a7d85c4709076acaf4386fc3183bb4992 (commit) via 042b55a5f55f9bb26ae7765e6554d2eea5ed3679 (commit) via b8a29430ad176c615d458b6ca9d8373a4d53b276 (commit) via f52007d02dbb58b7f0c41e25f9c83003b8c32c71 (commit) via 8a769c701101ea68d83f80709fd680242200feca (commit) via bafd6e97f4588c240bc3e388baaf637359081b10 (commit) via a8961426b03633a150737364e254c191f438ef14 (commit) via 0a2263a2f1a9853c7a9548855c67d45611ab08aa (commit) via 7e8bfc8b49477b638b2605751ff4eea4905c4b6c (commit) via b406c82c2de4c4570e5088db8609d068bff3182d (commit) via 1a823ae44a6957aeba95f5badb7c4dfc8ee12db3 (commit) via 4c43689d6cf9cea4a2f1216bab09b1b39934bc85 (commit) via ffeb3b44cf39f9467c5ae356ad31cb2082fa148d (commit) via 0443afc794b59120214ddf49f4c21b2c73aef2db (commit) via f5e22acbaf256b2b3d133c74858a5b1e34f5a264 (commit) via f5e4f8e3a87acb78214aa12bfa2cd8d0b2dda77c (commit) via a815179c684af5c9c9708cc051d6ddc613904eab (commit) via e1b3bcff9e6a46a5e87cdf6b44d551c540bdb1ed (commit) via cd220db7c7642f029e67e6b6732f3bbd525948c5 (commit) via 73a37749ac6fe4d8815839c21feb1b62709ae5cf (commit) via 7a45f018ec83c1db780c9f69f8fedb5f903f9906 (commit) via 8127391623ea4cc19a1e40be7ce93a978d04cb86 (commit) via d066243a00b5546e0c6510e4d5b0f8b310a72dc0 (commit) via 25851f74e13cc21056847b69576450a80812430d (commit) via 856df487d177d765525f3e86b16c2badd79ba77b (commit) via 2c5aaff0c44b072ebc2bc704d5b6ddd94bc39165 (commit) via e149c9980f5d08b3d56fed2937c8a1191d75df4b (commit) via d81a027063a33444ffcf7207ca085151f2471346 (commit) via d866d4dc3307be14cb5bf20b08c899aef06d399a (commit) via c8a30f2ef3e1081cc589ae3b1302320c1674195d (commit) via 93560bf6824bd05585df0b94976e138f327f3ca7 (commit) via aab02e5a27249b1a35f9a4ccce66219b77785396 (commit) via de20ee6533990c28c0718c3d3db980aac07dd11b (commit) via 146bdf7d41380551a52d0fa38b0fe284557693fe (commit) via 8fbe6a7678a6555bf3d33f8126644ddda48e1305 (commit) via f38ee5c6f1805f74ea430c182c6f7259134ae1eb (commit) via 8872ee50ad218526072d00ffabdf79674e40438a (commit) via 2544a0535761ae2eb9c9e1b9142067a537cb9bb6 (commit) via 05d57f586792bbde3f9866fb14ab1592114b40a2 (commit) via 1e41f3201710ed8ba380a79884b7bfd44c1f8a6c (commit) via 28b7543de660c432b22d0035b250d32fb91797e4 (commit) via 892c2bd6349673a263231bc64b3b984f1fa79655 (commit) via c5ac5b2334d701c9b09785096547967e84711c61 (commit) via 1c7e5b2e48050d8adbd0e92e9de269669989c48a (commit) via cf32ace4be9d9802bd664e27b85ab2f26150d49b (commit) via 5add4b343d14c900f46ad770d580781c5195327d (commit) via 90cf25b6feac3e8e3fc64eadaa82f342f0239db1 (commit) via 341828a319fe3d33bc7482fd0ce6e13f4e0c891a (commit) via d15c4da09121822e8e9a78e360abcded3656c6ed (commit) via 2ed842b0982699c10257d93085b76f181820308c (commit) via 8462796b000a3fb67e5561b77ae6a946413f1a36 (commit) via 7c78530da279077cb1c1c047d3f445027b098613 (commit) via 6a65b41698528b94c6cbe27990a21450207c0cfd (commit) via 6807fa739a0391dca34cd7e9fd3616164c2fa21e (commit) via 733bd9d2806af2ace06bb6118f8f734f0320934a (commit) via ab51d7ec66ae2ab2b01017f2248dee3298444aa5 (commit) via 18e43245bc9fe5ccfeb251e2065e5fecf2699823 (commit) via 8b541f3e0bddf64d5baf16396ee8b88c7183b9c7 (commit) via fe1d705e33bbde3702b4e26dcdcdd5a0310a1968 (commit) via a77e82be4e885d33235d902f194913f772c8a0b7 (commit) via 7d7622faced7ce6cd1fafd42166689795a5de64c (commit) via 1351eb6bd79096ecbf3d9ddd833bc5094dad898d (commit) via ef34c699c016602367ae428854bd598fbcdda9a4 (commit) via 4faad82da727e908cfc79d856f391d9feed46e7e (commit) via 70a448fe8533ba38fadd30e0d9694cc73d115173 (commit) via 980ef1d88fdd81f3121bbf391971914ccf6bf7b5 (commit) via 8c8eeaf795e4cca87f225ffef434db8edb5453e8 (commit) via 1115314782cf05d8a41ea67461d3550bbfdddf07 (commit) via 2df1e2e199500e300754b6c69394b78be2cfb958 (commit) via 1f0c2a2e4f008a8561f9ff7dc04c033200c97ce5 (commit) via ad5b87c9ae7ffb36dfff0b030cec31976dc35dca (commit) via 45edda6a1633a9ca5f3b31ba9c8131a5d4c9a77d (commit) via 4690e26aa43172affd5e352870dd141f1d9fd1c1 (commit) via 34e9327446161f23e4b5240e667f459371594cfd (commit) via 5453a9c0360f7672b82d944d25d032cfa1167b65 (commit) via b8da9b6bba8f38c8ed9752addf7e97ca03b7a320 (commit) via 1e00e4e8db42e40268420005164d5b332279c7f7 (commit) via 41be8d65e4bdd4a9fb73d0e899d50fcb9b02b749 (commit) via e0594e89766f07e5e7e1c800dec9633674dac432 (commit) via 6981f6e9c087c418cac69b8c8be1f017bf887bfb (commit) via 0f23261792c034df2b2cddf2a8be666132a2e743 (commit) via 13174121c283c8ec5fc67b5d4eb60ef04fc03052 (commit) via 985a7b3ded9b10cf65057f4c29e98667bbc8a5e2 (commit) via 32b7063801afce26b01aa5f5717864ae6392d0a7 (commit) via 9a2625ebef891209ae71d8a40be8b5662851cae4 (commit) via c31fb3dcc477c86551618b84b235fb3e8a9eb475 (commit) via bd559f14d83b375b7b89465ab569c553b5019f7c (commit) via 28da03c7fafc4ea4eeab0c5ce3b4c99d4a6f40a8 (commit) via 8c5190959540faad301764e49aabb932839dc48d (commit) via 33fc32e18b58b468c1a3adce0b0549c9c5f2d170 (commit) via d6cad85cf256ffef9fd8e76c74187a8dd18a9def (commit) via c479244fc1258f2a38f60cefd448abf6e669b278 (commit) via 8760d2576bee3ee726db5dc02d64be4c9b23f7b5 (commit) via 253ee97a90fc8f1b757b3e9ff6ddd8dc2b06fced (commit) via 4bad0ff4bb5feca0bbe1cff08523ef262756dce3 (commit) via fc41ca9ca6296191f52dc9a55d2ab22ba7684de4 (commit) via 50b394098e347fa0a4d821674159d507725a456d (commit) via 6d51f655282c65a34fc1b96197b78190d6f11feb (commit) via 86417420b4d7eeb68c296c1714031ed89a670d9e (commit) via 82dd82a6584941bee3932e62f01859c8ac639e42 (commit) via 4c47bb168780e758690e69351a3cd9fd068b4e33 (commit) via e84c26ff15a00b9a1dbb7c38895822ff764782d4 (commit) via e4981ff2fb10ac9362d26c63c57ff0848e27ae67 (commit) via c6cc3ba37c0157218150403a390e5c5e32db06a5 (commit) via 81c2385d43d71d50edb1769d4038c8fae4389948 (commit) via 7351315d078de6e1dee9d8572e0a55c98e5a6745 (commit) via 7f293e23dfe3b92ef583f265c61c7bdf8eaa6eb8 (commit) via 0afe35ecc6105c1a20b732ee3238e993b1b4ee60 (commit) via fca4cc790344bbe3bc004b1d13abd74db098ad50 (commit) via 2e1a4e5d5cd1fb3fc68abfaf22688530ac0e37db (commit) via 1435b155d9b5bc2f82036d7dce215a7dddc40d4d (commit) via fd8c05b01d30ac3589fea701a48314edbf76c3f5 (commit) via f2f5c9a1afe730ada719a25c0941c75748c33b3d (commit) via e8eb75196c1988c58b8672948a598bebdbf106bb (commit) via e463fcc12c65d800ec72fdf3797a76a71bfdc932 (commit) via b7f73a3b4661f7e25c4df7f8f31c23278885b122 (commit) via 9b26a4e957c29e797633e67ea30f09e2c654d1a6 (commit) via 5f30da0eda9c8fa29e9b92919bbcde0cd5f2fbfb (commit) via 657c745ca1d6b665b9661fc1bc7725a8e1dd9e0c (commit) via 8492bbccd1d68df87544fe84d37530a74a9ef462 (commit) via 0e44e2f317d6110d7264dcbf1a1a30c64793a50e (commit) via 6216570cf0b5825f8a59f3ace98b9347e9ab7912 (commit) via 48f700ba8b53237342e48f2a59f976b2cfe7ee6b (commit) via fa7ea205c2ba3190cc17796e6c8aa9f7173ebf65 (commit) via 2f2574d1e68bc8d342686214717f017fe235398f (commit) via d40f0f76f891b29a71c3955bb76e4e9edc926234 (commit) via 14627552ccd2615426c537b933fedf63b73d042c (commit) via 0777b62108bd1496254ed1d3dd5c208f1593fe45 (commit) via a9202fbf78f6f5abb44fc0961b4e9677e8cc649b (commit) via 7785df17697576ea9bdc9a161efd9547de04d79b (commit) via 93946b2d165fb082d65ea7c9dd1ea2dbb059d34c (commit) via 5ee2cbb2615cdecf75da9412d9f103a1dd335ac3 (commit) via cd8f5d9d856c81e1f597d5348920e40bb279b3a9 (commit) via af883bd58f76bd674b7d4641723f9266de9c20d4 (commit) via 0c23c3954f8726603481cecef641d53032cf138b (commit) via fcd55cdf8aa7975b4c64c3dc84ade99de998e445 (commit) from 5ae848c48f1810fa81deb8365cb89e552740c8b7 (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 ba5ab4ba70806537f36b6eed2efd6693132b1d50 Author: Michael Black W9MDB <mdb...@ya...> Date: Tue Nov 3 11:10:40 2020 -0600 Restrict newcat.c bands to ITU regions and use GEN as default otherwise https://github.com/Hamlib/Hamlib/issues/424 diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index b43b143b..3a410cbb 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -391,27 +391,30 @@ static ncboolean newcat_valid_command(RIG *rig, char const *const command); */ static int newcat_band_index(freq_t freq) { - // FTDX101D has band=12=MW Medium Wave int band = 11; // general - // what about 13? + // restrict band memory recall to ITU 1,2,3 band ranges + // using < instead of <= for the moment + // does anybody work LSB or RTTYR at the upper band edge? + // what about band 13 -- what is it? if (freq >= MHz(420) && freq < MHz(470)) { band = 16; } - else if (freq >= MHz(144) && freq < MHz(148)) { band = 15; } + // band 14 is RX only else if (freq >= MHz(118) && freq < MHz(164)) { band = 14; } - else if (freq >= MHz(70) && freq < MHz(75)) { band = 17; } - else if (freq >= MHz(50) && freq < MHz(54)) { band = 10; } - // do we need to restrict ranges below here? - else if (freq >= MHz(28)) { band = 9; } - else if (freq >= MHz(24.5)) { band = 8; } - else if (freq >= MHz(21)) { band = 7; } - else if (freq >= MHz(18)) { band = 6; } - else if (freq >= MHz(14)) { band = 5; } - else if (freq >= MHz(10)) { band = 4; } - else if (freq >= MHz(7)) { band = 3; } - else if (freq >= MHz(5)) { band = 2; } - else if (freq >= MHz(3.5)) { band = 1; } - else if (freq >= MHz(1.8)) { band = 0; } - else if (freq >= MHz(0.5)) { band = 12; } // MW Medium Wave + // override band 14 with 15 if needed + else if (freq >= MHz(144) && freq < MHz(148)) { band = 15; } + else if (freq >= MHz(70) && freq < MHz(70.5)) { band = 17; } + else if (freq >= MHz(50) && freq < MHz(55)) { band = 10; } + else if (freq >= MHz(28) && freq < MHz(29.7)) { band = 9; } + else if (freq >= MHz(24.890) && freq < MHz(24.990)) { band = 8; } + else if (freq >= MHz(21) && freq < MHz(21.45)) { band = 7; } + else if (freq >= MHz(18) && freq < MHz(18.168)) { band = 6; } + else if (freq >= MHz(14) && freq < MHz(14.35)) { band = 5; } + else if (freq >= MHz(10) && freq < MHz(10.15)) { band = 4; } + else if (freq >= MHz(7) && freq < MHz(7.3)) { band = 3; } + else if (freq >= MHz(5.3515) && freq < MHz(5.3665)) { band = 2; } + else if (freq >= MHz(3.5) && freq < MHz(4)) { band = 1; } + else if (freq >= MHz(1.8) && freq < MHz(2)) { band = 0; } + else if (freq >= MHz(0.5) && freq < MHz(1.705)) { band = 12; } // MW Medium Wave rig_debug(RIG_DEBUG_TRACE, "%s: freq=%g, band=%d\n", __func__, freq, band); return band; commit 11058e63ff99ac345342b64e743e73ac746bb0fa Author: Michael Black W9MDB <mdb...@ya...> Date: Tue Nov 3 09:28:00 2020 -0600 Fix get/set_xit for Yaesu rigs to avoid vfo swapping Fix get_xit to return VFOA/B appropriately THe IF/OI commands apparently always return VFOA/B respectively so vfo swapping is not needed to read info https://github.com/Hamlib/Hamlib/issues/430 diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index ca3fa675..b43b143b 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -1170,6 +1170,29 @@ int newcat_set_vfo(RIG *rig, vfo_t vfo) return RIG_OK; } +// Either returns a valid RIG_VFO* or if < 0 an error code +static vfo_t newcat_set_vfo_if_needed(RIG *rig, vfo_t vfo) +{ + vfo_t oldvfo = rig->state.current_vfo; + + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s, oldvfo=%s\n", __func__, rig_strvfo(vfo), + rig_strvfo(oldvfo)); + + if (oldvfo != vfo) + { + int ret; + ret = newcat_set_vfo(rig, vfo); + + if (ret != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: error setting vfo=%s\n", __func__, + rig_strvfo(vfo)); + return ret; + } + } + + return oldvfo; +} /* * rig_get_vfo @@ -1731,11 +1754,9 @@ int newcat_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo) return RIG_OK; } - int newcat_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) { struct newcat_priv_data *priv = (struct newcat_priv_data *)rig->state.priv; - int vfo_swap = 0; vfo_t oldvfo; int ret; @@ -1744,19 +1765,9 @@ int newcat_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) return -RIG_ENAVAIL; } - if (rig->state.current_vfo != vfo) - { - oldvfo = rig->state.current_vfo; - ret = newcat_set_vfo(rig, vfo); - - if (ret != RIG_OK) - { - rig_debug(RIG_DEBUG_ERR, "%s: error setting vfo=%s\n", __func__, - rig_strvfo(vfo)); - } + oldvfo = newcat_set_vfo_if_needed(rig, vfo); - vfo_swap = 1; - } + if (oldvfo < 0) { return oldvfo; } if (rit > rig->caps->max_rit) { @@ -1785,16 +1796,9 @@ int newcat_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) ret = newcat_set_cmd(rig); - if (vfo_swap) - { - newcat_set_vfo(rig, oldvfo); + oldvfo = newcat_set_vfo_if_needed(rig, oldvfo); - if (ret != RIG_OK) - { - rig_debug(RIG_DEBUG_ERR, "%s: error setting vfo=%s\n", __func__, - rig_strvfo(vfo)); - } - } + if (oldvfo < 0) { return oldvfo; } return ret; } @@ -1865,12 +1869,18 @@ int newcat_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit) int newcat_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit) { struct newcat_priv_data *priv = (struct newcat_priv_data *)rig->state.priv; + vfo_t oldvfo; + int ret; if (!newcat_valid_command(rig, "XT")) { return -RIG_ENAVAIL; } + oldvfo = newcat_set_vfo_if_needed(rig, vfo); + + if (oldvfo < 0) { return oldvfo; } + if (xit > rig->caps->max_xit) { xit = rig->caps->max_xit; /* + */ @@ -1897,7 +1907,13 @@ int newcat_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit) labs(xit), cat_term); } - return newcat_set_cmd(rig); + ret = newcat_set_cmd(rig); + + oldvfo = newcat_set_vfo_if_needed(rig, vfo); + + if (oldvfo < 0) { return oldvfo; } + + return ret; } @@ -1907,8 +1923,14 @@ int newcat_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit) char *retval; int err; int offset = 0; + char *cmd = "IF"; + + if (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB) + { + cmd = "OI"; + } - if (!newcat_valid_command(rig, "IF")) + if (!newcat_valid_command(rig, cmd)) { return -RIG_ENAVAIL; } @@ -1917,7 +1939,7 @@ int newcat_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit) rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); - snprintf(priv->cmd_str, sizeof(priv->cmd_str), "%s%c", "IF", cat_term); + snprintf(priv->cmd_str, sizeof(priv->cmd_str), "%s%c", cmd, cat_term); rig_debug(RIG_DEBUG_TRACE, "%s: cmd_str = %s\n", __func__, priv->cmd_str); diff --git a/rigs/yaesu/newcat.h b/rigs/yaesu/newcat.h index bae618a3..a1e416f0 100644 --- a/rigs/yaesu/newcat.h +++ b/rigs/yaesu/newcat.h @@ -50,7 +50,7 @@ typedef char ncboolean; /* shared function version */ -#define NEWCAT_VER "20201102" +#define NEWCAT_VER "20201103" /* Hopefully large enough for future use, 128 chars plus '\0' */ #define NEWCAT_DATA_LEN 129 commit 20fc303686ee4fdb94d20d746936fd1249d091ec Author: Michael Black W9MDB <mdb...@ya...> Date: Tue Nov 3 15:24:06 2020 +0000 Fix set_mode for IC-7000 https://github.com/Hamlib/Hamlib/issues/428 diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index fadfd433..7b12a79d 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -1700,12 +1700,13 @@ int icom_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) return err; } - /* IC-731 and IC-735 don't support passband data */ + /* IC-731, IC-735, IC-7000 don't support passband data */ /* IC-726 & IC-475A/E also limited support - only on CW */ /* TODO: G4WJS CW wide/narrow are possible with above two radios */ if (priv->civ_731_mode || rig->caps->rig_model == RIG_MODEL_OS456 || rig->caps->rig_model == RIG_MODEL_IC726 - || rig->caps->rig_model == RIG_MODEL_IC475) + || rig->caps->rig_model == RIG_MODEL_IC475 + || rig->caps->rig_model == RIG_MODEL_IC7000) { icmode_ext = -1; } diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index a52b9069..b264776a 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -30,7 +30,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20201018" +#define BACKEND_VER "20201103" /* * defines used by comp_cal_str in rig.c commit 072cd6107f55a45acfd32abd2999c0698fda357f Author: Michael Black W9MDB <mdb...@ya...> Date: Mon Nov 2 17:21:20 2020 -0600 Change yaesu newcat_get_rit to use "OI" instead of vfo swapping Change yaesu newcat_set_rit to do vfo swap if needed https://github.com/Hamlib/Hamlib/issues/430 diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 285bdef0..ca3fa675 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -1735,12 +1735,29 @@ int newcat_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo) int newcat_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) { struct newcat_priv_data *priv = (struct newcat_priv_data *)rig->state.priv; + int vfo_swap = 0; + vfo_t oldvfo; + int ret; if (!newcat_valid_command(rig, "RT")) { return -RIG_ENAVAIL; } + if (rig->state.current_vfo != vfo) + { + oldvfo = rig->state.current_vfo; + ret = newcat_set_vfo(rig, vfo); + + if (ret != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: error setting vfo=%s\n", __func__, + rig_strvfo(vfo)); + } + + vfo_swap = 1; + } + if (rit > rig->caps->max_rit) { rit = rig->caps->max_rit; /* + */ @@ -1766,7 +1783,20 @@ int newcat_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) labs(rit), cat_term); } - return newcat_set_cmd(rig); + ret = newcat_set_cmd(rig); + + if (vfo_swap) + { + newcat_set_vfo(rig, oldvfo); + + if (ret != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: error setting vfo=%s\n", __func__, + rig_strvfo(vfo)); + } + } + + return ret; } @@ -1776,8 +1806,14 @@ int newcat_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit) char *retval; int err; int offset = 0; + char *cmd = "IF"; - if (!newcat_valid_command(rig, "IF")) + if (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB) + { + cmd = "OI"; + } + + if (!newcat_valid_command(rig, cmd)) { return -RIG_ENAVAIL; } @@ -1786,7 +1822,7 @@ int newcat_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit) rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); - snprintf(priv->cmd_str, sizeof(priv->cmd_str), "%s%c", "IF", cat_term); + snprintf(priv->cmd_str, sizeof(priv->cmd_str), "%s%c", cmd, cat_term); rig_debug(RIG_DEBUG_TRACE, "%s: cmd_str = %s\n", __func__, priv->cmd_str); diff --git a/rigs/yaesu/newcat.h b/rigs/yaesu/newcat.h index 85ff10a2..bae618a3 100644 --- a/rigs/yaesu/newcat.h +++ b/rigs/yaesu/newcat.h @@ -50,7 +50,7 @@ typedef char ncboolean; /* shared function version */ -#define NEWCAT_VER "20201029" +#define NEWCAT_VER "20201102" /* Hopefully large enough for future use, 128 chars plus '\0' */ #define NEWCAT_DATA_LEN 129 commit 51b4e0966c56b4b8b1cfcef897b30e7a9bbc9752 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Nov 1 17:05:29 2020 -0600 Remove bad targetable code from rigs https://github.com/Hamlib/Hamlib/issues/430 https://github.com/Hamlib/Hamlib/issues/414 diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 6cbe4c89..fadfd433 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -814,11 +814,6 @@ icom_rig_open(RIG *rig) #if 0 // do not do this here -- needs to be done when ranges are requested instead as this is very slow icom_get_freq_range(rig); // try get to get rig range capability dyamically #endif - // All Icom rigs as of 20201031 do not need VFO switch for PTT and RITXIT - // They are non-VFO specific commands - // If they ever become VFO specific implement in the backend - //rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | - // RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK; return RIG_OK; } diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 3ea19292..0565508d 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -938,12 +938,6 @@ int kenwood_open(RIG *rig) // mismatched IDs can still be tested rig->state.rigport.retry = retry_save; - // All Kenwood rigs as of 20201031 do not need VFO switch for PTT and RITXIT - // They are non-VFO specific commands - // If they ever become VFO specific implement in the backend - // newcat.c version is getting segfault here -- read only? - //rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | - // RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK; return RIG_OK; } diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index bec7b8a5..285bdef0 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -529,14 +529,6 @@ int newcat_open(RIG *rig) /* Initialize rig_id in case any subsequent commands need it */ (void)newcat_get_rigid(rig); - // All Yaeus rigs as of 20201031 do not need VFO switch for PTT and RITXIT - // They are non-VFO specific commands - // A couple of rigs do have vfo-specific in the backends - // If they ever become VFO specific implement in the backend - // this is getting a segfault on Linux -- read only?? - //rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | - // RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK; - return RIG_OK; } commit 335a75518c2690f8adcd52e00bdd14112ebc0ec8 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Nov 1 17:00:44 2020 -0600 Add TARGETABLE_COMMON to rig.h diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 2550ab1c..8a27d782 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -473,6 +473,7 @@ typedef unsigned int vfo_t; #define RIG_TARGETABLE_PTT (1<<7) #define RIG_TARGETABLE_MEM (1<<8) #define RIG_TARGETABLE_BANK (1<<9) +#define RIG_TARGETABLE_COMMON (RIG_TARGETABLE_RITXIT | RIG_TARGETABLE_PTT | RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK) #define RIG_TARGETABLE_ALL 0x7fffffff //! @endcond // commit ccdeffbcd82b4ca7ac96e1c6436cf04d36f3320b Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Nov 1 16:59:05 2020 -0600 Add TARGETABLE_COMMON to ftdx101.c diff --git a/rigs/yaesu/ftdx101.c b/rigs/yaesu/ftdx101.c index 5b6358f9..a330c1e1 100644 --- a/rigs/yaesu/ftdx101.c +++ b/rigs/yaesu/ftdx101.c @@ -78,7 +78,7 @@ const struct rig_caps ftdx101d_caps = RIG_MODEL(RIG_MODEL_FTDX101D), .model_name = "FTDX101D", .mfg_name = "Yaesu", - .version = NEWCAT_VER ".5", + .version = NEWCAT_VER ".6", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -113,7 +113,7 @@ const struct rig_caps ftdx101d_caps = .max_xit = Hz(9999), .max_ifshift = Hz(1200), .vfo_ops = FTDX101_VFO_OPS, - .targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE | RIG_TARGETABLE_FUNC | RIG_TARGETABLE_LEVEL, + .targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE | RIG_TARGETABLE_FUNC | RIG_TARGETABLE_LEVEL | RIG_TARGETABLE_COMMON, .transceive = RIG_TRN_OFF, /* May enable later as the FTDX101 has an Auto Info command */ .bank_qty = 0, .chan_desc_sz = 0, commit fd9e5d841b63675df33350fbec5f885c8e90fb95 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Nov 1 15:35:17 2020 -0600 Backing out targetable flags due to segfault on Linux https://github.com/Hamlib/Hamlib/issues/431 diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index c8b70ebd..6cbe4c89 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -817,8 +817,8 @@ icom_rig_open(RIG *rig) // All Icom rigs as of 20201031 do not need VFO switch for PTT and RITXIT // They are non-VFO specific commands // If they ever become VFO specific implement in the backend - rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | - RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK; + //rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | + // RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK; return RIG_OK; } diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index e6eef492..3ea19292 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -941,9 +941,9 @@ int kenwood_open(RIG *rig) // All Kenwood rigs as of 20201031 do not need VFO switch for PTT and RITXIT // They are non-VFO specific commands // If they ever become VFO specific implement in the backend - - rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | - RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK; + // newcat.c version is getting segfault here -- read only? + //rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | + // RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK; return RIG_OK; } diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 0aedb5e9..bec7b8a5 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -533,8 +533,9 @@ int newcat_open(RIG *rig) // They are non-VFO specific commands // A couple of rigs do have vfo-specific in the backends // If they ever become VFO specific implement in the backend - rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | - RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK; + // this is getting a segfault on Linux -- read only?? + //rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | + // RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK; return RIG_OK; } commit 5721db70be80957797162271c84629280bc06edf Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Nov 1 07:48:52 2020 -0600 Added two more targetable flags for MEM and BANK to avoid VFO swapping https://github.com/Hamlib/Hamlib/issues/430 https://github.com/Hamlib/Hamlib/issues/414 diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 013ad650..2550ab1c 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -459,7 +459,7 @@ typedef unsigned int vfo_t; * RIG_TARGETABLE_PURE means a pure targetable radio on every command * In rig.c lack of a flag will case a VFO change if needed * So setting this flag will mean the backend handles any VFO needs - * For many rigs RITXIT and PTT are non-VFO commands so need these flags + * For many rigs RITXIT, PTT, MEM, and BANK are non-VFO commands so need these flags to avoid unnecessary VFO swapping */ //! @cond Doxygen_Suppress #define RIG_TARGETABLE_NONE 0 @@ -471,6 +471,8 @@ typedef unsigned int vfo_t; #define RIG_TARGETABLE_LEVEL (1<<5) #define RIG_TARGETABLE_RITXIT (1<<6) #define RIG_TARGETABLE_PTT (1<<7) +#define RIG_TARGETABLE_MEM (1<<8) +#define RIG_TARGETABLE_BANK (1<<9) #define RIG_TARGETABLE_ALL 0x7fffffff //! @endcond // diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index d7bc08d8..c8b70ebd 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -817,7 +817,8 @@ icom_rig_open(RIG *rig) // All Icom rigs as of 20201031 do not need VFO switch for PTT and RITXIT // They are non-VFO specific commands // If they ever become VFO specific implement in the backend - rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT; + rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | + RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK; return RIG_OK; } diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 6dea3477..e6eef492 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -942,7 +942,8 @@ int kenwood_open(RIG *rig) // They are non-VFO specific commands // If they ever become VFO specific implement in the backend - rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT; + rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | + RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK; return RIG_OK; } diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index ad8bac00..0aedb5e9 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -533,7 +533,8 @@ int newcat_open(RIG *rig) // They are non-VFO specific commands // A couple of rigs do have vfo-specific in the backends // If they ever become VFO specific implement in the backend - rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT; + rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | + RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK; return RIG_OK; } diff --git a/src/mem.c b/src/mem.c index 837ec149..9d347cf9 100644 --- a/src/mem.c +++ b/src/mem.c @@ -89,7 +89,7 @@ int HAMLIB_API rig_set_mem(RIG *rig, vfo_t vfo, int ch) return -RIG_ENAVAIL; } - if ((caps->targetable_vfo & RIG_TARGETABLE_PURE) + if ((caps->targetable_vfo & RIG_TARGETABLE_MEM) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { @@ -152,7 +152,7 @@ int HAMLIB_API rig_get_mem(RIG *rig, vfo_t vfo, int *ch) return -RIG_ENAVAIL; } - if ((caps->targetable_vfo & RIG_TARGETABLE_PURE) + if ((caps->targetable_vfo & RIG_TARGETABLE_MEM) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { @@ -215,7 +215,7 @@ int HAMLIB_API rig_set_bank(RIG *rig, vfo_t vfo, int bank) return -RIG_ENAVAIL; } - if ((caps->targetable_vfo & RIG_TARGETABLE_PURE) + if ((caps->targetable_vfo & RIG_TARGETABLE_BANK) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { commit 74356b3a99c836bbcb3f784ce2f39284a02cfb0b Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Oct 31 17:19:08 2020 -0500 Add RIG_TARGETABLE_PTT and RIG_TARGETABLE_RITXIT For most rigs these are non-vfo specific commands so we can avoid doing VFO switching Add flags to all Yaesu, Icom, and Kenwood in rig_open Some rigs do have VFO specific but it's already in the backend More rigs can use these flags..TBD... https://github.com/Hamlib/Hamlib/issues/430 diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 03474a84..013ad650 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -457,6 +457,9 @@ typedef unsigned int vfo_t; /* * targetable bitfields, for internal use. * RIG_TARGETABLE_PURE means a pure targetable radio on every command + * In rig.c lack of a flag will case a VFO change if needed + * So setting this flag will mean the backend handles any VFO needs + * For many rigs RITXIT and PTT are non-VFO commands so need these flags */ //! @cond Doxygen_Suppress #define RIG_TARGETABLE_NONE 0 @@ -466,6 +469,8 @@ typedef unsigned int vfo_t; #define RIG_TARGETABLE_TONE (1<<3) #define RIG_TARGETABLE_FUNC (1<<4) #define RIG_TARGETABLE_LEVEL (1<<5) +#define RIG_TARGETABLE_RITXIT (1<<6) +#define RIG_TARGETABLE_PTT (1<<7) #define RIG_TARGETABLE_ALL 0x7fffffff //! @endcond // diff --git a/rigs/dummy/dummy.c b/rigs/dummy/dummy.c index 1eb02497..c214ce3c 100644 --- a/rigs/dummy/dummy.c +++ b/rigs/dummy/dummy.c @@ -2078,7 +2078,7 @@ struct rig_caps dummy_caps = .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_OTHER, - .targetable_vfo = 0, + .targetable_vfo = RIG_TARGETABLE_PTT|RIG_TARGETABLE_RITXIT, .ptt_type = RIG_PTT_RIG, .dcd_type = RIG_DCD_RIG, .port_type = RIG_PORT_NONE, @@ -2243,7 +2243,7 @@ struct rig_caps dummy_no_vfo_caps = .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_OTHER, - .targetable_vfo = 0, + .targetable_vfo = RIG_TARGETABLE_PTT|RIG_TARGETABLE_RITXIT, .ptt_type = RIG_PTT_RIG, .dcd_type = RIG_DCD_RIG, .port_type = RIG_PORT_NONE, diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index fadfd433..d7bc08d8 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -814,6 +814,10 @@ icom_rig_open(RIG *rig) #if 0 // do not do this here -- needs to be done when ranges are requested instead as this is very slow icom_get_freq_range(rig); // try get to get rig range capability dyamically #endif + // All Icom rigs as of 20201031 do not need VFO switch for PTT and RITXIT + // They are non-VFO specific commands + // If they ever become VFO specific implement in the backend + rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT; return RIG_OK; } diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index a8e7d79b..6dea3477 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -937,6 +937,12 @@ int kenwood_open(RIG *rig) // we're making this non fatal // mismatched IDs can still be tested rig->state.rigport.retry = retry_save; + + // All Kenwood rigs as of 20201031 do not need VFO switch for PTT and RITXIT + // They are non-VFO specific commands + // If they ever become VFO specific implement in the backend + + rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT; return RIG_OK; } diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 285bdef0..ad8bac00 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -529,6 +529,12 @@ int newcat_open(RIG *rig) /* Initialize rig_id in case any subsequent commands need it */ (void)newcat_get_rigid(rig); + // All Yaeus rigs as of 20201031 do not need VFO switch for PTT and RITXIT + // They are non-VFO specific commands + // A couple of rigs do have vfo-specific in the backends + // If they ever become VFO specific implement in the backend + rig->caps->targetable_vfo |= RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT; + return RIG_OK; } diff --git a/src/rig.c b/src/rig.c index ffeb0b4b..69a990dd 100644 --- a/src/rig.c +++ b/src/rig.c @@ -2271,7 +2271,7 @@ int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) return -RIG_ENIMPL; } - if ((caps->targetable_vfo & RIG_TARGETABLE_PURE) + if ((caps->targetable_vfo & RIG_TARGETABLE_PTT) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { @@ -2486,7 +2486,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) return RIG_OK; } - if ((caps->targetable_vfo & RIG_TARGETABLE_PURE) + if ((caps->targetable_vfo & RIG_TARGETABLE_PTT) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { @@ -3860,7 +3860,7 @@ int HAMLIB_API rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) return -RIG_ENAVAIL; } - if ((caps->targetable_vfo & RIG_TARGETABLE_PURE) + if ((caps->targetable_vfo & RIG_TARGETABLE_RITXIT) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { @@ -3928,7 +3928,7 @@ int HAMLIB_API rig_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit) return -RIG_ENAVAIL; } - if ((caps->targetable_vfo & RIG_TARGETABLE_PURE) + if ((caps->targetable_vfo & RIG_TARGETABLE_RITXIT) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { @@ -3996,7 +3996,7 @@ int HAMLIB_API rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit) return -RIG_ENAVAIL; } - if ((caps->targetable_vfo & RIG_TARGETABLE_PURE) + if ((caps->targetable_vfo & RIG_TARGETABLE_RITXIT) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { @@ -4064,7 +4064,7 @@ int HAMLIB_API rig_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit) return -RIG_ENAVAIL; } - if ((caps->targetable_vfo & RIG_TARGETABLE_PURE) + if ((caps->targetable_vfo & RIG_TARGETABLE_RITXIT) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { commit fe672e8115de4bd557498e26bfb199e196548e20 Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Oct 31 17:18:08 2020 -0500 Fix cppcheck for memcsv.c diff --git a/tests/memcsv.c b/tests/memcsv.c index b5ed3b0c..0bbade49 100644 --- a/tests/memcsv.c +++ b/tests/memcsv.c @@ -304,7 +304,7 @@ static char *mystrtok(char *s, char delim) } } - // cppcheck-suppress nullPointerArithmeticRedundantCheck + // cppcheck-suppress * return str + ent_pos; } commit 06cc95de56dcb3fcb58f79e88c75387437416773 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Oct 29 23:47:43 2020 -0500 WSJT-X is working with the IC-729 so promotint to stable https://github.com/Hamlib/Hamlib/issues/429 diff --git a/rigs/icom/ic728.c b/rigs/icom/ic728.c index d799f753..2b2617b2 100644 --- a/rigs/icom/ic728.c +++ b/rigs/icom/ic728.c @@ -183,7 +183,7 @@ const struct rig_caps ic729_caps = .mfg_name = "Icom", .version = BACKEND_VER ".0", .copyright = "LGPL", - .status = RIG_STATUS_ALPHA, + .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, .ptt_type = RIG_PTT_NONE, .dcd_type = RIG_DCD_NONE, commit f55d50c7bcfc5a32e6a9fa7c6c0ab21e2a2791a8 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Oct 29 22:45:57 2020 -0500 Finish IC-729 addition https://github.com/Hamlib/Hamlib/issues/429 diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index eab78ea7..fadfd433 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -7570,6 +7570,7 @@ DECLARE_INITRIG_BACKEND(icom) rig_register(&ic781_caps); rig_register(&ic707_caps); rig_register(&ic728_caps); + rig_register(&ic729_caps); rig_register(&ic820h_caps); rig_register(&ic821h_caps); diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 808b7521..a52b9069 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -347,6 +347,7 @@ extern const struct rig_caps ic718_caps; extern const struct rig_caps ic725_caps; extern const struct rig_caps ic726_caps; extern const struct rig_caps ic728_caps; +extern const struct rig_caps ic729_caps; extern const struct rig_caps ic735_caps; extern const struct rig_caps ic736_caps; extern const struct rig_caps ic737_caps; commit c8eaafb499948cb28ea41205dbd4b81ae0d76a90 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Oct 29 22:30:34 2020 -0500 Add IC-729 https://github.com/Hamlib/Hamlib/issues/429 diff --git a/rigs/icom/ic728.c b/rigs/icom/ic728.c index 5d75075b..d799f753 100644 --- a/rigs/icom/ic728.c +++ b/rigs/icom/ic728.c @@ -168,3 +168,121 @@ const struct rig_caps ic728_caps = }; +static const struct icom_priv_caps ic729_priv_caps = +{ + 0x3a, /* default address */ + 0, /* 731 mode */ + 0, /* no XCHG */ + ic737_ts_sc_list +}; + +const struct rig_caps ic729_caps = +{ + RIG_MODEL(RIG_MODEL_IC729), + .model_name = "IC-729", + .mfg_name = "Icom", + .version = BACKEND_VER ".0", + .copyright = "LGPL", + .status = RIG_STATUS_ALPHA, + .rig_type = RIG_TYPE_TRANSCEIVER, + .ptt_type = RIG_PTT_NONE, + .dcd_type = RIG_DCD_NONE, + .port_type = RIG_PORT_SERIAL, + .serial_rate_min = 1200, + .serial_rate_max = 9600, + .serial_data_bits = 8, + .serial_stop_bits = 2, + .serial_parity = RIG_PARITY_NONE, + .serial_handshake = RIG_HANDSHAKE_NONE, + .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 = RIG_LEVEL_NONE, + .has_set_level = RIG_LEVEL_NONE, + .has_get_parm = RIG_PARM_NONE, + .has_set_parm = RIG_PARM_NONE, + .level_gran = {}, + .parm_gran = {}, + .ctcss_list = NULL, + .dcs_list = NULL, + .preamp = { RIG_DBLST_END, }, + .attenuator = { RIG_DBLST_END, }, + .max_rit = Hz(0), + .max_xit = Hz(0), + .max_ifshift = Hz(0), + .targetable_vfo = 0, + .vfo_ops = IC728_VFO_OPS, + .scan_ops = IC728_SCAN_OPS, + .transceive = RIG_TRN_RIG, + .bank_qty = 0, + .chan_desc_sz = 0, + + .chan_list = { + { 1, 26, RIG_MTYPE_MEM, IC_MIN_MEM_CAP }, + RIG_CHAN_END, + }, + + .rx_range_list1 = { + {kHz(500), MHz(30), IC728_ALL_RX_MODES, -1, -1, IC728_VFO_ALL}, + RIG_FRNG_END, + }, + .tx_range_list1 = { + FRQ_RNG_HF(1, IC728_OTHER_TX_MODES, W(10), W(100), IC728_VFO_ALL, IC728_ANTS), + FRQ_RNG_HF(1, IC728_AM_TX_MODES, W(10), W(40), IC728_VFO_ALL, IC728_ANTS), /* AM class */ + RIG_FRNG_END, + }, + + .rx_range_list2 = { + {kHz(500), MHz(30), IC728_ALL_RX_MODES, -1, -1, IC728_VFO_ALL}, + RIG_FRNG_END, + }, + .tx_range_list2 = { + FRQ_RNG_HF(2, IC728_OTHER_TX_MODES, W(10), W(100), IC728_VFO_ALL, IC728_ANTS), + FRQ_RNG_HF(2, IC728_AM_TX_MODES, W(10), W(40), IC728_VFO_ALL, IC728_ANTS), /* AM class */ + RIG_FRNG_END, + }, + + .tuning_steps = { + {IC728_ALL_RX_MODES, 10}, /* basic resolution, there's no set_ts */ + RIG_TS_END, + }, + /* mode/filter list, remember: order matters! */ + .filters = { + {RIG_MODE_SSB | RIG_MODE_CW, kHz(2.1)}, + {RIG_MODE_AM, kHz(6)}, + {RIG_MODE_FM, kHz(12)}, + RIG_FLT_END, + }, + + .cfgparams = icom_cfg_params, + .set_conf = icom_set_conf, + .get_conf = icom_get_conf, + + .priv = (void *)& ic729_priv_caps, + .rig_init = icom_init, + .rig_cleanup = icom_cleanup, + .rig_open = icom_rig_open, + .rig_close = icom_rig_close, + + .set_freq = icom_set_freq, + .get_freq = icom_get_freq, + .set_mode = icom_set_mode, + .get_mode = icom_get_mode, + .set_vfo = icom_set_vfo, + .set_split_vfo = icom_set_split_vfo, + .set_split_freq = icom_set_split_freq, + .get_split_freq = icom_get_split_freq, + .set_split_mode = icom_set_split_mode, + .get_split_mode = icom_get_split_mode, + + .scan = icom_scan, + + .decode_event = icom_decode_event, + .set_mem = icom_set_mem, + .vfo_op = icom_vfo_op, + +}; + commit 07447c881d8efd68205f06a183fab08cb09372ce Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Oct 29 12:54:35 2020 -0500 remove some cppcheck statements not needed anymore diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index b81db412..03474a84 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -24,13 +24,9 @@ #ifndef _RIG_H #define _RIG_H 1 -// cppcheck-suppress * #include <stdio.h> -// cppcheck-suppress * #include <stdarg.h> -// cppcheck-suppress * #include <inttypes.h> -// cppcheck-suppress * #include <time.h> /* Rig list is in a separate file so as not to mess up w/ this one */ @@ -2787,7 +2783,6 @@ extern HAMLIB_EXPORT(int) rig_set_cache_timeout_ms(RIG *rig, hamlib_cache_t sele extern HAMLIB_EXPORT(int) rig_set_vfo_opt(RIG *rig, int status); -// cppcheck-suppress * typedef unsigned long rig_useconds_t; extern HAMLIB_EXPORT(int) hl_usleep(rig_useconds_t msec); commit 73d05831f3e896c5b336f1588bcb643c2a4f821a Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Oct 29 12:54:13 2020 -0500 update newcat.h version diff --git a/rigs/yaesu/newcat.h b/rigs/yaesu/newcat.h index ff2bb045..85ff10a2 100644 --- a/rigs/yaesu/newcat.h +++ b/rigs/yaesu/newcat.h @@ -50,7 +50,7 @@ typedef char ncboolean; /* shared function version */ -#define NEWCAT_VER "20201028" +#define NEWCAT_VER "20201029" /* Hopefully large enough for future use, 128 chars plus '\0' */ #define NEWCAT_DATA_LEN 129 commit 378cbfb0082cfd02fcfff740f56afdedf21dd225 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Oct 29 12:53:39 2020 -0500 remove some cppcheck statements not needed anymore diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 4e0bcd06..808b7521 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -27,7 +27,6 @@ #include "tones.h" #ifdef HAVE_SYS_TIME_H -// cppcheck-suppress * #include <sys/time.h> #endif commit 0fef98fc43c37c9da7ccea2cd29123aa30ae29b9 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Oct 29 12:52:54 2020 -0500 remove some cppcheck statements not needed anymore diff --git a/src/iofunc.h b/src/iofunc.h index a1edbdff..efe8b668 100644 --- a/src/iofunc.h +++ b/src/iofunc.h @@ -22,7 +22,6 @@ #ifndef _IOFUNC_H #define _IOFUNC_H 1 -// cppcheck-suppress * #include <sys/types.h> #include <hamlib/rig.h> diff --git a/src/misc.h b/src/misc.h index 24aa869f..5378f1da 100644 --- a/src/misc.h +++ b/src/misc.h @@ -84,12 +84,10 @@ extern int no_restore_ai; /* needs config.h included beforehand in .c file */ #ifdef HAVE_INTTYPES_H -// cppcheck-suppress * # include <inttypes.h> #endif #ifdef HAVE_SYS_TIME_H -// cppcheck-suppress * # include <sys/time.h> #endif diff --git a/src/parallel.h b/src/parallel.h index 56afaca2..c676ee43 100644 --- a/src/parallel.h +++ b/src/parallel.h @@ -27,7 +27,6 @@ #include "iofunc.h" #ifdef HAVE_LINUX_PARPORT_H -// cppcheck-suppress * # include <linux/parport.h> #endif commit ce7a30f038417be93507b44f5aa1ff723aa5ac80 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Oct 29 12:52:09 2020 -0500 remove some cppcheck statements not needed anymore diff --git a/tests/memcsv.c b/tests/memcsv.c index 8e27088f..b5ed3b0c 100644 --- a/tests/memcsv.c +++ b/tests/memcsv.c @@ -25,20 +25,13 @@ # include "config.h" #endif -// cppcheck-suppress * #include <stdio.h> -// cppcheck-suppress * #include <stdlib.h> -// cppcheck-suppress * #include <string.h> -// cppcheck-suppress * #include <unistd.h> -// cppcheck-suppress * #include <ctype.h> -// cppcheck-suppress * #include <errno.h> -// cppcheck-suppress * #include <getopt.h> #include <hamlib/rig.h> @@ -311,7 +304,7 @@ static char *mystrtok(char *s, char delim) } } - // cppcheck-suppress * + // cppcheck-suppress nullPointerArithmeticRedundantCheck return str + ent_pos; } commit 9f65348f496cdb4325a5ff916e0d8a30637a7aba Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Oct 29 10:24:25 2020 -0500 Fix newcat_band_index frequencies https://github.com/Hamlib/Hamlib/issues/424 diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index ed52d54b..285bdef0 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -391,28 +391,29 @@ static ncboolean newcat_valid_command(RIG *rig, char const *const command); */ static int newcat_band_index(freq_t freq) { - // FTDX101D has band=12=MW...what is that? + // FTDX101D has band=12=MW Medium Wave int band = 11; // general // what about 13? - if (freq >= 420 && freq < 470) { band = 16; } - else if (freq >= 144 && freq < 148) { band = 15; } - else if (freq >= 118 && freq < 164) { band = 14; } - else if (freq >= 70 && freq < 75) { band = 17; } - else if (freq >= 50 && freq < 54) { band = 10; } + if (freq >= MHz(420) && freq < MHz(470)) { band = 16; } + else if (freq >= MHz(144) && freq < MHz(148)) { band = 15; } + else if (freq >= MHz(118) && freq < MHz(164)) { band = 14; } + else if (freq >= MHz(70) && freq < MHz(75)) { band = 17; } + else if (freq >= MHz(50) && freq < MHz(54)) { band = 10; } // do we need to restrict ranges below here? - else if (freq >= 28) { band = 9; } - else if (freq >= 24.5) { band = 8; } - else if (freq >= 21) { band = 7; } - else if (freq >= 18) { band = 6; } - else if (freq >= 14) { band = 5; } - else if (freq >= 10) { band = 4; } - else if (freq >= 7) { band = 3; } - else if (freq >= 5) { band = 2; } - else if (freq >= 3.5) { band = 1; } - else if (freq >= 1.8) { band = 0; } - - rig_debug(RIG_DEBUG_TRACE, "%s: band=%d\n", __func__, band); + else if (freq >= MHz(28)) { band = 9; } + else if (freq >= MHz(24.5)) { band = 8; } + else if (freq >= MHz(21)) { band = 7; } + else if (freq >= MHz(18)) { band = 6; } + else if (freq >= MHz(14)) { band = 5; } + else if (freq >= MHz(10)) { band = 4; } + else if (freq >= MHz(7)) { band = 3; } + else if (freq >= MHz(5)) { band = 2; } + else if (freq >= MHz(3.5)) { band = 1; } + else if (freq >= MHz(1.8)) { band = 0; } + else if (freq >= MHz(0.5)) { band = 12; } // MW Medium Wave + + rig_debug(RIG_DEBUG_TRACE, "%s: freq=%g, band=%d\n", __func__, freq, band); return band; } commit 31b20c003cc1b4025fff51a85d76468dbfd22031 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Oct 29 08:17:40 2020 -0500 Enhance ic7000 set bandwidth and prompt ic7000 to stable https://github.com/Hamlib/Hamlib/issues/428 diff --git a/rigs/icom/ic7000.c b/rigs/icom/ic7000.c index b2169943..b722be8d 100644 --- a/rigs/icom/ic7000.c +++ b/rigs/icom/ic7000.c @@ -135,6 +135,35 @@ struct cmdparams ic7000_extcmds[] = { {.s = RIG_PARM_NONE} } }; +/* + * This function does the special bandwidth coding for IC-7000 + */ +static int ic7000_r2i_mode(RIG *rig, rmode_t mode, pbwidth_t width, + unsigned char *md, signed char *pd) +{ + int err; + + err = rig2icom_mode(rig, mode, width, md, pd); + + if (err != RIG_OK) + { + return err; + } + + // CAT section of manual says: nn = 0 -40 > bw = 50Hz > 3600Hz + // Tested by Ian G3VPX 20201029 + // 0 - 9 > bw 50Hz to 500Hz in 50Hz steps + // 10 - 40 > bw 600Hz to 3600Hz in 100Hz steps + if (width != RIG_PASSBAND_NOCHANGE) + { + if (width <= 500) { *pd = width / 50 - 1; } + else if (width <= 3600) { *pd = width / 100 + 4; } + else { *pd = 40; } + } + + return RIG_OK; +} + /* * IC-7000 rig capabilities. */ @@ -152,6 +181,7 @@ static const struct icom_priv_caps IC7000_priv_caps = { .level = -1, .icom_level = 0 }, }, .extcmds = ic7000_extcmds, + .r2i_mode = ic7000_r2i_mode }; const struct rig_caps ic7000_caps = @@ -159,9 +189,9 @@ const struct rig_caps ic7000_caps = RIG_MODEL(RIG_MODEL_IC7000), .model_name = "IC-7000", .mfg_name = "Icom", - .version = BACKEND_VER ".0", + .version = BACKEND_VER ".1", .copyright = "LGPL", - .status = RIG_STATUS_BETA, + .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, .ptt_type = RIG_PTT_RIG, .dcd_type = RIG_DCD_RIG, commit bd47d262b8e415e04a569126a31406641b9d8ea3 Author: Michael Black W9MDB <mdb...@ya...> Date: Wed Oct 28 09:43:26 2020 -0500 Fix newcat_band_index May need some more restrictions if people are using odd frequencies https://github.com/Hamlib/Hamlib/issues/424 diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 6120a8cb..ed52d54b 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -394,9 +394,13 @@ static int newcat_band_index(freq_t freq) // FTDX101D has band=12=MW...what is that? int band = 11; // general - if (freq >= 70) { band = 17; } - // what about 11-16? - else if (freq >= 50) { band = 10; } + // what about 13? + if (freq >= 420 && freq < 470) { band = 16; } + else if (freq >= 144 && freq < 148) { band = 15; } + else if (freq >= 118 && freq < 164) { band = 14; } + else if (freq >= 70 && freq < 75) { band = 17; } + else if (freq >= 50 && freq < 54) { band = 10; } + // do we need to restrict ranges below here? else if (freq >= 28) { band = 9; } else if (freq >= 24.5) { band = 8; } else if (freq >= 21) { band = 7; } commit cc529aab0cd57347a562d1cc3ca040400ed5afbf Author: Michael Black W9MDB <mdb...@ya...> Date: Wed Oct 28 09:26:06 2020 -0500 Fix newcat_band_index https://github.com/Hamlib/Hamlib/issues/424 diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 192ab2fe..6120a8cb 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -394,19 +394,19 @@ static int newcat_band_index(freq_t freq) // FTDX101D has band=12=MW...what is that? int band = 11; // general - if (freq >= 1.8) { band = 0; } - else if (freq >= 3.5) { band = 1; } - else if (freq >= 5) { band = 2; } - else if (freq >= 7) { band = 3; } - else if (freq >= 10) { band = 4; } - else if (freq >= 14) { band = 5; } - else if (freq >= 18) { band = 6; } - else if (freq >= 21) { band = 7; } - else if (freq >= 24.5) { band = 8; } - else if (freq >= 28) { band = 9; } - else if (freq >= 50) { band = 10; } + if (freq >= 70) { band = 17; } // what about 11-16? - else if (freq >= 70) { band = 17; } + else if (freq >= 50) { band = 10; } + else if (freq >= 28) { band = 9; } + else if (freq >= 24.5) { band = 8; } + else if (freq >= 21) { band = 7; } + else if (freq >= 18) { band = 6; } + else if (freq >= 14) { band = 5; } + else if (freq >= 10) { band = 4; } + else if (freq >= 7) { band = 3; } + else if (freq >= 5) { band = 2; } + else if (freq >= 3.5) { band = 1; } + else if (freq >= 1.8) { band = 0; } rig_debug(RIG_DEBUG_TRACE, "%s: band=%d\n", __func__, band); return band; commit aeabe40acde2fb7a86e204bcde7d707bc41e8f8a Author: Michael Black W9MDB <mdb...@ya...> Date: Wed Oct 28 08:53:55 2020 -0500 Make the BS cmd write the band instead of read it in newcat.c https://github.com/Hamlib/Hamlib/issues/424 diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 3452e92a..192ab2fe 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -765,7 +765,8 @@ int newcat_set_freq(RIG *rig, vfo_t vfo, freq_t freq) if (newcat_valid_command(rig, "BS") && newcat_band_index(freq) != newcat_band_index(rig->state.current_freq)) { - snprintf(priv->cmd_str, sizeof(priv->cmd_str), "BS%c", cat_term); + snprintf(priv->cmd_str, sizeof(priv->cmd_str), "BS%02d%c", + newcat_band_index(freq), cat_term); if (RIG_OK != (e... [truncated message content] |