[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. 3b1283496cdb89d3d43d0
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: n0nb <n0...@us...> - 2024-08-08 12:36:11
|
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 3b1283496cdb89d3d43d0354216e8dfa0a8b8d00 (commit) via d9d07e513c66a2558840addb53d9227554eec5f2 (commit) via 782911f5214e087f0f3c50c767e2ae4bc3738794 (commit) via afccc646db9f0d8693009f19ff89a75ca923fd1b (commit) via dd9d98ca1a86494aee8fb79b0c15e6127fe9ed97 (commit) via eeca01c08088f70f1ce52ff7c0d8b72055f01124 (commit) via 7b71bc09ab260a784f6faccee143e8233d19bae6 (commit) via df48595add88d2fc6ee3ded71eaa6cb70db45efd (commit) via fe43a6425ecfd7fde14e61f07fe7aa783f519f91 (commit) via 4d07c2abad33bfa46bb9f994a48bcc615e38725e (commit) via 9d8cc7d2608156eae0c9ccf853df8698dc054d70 (commit) via 48862ece543bd5e5654b0c6b64c83f8aa9db55d1 (commit) via ff71f202c9ad77f6f8cb2fb61061879ded4220d6 (commit) via 725542775b0df57d1fd067cdec5764528baf8c8f (commit) via 47d1dbb0306385add4bfb4641fe62ff4a7a27bd5 (commit) via 0fdfacafa3a5021353aa82c926138d114497ce6f (commit) via 9ace7dbe5c1bfb0ffeb1399db116f7f4c9eda2a5 (commit) via 6679746c62b398f5ffb488c0d480461836a079f6 (commit) via fd153e26f4104b4df7d9c1460b54a310cb74aebd (commit) via 1a37c569fa95f877909ded91cf9d7ff5c4d5aeb5 (commit) via 748be3707ff353b25585b12a780a5253f9f2a8de (commit) via 2b10a3078e98682a0eeb689f8761bbf037f5f498 (commit) via 2668605fbd0968dce8126bcbd5357eade65fb9a9 (commit) via ae39040fb12d2366a4c2dca33c5361e271d9a250 (commit) via 6db44d6d497d6e1399fde1daaf65d1fcf36f11e3 (commit) via 5ec0b8464572ee7290fe65d11b95e60bb5b76cd3 (commit) via 647b477dc95d3d688e352a125e77993c1f46d652 (commit) via 3f59e962e1060e517a10f25310cecff2ccca53d9 (commit) via b718788c9ab46a7b370b74ef77436c9741f8b09b (commit) via 75783cb1255d184c13f13464322ce6ba3c234a4e (commit) via ed33a235f4acd515bc415556343b599698958387 (commit) via db74acc725aa86d9a153d012cf4fa2dec82e1037 (commit) via 673d031d5e6819ab7169ead9947e24b1a9b87476 (commit) via 979d2adccf7e7f76821d8c760808341b29f0fd2f (commit) via abd6d4f388cb7c236f14025e670e85d124f04655 (commit) via 2e96b91b04eece8b9aeee304a0cbd09002044607 (commit) via 56d55f59b313d55f85e2e7f2fd0df3ef021c4388 (commit) via 3e2922fe69be4d5e69c465e853652e4355c5b311 (commit) via 8b9c7680633e2639ec2e192f82d030fcd6096869 (commit) via c0be98aea96dbea63c038438f28db8aeb4fdefd5 (commit) via 1e8ba0dff9bdb30de73bf8e9d36c76a49e8668cc (commit) via 16707507c66842d28dc93ad2b341fce5c2d24cae (commit) via 7bf63ecbf0235b86b23425f3912c4c8bd36d8c4d (commit) via c28caa7a9cab11d190bc783d29ce2b373aa9db37 (commit) via 105a411c749700ebe8a0b90260d210e70979cdc2 (commit) via fc8642fbf85bb3d866f9dfb9b139c9e7b0611f80 (commit) via 21897517b6fc40a0c50582da54cea708458a06e6 (commit) via 8cc51f5ad72c49f2c5d0f6da7d1a3fb9e6066509 (commit) via f5ad3c64bfb0c86622184416f0543f1d741726b4 (commit) via a3f930b061d9e48f0c7b3c476ec8d56696ed55ff (commit) via 47cb5fdc1abee6b9851ea1bb74507be925ef835c (commit) via 74d780f19f2bcd7a774185b0fa0b8888538b3827 (commit) via 2f1e6b636e301edf6a1a1309c144378d8e764ea2 (commit) via 52f91b3ced59528ac2979767e9a1cfbb68fb757d (commit) via 27838026f5a415b260dd9cd86b1e3ff1c7f9dce0 (commit) via a40311173be7826abfbaf9115ed3bae0d061bf01 (commit) via 645cab50dda663efa7394815611a98a21881af87 (commit) via fc27cc32ceb1a5c36244dc9ab1765a0b1f41e295 (commit) via 40b20aa91272e0a483de434f18cf9622439bbf55 (commit) via 5814f745b9429a9f141f1b28b916b65a5bef762b (commit) via 6ed7cfe73d3a949a05ec7ce9fd2bc19b9b0b3c89 (commit) via 7b9f1241d9c61465c92908ca1e7c6e0011c04628 (commit) via 388a18e5da4895bd176887440b6f752dd96ca4aa (commit) via 660bfcb1d98c42494925b3efee5fff7a8208c70a (commit) via 6a2bbf130dde42695c3c675e771c3660aed13e48 (commit) via 5daf92d224a478f519570420749a75c5f9e0b6e8 (commit) via 328731921ef7cd4bfbda6553ab76f29cf8a9ffb7 (commit) via 150ac1608fbe91579c4cedc629a3b69554653111 (commit) via f98fc86f93fc3428369899dda55881bffe927316 (commit) via a2aecdcf020d01b24d98cce9f264dd2cea439335 (commit) via 37321a1df898022e0c2020839ca91c99a90a8e9c (commit) via b0dc954a9298991edd0bb10e591040dc0bea3b9c (commit) via d4480045f39163aa6c17169bcc7bfa1cd1ba7031 (commit) via 02102f60e4a1fcbbbf467e07eb803b0aa2a1c9d4 (commit) via 00bc700ec18020e477dd025d7ef65d7c73e63279 (commit) via 5b8cc94b012be67a861e2abcb3fcfe448bb681c0 (commit) from fee7007fb9031869ce38e09f3ce57745b1f32626 (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 3b1283496cdb89d3d43d0354216e8dfa0a8b8d00 Author: Mike Black W9MDB <mdb...@ya...> Date: Wed Aug 7 17:26:03 2024 -0500 Abort multicast routine when UDP errors occur Some setups don't work correctly and this is not critical now diff --git a/src/network.c b/src/network.c index 87c07cad8..17183cf79 100644 --- a/src/network.c +++ b/src/network.c @@ -1093,6 +1093,7 @@ void *multicast_publisher(void *arg) "%s: error sending UDP packet: %s\n", __func__, strerror(errno)); flag = 1; + break; // we'll just quit this routine for now -- debug in the future } } } commit d9d07e513c66a2558840addb53d9227554eec5f2 Author: Mike Black W9MDB <mdb...@ya...> Date: Wed Aug 7 12:02:09 2024 -0500 For Kenwood rigs add 50ms wait after set_freq to allow rig to update internal IF command diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 3c1637c31..3cc70f6c8 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -1963,6 +1963,7 @@ int kenwood_set_freq(RIG *rig, vfo_t vfo, freq_t freq) if (priv->verify_cmd[1] == 'A' && vfo_letter == 'B') { priv->verify_cmd[1] = 'A'; } err = kenwood_transaction(rig, freqbuf, NULL, 0); + hl_usleep(50*1000); // TS480 is slow to change freq so give it some time as well as others just in case if (priv->verify_cmd[1] == 'B' && vfo_letter == 'B') { priv->verify_cmd[1] = 'A'; } diff --git a/rigs/kenwood/kenwood.h b/rigs/kenwood/kenwood.h index 390c5b00e..93b8cde1c 100644 --- a/rigs/kenwood/kenwood.h +++ b/rigs/kenwood/kenwood.h @@ -28,7 +28,7 @@ #include "token.h" #include "idx_builtin.h" -#define BACKEND_VER "20240730" +#define BACKEND_VER "20240807" #define EOM_KEN ';' #define EOM_TH '\r' commit 782911f5214e087f0f3c50c767e2ae4bc3738794 Author: Mike Black W9MDB <mdb...@ya...> Date: Wed Aug 7 06:06:41 2024 -0500 Remove sleep in smartsdr set_ptt and move the priv->ptt earlier. Trying to avoid ptt on more than one slice at a time. diff --git a/rigs/flexradio/smartsdr.c b/rigs/flexradio/smartsdr.c index fd8847fef..c452208a8 100644 --- a/rigs/flexradio/smartsdr.c +++ b/rigs/flexradio/smartsdr.c @@ -516,6 +516,7 @@ int smartsdr_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) rig_debug(RIG_DEBUG_ERR, "%s: abort PTT on slice %c, another slice has PTT control\n", __func__, slicechar[priv->slicenum]); return -RIG_ENTARGET; } + priv->ptt = ptt; if (ptt) { sprintf(cmd, "dax audio set %d tx=1", priv->slicenum + 1); @@ -527,8 +528,6 @@ int smartsdr_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) smartsdr_transaction(rig, cmd); sprintf(cmd, "xmit %d", ptt); smartsdr_transaction(rig, cmd); - if (!ptt) hl_usleep(100*1000); // need a little time for PTT to actually turn off - priv->ptt = ptt; RETURNFUNC(RIG_OK); } diff --git a/rigs/flexradio/smartsdr_caps.h b/rigs/flexradio/smartsdr_caps.h index 80845fe61..50ec066d8 100644 --- a/rigs/flexradio/smartsdr_caps.h +++ b/rigs/flexradio/smartsdr_caps.h @@ -1,5 +1,5 @@ .mfg_name = "Flex-radio", - .version = "20240806.0", + .version = "20240807.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, commit afccc646db9f0d8693009f19ff89a75ca923fd1b Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Aug 6 17:52:36 2024 -0500 Flex slice return RIG_ENTARGET when ptt is requested and ptt is already engaged diff --git a/rigs/flexradio/smartsdr.c b/rigs/flexradio/smartsdr.c index 60ab0d96e..fd8847fef 100644 --- a/rigs/flexradio/smartsdr.c +++ b/rigs/flexradio/smartsdr.c @@ -508,8 +508,14 @@ int smartsdr_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) { struct smartsdr_priv_data *priv = (struct smartsdr_priv_data *)STATE(rig)->priv; char cmd[64]; + char slicechar[] = { '?','A','B','C','D','E','F','G','H' }; ENTERFUNC; + if (priv->ptt) + { + rig_debug(RIG_DEBUG_ERR, "%s: abort PTT on slice %c, another slice has PTT control\n", __func__, slicechar[priv->slicenum]); + return -RIG_ENTARGET; + } if (ptt) { sprintf(cmd, "dax audio set %d tx=1", priv->slicenum + 1); commit dd9d98ca1a86494aee8fb79b0c15e6127fe9ed97 Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Aug 6 17:10:58 2024 -0500 Make write_block_sync return the correct value diff --git a/src/iofunc.c b/src/iofunc.c index 1b355ea1e..e22e738e7 100644 --- a/src/iofunc.c +++ b/src/iofunc.c @@ -960,13 +960,22 @@ static int port_wait_for_data(hamlib_port_t *p, int direct) int HAMLIB_API write_block_sync(hamlib_port_t *p, const unsigned char *txbuffer, size_t count) { + int retval = RIG_OK; if (p->asyncio) { - return (int) write(p->fd_sync_write, txbuffer, count); + retval = write(p->fd_sync_write, txbuffer, count); } - - return (int) write(p->fd, txbuffer, count); + else + { + retval = write(p->fd, txbuffer, count); + } + if (retval != count) + { + rig_debug(RIG_DEBUG_ERR, "%s: write failed: %s\n", __func__, strerror(errno)); + retval = -RIG_EIO; + } + return retval; } int HAMLIB_API write_block_sync_error(hamlib_port_t *p, commit eeca01c08088f70f1ce52ff7c0d8b72055f01124 Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Aug 6 17:01:07 2024 -0500 Give a little time for Flex to turn off ptt diff --git a/rigs/flexradio/smartsdr.c b/rigs/flexradio/smartsdr.c index dd7b04860..60ab0d96e 100644 --- a/rigs/flexradio/smartsdr.c +++ b/rigs/flexradio/smartsdr.c @@ -518,9 +518,10 @@ int smartsdr_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) } sprintf(cmd, "slice set %d tx=1", priv->slicenum); - smartsdr_transaction(rig, cmd); + smartsdr_transaction(rig, cmd); sprintf(cmd, "xmit %d", ptt); smartsdr_transaction(rig, cmd); + if (!ptt) hl_usleep(100*1000); // need a little time for PTT to actually turn off priv->ptt = ptt; RETURNFUNC(RIG_OK); } diff --git a/rigs/flexradio/smartsdr_caps.h b/rigs/flexradio/smartsdr_caps.h index b00ca4e91..80845fe61 100644 --- a/rigs/flexradio/smartsdr_caps.h +++ b/rigs/flexradio/smartsdr_caps.h @@ -1,5 +1,5 @@ .mfg_name = "Flex-radio", - .version = "20240609.0", + .version = "20240806.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, commit 7b71bc09ab260a784f6faccee143e8233d19bae6 Author: Mike Black W9MDB <mdb...@ya...> Date: Sun Aug 4 17:11:19 2024 -0500 Change timeout on IC7100 to 700ms instead of 1000ms Hopefully allow for timeout when async packets are coming in every 1000ms https://github.com/Hamlib/Hamlib/issues/1587 diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index 4be5c3012..216f36890 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -218,11 +218,11 @@ again1: // if we get a reply that is not our cmd/subcmd we should just ignore it and retry the read. // this should somewhat allow splitting the COM port between two controllers if (cmd != buf[4]) { - rig_debug(RIG_DEBUG_VERBOSE, "%s: cmd x%02d != buf x%02x so retry read\n", __func__, cmd, buf[4]); + rig_debug(RIG_DEBUG_VERBOSE, "%s: cmd x%02x != buf x%02x so retry read\n", __func__, cmd, buf[4]); goto again1; } if (subcmd != -1 && subcmd != buf[5]) { - rig_debug(RIG_DEBUG_VERBOSE, "%s: subcmd x%02d != buf x%02x so retry read\n", __func__, subcmd, buf[5]); + rig_debug(RIG_DEBUG_VERBOSE, "%s: subcmd x%02x != buf x%02x so retry read\n", __func__, subcmd, buf[5]); goto again1; } diff --git a/rigs/icom/ic7100.c b/rigs/icom/ic7100.c index 4c2cd7325..dbb3dd5d4 100644 --- a/rigs/icom/ic7100.c +++ b/rigs/icom/ic7100.c @@ -342,7 +342,7 @@ struct rig_caps ic7100_caps = .serial_handshake = RIG_HANDSHAKE_NONE, .write_delay = 0, .post_write_delay = 0, - .timeout = 1000, + .timeout = 700, .retry = 3, .has_get_func = IC7100_FUNC_ALL, .has_set_func = IC7100_FUNC_ALL | RIG_FUNC_RESUME, commit df48595add88d2fc6ee3ded71eaa6cb70db45efd Author: Mike Black W9MDB <mdb...@ya...> Date: Sun Aug 4 11:51:18 2024 -0500 Put rig_flush back in frame.c for the IC-7100 -- hopefully fixed async packets on the CI-V port coming from amplifiers The 7100 cannot unlink the CI-V port and these async packets are not being handled well. https://github.com/Hamlib/Hamlib/issues/1587 diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index 4705ea265..4be5c3012 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -156,7 +156,11 @@ int icom_one_transaction(RIG *rig, unsigned char cmd, int subcmd, set_transaction_active(rig); collision_retry: - //rig_flush(rp); + // The IC7100 cannot separate the CI-V port from the USB CI-V + // We see async packets coming in so we'll try and do the flush + // This also means the IC7100 will not support async packets anymore + if (rig->caps->rig_model == RIG_MODEL_IC7100) + rig_flush(rp); frm_len = make_cmd_frame(sendbuf, priv->re_civ_addr, ctrl_id, cmd, subcmd, payload, payload_len); diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 90e50d8d3..07c988e46 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -35,7 +35,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20240801" +#define BACKEND_VER "20240804" #define ICOM_IS_ID31 rig_is_model(rig, RIG_MODEL_ID31) #define ICOM_IS_ID51 rig_is_model(rig, RIG_MODEL_ID51) commit fe43a6425ecfd7fde14e61f07fe7aa783f519f91 Author: Mike Black W9MDB <mdb...@ya...> Date: Fri Aug 2 16:31:49 2024 -0500 In icom frame.c move the frm building inside the collision_retry block https://github.com/Hamlib/Hamlib/issues/1587 diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index 74b4dfa36..4705ea265 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -150,9 +150,6 @@ int icom_one_transaction(RIG *rig, unsigned char cmd, int subcmd, ctrl_id = priv_caps->serial_full_duplex == 0 ? CTRLID : 0x80; - frm_len = make_cmd_frame(sendbuf, priv->re_civ_addr, ctrl_id, cmd, - subcmd, payload, payload_len); - /* * should check return code and that write wrote cmd_len chars! */ @@ -160,6 +157,9 @@ int icom_one_transaction(RIG *rig, unsigned char cmd, int subcmd, collision_retry: //rig_flush(rp); + frm_len = make_cmd_frame(sendbuf, priv->re_civ_addr, ctrl_id, cmd, + subcmd, payload, payload_len); + if (data_len) { *data_len = 0; } commit 4d07c2abad33bfa46bb9f994a48bcc615e38725e Author: Mike Black W9MDB <mdb...@ya...> Date: Fri Aug 2 08:41:23 2024 -0500 Remove some bad declarations in ctx10.c diff --git a/rigs/commradio/ctx10.c b/rigs/commradio/ctx10.c index 10782fd1e..1631a1664 100644 --- a/rigs/commradio/ctx10.c +++ b/rigs/commradio/ctx10.c @@ -20,7 +20,7 @@ struct rig_caps ctx10_caps = RIG_MODEL(RIG_MODEL_CTX10), .model_name = "CTX-10", .mfg_name = "Commradio", - .version = "20240118" ".0", + .version = "20240802.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -43,15 +43,15 @@ struct rig_caps ctx10_caps = .has_set_level = RIG_LEVEL_NONE, .has_get_parm = RIG_PARM_NONE, .has_set_parm = RIG_PARM_NONE, - .level_gran = {}, - .parm_gran = {}, +// .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), +// .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 = (RIG_OP_FROM_VFO|RIG_OP_TO_VFO), .scan_ops = RIG_SCAN_NONE, commit 9d8cc7d2608156eae0c9ccf853df8698dc054d70 Author: Mike Black W9MDB <mdb...@ya...> Date: Thu Aug 1 17:30:03 2024 -0500 Move the async detection for Icom to after the echo detection https://github.com/Hamlib/Hamlib/issues/1587 diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index 0498af506..74b4dfa36 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -206,16 +206,6 @@ again1: RETURNFUNC(-RIG_EPROTO); } - // https://github.com/Hamlib/Hamlib/issues/1575 - // these types of async can interrupt the cmd we sent - // if our host number changes must not be for us - if (sendbuf[3] != buf[2]) - { - hl_usleep(100); - rig_flush(rp); - goto collision_retry; - } - if (icom_is_async_frame(rig, frm_len, buf)) { icom_process_async_frame(rig, frm_len, buf); @@ -332,6 +322,17 @@ again2: priv->serial_USB_echo_off = 0; goto again2; } + // https://github.com/Hamlib/Hamlib/issues/1575 + // these types of async can interrupt the cmd we sent + // if our host number changes must not be for us + if (sendbuf[3] != buf[2]) + { + rig_debug(RIG_DEBUG_VERBOSE, "%s: unknown async? read again\n", __func__); + hl_usleep(100); + rig_flush(rp); + goto collision_retry; + } + if (icom_is_async_frame(rig, frm_len, buf)) { commit 48862ece543bd5e5654b0c6b64c83f8aa9db55d1 Author: Mike Black W9MDB <mdb...@ya...> Date: Thu Aug 1 16:49:38 2024 -0500 Add comment for Barrett 4100 -- not ready for prime time diff --git a/rigs/barrett/4100.c b/rigs/barrett/4100.c index 8b8d1db04..99004f6ac 100644 --- a/rigs/barrett/4100.c +++ b/rigs/barrett/4100.c @@ -244,7 +244,7 @@ struct rig_caps barrett4100_caps = .mfg_name = "Rhode&Schwarz", .version = BACKEND_VER ".1", .copyright = "LGPL", - .status = RIG_STATUS_BETA, + .status = RIG_STATUS_BETA, // do no promote until somebody confirms it works ok -- nobody to test it .rig_type = RIG_TYPE_TRANSCEIVER, .targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE, .ptt_type = RIG_PTT_RIG, commit ff71f202c9ad77f6f8cb2fb61061879ded4220d6 Author: Mike Black W9MDB <mdb...@ya...> Date: Thu Aug 1 11:59:15 2024 -0500 Another attempt to fix IC7100 behavior when amplifier is sending requests Seems the IC7100 cannot separate the CI-V port from the USB CI-V like other Icom rigs diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index c544442ba..0498af506 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -208,7 +208,8 @@ again1: // https://github.com/Hamlib/Hamlib/issues/1575 // these types of async can interrupt the cmd we sent - if (sendbuf[3] != buf[2] && buf[4] == 0x03) + // if our host number changes must not be for us + if (sendbuf[3] != buf[2]) { hl_usleep(100); rig_flush(rp); diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index c36744ec0..90e50d8d3 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -35,7 +35,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20240731" +#define BACKEND_VER "20240801" #define ICOM_IS_ID31 rig_is_model(rig, RIG_MODEL_ID31) #define ICOM_IS_ID51 rig_is_model(rig, RIG_MODEL_ID51) commit 725542775b0df57d1fd067cdec5764528baf8c8f Author: Mike Black W9MDB <mdb...@ya...> Date: Wed Jul 31 11:49:59 2024 -0500 Hopefully fix IC-7100 0xe1 packet async problem diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index 69ee33ba7..c544442ba 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -206,6 +206,15 @@ again1: RETURNFUNC(-RIG_EPROTO); } + // https://github.com/Hamlib/Hamlib/issues/1575 + // these types of async can interrupt the cmd we sent + if (sendbuf[3] != buf[2] && buf[4] == 0x03) + { + hl_usleep(100); + rig_flush(rp); + goto collision_retry; + } + if (icom_is_async_frame(rig, frm_len, buf)) { icom_process_async_frame(rig, frm_len, buf); commit 47d1dbb0306385add4bfb4641fe62ff4a7a27bd5 Author: Mike Black W9MDB <mdb...@ya...> Date: Wed Jul 31 11:48:21 2024 -0500 Remove 0xe1 check for async -- not that simple and now ignored when wrong response in frame.c diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 5bc76736d..4d90e3604 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -8971,7 +8971,7 @@ int icom_is_async_frame(RIG *rig, size_t frame_length, /* Spectrum scope data is not CI-V transceive data, but handled the same way as it is pushed by the rig */ // IC-7100 sends 0xe1 for broadcast frame? - return frame[2] == 0xe1 || frame[2] == BCASTID || (frame[2] == CTRLID && frame[4] == C_CTL_SCP + return frame[2] == BCASTID || (frame[2] == CTRLID && frame[4] == C_CTL_SCP && frame[5] == S_SCP_DAT); } diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index a0477319a..c36744ec0 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -35,7 +35,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20240726" +#define BACKEND_VER "20240731" #define ICOM_IS_ID31 rig_is_model(rig, RIG_MODEL_ID31) #define ICOM_IS_ID51 rig_is_model(rig, RIG_MODEL_ID51) commit 0fdfacafa3a5021353aa82c926138d114497ce6f Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Jul 30 11:11:54 2024 -0500 Fix PT8000A ptt and bandwidth diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 62450fd92..3c1637c31 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -378,7 +378,6 @@ transaction_write: skip |= strncmp(cmdstr, "PS1", 3) == 0; skip |= strncmp(cmdstr, "PS0", 3) == 0; skip |= strncmp(cmdstr, "K22", 3) == 0; - skip |= (rig->caps->rig_model == RIG_MODEL_PT8000A); // Skip Hilberling command check if (skip) { diff --git a/rigs/kenwood/ts480.c b/rigs/kenwood/ts480.c index 7c9ec248d..d6a49cab5 100644 --- a/rigs/kenwood/ts480.c +++ b/rigs/kenwood/ts480.c @@ -1897,6 +1897,7 @@ struct rig_caps pt8000a_caps = }, /* mode/filter list, remember: order matters! */ .filters = { + {RIG_MODE_SSB, kHz(6.0)}, {RIG_MODE_SSB, kHz(1.0)}, {RIG_MODE_SSB, kHz(1.2)}, {RIG_MODE_SSB, kHz(1.4)}, @@ -1920,7 +1921,6 @@ struct rig_caps pt8000a_caps = {RIG_MODE_SSB, kHz(3.4)}, {RIG_MODE_SSB, kHz(3.5)}, {RIG_MODE_SSB, kHz(4.6)}, - {RIG_MODE_SSB, kHz(6.0)}, {RIG_MODE_CW, Hz(50)}, {RIG_MODE_CW, Hz(100)}, {RIG_MODE_CW, Hz(200)}, @@ -1987,8 +1987,8 @@ struct rig_caps pt8000a_caps = .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, +// .set_powerstat = kenwood_set_powerstat, +// .get_powerstat = kenwood_get_powerstat, .get_info = kenwood_ts480_get_info, .reset = kenwood_reset, .set_ant = kenwood_set_ant, commit 9ace7dbe5c1bfb0ffeb1399db116f7f4c9eda2a5 Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Jul 30 10:03:16 2024 -0500 Don't do any ID checks on Hilberling PT8000A diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 22730dcad..62450fd92 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -378,7 +378,7 @@ transaction_write: skip |= strncmp(cmdstr, "PS1", 3) == 0; skip |= strncmp(cmdstr, "PS0", 3) == 0; skip |= strncmp(cmdstr, "K22", 3) == 0; - skip |= (rig->caps->rig_model == RIG_MODEL_PT8000A && (strncmp(cmdstr, "TQ", 2) == 0)); // Skip Hilberling TQn command check + skip |= (rig->caps->rig_model == RIG_MODEL_PT8000A); // Skip Hilberling command check if (skip) { @@ -5161,6 +5161,7 @@ int kenwood_set_trn(RIG *rig, int trn) case RIG_MODEL_POWERSDR: // powersdr doesn't have AI command case RIG_MODEL_THETIS: // powersdr doesn't have AI command + case RIG_MODEL_PT8000A: // powersdr doesn't have AI command RETURNFUNC(-RIG_ENAVAIL); case RIG_MODEL_TS990S: diff --git a/rigs/kenwood/kenwood.h b/rigs/kenwood/kenwood.h index 4f9078639..390c5b00e 100644 --- a/rigs/kenwood/kenwood.h +++ b/rigs/kenwood/kenwood.h @@ -28,7 +28,7 @@ #include "token.h" #include "idx_builtin.h" -#define BACKEND_VER "20240712" +#define BACKEND_VER "20240730" #define EOM_KEN ';' #define EOM_TH '\r' commit 6679746c62b398f5ffb488c0d480461836a079f6 Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Jul 30 09:46:37 2024 -0500 Remove KEYSPD from Hilberling PT8000A diff --git a/rigs/kenwood/ts480.c b/rigs/kenwood/ts480.c index 2f9bc21c5..7c9ec248d 100644 --- a/rigs/kenwood/ts480.c +++ b/rigs/kenwood/ts480.c @@ -44,10 +44,16 @@ #define TS480_LEVEL_GET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_MICGAIN|RIG_LEVEL_STRENGTH|RIG_LEVEL_KEYSPD|RIG_LEVEL_CWPITCH| \ RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB|RIG_LEVEL_NR|RIG_LEVEL_PREAMP|RIG_LEVEL_COMP|RIG_LEVEL_ATT|RIG_LEVEL_VOXDELAY|RIG_LEVEL_VOXGAIN|RIG_LEVEL_BKIN_DLYMS| \ RIG_LEVEL_SWR|RIG_LEVEL_COMP_METER|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW) +#define PT8000A_LEVEL_GET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_MICGAIN|RIG_LEVEL_STRENGTH|RIG_LEVEL_CWPITCH| \ + RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB|RIG_LEVEL_NR|RIG_LEVEL_PREAMP|RIG_LEVEL_COMP|RIG_LEVEL_ATT|RIG_LEVEL_VOXDELAY|RIG_LEVEL_VOXGAIN|RIG_LEVEL_BKIN_DLYMS| \ + RIG_LEVEL_SWR|RIG_LEVEL_COMP_METER|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW) #define TS480_LEVEL_SET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_CWPITCH| \ RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB|RIG_LEVEL_NR|RIG_LEVEL_PREAMP|RIG_LEVEL_COMP|RIG_LEVEL_ATT|RIG_LEVEL_VOXDELAY|RIG_LEVEL_VOXGAIN|RIG_LEVEL_BKIN_DLYMS| \ RIG_LEVEL_METER|RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW) +#define PT8000A_LEVEL_SET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_MICGAIN|RIG_LEVEL_CWPITCH| \ + RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB|RIG_LEVEL_NR|RIG_LEVEL_PREAMP|RIG_LEVEL_COMP|RIG_LEVEL_ATT|RIG_LEVEL_VOXDELAY|RIG_LEVEL_VOXGAIN|RIG_LEVEL_BKIN_DLYMS| \ + RIG_LEVEL_METER|RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW) #define TS480_FUNC_ALL (RIG_FUNC_NB|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_NR|RIG_FUNC_NR|RIG_FUNC_BC|RIG_FUNC_BC2|RIG_FUNC_RIT|RIG_FUNC_XIT| \ RIG_FUNC_TUNER|RIG_FUNC_MON|RIG_FUNC_FBKIN|RIG_FUNC_LOCK) @@ -1830,7 +1836,7 @@ struct rig_caps qrplabs_caps = }; /* - * Hilberling PS8000A TS480 emulation + * Hilberling PT8000A TS480 emulation * Notice that some rigs share the same functions. */ struct rig_caps pt8000a_caps = @@ -1838,7 +1844,7 @@ struct rig_caps pt8000a_caps = RIG_MODEL(RIG_MODEL_PT8000A), .model_name = "PT-8000A", .mfg_name = "Hilberling", - .version = BACKEND_VER ".3", + .version = BACKEND_VER ".2", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -1988,8 +1994,8 @@ struct rig_caps pt8000a_caps = .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_SET, - .has_get_level = TS480_LEVEL_GET, + .has_set_level = PT8000A_LEVEL_SET, + .has_get_level = PT8000A_LEVEL_GET, .set_level = kenwood_ts480_set_level, .get_level = kenwood_ts480_get_level, .has_get_func = TS480_FUNC_ALL, commit fd153e26f4104b4df7d9c1460b54a310cb74aebd Merge: 2b10a3078 1a37c569f Author: Michael Black <mdb...@ya...> Date: Mon Jul 29 11:20:21 2024 -0500 Merge pull request #1590 from chrbayer84/upstream-817 FT-817 power/SWR levels commit 1a37c569fa95f877909ded91cf9d7ff5c4d5aeb5 Merge: 748be3707 2b10a3078 Author: chrbayer84 <chr...@gm...> Date: Mon Jul 29 11:57:27 2024 -0400 Merge branch 'master' into upstream-817 diff --cc rigs/yaesu/ft817.c index 2234d42a7,590af3d48..a2ba846f3 --- a/rigs/yaesu/ft817.c +++ b/rigs/yaesu/ft817.c @@@ -1200,8 -1194,8 +1200,9 @@@ static int ft817_get_ptt(RIG *rig, vfo_ } } - *ptt = ((p->tx_status & 0x20) == 0x20); + *ptt = p->tx_status != 0xff; + + return RIG_OK; } @@@ -1234,8 -1228,9 +1235,9 @@@ static int ft817_get_tx_level(RIG *rig if (ptt == RIG_PTT_OFF) { - val->f = p->swr; - val->f = p->swr; - //rig_debug(RIG_DEBUG_VERBOSE, "%s: rig not keyed\n", __func__); - return RIG_OK; // use known prior value ++ ++ val->f = p->swr; + return RIG_OK; } n = ft817_get_status(rig, FT817_NATIVE_CAT_GET_TX_METERING); @@@ -1246,7 -1241,8 +1248,8 @@@ } } - val->f = rig_raw2val_float(*tx_level, cal); - p->swr = val->f; + p->swr = val->f = rig_raw2val_float(*tx_level, cal); ++ rig_debug(RIG_DEBUG_VERBOSE, "%s: level %f\n", __func__, val->f); return RIG_OK; commit 748be3707ff353b25585b12a780a5253f9f2a8de Author: Christian Bayer <chr...@go...> Date: Mon Jul 29 17:54:50 2024 +0200 FT-817 power and SWR levels diff --git a/rigs/yaesu/ft817.c b/rigs/yaesu/ft817.c index 499e2c019..2234d42a7 100644 --- a/rigs/yaesu/ft817.c +++ b/rigs/yaesu/ft817.c @@ -128,6 +128,7 @@ struct ft817_priv_data /* Digi mode is not part of regular fm_status response. * So keep track of it in a separate variable. */ unsigned char dig_mode; + float swr; }; static int ft817_init(RIG *rig); @@ -261,15 +262,15 @@ enum ft817_digi // Thanks to Olivier Schmitt sc....@gm... for these tables #define FT817_PWR_CAL { 9, \ { \ - { 0x00, 0 }, \ - { 0x01, 10 }, \ - { 0x02, 14 }, \ - { 0x03, 20 }, \ - { 0x04, 34 }, \ - { 0x05, 50 }, \ - { 0x06, 66 }, \ - { 0x07, 82 }, \ - { 0x08, 100 } \ + { 0x00, 0.0f }, \ + { 0x01, 0.5f }, \ + { 0x02, 0.75f }, \ + { 0x03, 1.0f }, \ + { 0x04, 1.7f }, \ + { 0x05, 2.5f }, \ + { 0x06, 3.3f }, \ + { 0x07, 4.1f }, \ + { 0x08, 5.0f } \ } } #define FT817_ALC_CAL { 6, \ @@ -330,7 +331,7 @@ struct rig_caps ft817_caps = .has_set_func = RIG_FUNC_LOCK | RIG_FUNC_TONE | RIG_FUNC_TSQL | RIG_FUNC_CSQL | RIG_FUNC_RIT, .has_get_level = RIG_LEVEL_STRENGTH | RIG_LEVEL_RAWSTR | RIG_LEVEL_RFPOWER | - RIG_LEVEL_ALC | RIG_LEVEL_SWR, + RIG_LEVEL_ALC | RIG_LEVEL_SWR | RIG_LEVEL_RFPOWER_METER_WATTS, .has_set_level = RIG_LEVEL_BAND_SELECT, .has_get_parm = RIG_PARM_NONE, .has_set_parm = RIG_PARM_NONE, @@ -765,6 +766,7 @@ struct rig_caps ft818_caps = static int ft817_init(RIG *rig) { + struct ft817_priv_data *p; rig_debug(RIG_DEBUG_VERBOSE, "%s: called, version %s\n", __func__, rig->caps->version); @@ -772,6 +774,9 @@ static int ft817_init(RIG *rig) { return -RIG_ENOMEM; } + p = (struct ft817_priv_data *) STATE(rig)->priv; + + p->swr = 10; return RIG_OK; } @@ -979,9 +984,9 @@ static int ft817_get_status(RIG *rig, int status) /* FT-817 returns 2 bytes with 4 nibbles. * Extract raw values here; * convert to float when they are requested. */ - p->swr_level = result[0] & 0xF; - p->pwr_level = result[0] >> 4; - p->alc_level = result[1] & 0xF; + p->swr_level = (result[1] & 0xF0) >> 4; + p->pwr_level = (result[0] & 0xF0) >> 4; + p->alc_level = result[0] & 0x0F; p->mod_level = result[1] >> 4; rig_debug(RIG_DEBUG_TRACE, "%s: swr: %d, pwr %d, alc %d, mod %d\n", __func__, @@ -1168,10 +1173,12 @@ static int ft817_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, } *split = (c[0] & 0x80) ? RIG_SPLIT_ON : RIG_SPLIT_OFF; + *tx_vfo = RIG_VFO_A; } else { *split = (p->tx_status & 0x20) ? RIG_SPLIT_ON : RIG_SPLIT_OFF; + *tx_vfo = RIG_VFO_B; } return RIG_OK; @@ -1193,7 +1200,7 @@ static int ft817_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) } } - *ptt = ((p->tx_status & 0x20) == 0x20); + *ptt = p->tx_status != 0xff; return RIG_OK; } @@ -1227,8 +1234,8 @@ static int ft817_get_tx_level(RIG *rig, value_t *val, unsigned char *tx_level, if (ptt == RIG_PTT_OFF) { - rig_debug(RIG_DEBUG_VERBOSE, "%s: rig not keyed\n", __func__); - return -RIG_ERJCTED; //Or return OK? + val->f = p->swr; + return RIG_OK; } n = ft817_get_status(rig, FT817_NATIVE_CAT_GET_TX_METERING); @@ -1239,7 +1246,7 @@ static int ft817_get_tx_level(RIG *rig, value_t *val, unsigned char *tx_level, } } - val->f = rig_raw2val_float(*tx_level, cal); + p->swr = val->f = rig_raw2val_float(*tx_level, cal); rig_debug(RIG_DEBUG_VERBOSE, "%s: level %f\n", __func__, val->f); return RIG_OK; @@ -1333,6 +1340,10 @@ static int ft817_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) case RIG_LEVEL_SWR: return ft817_get_tx_level(rig, val, &p->swr_level, &rig->caps->swr_cal); + case RIG_LEVEL_RFPOWER_METER_WATTS: + return ft817_get_tx_level(rig, val, &p->pwr_level, + &rig->caps->rfpower_meter_cal); + default: return -RIG_EINVAL; } commit 2b10a3078e98682a0eeb689f8761bbf037f5f498 Author: Mike Black W9MDB <mdb...@ya...> Date: Sun Jul 28 17:30:37 2024 -0500 Allow FT817 to return prior SWR value when not in transmit diff --git a/rigs/yaesu/ft817.c b/rigs/yaesu/ft817.c index 802f5672b..590af3d48 100644 --- a/rigs/yaesu/ft817.c +++ b/rigs/yaesu/ft817.c @@ -128,6 +128,7 @@ struct ft817_priv_data /* Digi mode is not part of regular fm_status response. * So keep track of it in a separate variable. */ unsigned char dig_mode; + float swr; }; static int ft817_init(RIG *rig); @@ -309,7 +310,7 @@ struct rig_caps ft817_caps = RIG_MODEL(RIG_MODEL_FT817), .model_name = "FT-817", .mfg_name = "Yaesu", - .version = "20240728.2", + .version = "20240728.3", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -1227,8 +1228,9 @@ static int ft817_get_tx_level(RIG *rig, value_t *val, unsigned char *tx_level, if (ptt == RIG_PTT_OFF) { - rig_debug(RIG_DEBUG_VERBOSE, "%s: rig not keyed\n", __func__); - return -RIG_ERJCTED; //Or return OK? + val->f = p->swr; + //rig_debug(RIG_DEBUG_VERBOSE, "%s: rig not keyed\n", __func__); + return RIG_OK; // use known prior value } n = ft817_get_status(rig, FT817_NATIVE_CAT_GET_TX_METERING); @@ -1240,6 +1242,7 @@ static int ft817_get_tx_level(RIG *rig, value_t *val, unsigned char *tx_level, } val->f = rig_raw2val_float(*tx_level, cal); + p->swr = val->f; rig_debug(RIG_DEBUG_VERBOSE, "%s: level %f\n", __func__, val->f); return RIG_OK; commit 2668605fbd0968dce8126bcbd5357eade65fb9a9 Author: Mike Black W9MDB <mdb...@ya...> Date: Sun Jul 28 16:58:48 2024 -0500 Fix boo-boo on ft817.c diff --git a/rigs/yaesu/ft817.c b/rigs/yaesu/ft817.c index 744107b10..802f5672b 100644 --- a/rigs/yaesu/ft817.c +++ b/rigs/yaesu/ft817.c @@ -261,7 +261,7 @@ enum ft817_digi // Thanks to Olivier Schmitt sc....@gm... for these tables #define FT817_PWR_CAL { 9, \ { \ - { 0x00, 0.ss }, \ + { 0x00, 0.0f }, \ { 0x01, 0.5f }, \ { 0x02, 0.75f }, \ { 0x03, 1.0f }, \ commit ae39040fb12d2366a4c2dca33c5361e271d9a250 Author: Mike Black W9MDB <mdb...@ya...> Date: Sun Jul 28 16:56:15 2024 -0500 Adjust PWR table for FT817 diff --git a/rigs/yaesu/ft817.c b/rigs/yaesu/ft817.c index 42bc48ca9..744107b10 100644 --- a/rigs/yaesu/ft817.c +++ b/rigs/yaesu/ft817.c @@ -261,15 +261,15 @@ enum ft817_digi // Thanks to Olivier Schmitt sc....@gm... for these tables #define FT817_PWR_CAL { 9, \ { \ - { 0x00, 0 }, \ - { 0x01, 10 }, \ - { 0x02, 14 }, \ - { 0x03, 20 }, \ - { 0x04, 34 }, \ - { 0x05, 50 }, \ - { 0x06, 66 }, \ - { 0x07, 82 }, \ - { 0x08, 100 } \ + { 0x00, 0.ss }, \ + { 0x01, 0.5f }, \ + { 0x02, 0.75f }, \ + { 0x03, 1.0f }, \ + { 0x04, 1.7f }, \ + { 0x05, 2.5f }, \ + { 0x06, 3.3f }, \ + { 0x07, 4.1f }, \ + { 0x08, 5.0f } \ } } #define FT817_ALC_CAL { 6, \ @@ -283,7 +283,7 @@ enum ft817_digi } } // SWR values from Christian WA4YA, DL4YA -#define FT817_SWR_CAL { 2, \ +#define FT817_SWR_CAL { 16, \ { \ { 0, 1.0f }, \ { 1, 1.4f }, \ @@ -309,7 +309,7 @@ struct rig_caps ft817_caps = RIG_MODEL(RIG_MODEL_FT817), .model_name = "FT-817", .mfg_name = "Yaesu", - .version = "20240728.0", + .version = "20240728.2", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -1193,7 +1193,7 @@ static int ft817_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) } } - *ptt = ((p->tx_status & 0x80) == 0); + *ptt = ((p->tx_status & 0x20) == 0x20); return RIG_OK; } commit 6db44d6d497d6e1399fde1daaf65d1fcf36f11e3 Author: Christian Bayer <chr...@sa...> Date: Sun Jul 28 20:00:35 2024 +0200 upstream 817 diff --git a/rigs/yaesu/ft817.c b/rigs/yaesu/ft817.c index 0b0066b42..499e2c019 100644 --- a/rigs/yaesu/ft817.c +++ b/rigs/yaesu/ft817.c @@ -282,10 +282,25 @@ enum ft817_digi { 0x05, 100 } \ } } -#define FT817_SWR_CAL { 2, \ +// SWR values from Christian WA4YA, DL4YA +#define FT817_SWR_CAL { 16, \ { \ - { 0, 0 }, \ - { 15, 100 } \ + { 0, 1.0f }, \ + { 1, 1.4f }, \ + { 2, 1.8f }, \ + { 3, 2.13f }, \ + { 4, 2.25f }, \ + { 5, 3.7f }, \ + { 6, 6.0f }, \ + { 7, 7.0f }, \ + { 8, 8.0f }, \ + { 9, 9.0f }, \ + { 10, 10.0f }, \ + { 11, 10.0f }, \ + { 12, 10.0f }, \ + { 13, 10.0f }, \ + { 14, 10.0f }, \ + { 15, 10.0f } \ } } @@ -294,7 +309,7 @@ struct rig_caps ft817_caps = RIG_MODEL(RIG_MODEL_FT817), .model_name = "FT-817", .mfg_name = "Yaesu", - .version = "20240520.0", + .version = "20240728.1", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -1178,7 +1193,7 @@ static int ft817_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) } } - *ptt = ((p->tx_status & 0x80) == 0); + *ptt = ((p->tx_status & 0x20) == 0x20); return RIG_OK; } commit 5ec0b8464572ee7290fe65d11b95e60bb5b76cd3 Author: Mike Black W9MDB <mdb...@ya...> Date: Sun Jul 28 06:57:54 2024 -0500 Update SWR values for FT817 thanks to Christian WA4YA, DL4YA diff --git a/rigs/yaesu/ft817.c b/rigs/yaesu/ft817.c index 0b0066b42..42bc48ca9 100644 --- a/rigs/yaesu/ft817.c +++ b/rigs/yaesu/ft817.c @@ -282,10 +282,25 @@ enum ft817_digi { 0x05, 100 } \ } } +// SWR values from Christian WA4YA, DL4YA #define FT817_SWR_CAL { 2, \ { \ - { 0, 0 }, \ - { 15, 100 } \ + { 0, 1.0f }, \ + { 1, 1.4f }, \ + { 2, 1.8f }, \ + { 3, 2.13f }, \ + { 4, 2.25f }, \ + { 5, 3.7f }, \ + { 6, 6.0f }, \ + { 7, 7.0f }, \ + { 8, 8.0f }, \ + { 9, 9.0f }, \ + { 10, 10.0f }, \ + { 11, 10.0f }, \ + { 12, 10.0f }, \ + { 13, 10.0f }, \ + { 14, 10.0f }, \ + { 15, 10.0f } \ } } @@ -294,7 +309,7 @@ struct rig_caps ft817_caps = RIG_MODEL(RIG_MODEL_FT817), .model_name = "FT-817", .mfg_name = "Yaesu", - .version = "20240520.0", + .version = "20240728.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, commit 647b477dc95d3d688e352a125e77993c1f46d652 Author: Mike Black W9MDB <mdb...@ya...> Date: Fri Jul 26 15:48:44 2024 -0500 Fix x26cmdfails in icom.c diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 44b90e225..5bc76736d 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -2256,7 +2256,7 @@ static int icom_get_mode_x26(RIG *rig, vfo_t vfo, int *mode_len, const struct icom_priv_caps *priv_caps = rig->caps->priv; int retval; - if (priv->x26cmdfails != 0 && priv_caps->x25x26_always==0) + if (priv->x26cmdfails > 0 && priv_caps->x25x26_always==0) { rig_debug(RIG_DEBUG_WARN, "%s: x26cmdfails=%d, x25x26_always=%d\n", __func__, priv->x26cmdfails, priv_caps->x25x26_always); return -RIG_ENAVAIL; diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 370e4c19b..a0477319a 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -35,7 +35,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20240725" +#define BACKEND_VER "20240726" #define ICOM_IS_ID31 rig_is_model(rig, RIG_MODEL_ID31) #define ICOM_IS_ID51 rig_is_model(rig, RIG_MODEL_ID51) commit 3f59e962e1060e517a10f25310cecff2ccca53d9 Author: Mike Black W9MDB <mdb...@ya...> Date: Fri Jul 26 07:35:19 2024 -0500 Update simic7100 diff --git a/simulators/simic7100.c b/simulators/simic7100.c index afeae7de2..213940684 100644 --- a/simulators/simic7100.c +++ b/simulators/simic7100.c @@ -25,6 +25,7 @@ struct ip_mreq #include <termios.h> #include <unistd.h> +#undef ECHO #define BUFSIZE 256 #define X25 @@ -61,7 +62,7 @@ void dumphex(const unsigned char *buf, int n) int frameGet(int fd, unsigned char *buf) { - int i = 0, n; + int i = 0; memset(buf, 0, BUFSIZE); unsigned char c; @@ -77,10 +78,10 @@ again: char mytime[256]; date_strget(mytime, sizeof(mytime), 1); printf("%s:", mytime); dumphex(buf, i); +#ifdef ECHO // echo n = write(fd, buf, i); - - if (n != i) { printf("%s: error on write: %s\n", __func__, strerror(errno)); } +#endif return i; } @@ -146,6 +147,13 @@ void frameParse(int fd, unsigned char *frame, int len) if (powerstat) { + unsigned char frame2[11]; + memcpy(frame2,frame,11); + frame2[2] = 0xe1; + frame2[3] = 0x88; + dump_hex(frame2,11); + n = write(fd, frame2, 11); + dump_hex(frame,11); n = write(fd, frame, 11); } @@ -223,8 +231,9 @@ void frameParse(int fd, unsigned char *frame, int len) if (frame[5] == 0xfd) { printf("get split %d\n", 1); - frame[7] = 0xfd; - n = write(fd, frame, 8); + frame[5] = split; + frame[6] = 0xfd; + n = write(fd, frame, 7); } else { commit b718788c9ab46a7b370b74ef77436c9741f8b09b Author: Mike Black W9MDB <mdb...@ya...> Date: Thu Jul 25 12:08:23 2024 -0500 Echo detection is now dynamic so can be changed while running Async packet is now handled correctly...may be tied to the ANT CI-V port https://github.com/Hamlib/Hamlib/issues/1575 https://github.com/Hamlib/Hamlib/issues/1587 https://github.com/Hamlib/Hamlib/issues/1588 diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index 30cfdd225..69ee33ba7 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -306,6 +306,7 @@ read_another_frame: * FIXME: handle padding/collisions * ACKFRMLEN is the smallest frame we can expect from the rig */ + priv->serial_USB_echo_off = 1; again2: buf[0] = 0; frm_len = read_icom_frame(rp, buf, sizeof(buf)); diff --git a/rigs/icom/ic7100.c b/rigs/icom/ic7100.c index a7ff0288e..4c2cd7325 100644 --- a/rigs/icom/ic7100.c +++ b/rigs/icom/ic7100.c @@ -201,8 +201,8 @@ static const struct icom_priv_caps ic7100_priv_caps = .extcmds = ic7100_extcmds, .antack_len = 2, .ant_count = 2, - .x25x26_always = 1, - .x25x26_possibly = 0, + .x25x26_always = 0, + .x25x26_possibly = 1, .x1cx03_always = 0, .x1cx03_possibly = 1, .x1ax03_supported = 1, @@ -327,7 +327,7 @@ struct rig_caps ic7100_caps = RIG_MODEL(RIG_MODEL_IC7100), .model_name = "IC-7100", .mfg_name = "Icom", - .version = BACKEND_VER ".7", + .version = BACKEND_VER ".8", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 65f1cfa47..44b90e225 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -1152,7 +1152,7 @@ retry_open: rig_debug(RIG_DEBUG_TRACE, "%s: echo status known, getting frequency\n", __func__); rp->retry = 0; - rs->current_vfo = icom_current_vfo(rig); +// rs->current_vfo = icom_current_vfo(rig); // some rigs like the IC7100 still echo when in standby // so asking for freq now should timeout if such a rig freq_t tfreq; @@ -1228,7 +1228,7 @@ retry_open: rig_get_func(rig, RIG_VFO_CURR, RIG_FUNC_SATMODE, &satmode); } - rs->current_vfo = icom_current_vfo(rig); + //rs->current_vfo = icom_current_vfo(rig); } #if 0 // do not do this here -- needs to be done when ranges are requested instead as this is very slow @@ -8995,6 +8995,7 @@ int icom_process_async_frame(RIG *rig, size_t frame_length, */ switch (frame[4]) { + case C_RD_FREQ: case C_SND_FREQ: { // TODO: The freq length might be less than 4 or 5 bytes on older rigs! diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 2933748b4..370e4c19b 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -35,7 +35,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20240717" +#define BACKEND_VER "20240725" #define ICOM_IS_ID31 rig_is_model(rig, RIG_MODEL_ID31) #define ICOM_IS_ID51 rig_is_model(rig, RIG_MODEL_ID51) commit 75783cb1255d184c13f13464322ce6ba3c234a4e Author: Mike Black W9MDB <mdb...@ya...> Date: Tue Jul 23 09:34:09 2024 -0500 Revert "Try to fix IC-7100 remote operation echo oddity" Seems to break things severely This reverts commit ed33a235f4acd515bc415556343b599698958387. diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index ff9ccf348..30cfdd225 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -221,10 +221,6 @@ again1: rig_debug(RIG_DEBUG_VERBOSE, "%s: subcmd x%02d != buf x%02x so retry read\n", __func__, subcmd, buf[5]); goto again1; } - if (sendbuf[3] != buf[2]) { // then the reply controller addr is not the same so skip it - rig_debug(RIG_DEBUG_VERBOSE, "%s: subcmd x%02d != buf x%02x so retry read\n", __func__, subcmd, buf[5]); - goto again1; - } // we might have 0xfe string during rig wakeup rig_debug(RIG_DEBUG_TRACE, "%s: DEBUG retval=%d, frm_len=%d, cmd=0x%02x\n", diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index d0cf8779c..65f1cfa47 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -8970,7 +8970,8 @@ int icom_is_async_frame(RIG *rig, size_t frame_length, } /* Spectrum scope data is not CI-V transceive data, but handled the same way as it is pushed by the rig */ - return frame[2] == BCASTID || (frame[2] == CTRLID && frame[4] == C_CTL_SCP + // IC-7100 sends 0xe1 for broadcast frame? + return frame[2] == 0xe1 || frame[2] == BCASTID || (frame[2] == CTRLID && frame[4] == C_CTL_SCP && frame[5] == S_SCP_DAT); } diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 2d64d643d..2933748b4 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -35,7 +35,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20240722" +#define BACKEND_VER "20240717" #define ICOM_IS_ID31 rig_is_model(rig, RIG_MODEL_ID31) #define ICOM_IS_ID51 rig_is_model(rig, RIG_MODEL_ID51) commit ed33a235f4acd515bc415556343b599698958387 Author: Mike Black W9MDB <mdb...@ya...> Date: Mon Jul 22 16:57:14 2024 -0500 Try to fix IC-7100 remote operation echo oddity https://github.com/Hamlib/Hamlib/issues/1575 diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index 30cfdd225..ff9ccf348 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -221,6 +221,10 @@ again1: rig_debug(RIG_DEBUG_VERBOSE, "%s: subcmd x%02d != buf x%02x so retry read\n", __func__, subcmd, buf[5]); goto again1; } + if (sendbuf[3] != buf[2]) { // then the reply controller addr is not the same so skip it + rig_debug(RIG_DEBUG_VERBOSE, "%s: subcmd x%02d != buf x%02x so retry read\n", __func__, subcmd, buf[5]); + goto again1; + } // we might have 0xfe string during rig wakeup rig_debug(RIG_DEBUG_TRACE, "%s: DEBUG retval=%d, frm_len=%d, cmd=0x%02x\n", diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 65f1cfa47..d0cf8779c 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -8970,8 +8970,7 @@ int icom_is_async_frame(RIG *rig, size_t frame_length, } /* Spectrum scope data is not CI-V transceive data, but handled the same way as it is pushed by the rig */ - // IC-7100 sends 0xe1 for broadcast frame? - return frame[2] == 0xe1 || frame[2] == BCASTID || (frame[2] == CTRLID && frame[4] == C_CTL_SCP + return frame[2] == BCASTID || (frame[2] == CTRLID && frame[4] == C_CTL_SCP && frame[5] == S_SCP_DAT); } diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 2933748b4..2d64d643d 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -35,7 +35,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20240717" +#define BACKEND_VER "20240722" #define ICOM_IS_ID31 rig_is_model(rig, RIG_MODEL_ID31) #define ICOM_IS_ID51 rig_is_model(rig, RIG_MODEL_ID51) commit db74acc725aa86d9a153d012cf4fa2dec82e1037 Author: Mike Black W9MDB <mdb...@ya...> Date: Sun Jul 21 22:22:12 2024 -0500 Try to fix Hilberling PTT again diff --git a/rigs/kenwood/ts480.c b/rigs/kenwood/ts480.c index 34f04631a..2f9bc21c5 100644 --- a/rigs/kenwood/ts480.c +++ b/rigs/kenwood/ts480.c @@ -1838,7 +1838,7 @@ struct rig_caps pt8000a_caps = RIG_MODEL(RIG_MODEL_PT8000A), .model_name = "PT-8000A", .mfg_name = "Hilberling", - .version = BACKEND_VER ".2", + .version = BACKEND_VER ".3", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -1979,7 +1979,7 @@ struct rig_caps pt8000a_caps = .set_split_vfo = kenwood_set_split_vfo, .get_split_vfo = kenwood_get_split_vfo_if, .get_ptt = kenwood_get_ptt, - .set_ptt = qdx_set_ptt, + .set_ptt = kenwood_set_ptt, .get_dcd = kenwood_get_dcd, .set_powerstat = kenwood_set_powerstat, .get_powerstat = kenwood_get_powerstat, commit 673d031d5e6819ab7169ead9947e24b1a9b87476 Author: Mike Black W9MDB <mdb...@ya...> Date: Sun Jul 21 17:38:40 2024 -0500 Fix Hilbering TQ and AI commands diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 80216f4d1..22730dcad 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -378,7 +378,7 @@ transaction_write: skip |= strncmp(cmdstr, "PS1", 3) == 0; skip |= strncmp(cmdstr, "PS0", 3) == 0; skip |= strncmp(cmdstr, "K22", 3) == 0; - skip |= (rig->caps->rig_model == RIG_MODEL_PT8000A && (strlen(cmdstr) > 3) && (strncmp(cmdstr, "TQ", 2) == 0)); // Skip Hilberling TQn command check + skip |= (rig->caps->rig_model == RIG_MODEL_PT8000A && (strncmp(cmdstr, "TQ", 2) == 0)); // Skip Hilberling TQn command check if (skip) { @@ -1083,7 +1083,10 @@ int kenwood_open(RIG *rig) rig_debug(RIG_DEBUG_VERBOSE, "%s: found the right driver for %s(%u)\n", __func__, rig->caps->model_name, rig->caps->rig_model); /* get current AI state so it can be restored */ - kenwood_get_trn(rig, &priv->trn_state); /* ignore errors */ + if (rig->caps->rig_model != RIG_MODEL_PT8000A) // doesn't know AI command + { + kenwood_get_trn(rig, &priv->trn_state); /* ignore errors */ + } /* Currently we cannot cope with AI mode so turn it off in case last client left it on */ diff --git a/rigs/kenwood/kenwood.h b/rigs/kenwood/kenwood.h index ac204d24b..4f9078639 100644 --- a/rigs/kenwood/kenwood.h +++ b/rigs/kenwood/kenwood.h @@ -28,7 +28,7 @@ #include "token.h" #include "idx_builtin.h" -#define BACKEND_VER "20240713" +#define BACKEND_VER "20240712" #define EOM_KEN ';' #define EOM_TH '\r' commit 979d2adccf7e7f76821d8c760808341b29f0fd2f Author: Mike Black W9MDB <mdb...@ya...> Date: Fri Jul 19 23:10:10 2024 -0500 On EBUSY write we'll do 2 retries with 200ms wait diff --git a/src/rig.c b/src/rig.c index d61f46831..4725e83fc 100644 --- a/src/rig.c +++ b/src/rig.c @@ -8601,6 +8601,8 @@ void *async_data_handler(void *arg) } else { + static int busy_retry=2; +again: result = write_block_sync(RIGPORT(rig), frame, frame_length); if (result < 0) @@ -8608,6 +8610,10 @@ void *async_data_handler(void *arg) // TODO: error handling? can writing to a pipe really fail in ways we can recover from? rig_debug(RIG_DEBUG_ERR, "%s: write_block_sync() failed, result=%d\n", __func__, result); + if (result == EBUSY && --busy_retry>0) { // we can try again + hl_usleep(200*1000); + goto again; + } continue; } } commit abd6d4f388cb7c236f14025e670e85d124f04655 Author: Mike Black W9MDB <mdb...@ya...> Date: Fri Jul 19 22:39:12 2024 -0500 Avoid possible segfault diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 6361380f3..38efffaae 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -5628,19 +5628,19 @@ declare_proto_rig(set_clock) &hour, &min, &sec, &msec, &utc_offset); } - else if (arg1[16] == '+' || arg1[16] == '-') + else if (arg1 && (arg1[16] == '+' || arg1[16] == '-')) { // YYYY-MM-DDTHH:MM+ZZ n = sscanf(arg1, "%04d-%02d-%02dT%02d:%02d%d", &year, &mon, &day, &hour, &min, &utc_offset); } - else if (arg1[19] == '+' || arg1[19] == '-') + else if (arg1 && (arg1[19] == '+' || arg1[19] == '-')) { // YYYY-MM-DDTHH:MM:SS+ZZ n = sscanf(arg1, "%04d-%02d-%02dT%02d:%02d:%02d%d", &year, &mon, &day, &hour, &min, &sec, &utc_offset); } - else if (arg1[23] == '+' || arg1[23] == '-') + else if (arg1 && (arg1[23] == '+' || arg1[23] == '-')) { // YYYY-MM-DDTHH:MM:SS.SSS+ZZ n = sscanf(arg1, "%04d-%02d-%02dT%02d:%02d:%02d%lf%d", &year, &mon, &day, &hour, commit 2e96b91b04eece8b9aeee304a0cbd09002044607 Author: Mike Black W9MDB <mdb...@ya...> Date: Wed Jul 17 22:43:35 2024 -0500 Add Xiegu X6200 diff --git a/NEWS b/NEWS index 45f3ae855..e847ac75a 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,7 @@ Version 5.x -- future * Change FT1000MP Mark V model names to align with FT1000MP Version 4.6 + * Added Xeigu X6200 * Added Commradio CTX-10 * Added Guoehe PMR-171 * Added csntechnoligies.net S.A.T Satellite rotor control diff --git a/include/hamlib/riglist.h b/include/hamlib/riglist.h index 958ab1d1a..ad9114c78 100644 --- a/include/hamlib/riglist.h +++ b/include/hamlib/riglist.h @@ -296,6 +296,7 @@ #define RIG_MODEL_G90 RIG_MAKE_MODEL(RIG_ICOM, 88) /* Xiegu G90 */ #define RIG_MODEL_X5105 RIG_MAKE_MODEL(RIG_ICOM, 89) /* Xiegu X5105 -- G90 compatible */ #define RIG_MODEL_IC905 RIG_MAKE_MODEL(RIG_ICOM, 90) +#define RIG_MODEL_X6200 RIG_MAKE_MODEL(RIG_ICOM, 91) /* Xiegu X6200 */ /* * Optoelectronics (CI-V) diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 1dfedee7d..65f1cfa47 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -9924,6 +9924,7 @@ DECLARE_INITRIG_BACKEND(icom) rig_register(&x6100_caps); rig_register(&g90_caps); rig_register(&x5105_caps); + rig_register(&x6200_caps); return (RIG_OK); } diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 575e8558c..2933748b4 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -517,6 +517,7 @@ extern struct rig_caps x108g_caps; extern struct rig_caps x6100_caps; extern struct rig_caps g90_caps; extern struct rig_caps x5105_caps; +extern struct rig_caps x6200_caps; extern struct rig_caps icr8600_caps; extern struct rig_caps icr30_caps; diff --git a/rigs/icom/xiegu.c b/rigs/icom/xiegu.c index 342250154..6b8301cc4 100644 --- a/rigs/icom/xiegu.c +++ b/rigs/icom/xiegu.c @@ -160,7 +160,7 @@ int xiegu_rig_open(RIG *rig) case 0x0090: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "G90S");break; case 0x0106: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "G106/G106C");break; case 0x6100: - case 0x00a4: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "X6100");break; + ... [truncated message content] |