[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. c76dc1453d963334968ab
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: Nate B. <n0...@us...> - 2022-04-27 15:46:05
|
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 c76dc1453d963334968ab9879caceb180021f12b (commit) via def3e6fea5deacf23ea2fc7fb95e4fae3ffab5cd (commit) via a006636ee3a6c9e7d5ba5125b7e2aae2f0fcf23c (commit) via 5400d8ed01f417174f2fa3228aa7e71748bc9e6e (commit) via 7cc2550ee369b1537bd25dae18a52324dbecd96e (commit) via fbd78931925f5788985871330fb30e332297c817 (commit) via 5c61f559472f7f0048ae764e469280a21f0296e2 (commit) via 382282ba204fcf1f23274254a7c5aeae8ee64d60 (commit) via b55668e2faf750a73c082ab8b619f37a67ddb028 (commit) via 6bd9cdfda090d496c1486a706f6d6ddf7a43fa1e (commit) via d412914f96526c6420d28af8f9f9725b30ae2e14 (commit) via 6497048f288092a86edb7b9cbcd25aea9cf5fec4 (commit) via 07d2602950509c01016d0709d9534af0b3235dc3 (commit) via 871dcbe8a3497f91b8db92531a274fb196b36e29 (commit) via 3dd9277e7902f8647b6ae6798d01a8b939403d6b (commit) via 2f29f326ab00492e79dd42631ee3d94aca881565 (commit) via 0405498b0725c54652fcd485ecaba95d0fd89d92 (commit) via 4ac7d024e8add9cdcb4d73cf569eea95f3307799 (commit) via 5427b4cf863e0dc6f59727e0a9a3e480ab9b4055 (commit) via ff5682ea7e88c098d7b9b2e2d3930afe46cc796a (commit) via 6b0dbab42f9fcdaa31f2d34b899672c50a6a04d8 (commit) via 0473702cb652cb40ead34a762b2c8bbf8ece7794 (commit) via 4e21730cd0d284b126d1f328d43d62554fab7e3f (commit) via 9ee49933d72c0142ab9173d781ee9f6e369a3ad4 (commit) via 86b737b95a3dea9a9bb526834ebba409d4d590b2 (commit) via 9df30be05fb6d39e9ab3768edd9a924e24690d5c (commit) via f5ee5c86fd685d4eee5325db33214b25afca4718 (commit) via e409efbaefb3724fbb3653adb75d48552ab26ef7 (commit) via 863f50f2fbbba7ceb645a3b3dcc042903bd60eb2 (commit) via 4055810dc8eb2853b9524e604880ae202c227444 (commit) via d54b541c0d0e6e9cba3103c7caab13f5507a7c21 (commit) via eb6ce19600d7af5c483e234da5272416b9981650 (commit) via 3e7dcc85ab32258e3385cc88a8a718ccb79f4253 (commit) via 5ab39f30220b7c1e211f658d54a818145a4e62cf (commit) via 5c6e92a089d8925731812639efe3b09a534b38d3 (commit) via b085b353e5f3ef6aa4909718e03e2a2f2e029eac (commit) via ad2e3bb0ee81bfd2babfafa667ad2a84b1de90b6 (commit) via cd5f69fb96425f5f28268fff28ef5147555aee20 (commit) via bf9125d3db5fa1498a98aa0391e66f9802d8280a (commit) via b1381087891b41f73372312983f1e50f804a6087 (commit) via d38a0a8f5fce11a02abd73b8dd7f150cbd956687 (commit) via af7def205c6a9d0b82ae10a59eaa422ec78dfde6 (commit) via b485b2f5931d2518e6135f4664bacb1e833d7696 (commit) via c68233e9d500bed908a3b1dd03641ca9c338045c (commit) via 8f1178c552f8305ea5801ccac9a163900213dd62 (commit) via 770aa4e98aa2930e1a309416f0bdc3d037e6e0f7 (commit) via 3ac385ed05ae80ec5e7660042448617eb3888901 (commit) via 6846d164bf44858af481154605abffcc32ac58d9 (commit) via 1bdb6ce2bffa7696ebad6b3918fb09509eb99409 (commit) via 135e8765656b0c3db654b3bae3961e9f3ea90b2c (commit) via d04981ac397ccd73cfc3bdf67beaf37331560d35 (commit) via 98c225a416a9d6d6823d8c6d3e3c4e41e8cc35b8 (commit) via 4468b153e2383ce7d27f5d8b74c31774db93ad20 (commit) via d9c49971173ace233d2d9c7c8172942777cd2ef1 (commit) via b98f8bef2569ace5efad1b38e5029f537d91ad55 (commit) via 1710058bfa6acabd72c50e6fd5c9c5a70f76922e (commit) via 14dc9acccf57871141aaacbec605a76a8d5ae0ca (commit) via 08456af0f856dd9aa0ceecbe708a84bd0ef2efef (commit) via ada37e07a95d0f3eeeeb31a206e29a08d7cbb590 (commit) via 412121655d314b6d807e395229e8ef2471966325 (commit) via 20e2abf7bc62ce4c6ba9f32cbb01a570e25cf863 (commit) via 4a618321251196bd5a41022a2afe766d225c2258 (commit) via 769a3a559b5d40b22e6727d09c8beca968a98404 (commit) via 467d0fd716fb517f7961d016a5d4c9977a477743 (commit) via 5d88b6579c04eeff146f2240d1fc3f1a2e266ff4 (commit) via 5bc1e89cb13205c28f80afa24c6d1929eb1cfac1 (commit) via bf92f890b1e7bb4e81ea5798d1113ee892d79d3e (commit) via ea64b69a9e262f54f7c793682e9f3289d60dffc9 (commit) via d2dfa10d8936d74e152bc46637f7d21e94f421f2 (commit) via 7671229529a559b454e82eab093e322e3510db54 (commit) via bd1ffcfb5427b7c08309a75aba9954f01f49f23f (commit) via a5fb30d5b613d53fae549930992bd83db04dc876 (commit) via acf80cea37f5d0c2b122834e0bc3b8f594092ec4 (commit) via e44ed57b1e1c930fea26760ff545d5678f437cfc (commit) via 25809ca90359114ed606633cc2236c99ee2824bb (commit) via 7aa0ba961fe8ad8be73acb70f990f7eba7a2ab27 (commit) via 590ddd7b82930afb20bfe0d9292c6744e5413fa8 (commit) via 3f6edf3808ff411577e0364b32dca5ea6afe335c (commit) via 02f10b34f6d3f057035177fb71c6ceb06555bcb3 (commit) via 645ae51a5d5b17eebfb89a8fede720e07aadcfd9 (commit) via fceac511eadbde504d0e7f24d3b1d262c2bcf09c (commit) via a57d1a4880e018a48ae918b1fabffad31fa1402a (commit) via 3aa8f31dcdd4aaea00f038bf929971c0c2baed55 (commit) via 56fc193323958f925d95e8dd9ec469200c80c8bc (commit) via a830e1b6e1fd252a2c43f350b02138366dbced2c (commit) via 5588b2465c5c846de8556bf55bc4f53f0d5b7c77 (commit) via d6cfef69638164131c0ad890d3ce11502199d6fd (commit) via b40ec940e84b153e96b8330e63f103d4c9e8ed4f (commit) via 3686a308d862626ceac6eea40a6896e988641a34 (commit) via afc2776599300649588fdc088a87c8d1caa82fd6 (commit) via ded8e671c8460691a6c844a3caca1623cba3c204 (commit) via 27ec5f4c482c4decf69a79d4198ddefb29ec9a92 (commit) via f16194ca4cd7547cca8dfe9996713d924f97ef3a (commit) via c0b5d7982a409b0e9797ad90e86c264710f2bb4a (commit) via fb2997ff2c7f85253ea3299632ce9e0497ef08cd (commit) via 4e9962e90b97d67525616be182dcf837fcab011d (commit) via 3bb045cecc7c18058f8fadeeac4e9cf9abb365ca (commit) via bdd36892e0cdc6411a6881f467fe98a5b605cfff (commit) via 5fb3405d1f90f2094d39d06a7d6d51e158b6d990 (commit) via a038a70b6ac1bd4d32563a448439b56ab967a397 (commit) via 8c514476e40079e36f3f65c892d6863ec727e0f0 (commit) via 5ac1ba6452c55aa283e033d51c0ee1c953b52bdb (commit) via 43ee66473d28f328110db397e3e5ba465deeb2aa (commit) via 36c6ce49f93749b766784a6f7b3b10831ca633f9 (commit) via 3659ede4036cb51bcf53f4697d77ce940641925a (commit) via fce87b1b1060c109ae2fbcc827120d1bf52cb6a9 (commit) via 575d6dd1af6cef7104f0447576569d04901cd659 (commit) via 2f8d6e0f19c8f6470f3a4d82477a1d82fbb667c1 (commit) via 14b6941a01e86a53f4cdce81dd6e82a9aa651d17 (commit) via 528da5dc9ab4d0d2459256add58f4e2e0683f175 (commit) via 1ef86d8e93f096a4506bed450b203df935a85190 (commit) via 56866fecd54ac9568427bc873541d997a31f860d (commit) via c66f54c208104d9a5821f90d79ce6ba13087d1a2 (commit) via c31e57fee7b19effc26df6251a9f9f45dfd3d8ae (commit) via 21680572ab01f0084d42beea124446ff5a326318 (commit) via 1993073559504993a7cf2aec360bc54723967c6e (commit) via 78a5522447d322da02ee733bb6b48c816f23cac2 (commit) via 0f84d70cacb13e2d560c4836e07acaf62e79a86a (commit) via e5031ef72c7dcc67d3c458228118942897fe129c (commit) via a012e8e25d33b3b05b1cb1ed3edf2c5900474e91 (commit) via 7aa29b9f51536e5246d0780e153a16d9c2e1450b (commit) via 827bc131938aba0b9f3496e95bb3ae35df9704e3 (commit) via fdec51eee02378f4b7420315bdf714ddf73bed0d (commit) via 5d9f6ed6e9c272876e68bfca42a67f57bc4a4731 (commit) via a93e7d1e0b2bb846934298fdda831ac134c76410 (commit) via 4ad2f355b193c238753c999ba58b2ac01b23e09f (commit) via 223d2b7c119580f7f61160b7458aa2d9fae1fa12 (commit) via 8fbda12ce2f435c4f1930d1fe642a10b9e12a3bb (commit) via 1d005351b77274e7ee9a1593b62f23a224e423bf (commit) via 20019efe6d7ff1e484763528f95ccbd1fad792c5 (commit) via 2943b84548523f8fedb9b929371bb0d9446f6129 (commit) via f0b624cd55970817adfabde2d67d6e7a4fd36bf6 (commit) via 6709a189fa135de40c02572780e67daccdfc5200 (commit) via 606609f62eaf8aa354616e7a46712c03cdf37f09 (commit) via 0333cdfca5aa9f3b867c4a4c03e220ecd143b1b0 (commit) via 499198bf5070a5ca4477e424dada99768a48d596 (commit) via c5a5276b15c251151c67e17c50b2fb712ec3809d (commit) via b3d93cc2314734f6bb9d1db7ed963f16a5a2a1a7 (commit) via 9e2ac436313a79cb83f22eeda64b0dda036f588e (commit) via f51e778b1b8357abc0bde03ea052642241742c3f (commit) via be8547f5d64ff4389f9d420859c4df8796e5166e (commit) via 80630326a0c686e708720e9532f737099c98f4e2 (commit) via b0aa034accbc557eac1817c50d5e0b2b76dee978 (commit) via 9f0cee832454714e4ebef0143e069e9ed09aacc5 (commit) via b3ff4b0167489233a53dc570dc807639fb5814ed (commit) via f4cf9091543b03dfad5093725218f5757574ffd7 (commit) via 1444448aebeadbb705d1b40ab3220f95020a432c (commit) via 27000c27fb65ae4d3a19e26896c281f2c554d852 (commit) via 2c43ee5f0c9f0efe6eb1534d8fca4fce5c0fb3a7 (commit) via 23280e812cd5fe3aed49d00fe26cf33136fb9433 (commit) via c519dbd78afde2ce92e99defa7203b2d9fbdf80b (commit) via 7be2aac2c1438fa2848d191e0b21dda9e74b12bb (commit) via b7503986eaf7786c43d875b9c17653b7b85e77e4 (commit) via 9ba2b4502c687e68f23eab958b341ec16b316a82 (commit) via fb16f2263157bc3a4e6d60181f9dfee7d6064e68 (commit) via 9ae519fc410b8488c8445ab730babc086de08aec (commit) via d10912ee640f023e92ec79212c326b0b46385fd1 (commit) via ede76968782bf514ae872b70b924e4360776888e (commit) via 83e5b14cf644c282580cb448891d4ad622eb0fb8 (commit) from d04f4b6b3b53e7b630ebecfd46fa6a7fc257e90e (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 c76dc1453d963334968ab9879caceb180021f12b Author: Mike Black W9MDB <mdb...@ya...> Date: Wed Apr 27 10:14:27 2022 -0500 Forgot to commit kenwood.h diff --git a/rigs/kenwood/kenwood.h b/rigs/kenwood/kenwood.h index 8d2dac5e..ede66b43 100644 --- a/rigs/kenwood/kenwood.h +++ b/rigs/kenwood/kenwood.h @@ -28,7 +28,7 @@ #include "token.h" #include "misc.h" -#define BACKEND_VER "20220312" +#define BACKEND_VER "20220427" #define EOM_KEN ';' #define EOM_TH '\r' @@ -64,6 +64,8 @@ extern struct confparams kenwood_cfg_params[]; #define MD_AM '5' #define MD_FSK '6' #define MD_CWR '7' +// MD_DIG used by SDRPlay +#define MD_DIG '8' #define MD_FSKR '9' /* S-meter calibration tables */ @@ -306,6 +308,7 @@ extern const struct rig_caps ts890s_caps; extern const struct rig_caps pt8000a_caps; extern const struct rig_caps malachite_caps; extern const struct rig_caps tx500_caps; +extern const struct rig_caps sdruno_caps; /* use when not interested in the answer, but want to check its len */ static int inline kenwood_simple_transaction(RIG *rig, const char *cmd, commit def3e6fea5deacf23ea2fc7fb95e4fae3ffab5cd Author: Mike Black W9MDB <mdb...@ya...> Date: Wed Apr 27 10:11:41 2022 -0500 Add SDRUNO rig since it uses MD8 for DIG mode -- so PKTUSB will now be recognized for it diff --git a/include/hamlib/riglist.h b/include/hamlib/riglist.h index 6f165e3f..a1df7a82 100644 --- a/include/hamlib/riglist.h +++ b/include/hamlib/riglist.h @@ -181,6 +181,7 @@ #define RIG_MODEL_POWERSDR RIG_MAKE_MODEL(RIG_KENWOOD, 48) #define RIG_MODEL_MALACHITE RIG_MAKE_MODEL(RIG_KENWOOD, 49) #define RIG_MODEL_LAB599_TX500 RIG_MAKE_MODEL(RIG_KENWOOD,50) +#define RIG_MODEL_SDRUNO RIG_MAKE_MODEL(RIG_KENWOOD,51) /* * Icom diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 4ccfcda7..fdf8aff4 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -114,6 +114,7 @@ static const struct kenwood_id_string kenwood_id_string_list[] = { RIG_MODEL_TS2000, "019" }, { RIG_MODEL_TS480, "020" }, { RIG_MODEL_PT8000A, "020" }, // TS480 ID but behaves differently + { RIG_MODEL_SDRUNO, "020" }, // TS480 ID but behaves differently { RIG_MODEL_TS590S, "021" }, { RIG_MODEL_TS990S, "022" }, { RIG_MODEL_TS590SG, "023" }, @@ -143,7 +144,7 @@ rmode_t kenwood_mode_table[KENWOOD_MODE_TABLE_MAX] = [5] = RIG_MODE_AM, [6] = RIG_MODE_RTTY, // FSK Mode [7] = RIG_MODE_CWR, - [8] = RIG_MODE_NONE, /* TUNE mode */ + [8] = RIG_MODE_NONE, /* TUNE mode or PKTUSB for SDRUNO */ [9] = RIG_MODE_RTTYR, // FSKR Mode [10] = RIG_MODE_PSK, [11] = RIG_MODE_PSKR, @@ -750,6 +751,12 @@ int kenwood_init(RIG *rig) rig_debug(RIG_DEBUG_TRACE, "%s: if_len = %d\n", __func__, caps->if_len); + // SDRUno uses mode 8 for DIG + if (rig->caps->rig_model == RIG_MODEL_SDRUNO) + { + kenwood_mode_table[8] = RIG_MODE_PKTUSB; + } + RETURNFUNC2(RIG_OK); } @@ -5670,6 +5677,7 @@ DECLARE_INITRIG_BACKEND(kenwood) rig_register(&pt8000a_caps); rig_register(&malachite_caps); rig_register(&tx500_caps); + rig_register(&sdruno_caps); return (RIG_OK); } diff --git a/rigs/kenwood/ts480.c b/rigs/kenwood/ts480.c index 8f277479..edbaa553 100644 --- a/rigs/kenwood/ts480.c +++ b/rigs/kenwood/ts480.c @@ -34,6 +34,7 @@ #include "kenwood.h" #define TS480_ALL_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_FM|RIG_MODE_RTTY|RIG_MODE_RTTYR) +#define SDRUNO_ALL_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_FM|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTUSB) #define PS8000A_ALL_MODES (RIG_MODE_AM|RIG_MODE_AMS|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_FM|RIG_MODE_RTTY|RIG_MODE_RTTYR) #define TS480_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_FM|RIG_MODE_RTTY) @@ -1598,6 +1599,199 @@ const struct rig_caps pt8000a_caps = .hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS }; +/* + * SDRPlay SDRUno rig capabilities + * Notice that some rigs share the same functions. + */ +const struct rig_caps sdruno_caps = +{ + RIG_MODEL(RIG_MODEL_SDRUNO), + .model_name = "SDRUno", + .mfg_name = "SDRPlay", + .version = BACKEND_VER ".1", + .copyright = "LGPL", + .status = RIG_STATUS_STABLE, + .rig_type = RIG_TYPE_TRANSCEIVER, + .ptt_type = RIG_PTT_RIG_MICDATA, + .dcd_type = RIG_DCD_RIG, + .port_type = RIG_PORT_SERIAL, + .serial_rate_min = 4800, + .serial_rate_max = 115200, + .serial_data_bits = 8, + .serial_stop_bits = 1, + .serial_parity = RIG_PARITY_NONE, + .serial_handshake = RIG_HANDSHAKE_NONE, + .write_delay = 0, + .post_write_delay = 0, + .timeout = 200, + .retry = 3, + .preamp = {12, RIG_DBLST_END,}, + .attenuator = {12, RIG_DBLST_END,}, + .max_rit = kHz(9.99), + .max_xit = kHz(9.99), + .max_ifshift = Hz(0), + .targetable_vfo = RIG_TARGETABLE_FREQ, + .transceive = RIG_TRN_RIG, + + .rx_range_list1 = { + {kHz(100), Hz(59999999), SDRUNO_ALL_MODES, -1, -1, TS480_VFO}, + RIG_FRNG_END, + }, /*!< Receive frequency range list for ITU region 1 */ + .tx_range_list1 = { + {kHz(1810), kHz(1850), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, /* 100W class */ + {kHz(1810), kHz(1850), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, /* 25W class */ + {kHz(3500), kHz(3800), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(3500), kHz(3800), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(7), kHz(7200), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(7), kHz(7200), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(10100), kHz(10150), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(10100), kHz(10150), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(14), kHz(14350), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(14), kHz(14350), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(18068), kHz(18168), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(18068), kHz(18168), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(21), kHz(21450), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(21), kHz(21450), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(24890), kHz(24990), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(24890), kHz(24990), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(28), kHz(29700), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(28), kHz(29700), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(50), kHz(52000), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(50), kHz(52000), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + RIG_FRNG_END, + }, /*!< Transmit frequency range list for ITU region 1 */ + .rx_range_list2 = { + {kHz(100), Hz(59999999), TS480_ALL_MODES, -1, -1, TS480_VFO}, + RIG_FRNG_END, + }, /*!< Receive frequency range list for ITU region 2 */ + .tx_range_list2 = { + {kHz(1800), MHz(2) - 1, TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, /* 100W class */ + {kHz(1800), MHz(2) - 1, TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, /* 25W class */ + {kHz(3500), MHz(4) - 1, TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(3500), MHz(4) - 1, TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(5250), kHz(5450), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(5250), kHz(5450), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(7), kHz(7300), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(7), kHz(7300), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(10100), kHz(10150), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(10100), kHz(10150), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(14), kHz(14350), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(14), kHz(14350), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(18068), kHz(18168), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(18068), kHz(18168), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(21), kHz(21450), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(21), kHz(21450), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {kHz(24890), kHz(24990), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {kHz(24890), kHz(24990), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(28), kHz(29700), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(28), kHz(29700), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + {MHz(50), kHz(52000), TS480_OTHER_TX_MODES, 5000, 100000, TS480_VFO}, + {MHz(50), kHz(52000), TS480_AM_TX_MODES, 5000, 25000, TS480_VFO}, + RIG_FRNG_END, + }, /*!< Transmit frequency range list for ITU region 2 */ + .tuning_steps = { + {TS480_ALL_MODES, kHz(1)}, + {TS480_ALL_MODES, Hz(2500)}, + {TS480_ALL_MODES, kHz(5)}, + {TS480_ALL_MODES, Hz(6250)}, + {TS480_ALL_MODES, kHz(10)}, + {TS480_ALL_MODES, Hz(12500)}, + {TS480_ALL_MODES, kHz(15)}, + {TS480_ALL_MODES, kHz(20)}, + {TS480_ALL_MODES, kHz(25)}, + {TS480_ALL_MODES, kHz(30)}, + {TS480_ALL_MODES, kHz(100)}, + {TS480_ALL_MODES, kHz(500)}, + {TS480_ALL_MODES, MHz(1)}, + {TS480_ALL_MODES, 0}, /* any tuning step */ + RIG_TS_END, + }, + /* mode/filter list, remember: order matters! */ + .filters = { + {RIG_MODE_SSB, kHz(2.4)}, + {RIG_MODE_SSB, Hz(270)}, + {RIG_MODE_SSB, Hz(500)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(200)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(50)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(1000)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(80)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(100)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(150)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(300)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(400)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(500)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(600)}, + {RIG_MODE_CW | RIG_MODE_CWR, Hz(2000)}, + {RIG_MODE_RTTY | RIG_MODE_RTTYR, Hz(500)}, + {RIG_MODE_RTTY | RIG_MODE_RTTYR, Hz(250)}, + {RIG_MODE_RTTY | RIG_MODE_RTTYR, Hz(1000)}, + {RIG_MODE_RTTY | RIG_MODE_RTTYR, Hz(1500)}, + {RIG_MODE_AM, kHz(6)}, + {RIG_MODE_AM, kHz(2.4)}, + {RIG_MODE_FM, kHz(12)}, + {RIG_MODE_PKTUSB, kHz(4)}, + RIG_FLT_END, + }, + .vfo_ops = TS480_VFO_OPS, + .level_gran = { + [LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } }, + [LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 30 }, .step = { .i = 1 } }, + [LVL_KEYSPD] = {.min = {.i = 10}, .max = {.i = 60}, .step = {.i = 1}}, + [LVL_CWPITCH] = {.min = {.i = 400}, .max = {.i = 1000}, .step = {.i = 50}}, + [LVL_BKIN_DLYMS] = {.min = {.i = 0}, .max = {.i = 1000}, .step = {.i = 50}}, + [LVL_SLOPE_LOW] = {.min = {.i = 0}, .max = {.i = 2400}, .step = {.i = 10}}, + [LVL_SLOPE_HIGH] = {.min = {.i = 0}, .max = {.i = 5000}, .step = {.i = 10}}, + }, + .str_cal = TS480_STR_CAL, + .swr_cal = TS480_SWR_CAL, + + .ext_tokens = ts480_ext_tokens, + .extfuncs = ts480_ext_funcs, + .extlevels = ts480_ext_levels, + + .priv = (void *)& ts480_priv_caps, + .rig_init = ts480_init, + .rig_open = kenwood_open, + .rig_cleanup = kenwood_cleanup, + .set_freq = kenwood_set_freq, + .get_freq = kenwood_get_freq, + .set_rit = ts480_set_rit, + .get_rit = ts480_get_rit, + .set_xit = ts480_set_rit, + .get_xit = ts480_get_rit, + .set_mode = kenwood_set_mode, + .get_mode = kenwood_get_mode, + .set_vfo = kenwood_set_vfo, + .get_vfo = kenwood_get_vfo_if, + .set_split_vfo = kenwood_set_split_vfo, + .get_split_vfo = kenwood_get_split_vfo_if, + .get_ptt = kenwood_get_ptt, + .set_ptt = kenwood_set_ptt, + .get_dcd = kenwood_get_dcd, + .set_powerstat = kenwood_set_powerstat, + .get_powerstat = kenwood_get_powerstat, + .get_info = kenwood_ts480_get_info, + .reset = kenwood_reset, + .set_ant = kenwood_set_ant, + .get_ant = kenwood_get_ant, + .scan = kenwood_scan, /* not working, invalid arguments using rigctl; kenwood_scan does only support on/off and not tone and CTCSS scan */ + .has_set_level = TS480_LEVEL_ALL, + .has_get_level = TS480_LEVEL_ALL, + .set_level = kenwood_ts480_set_level, + .get_level = kenwood_ts480_get_level, + .set_ext_level = ts480_set_ext_level, + .get_ext_level = ts480_get_ext_level, + .has_get_func = TS480_FUNC_ALL, + .has_set_func = TS480_FUNC_ALL, + .set_func = ts480_set_func, + .get_func = ts480_get_func, + .set_ext_func = ts480_set_ext_func, + .get_ext_func = ts480_get_ext_func, + .send_morse = kenwood_send_morse, + .vfo_op = kenwood_vfo_op, + .hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS +}; + const struct confparams malachite_cfg_parms[] = { { commit a006636ee3a6c9e7d5ba5125b7e2aae2f0fcf23c Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Apr 25 15:27:13 2022 -0500 Fix flrig_cat_string diff --git a/rigs/dummy/flrig.c b/rigs/dummy/flrig.c index a7f70fff..99780411 100644 --- a/rigs/dummy/flrig.c +++ b/rigs/dummy/flrig.c @@ -2322,8 +2322,11 @@ static int flrig_get_ext_parm(RIG *rig, token_t token, value_t *val) HAMLIB_EXPORT(int) flrig_cat_string (RIG *rig, const char *arg) { int retval; + char cmd_arg[MAXARGLEN]; rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s\n", __func__, arg); - retval = flrig_transaction(rig, "rig.cat_string", (char*)arg, NULL, 0); + SNPRINTF(cmd_arg, sizeof(cmd_arg), + "<params><param><value>%s</value></param></params>", arg); + retval = flrig_transaction(rig, "rig.cat_string", cmd_arg, NULL, 0); return retval; } commit 5400d8ed01f417174f2fa3228aa7e71748bc9e6e Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Apr 25 12:54:06 2022 -0500 Fix send_command to detect FLRig correctly diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 95048b54..ba8261e6 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -4688,7 +4688,7 @@ declare_proto_rig(send_cmd) rig_debug(RIG_DEBUG_TRACE, "%s: backend_num=%d\n", __func__, backend_num); - if (backend_num == RIG_MODEL_FLRIG) + if (rig->caps->rig_model == RIG_MODEL_FLRIG) { // call flrig raw send function cat_string or cat_priority_string flrig_cat_string(rig, arg1); commit 7cc2550ee369b1537bd25dae18a52324dbecd96e Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Apr 25 12:47:27 2022 -0500 Export flrig_cat_string for DLL diff --git a/rigs/dummy/flrig.c b/rigs/dummy/flrig.c index dbc363c9..a7f70fff 100644 --- a/rigs/dummy/flrig.c +++ b/rigs/dummy/flrig.c @@ -2319,7 +2319,7 @@ static int flrig_get_ext_parm(RIG *rig, token_t token, value_t *val) RETURNFUNC(RIG_OK); } -int flrig_cat_string (RIG *rig, const char *arg) +HAMLIB_EXPORT(int) flrig_cat_string (RIG *rig, const char *arg) { int retval; rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s\n", __func__, arg); commit fbd78931925f5788985871330fb30e332297c817 Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Apr 25 12:42:27 2022 -0500 Add cat_string to the raw send command in rigctl for FLRig diff --git a/rigs/dummy/flrig.c b/rigs/dummy/flrig.c index b2fac1ed..dbc363c9 100644 --- a/rigs/dummy/flrig.c +++ b/rigs/dummy/flrig.c @@ -142,7 +142,7 @@ const struct rig_caps flrig_caps = RIG_MODEL(RIG_MODEL_FLRIG), .model_name = "FLRig", .mfg_name = "FLRig", - .version = "20220205.0", + .version = "20220425.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -2319,6 +2319,13 @@ static int flrig_get_ext_parm(RIG *rig, token_t token, value_t *val) RETURNFUNC(RIG_OK); } +int flrig_cat_string (RIG *rig, const char *arg) +{ + int retval; + rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s\n", __func__, arg); + retval = flrig_transaction(rig, "rig.cat_string", (char*)arg, NULL, 0); + return retval; +} #if 0 static int flrig_set_ext_parm(RIG *rig, setting_t parm, value_t val) diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index f0d64b14..95048b54 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -4665,6 +4665,8 @@ static int hasbinary(char *s, int len) * * 'w' and 'W' */ +extern int flrig_cat_string(RIG *rig, const char *arg); + declare_proto_rig(send_cmd) { int retval; @@ -4686,6 +4688,12 @@ declare_proto_rig(send_cmd) rig_debug(RIG_DEBUG_TRACE, "%s: backend_num=%d\n", __func__, backend_num); + if (backend_num == RIG_MODEL_FLRIG) + { + // call flrig raw send function cat_string or cat_priority_string + flrig_cat_string(rig, arg1); + } + // need to move the eom_buf to rig-specifc backends // we'll let KENWOOD backends use the ; char in the rigctl commands if (backend_num == RIG_KENWOOD || backend_num == RIG_YAESU) commit 5c61f559472f7f0048ae764e469280a21f0296e2 Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Apr 25 10:15:54 2022 -0500 Add RIG_PARM_AFIF to allow rigs like IC-7300/9700/705 to select the AF/IF audio output diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 5b402064..1a46eee3 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -1032,7 +1032,8 @@ enum rig_parm_e { RIG_PARM_TIME = (1 << 5), /*!< \c TIME -- hh:mm:ss, int in seconds from 00:00:00 */ RIG_PARM_BAT = (1 << 6), /*!< \c BAT -- battery level, float [0.0 ... 1.0] */ RIG_PARM_KEYLIGHT = (1 << 7), /*!< \c KEYLIGHT -- Button backlight, on/off */ - RIG_PARM_SCREENSAVER = (1 << 8) /*!< \c SCREENSAVER -- rig specific timeouts */ + RIG_PARM_SCREENSAVER = (1 << 8), /*!< \c SCREENSAVER -- rig specific timeouts */ + RIG_PARM_AFIF = (1 << 9) /*!< \c AFIF -- 0=AF audio, 1=IF audio -- see IC-7300/9700/705 */ }; /** diff --git a/rigs/icom/ic7300.c b/rigs/icom/ic7300.c index 80ba2749..0413fee0 100644 --- a/rigs/icom/ic7300.c +++ b/rigs/icom/ic7300.c @@ -223,6 +223,7 @@ struct cmdparams ic7300_extcmds[] = { {.s = RIG_PARM_BEEP}, CMD_PARAM_TYPE_PARM, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x23}, CMD_DAT_BOL, 1 }, { {.s = RIG_PARM_BACKLIGHT}, CMD_PARAM_TYPE_PARM, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x81}, CMD_DAT_LVL, 2 }, { {.s = RIG_PARM_TIME}, CMD_PARAM_TYPE_PARM, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x95}, CMD_DAT_TIM, 2 }, + { {.s = RIG_PARM_AFIF}, CMD_PARAM_TYPE_PARM, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x59}, CMD_DAT_BOL, 1 }, { {.s = RIG_LEVEL_VOXDELAY}, CMD_PARAM_TYPE_LEVEL, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x59}, CMD_DAT_INT, 1 }, { {.s = RIG_FUNC_TRANSCEIVE}, CMD_PARAM_TYPE_FUNC, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x71}, CMD_DAT_BOL, 1 }, { {.s = RIG_LEVEL_SPECTRUM_AVG}, CMD_PARAM_TYPE_LEVEL, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x02}, CMD_DAT_INT, 1 }, @@ -235,6 +236,7 @@ struct cmdparams ic9700_extcmds[] = { {.s = RIG_PARM_BACKLIGHT}, CMD_PARAM_TYPE_PARM, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x52}, CMD_DAT_LVL, 2 }, { {.s = RIG_PARM_SCREENSAVER}, CMD_PARAM_TYPE_PARM, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x67}, CMD_DAT_INT, 1 }, { {.s = RIG_PARM_TIME}, CMD_PARAM_TYPE_PARM, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x80}, CMD_DAT_TIM, 2 }, + { {.s = RIG_PARM_AFIF}, CMD_PARAM_TYPE_PARM, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x00}, CMD_DAT_BOL, 1 }, { {.s = RIG_LEVEL_VOXDELAY}, CMD_PARAM_TYPE_LEVEL, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x03, 0x30}, CMD_DAT_INT, 1 }, { {.s = RIG_FUNC_TRANSCEIVE}, CMD_PARAM_TYPE_FUNC, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x27}, CMD_DAT_BOL, 1 }, { {.s = RIG_LEVEL_SPECTRUM_AVG}, CMD_PARAM_TYPE_LEVEL, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x92}, CMD_DAT_INT, 1 }, @@ -247,6 +249,7 @@ struct cmdparams ic705_extcmds[] = { {.s = RIG_PARM_BACKLIGHT}, CMD_PARAM_TYPE_PARM, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x36}, CMD_DAT_LVL, 2 }, { {.s = RIG_PARM_SCREENSAVER}, CMD_PARAM_TYPE_PARM, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x38}, CMD_DAT_INT, 1 }, { {.s = RIG_PARM_TIME}, CMD_PARAM_TYPE_PARM, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x66}, CMD_DAT_TIM, 2 }, + { {.s = RIG_PARM_AFIF}, CMD_PARAM_TYPE_PARM, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x09}, CMD_DAT_BOL, 1 }, { {.s = RIG_LEVEL_VOXDELAY}, CMD_PARAM_TYPE_LEVEL, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x03, 0x59}, CMD_DAT_INT, 1 }, { {.s = RIG_FUNC_TRANSCEIVE}, CMD_PARAM_TYPE_FUNC, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x31}, CMD_DAT_BOL, 1 }, { {.s = RIG_LEVEL_SPECTRUM_AVG}, CMD_PARAM_TYPE_LEVEL, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x78}, CMD_DAT_INT, 1 }, @@ -541,7 +544,7 @@ const struct rig_caps ic7300_caps = RIG_MODEL(RIG_MODEL_IC7300), .model_name = "IC-7300", .mfg_name = "Icom", - .version = BACKEND_VER ".6", + .version = BACKEND_VER ".7", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -776,7 +779,7 @@ const struct rig_caps ic9700_caps = RIG_MODEL(RIG_MODEL_IC9700), .model_name = "IC-9700", .mfg_name = "Icom", - .version = BACKEND_VER ".6", + .version = BACKEND_VER ".7", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -1087,7 +1090,7 @@ const struct rig_caps ic705_caps = RIG_MODEL(RIG_MODEL_IC705), .model_name = "IC-705", .mfg_name = "Icom", - .version = BACKEND_VER ".4", + .version = BACKEND_VER ".5", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, commit 382282ba204fcf1f23274254a7c5aeae8ee64d60 Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Apr 25 08:18:06 2022 -0500 Fix rigctl option -B diff --git a/tests/rigctlcom.c b/tests/rigctlcom.c index 50655cde..d5c89281 100644 --- a/tests/rigctlcom.c +++ b/tests/rigctlcom.c @@ -254,7 +254,7 @@ int main(int argc, char *argv[]) version(); exit(0); - case 'A': + case 'B': mapa2b = 1; break; commit b55668e2faf750a73c082ab8b619f37a67ddb028 Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Apr 25 08:09:51 2022 -0500 Update usage and no arg for -B option diff --git a/tests/rigctlcom.c b/tests/rigctlcom.c index ce0cdb38..50655cde 100644 --- a/tests/rigctlcom.c +++ b/tests/rigctlcom.c @@ -93,7 +93,7 @@ #define SHORT_OPTIONS "B:m:r:R:p:d:P:D:s:S:c:C:lLuvhVZ" static struct option long_options[] = { - {"mapa2b", 1, 0, 'B'}, + {"mapa2b", 0, 0, 'B'}, {"model", 1, 0, 'm'}, {"rig-file", 1, 0, 'r'}, {"rig-file2", 1, 0, 'R'}, @@ -1658,6 +1658,7 @@ void usage() " -S, --serial-speed2=BAUD set serial speed of the virtual com port [default=115200]\n" " -c, --civaddr=ID set CI-V address, decimal (for Icom rigs only)\n" " -C, --set-conf=PARM=VAL set config parameters\n" + " -B, --mapa2b maps set_freq on VFOA to VFOB -- useful for CW Skimmer\n" " -L, --show-conf list all config parameters\n" " -l, --list list all model numbers and exit\n" " -u, --dump-caps dump capabilities and exit\n" commit 6bd9cdfda090d496c1486a706f6d6ddf7a43fa1e Author: Mike Black W9MDB <mdb...@ya...> Date: Sun Apr 24 14:46:30 2022 -0500 Update rigctlcom.1 man page to add new -B --mapa2b option diff --git a/doc/man1/rigctlcom.1 b/doc/man1/rigctlcom.1 index 7d63037d..3e5d3992 100644 --- a/doc/man1/rigctlcom.1 +++ b/doc/man1/rigctlcom.1 @@ -28,6 +28,7 @@ rigctlcom \- COM port passthru as TS-2000 emulator to your rig .OP \-S baud .OP \-c id .OP \-C parm=val +.OP \-B .RB [ \-v [ \-Z ]] .YS . @@ -244,7 +245,6 @@ e.g. \(lqrigctl -l | more\(rq. . .TP .BR \-n ", " \-\-no\-restore\-ai -On exit .B rigctl restores the state of auto information (AI) on the controlled rig. .IP @@ -253,6 +253,12 @@ If this is not desired, for example if you are using to turn AI mode on or off, pass this option. . .TP +.BR \-B ", " \-\-mapa2b +Maps set_freq on VFOA to VFOB instead. +This allows using CW skimmer with the rig in split mode and clicking on a frequency in CW skimmer +will set VFOB to the transmit frequency. +. +.TP .BR \-v ", " \-\-verbose Set verbose mode, cumulative (see .B DIAGNOSTICS commit d412914f96526c6420d28af8f9f9725b30ae2e14 Author: Mike Black W9MDB <mdb...@ya...> Date: Sun Apr 24 14:22:43 2022 -0500 Update NEWS diff --git a/NEWS b/NEWS index 59a13680..78a0aa01 100644 --- a/NEWS +++ b/NEWS @@ -10,9 +10,16 @@ Please send Hamlib bug reports to ham...@li... Version 5.x -- future * rig_get_conf deprecated and replaced by rig_get_conf2 * rot_get_conf deprecated and replaced by rot_get_conf2 + * Change FT1000MP Mark V model names to align with FT1000MP Version 4.5 * 2022-04-XX + * Add -B/--mapa2b to rigctlcom + Allows rigctlcom to map set_freq on VFOA to VFOB instead + This will allow CW Skimmer to work with some rigs (e.g. IC7300) using FM + mode on VFOA and CW mode on VFOB and split mode transmit on VFOB. + Clicking on CW Skimmer will change VFOB instead of VFOA to allow working + dxpeditions where the fox is staying on frequency * Add password capability to rigctld via -A switch. rigctld -A will produce a consistent shared key for any specific password that can used in \password and rig_set_password TBD The shared key can also be placed in .hamlib_settings commit 6497048f288092a86edb7b9cbcd25aea9cf5fec4 Author: Mike Black W9MDB <mdb...@ya...> Date: Sun Apr 24 14:19:20 2022 -0500 Allow rigctlcom to map set_freq on VFOA to VFOB instead This will allow CW Skimmer to work with some rigs (e.g. IC7300) using FM mode on VFOA and CW mode on VFOB and split mode transmit on VFOB. Clicking on CW Skimmer will change VFOB instead of VFOA to allow working dxpeditions where the fox is staying on frequency diff --git a/tests/rigctlcom.c b/tests/rigctlcom.c index 0c3f38ce..ce0cdb38 100644 --- a/tests/rigctlcom.c +++ b/tests/rigctlcom.c @@ -90,9 +90,10 @@ * NB: do NOT use -W since it's reserved by POSIX. * TODO: add an option to read from a file */ -#define SHORT_OPTIONS "m:r:R:p:d:P:D:s:S:c:C:lLuvhVZ" +#define SHORT_OPTIONS "B:m:r:R:p:d:P:D:s:S:c:C:lLuvhVZ" static struct option long_options[] = { + {"mapa2b", 1, 0, 'B'}, {"model", 1, 0, 'm'}, {"rig-file", 1, 0, 'r'}, {"rig-file2", 1, 0, 'R'}, @@ -120,6 +121,11 @@ static int handle_ts2000(void *arg); static RIG *my_rig; /* handle to rig */ static hamlib_port_t my_com; /* handle to virtual COM port */ static int verbose; +/* CW Skimmer can only set VFOA */ +/* IC7300 for example can run VFOA on FM and VFOB on CW */ +/* So -A/--mapa2b changes set_freq on VFOA to VFOB */ +/* This allows working CW Skimmer in split mode and transmit on VFOB */ +static int mapa2b; /* maps set_freq on VFOA to VFOB instead */ #ifdef HAVE_SIG_ATOMIC_T static sig_atomic_t volatile ctrl_c; @@ -219,7 +225,7 @@ int main(int argc, char *argv[]) char conf_parms[MAXCONFLEN] = ""; int status; - printf("rigctlcom Version 1.2\n"); + printf("rigctlcom Version 1.3\n"); while (1) { @@ -248,6 +254,10 @@ int main(int argc, char *argv[]) version(); exit(0); + case 'A': + mapa2b = 1; + break; + case 'm': if (!optarg) { @@ -1512,9 +1522,11 @@ static int handle_ts2000(void *arg) else if (strncmp(arg, "FA0", 3) == 0) { freq_t freq; + vfo_t vfo = RIG_VFO_A; + if (mapa2b) vfo = RIG_VFO_B; sscanf((char *)arg + 2, "%"SCNfreq, &freq); - return rig_set_freq(my_rig, vfo_fixup(my_rig, RIG_VFO_A, + return rig_set_freq(my_rig, vfo_fixup(my_rig, vfo, my_rig->state.cache.split), freq); } else if (strncmp(arg, "FB0", 3) == 0) commit 07d2602950509c01016d0709d9534af0b3235dc3 Author: Mike Black W9MDB <mdb...@ya...> Date: Fri Apr 22 16:39:42 2022 -0500 Update documentation in ft1000mp.c https://github.com/Hamlib/Hamlib/issues/1014 diff --git a/rigs/yaesu/ft1000mp.c b/rigs/yaesu/ft1000mp.c index 4f432993..df0cecd4 100644 --- a/rigs/yaesu/ft1000mp.c +++ b/rigs/yaesu/ft1000mp.c @@ -54,50 +54,50 @@ enum ft1000mp_native_cmd_e { FT1000MP_NATIVE_SPLIT_OFF = 0, - FT1000MP_NATIVE_SPLIT_ON, - FT1000MP_NATIVE_RECALL_MEM, - FT1000MP_NATIVE_VFO_TO_MEM, - FT1000MP_NATIVE_VFO_A, - FT1000MP_NATIVE_VFO_B, - FT1000MP_NATIVE_M_TO_VFO, - FT1000MP_NATIVE_RIT_ON, - FT1000MP_NATIVE_RIT_OFF, - FT1000MP_NATIVE_XIT_ON, - FT1000MP_NATIVE_XIT_OFF, - FT1000MP_NATIVE_RXIT_SET, - FT1000MP_NATIVE_FREQA_SET, - FT1000MP_NATIVE_FREQB_SET, - FT1000MP_NATIVE_MODE_SET_LSB, - FT1000MP_NATIVE_MODE_SET_USB, - FT1000MP_NATIVE_MODE_SET_CW, - FT1000MP_NATIVE_MODE_SET_CWR, - FT1000MP_NATIVE_MODE_SET_AM, - FT1000MP_NATIVE_MODE_SET_AMS, - FT1000MP_NATIVE_MODE_SET_FM, - FT1000MP_NATIVE_MODE_SET_FMW, - FT1000MP_NATIVE_MODE_SET_RTTY_LSB, - FT1000MP_NATIVE_MODE_SET_RTTY_USB, - FT1000MP_NATIVE_MODE_SET_DATA_LSB, - FT1000MP_NATIVE_MODE_SET_DATA_FM, - FT1000MP_NATIVE_MODE_SET_LSB_B, - FT1000MP_NATIVE_MODE_SET_USB_B, - FT1000MP_NATIVE_MODE_SET_CW_B, - FT1000MP_NATIVE_MODE_SET_CWR_B, - FT1000MP_NATIVE_MODE_SET_AM_B, - FT1000MP_NATIVE_MODE_SET_AMS_B, - FT1000MP_NATIVE_MODE_SET_FM_B, - FT1000MP_NATIVE_MODE_SET_FMW_B, - FT1000MP_NATIVE_MODE_SET_RTTY_LSB_B, - FT1000MP_NATIVE_MODE_SET_RTTY_USB_B, - FT1000MP_NATIVE_MODE_SET_DATA_LSB_B, - FT1000MP_NATIVE_MODE_SET_DATA_FM_B, - FT1000MP_NATIVE_PACING, - FT1000MP_NATIVE_PTT_OFF, - FT1000MP_NATIVE_PTT_ON, - FT1000MP_NATIVE_VFO_UPDATE, - FT1000MP_NATIVE_CURR_VFO_UPDATE, - FT1000MP_NATIVE_UPDATE, - FT1000MP_NATIVE_AB, + FT1000MP_NATIVE_SPLIT_ON, // 1 + FT1000MP_NATIVE_RECALL_MEM, // 2 + FT1000MP_NATIVE_VFO_TO_MEM, // 3 + FT1000MP_NATIVE_VFO_A, // 4 + FT1000MP_NATIVE_VFO_B, // 5 + FT1000MP_NATIVE_M_TO_VFO, // 6 + FT1000MP_NATIVE_RIT_ON, // 7 + FT1000MP_NATIVE_RIT_OFF, // 8 + FT1000MP_NATIVE_XIT_ON, // 9 + FT1000MP_NATIVE_XIT_OFF, // 10 + FT1000MP_NATIVE_RXIT_SET, // 11 + FT1000MP_NATIVE_FREQA_SET, // 12 + FT1000MP_NATIVE_FREQB_SET, // 13 + FT1000MP_NATIVE_MODE_SET_LSB, // 14 + FT1000MP_NATIVE_MODE_SET_USB, // 15 + FT1000MP_NATIVE_MODE_SET_CW, // 16 + FT1000MP_NATIVE_MODE_SET_CWR, // 17 + FT1000MP_NATIVE_MODE_SET_AM, // 18 + FT1000MP_NATIVE_MODE_SET_AMS, // 19 + FT1000MP_NATIVE_MODE_SET_FM, // 20 + FT1000MP_NATIVE_MODE_SET_FMW, // 21 + FT1000MP_NATIVE_MODE_SET_RTTY_LSB, // 22 + FT1000MP_NATIVE_MODE_SET_RTTY_USB, // 23 + FT1000MP_NATIVE_MODE_SET_DATA_LSB, // 24 + FT1000MP_NATIVE_MODE_SET_DATA_FM, // 25 + FT1000MP_NATIVE_MODE_SET_LSB_B, // 26 + FT1000MP_NATIVE_MODE_SET_USB_B, // 27 + FT1000MP_NATIVE_MODE_SET_CW_B, // 28 + FT1000MP_NATIVE_MODE_SET_CWR_B, // 29 + FT1000MP_NATIVE_MODE_SET_AM_B, // 30 + FT1000MP_NATIVE_MODE_SET_AMS_B, // 31 + FT1000MP_NATIVE_MODE_SET_FM_B, // 32 + FT1000MP_NATIVE_MODE_SET_FMW_B, // 33 + FT1000MP_NATIVE_MODE_SET_RTTY_LSB_B, // 34 + FT1000MP_NATIVE_MODE_SET_RTTY_USB_B, // 35 + FT1000MP_NATIVE_MODE_SET_DATA_LSB_B, // 36 + FT1000MP_NATIVE_MODE_SET_DATA_FM_B, // 37 + FT1000MP_NATIVE_PACING, // 38 + FT1000MP_NATIVE_PTT_OFF, // 39 + FT1000MP_NATIVE_PTT_ON, // 40 + FT1000MP_NATIVE_VFO_UPDATE, // 41 + FT1000MP_NATIVE_CURR_VFO_UPDATE, // 42 + FT1000MP_NATIVE_UPDATE, // 43 + FT1000MP_NATIVE_AB, // 44 FT1000MP_NATIVE_SIZE /* end marker, value indicates number of */ /* native cmd entries */ @@ -166,62 +166,62 @@ static int ft1000mp_send_priv_cmd(RIG *rig, unsigned char ci); static const yaesu_cmd_set_t ncmd[] = { - { 1, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* split = off */ - { 1, { 0x00, 0x00, 0x00, 0x01, 0x01 } }, /* split = on */ - { 0, { 0x00, 0x00, 0x00, 0x00, 0x02 } }, /* recall memory */ - { 0, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* memory operations */ - { 1, { 0x00, 0x00, 0x00, 0x00, 0x05 } }, /* select vfo A */ - { 1, { 0x00, 0x00, 0x00, 0x01, 0x05 } }, /* select vfo B */ - { 0, { 0x00, 0x00, 0x00, 0x00, 0x06 } }, /* copy memory data to vfo A */ - { 1, { 0x00, 0x00, 0x00, 0x01, 0x09 } }, /* RX clarifier on */ - { 1, { 0x00, 0x00, 0x00, 0x00, 0x09 } }, /* RX clarifier off */ - { 1, { 0x00, 0x00, 0x00, 0x81, 0x09 } }, /* TX clarifier on */ - { 1, { 0x00, 0x00, 0x00, 0x80, 0x09 } }, /* TX clarifier off */ - { 0, { 0x00, 0x00, 0x00, 0xFF, 0x09 } }, /* set clarifier offset */ - - { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set VFOA freq */ - { 0, { 0x00, 0x00, 0x00, 0x00, 0x8a } }, /* set VFOB freq */ - - { 1, { 0x00, 0x00, 0x00, 0x00, 0x0c } }, /* vfo A mode set LSB */ - { 1, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* vfo A mode set USB */ - { 1, { 0x00, 0x00, 0x00, 0x02, 0x0c } }, /* vfo A mode set CW-USB */ - { 1, { 0x00, 0x00, 0x00, 0x03, 0x0c } }, /* vfo A mode set CW-LSB */ - { 1, { 0x00, 0x00, 0x00, 0x04, 0x0c } }, /* vfo A mode set AM */ - { 1, { 0x00, 0x00, 0x00, 0x05, 0x0c } }, /* vfo A mode set AM sync */ - { 1, { 0x00, 0x00, 0x00, 0x06, 0x0c } }, /* vfo A mode set FM */ - { 1, { 0x00, 0x00, 0x00, 0x07, 0x0c } }, /* vfo A mode set FMW? */ - { 1, { 0x00, 0x00, 0x00, 0x08, 0x0c } }, /* vfo A mode set RTTY-LSB */ - { 1, { 0x00, 0x00, 0x00, 0x09, 0x0c } }, /* vfo A mode set RTTY-USB */ - { 1, { 0x00, 0x00, 0x00, 0x0a, 0x0c } }, /* vfo A mode set DATA-LSB */ - { 1, { 0x00, 0x00, 0x00, 0x0b, 0x0c } }, /* vfo A mode set DATA-FM */ - - { 1, { 0x00, 0x00, 0x00, 0x80, 0x0c } }, /* vfo B mode set LSB */ - { 1, { 0x00, 0x00, 0x00, 0x81, 0x0c } }, /* vfo B mode set USB */ - { 1, { 0x00, 0x00, 0x00, 0x82, 0x0c } }, /* vfo B mode set CW-USB */ - { 1, { 0x00, 0x00, 0x00, 0x83, 0x0c } }, /* vfo B mode set CW-LSB */ - { 1, { 0x00, 0x00, 0x00, 0x84, 0x0c } }, /* vfo B mode set AM */ - { 1, { 0x00, 0x00, 0x00, 0x85, 0x0c } }, /* vfo B mode set AM */ - { 1, { 0x00, 0x00, 0x00, 0x86, 0x0c } }, /* vfo B mode set FM */ - { 1, { 0x00, 0x00, 0x00, 0x87, 0x0c } }, /* vfo B mode set FMN */ - { 1, { 0x00, 0x00, 0x00, 0x88, 0x0c } }, /* vfo B mode set DATA-LSB */ - { 1, { 0x00, 0x00, 0x00, 0x89, 0x0c } }, /* vfo B mode set DATA-LSB */ - { 1, { 0x00, 0x00, 0x00, 0x8a, 0x0c } }, /* vfo B mode set DATA-USB */ - { 1, { 0x00, 0x00, 0x00, 0x8b, 0x0c } }, /* vfo B mode set DATA-FM */ - - { 0, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* update interval/pacing */ - { 1, { 0x00, 0x00, 0x00, 0x00, 0x0F } }, /* PTT OFF */ - { 1, { 0x00, 0x00, 0x00, 0x01, 0x0F } }, /* PTT ON */ - { 1, { 0x00, 0x00, 0x00, 0x03, 0x10 } }, /* status update VFO A & B update */ - { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } }, /* status update operating data */ + { 1, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* 0 split = off */ + { 1, { 0x00, 0x00, 0x00, 0x01, 0x01 } }, /* 1 split = on */ + { 0, { 0x00, 0x00, 0x00, 0x00, 0x02 } }, /* 2 recall memory */ + { 0, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* 3 memory operations */ + { 1, { 0x00, 0x00, 0x00, 0x00, 0x05 } }, /* 4 select vfo A */ + { 1, { 0x00, 0x00, 0x00, 0x01, 0x05 } }, /* 5 select vfo B */ + { 0, { 0x00, 0x00, 0x00, 0x00, 0x06 } }, /* 6 copy memory data to vfo A */ + { 1, { 0x00, 0x00, 0x00, 0x01, 0x09 } }, /* 7 RX clarifier on */ + { 1, { 0x00, 0x00, 0x00, 0x00, 0x09 } }, /* 8 RX clarifier off */ + { 1, { 0x00, 0x00, 0x00, 0x81, 0x09 } }, /* 9 TX clarifier on */ + { 1, { 0x00, 0x00, 0x00, 0x80, 0x09 } }, /* 10 TX clarifier off */ + { 0, { 0x00, 0x00, 0x00, 0xFF, 0x09 } }, /* 11 set clarifier offset */ + + { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* 12 set VFOA freq */ + { 0, { 0x00, 0x00, 0x00, 0x00, 0x8a } }, /* 13 set VFOB freq */ + + { 1, { 0x00, 0x00, 0x00, 0x00, 0x0c } }, /* 14 vfo A mode set LSB */ + { 1, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* 15 vfo A mode set USB */ + { 1, { 0x00, 0x00, 0x00, 0x02, 0x0c } }, /* 16 vfo A mode set CW-USB */ + { 1, { 0x00, 0x00, 0x00, 0x03, 0x0c } }, /* 17 vfo A mode set CW-LSB */ + { 1, { 0x00, 0x00, 0x00, 0x04, 0x0c } }, /* 18 vfo A mode set AM */ + { 1, { 0x00, 0x00, 0x00, 0x05, 0x0c } }, /* 19 vfo A mode set AM sync */ + { 1, { 0x00, 0x00, 0x00, 0x06, 0x0c } }, /* 20 vfo A mode set FM */ + { 1, { 0x00, 0x00, 0x00, 0x07, 0x0c } }, /* 21 vfo A mode set FMW? */ + { 1, { 0x00, 0x00, 0x00, 0x08, 0x0c } }, /* 22 vfo A mode set RTTY-LSB */ + { 1, { 0x00, 0x00, 0x00, 0x09, 0x0c } }, /* 23 vfo A mode set RTTY-USB */ + { 1, { 0x00, 0x00, 0x00, 0x0a, 0x0c } }, /* 24 vfo A mode set DATA-LSB */ + { 1, { 0x00, 0x00, 0x00, 0x0b, 0x0c } }, /* 25 vfo A mode set DATA-FM */ + + { 1, { 0x00, 0x00, 0x00, 0x80, 0x0c } }, /* 26 vfo B mode set LSB */ + { 1, { 0x00, 0x00, 0x00, 0x81, 0x0c } }, /* 27 vfo B mode set USB */ + { 1, { 0x00, 0x00, 0x00, 0x82, 0x0c } }, /* 28 vfo B mode set CW-USB */ + { 1, { 0x00, 0x00, 0x00, 0x83, 0x0c } }, /* 29 vfo B mode set CW-LSB */ + { 1, { 0x00, 0x00, 0x00, 0x84, 0x0c } }, /* 30 vfo B mode set AM */ + { 1, { 0x00, 0x00, 0x00, 0x85, 0x0c } }, /* 31 vfo B mode set AM */ + { 1, { 0x00, 0x00, 0x00, 0x86, 0x0c } }, /* 32 vfo B mode set FM */ + { 1, { 0x00, 0x00, 0x00, 0x87, 0x0c } }, /* 33 vfo B mode set FMN */ + { 1, { 0x00, 0x00, 0x00, 0x88, 0x0c } }, /* 34 vfo B mode set DATA-LSB */ + { 1, { 0x00, 0x00, 0x00, 0x89, 0x0c } }, /* 35 vfo B mode set DATA-LSB */ + { 1, { 0x00, 0x00, 0x00, 0x8a, 0x0c } }, /* 36 vfo B mode set DATA-USB */ + { 1, { 0x00, 0x00, 0x00, 0x8b, 0x0c } }, /* 37 vfo B mode set DATA-FM */ + + { 0, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* 38 update interval/pacing */ + { 1, { 0x00, 0x00, 0x00, 0x00, 0x0F } }, /* 39 PTT OFF */ + { 1, { 0x00, 0x00, 0x00, 0x01, 0x0F } }, /* 40 PTT ON */ + { 1, { 0x00, 0x00, 0x00, 0x03, 0x10 } }, /* 41 status update VFO A & B update */ + { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } }, /* 42 status update operating data */ // We only ask for the 1st 3 status bytes // The MARK-V was not recognizing the 6-byte request // This should be all we need as we're only getting the VFO - { 1, { 0x00, 0x00, 0x00, 0x00, 0xFA } }, /* Read status flags */ - /* { 0, { 0x00, 0x00, 0x00, 0x00, 0x70 } }, */ /* keyer commands */ - /* { 1, { 0x00, 0x00, 0x00, 0x00, 0x81 } }, */ /* tuner off */ - /* { 1, { 0x00, 0x00, 0x00, 0x01, 0x81 } }, */ /* tuner on */ - /* { 1, { 0x00, 0x00, 0x00, 0x00, 0x82 } }, */ /* tuner start*/ - { 1, { 0x00, 0x00, 0x00, 0x00, 0x85 } }, /* A>B */ + { 1, { 0x00, 0x00, 0x00, 0x00, 0xFA } }, /* 43 Read status flags */ + { 1, { 0x00, 0x00, 0x00, 0x00, 0x85 } }, /* 44 A>B */ + /* { 0, { 0x00, 0x00, 0x00, 0x00, 0x70 } }, */ /* 45 keyer commands */ + /* { 1, { 0x00, 0x00, 0x00, 0x00, 0x81 } }, */ /* 46 tuner off */ + /* { 1, { 0x00, 0x00, 0x00, 0x01, 0x81 } }, */ /* 47 tuner on */ + /* { 1, { 0x00, 0x00, 0x00, 0x00, 0x82 } }, */ /* 48 tuner start*/ }; commit 871dcbe8a3497f91b8db92531a274fb196b36e29 Author: Mike Black W9MDB <mdb...@ya...> Date: Thu Apr 21 17:08:06 2022 -0500 Add split functions to FT1000MP models ft1000mp_set_split_mode ft1000mp_get_split_mode ft100mp_get_split_freq_mode https://github.com/Hamlib/Hamlib/issues/1014 diff --git a/rigs/yaesu/ft1000mp.c b/rigs/yaesu/ft1000mp.c index 03f5b1f1..4f432993 100644 --- a/rigs/yaesu/ft1000mp.c +++ b/rigs/yaesu/ft1000mp.c @@ -115,8 +115,12 @@ static int ft1000mp_open(RIG *rig); static int ft1000mp_set_freq(RIG *rig, vfo_t vfo, freq_t freq); static int ft1000mp_get_freq(RIG *rig, vfo_t vfo, freq_t *freq); static int ft1000mp_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq); +static int ft1000mp_set_split_mode(RIG *rig, vfo_t vfo, rmode_t tx_mode, pbwidth_t tx_width); +static int ft1000mp_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, pbwidth_t *tx_width); static int ft1000mp_set_split_freq_mode(RIG *rig, vfo_t vfo, freq_t freq, rmode_t mode, pbwidth_t width); +static int ft1000mp_get_split_freq_mode(RIG *rig, vfo_t vfo, freq_t *freq, + rmode_t *mode, pbwidth_t *width); static int ft1000mp_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq); static int ft1000mp_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo); @@ -312,7 +316,7 @@ const struct rig_caps ft1000mp_caps = RIG_MODEL(RIG_MODEL_FT1000MP), .model_name = "FT-1000MP", .mfg_name = "Yaesu", - .version = "20211113.0", + .version = "20220421.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -424,7 +428,10 @@ const struct rig_caps ft1000mp_caps = .set_split_freq = ft1000mp_set_split_freq, .get_split_freq = ft1000mp_get_split_freq, + .set_split_mode = ft1000mp_set_split_mode, + .get_split_mode = ft1000mp_get_split_mode, .set_split_freq_mode = ft1000mp_set_split_freq_mode, + .get_split_freq_mode = ft1000mp_get_split_freq_mode, .set_split_vfo = ft1000mp_set_split_vfo, .get_split_vfo = ft1000mp_get_split_vfo, @@ -448,7 +455,7 @@ const struct rig_caps ft1000mpmkv_caps = RIG_MODEL(RIG_MODEL_FT1000MPMKV), .model_name = "MARK-V FT-1000MP", .mfg_name = "Yaesu", - .version = "20211014.0", + .version = "20220421.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -560,7 +567,10 @@ const struct rig_caps ft1000mpmkv_caps = .set_split_freq = ft1000mp_set_split_freq, .get_split_freq = ft1000mp_get_split_freq, + .set_split_mode = ft1000mp_set_split_mode, + .get_split_mode = ft1000mp_get_split_mode, .set_split_freq_mode = ft1000mp_set_split_freq_mode, + .get_split_freq_mode = ft1000mp_get_split_freq_mode, .set_split_vfo = ft1000mp_set_split_vfo, .get_split_vfo = ft1000mp_get_split_vfo, @@ -584,7 +594,7 @@ const struct rig_caps ft1000mpmkvfld_caps = RIG_MODEL(RIG_MODEL_FT1000MPMKVFLD), .model_name = "MARK-V Field FT-1000MP", .mfg_name = "Yaesu", - .version = "20211014.0", + .version = "20220421.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -696,7 +706,10 @@ const struct rig_caps ft1000mpmkvfld_caps = .set_split_freq = ft1000mp_set_split_freq, .get_split_freq = ft1000mp_get_split_freq, + .set_split_mode = ft1000mp_set_split_mode, + .get_split_mode = ft1000mp_get_split_mode, .set_split_freq_mode = ft1000mp_set_split_freq_mode, + .get_split_freq_mode = ft1000mp_get_split_freq_mode, .set_split_vfo = ft1000mp_set_split_vfo, .get_split_vfo = ft1000mp_get_split_vfo, @@ -1781,11 +1794,56 @@ static int ft1000mp_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq) RETURNFUNC(ft1000mp_set_freq(rig, RIG_VFO_B, tx_freq)); } +static int ft1000mp_set_split_mode(RIG *rig, vfo_t vfo, rmode_t tx_mode, pbwidth_t tx_width) +{ + int retval; + retval = rig_set_mode(rig, RIG_VFO_B, tx_mode, tx_width); + RETURNFUNC(retval); +} + +static int ft1000mp_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, pbwidth_t *tx_width) +{ + int retval; + retval = rig_get_mode(rig, RIG_VFO_B, tx_mode, tx_width); + RETURNFUNC(retval); +} + static int ft1000mp_set_split_freq_mode(RIG *rig, vfo_t vfo, freq_t freq, rmode_t mode, pbwidth_t width) { - // don't believe mode on VFOB can be different than mode on VFOA - return ft1000mp_set_split_freq(rig, vfo, freq); + int retval; + retval = rig_set_mode(rig, RIG_VFO_B, mode, width); + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: rig_set_mode failed: %s\n", __func__, rigerror(retval)); + RETURNFUNC(retval); + } + retval = ft1000mp_set_split_freq(rig, vfo, freq); + if (retval == RIG_OK) + { + rig->state.cache.freqMainB = freq; + rig->state.cache.modeMainB = mode; + } + RETURNFUNC(retval); +} + +static int ft1000mp_get_split_freq_mode(RIG *rig, vfo_t vfo, freq_t *freq, + rmode_t *mode, pbwidth_t *width) +{ + int retval; + retval = rig_get_mode(rig, RIG_VFO_B, mode, width); + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: rig_set_mode failed: %s\n", __func__, rigerror(retval)); + RETURNFUNC(retval); + } + retval = ft1000mp_get_split_freq(rig, vfo, freq); + if (retval == RIG_OK) + { + rig->state.cache.freqMainB = *freq; + rig->state.cache.modeMainB = *mode; + } + RETURNFUNC(retval); } static int ft1000mp_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq) commit 3dd9277e7902f8647b6ae6798d01a8b939403d6b Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Apr 19 23:08:46 2022 -0500 Reduce debug in misc.c diff --git a/src/misc.c b/src/misc.c index d8d99768..b8d94def 100644 --- a/src/misc.c +++ b/src/misc.c @@ -2451,7 +2451,7 @@ long long HAMLIB_API rig_get_caps_int(rig_model_t rig_model, enum rig_caps_int_e rig_caps) { const struct rig_caps *caps = rig_get_caps(rig_model); - rig_debug(RIG_DEBUG_TRACE, "%s: getting rig_caps=%u\n", __func__, rig_caps); + //rig_debug(RIG_DEBUG_TRACE, "%s: getting rig_caps=%u\n", __func__, rig_caps); switch (rig_caps) { commit 2f29f326ab00492e79dd42631ee3d94aca881565 Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Apr 19 23:06:03 2022 -0500 Ensure cache is update for split https://github.com/Hamlib/Hamlib/issues/1012 diff --git a/src/rig.c b/src/rig.c index c556c26d..a8a908a7 100644 --- a/src/rig.c +++ b/src/rig.c @@ -4524,6 +4524,8 @@ int HAMLIB_API rig_set_split_vfo(RIG *rig, case RIG_VFO_B: rx_vfo = split == 1 ? RIG_VFO_A : RIG_VFO_B; break; } + rig->state.cache.split = split; + rig->state.cache.split_vfo = tx_vfo; rx_vfo = vfo_fixup(rig, rx_vfo, split); tx_vfo = vfo_fixup(rig, tx_vfo, split); rig->state.rx_vfo = rx_vfo; commit 0405498b0725c54652fcd485ecaba95d0fd89d92 Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Apr 19 18:10:41 2022 -0500 Fix FT-817/818 set_split to set split cache https://github.com/Hamlib/Hamlib/issues/1012 diff --git a/rigs/yaesu/ft817.c b/rigs/yaesu/ft817.c index 4bd37ce3..8ef7b811 100644 --- a/rigs/yaesu/ft817.c +++ b/rigs/yaesu/ft817.c @@ -1890,6 +1890,8 @@ static int ft817_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo) return n; } + rig->state.cache.split = split; + return RIG_OK; } commit 4ac7d024e8add9cdcb4d73cf569eea95f3307799 Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Apr 19 17:42:29 2022 -0500 Make FT-817/FT-818 return cached VFOB freq when split and transmitting https://github.com/Hamlib/Hamlib/issues/1012 diff --git a/rigs/yaesu/ft817.c b/rigs/yaesu/ft817.c index e190d5a7..4bd37ce3 100644 --- a/rigs/yaesu/ft817.c +++ b/rigs/yaesu/ft817.c @@ -295,7 +295,7 @@ const struct rig_caps ft817_caps = RIG_MODEL(RIG_MODEL_FT817), .model_name = "FT-817", .mfg_name = "Yaesu", - .version = "20220407.0", + .version = "20220419.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -442,7 +442,7 @@ const struct rig_caps ft818_caps = RIG_MODEL(RIG_MODEL_FT818), .model_name = "FT-818", .mfg_name = "Yaesu", - .version = "20200710.0", + .version = "20220419.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -821,7 +821,14 @@ static int ft817_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) int retries = rig->state.rigport.retry + 1; // +1 because, because 2 steps are needed even in best scenario - rig_debug(RIG_DEBUG_VERBOSE, "%s: called\n", __func__); + rig_debug(RIG_DEBUG_VERBOSE, "%s: called, vfo=%s, ptt=%d, split=%d\n", __func__, rig_strvfo(vfo), rig->state.cache.ptt, rig->state.cache.split); + + // we can't query VFOB while in transmit and split mode + if (rig->state.cache.ptt && vfo==RIG_VFO_B && rig->state.cache.split) + { + *freq = rig->state.cache.freqMainB; + return RIG_OK; + } while ((f1 == 0 || f1 != f2) && retries-- > 0) { commit 5427b4cf863e0dc6f59727e0a9a3e480ab9b4055 Author: Mike Black W9MDB <mdb...@ya...> Date: Sat Apr 16 22:47:51 2022 -0500 Promote U... [truncated message content] |