Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package hamlib for openSUSE:Factory checked 
in at 2023-01-02 15:01:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hamlib (Old)
 and      /work/SRC/openSUSE:Factory/.hamlib.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "hamlib"

Mon Jan  2 15:01:53 2023 rev:15 rq:1046007 version:4.5.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/hamlib/hamlib.changes    2022-12-27 
11:55:14.175372757 +0100
+++ /work/SRC/openSUSE:Factory/.hamlib.new.1563/hamlib.changes  2023-01-02 
15:01:57.193278402 +0100
@@ -1,0 +2,10 @@
+Sun Jan  1 14:58:19 UTC 2023 - Wojciech Kazubski <[email protected]>
+
+- Update to version 4.5.3 (2022-12-31)
+  * Fix serial.c for hardware flow control on Linux and MacOSy
+  * Add QRPLabs QCX/QDX rig -- not quite a TS480
+  * Fix QRP QRDX firmware bugs in IF message so PTT works now
+  * FTDX5000 will now remember startup front/read settings and restore it
+  * Fix FTDX5000 write_delay with microham
+
+-------------------------------------------------------------------

Old:
----
  Hamlib-4.5.2.tar.gz

New:
----
  Hamlib-4.5.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ hamlib.spec ++++++
--- /var/tmp/diff_new_pack.7AVcge/_old  2023-01-02 15:01:57.853282112 +0100
+++ /var/tmp/diff_new_pack.7AVcge/_new  2023-01-02 15:01:57.857282134 +0100
@@ -18,7 +18,7 @@
 
 %define sover   4
 Name:           hamlib
-Version:        4.5.2
+Version:        4.5.3
 Release:        0
 Summary:        Run-time library to control radio transcievers and receivers
 License:        LGPL-2.1-only

++++++ Hamlib-4.5.2.tar.gz -> Hamlib-4.5.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/NEWS new/Hamlib-4.5.3/NEWS
--- old/Hamlib-4.5.2/NEWS       2022-12-24 00:04:12.000000000 +0100
+++ new/Hamlib-4.5.3/NEWS       2022-12-31 21:46:26.000000000 +0100
@@ -22,6 +22,15 @@
         * Add FLIR PTU-D48, E46, D100, D300 rotors
         * Fix FTDX3000 rig split
 
+Version 4.5.3
+        * 2022-12-31
+        * Fix serial.c for hardware flow control on Linux and MacOSy
+        * Add QRPLabs QCX/QDX rig -- not quite a TS480
+        * Fix QRP QRDX firmware bugs in IF message so PTT works now
+        * FTDX5000 will now remember startup front/read settings and restore it
+        * Fix FTDX5000 write_delay with microham
+        * Fix grep error on MingW build
+
 Version 4.5.2
         * 2022-12-23
         * Fix PowerSDR ability to do commands while powered off
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/configure.ac 
new/Hamlib-4.5.3/configure.ac
--- old/Hamlib-4.5.2/configure.ac       2022-12-24 00:04:12.000000000 +0100
+++ new/Hamlib-4.5.3/configure.ac       2022-12-31 21:46:26.000000000 +0100
@@ -14,7 +14,7 @@
 dnl however, the use of '~' should be fine as apt (others?) will treat
 dnl it as an earlier version than the actual release.  TNX KA6MAL
 dnl PACKAGE_NAME + " " + PACKAGE_VERSION must not exceed 20 chars!
-AC_INIT([Hamlib],[4.5.2],[[email protected]],[hamlib],[http://www.hamlib.org])
+AC_INIT([Hamlib],[4.5.3],[[email protected]],[hamlib],[http://www.hamlib.org])
 
 AC_CONFIG_SRCDIR([include/hamlib/rig.h])
 AC_CONFIG_MACRO_DIR([macros])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/include/hamlib/riglist.h 
new/Hamlib-4.5.3/include/hamlib/riglist.h
--- old/Hamlib-4.5.2/include/hamlib/riglist.h   2022-12-24 00:04:12.000000000 
+0100
+++ new/Hamlib-4.5.3/include/hamlib/riglist.h   2022-12-31 21:46:26.000000000 
+0100
@@ -185,6 +185,7 @@
 #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)
+#define RIG_MODEL_QRPLABS RIG_MAKE_MODEL(RIG_KENWOOD,52)
 
 /*
  * Icom
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/rigs/kenwood/ic10.c 
new/Hamlib-4.5.3/rigs/kenwood/ic10.c
--- old/Hamlib-4.5.2/rigs/kenwood/ic10.c        2022-12-24 00:04:12.000000000 
+0100
+++ new/Hamlib-4.5.3/rigs/kenwood/ic10.c        2022-12-31 21:46:26.000000000 
+0100
@@ -532,7 +532,7 @@
 {
     struct kenwood_priv_caps *priv = (struct kenwood_priv_caps 
*)rig->caps->priv;
     char infobuf[50];
-    int retval, iflen;
+    int retval, iflen, offset;
 
     retval = get_ic10_if(rig, infobuf);
 
@@ -546,8 +546,15 @@
 
     /* IFggmmmkkkhhh snnnzrx yytdfcp */
     /* IFggmmmkkkhhhxxxxxrrrrrssxcctmfcp */
+    /* IFggmmmkkkhhhxxxxxrrrrrssxcctmfcp####  what should be if p13/p14/p15 
included  */
+    /* IF00014074000     +00000000003000000 ; QRP QDX bad IF command -- 36 
bytes instead of 33 */
+    /* QRP QDX should be 37 bytes but used only 1 byte for p14 instead of 2 
bytes */
+    /* 12345678901234567890123456789012345678 */
+    offset = 5;
+    if (iflen == 36) offset = 8; // QRP QDX gets completely bogus length
+    else if (iflen == 37) offset = 9; // just incase somebody does this add 
p13/p14x2/p15
 
-    *ptt = infobuf[iflen - 5] == '0' ? RIG_PTT_OFF : RIG_PTT_ON;
+    *ptt = infobuf[iflen - offset] == '0' ? RIG_PTT_OFF : RIG_PTT_ON;
 
     return RIG_OK;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/rigs/kenwood/kenwood.c 
new/Hamlib-4.5.3/rigs/kenwood/kenwood.c
--- old/Hamlib-4.5.2/rigs/kenwood/kenwood.c     2022-12-24 00:04:12.000000000 
+0100
+++ new/Hamlib-4.5.3/rigs/kenwood/kenwood.c     2022-12-31 21:46:26.000000000 
+0100
@@ -5774,6 +5774,7 @@
     rig_register(&malachite_caps);
     rig_register(&tx500_caps);
     rig_register(&sdruno_caps);
+    rig_register(&qrplabs_caps);
 
     return (RIG_OK);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/rigs/kenwood/kenwood.h 
new/Hamlib-4.5.3/rigs/kenwood/kenwood.h
--- old/Hamlib-4.5.2/rigs/kenwood/kenwood.h     2022-12-24 00:04:12.000000000 
+0100
+++ new/Hamlib-4.5.3/rigs/kenwood/kenwood.h     2022-12-31 21:46:26.000000000 
+0100
@@ -29,7 +29,7 @@
 #include "misc.h"
 #include "idx_builtin.h"
 
-#define BACKEND_VER "20221128"
+#define BACKEND_VER "20221230"
 
 #define EOM_KEN ';'
 #define EOM_TH '\r'
@@ -110,6 +110,7 @@
 #define RIG_IS_PT8000A   (rig->caps->rig_model == RIG_MODEL_PT8000A)
 #define RIG_IS_POWERSDR  (rig->caps->rig_model == RIG_MODEL_POWERSDR)
 #define RIG_IS_MALACHITE (rig->caps->rig_model == RIG_MODEL_MALACHITE)
+#define RIG_IS_QRPLABS (rig->caps->rig_model == RIG_MODEL_QRPLABS)
 
 struct kenwood_filter_width
 {
@@ -311,6 +312,7 @@
 extern const struct rig_caps malachite_caps;
 extern const struct rig_caps tx500_caps;
 extern const struct rig_caps sdruno_caps;
+extern const struct rig_caps qrplabs_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,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/rigs/kenwood/ts480.c 
new/Hamlib-4.5.3/rigs/kenwood/ts480.c
--- old/Hamlib-4.5.2/rigs/kenwood/ts480.c       2022-12-24 00:04:12.000000000 
+0100
+++ new/Hamlib-4.5.3/rigs/kenwood/ts480.c       2022-12-31 21:46:26.000000000 
+0100
@@ -1449,6 +1449,198 @@
 };
 
 /*
+ * QRPLabs TS-480 emulation rig capabilities
+ * Notice that some rigs share the same functions.
+ */
+const struct rig_caps qrplabs_caps =
+{
+    RIG_MODEL(RIG_MODEL_QRPLABS),
+    .model_name = "QCX/QDX",
+    .mfg_name = "QRPLabs",
+    .version = BACKEND_VER ".0",
+    .copyright = "LGPL",
+    .status = RIG_STATUS_STABLE,
+    .rig_type = RIG_TYPE_TRANSCEIVER,
+    .ptt_type = RIG_PTT_RIG,
+    .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 = 500,
+    .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,
+    .agc_level_count = 3,
+    .agc_levels = { RIG_AGC_OFF, RIG_AGC_FAST, RIG_AGC_SLOW },
+
+    .rx_range_list1 = {
+        {kHz(100),   Hz(59999999), TS480_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_FLT_END,
+    },
+    .vfo_ops = TS480_VFO_OPS,
+    .level_gran =
+    {
+#include "level_gran_kenwood.h"
+        [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,
+    .get_info = kenwood_ts480_get_info,
+    .reset = kenwood_reset,
+    .has_set_level = TS480_LEVEL_SET,
+    .has_get_level = TS480_LEVEL_GET,
+    .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,
+    .wait_morse =  rig_wait_morse,
+    .vfo_op = kenwood_vfo_op,
+    .hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS
+};
+
+/*
  * Hilberling PS8000A TS480 emulation
  * Notice that some rigs share the same functions.
  */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/rigs/yaesu/ft5000.c 
new/Hamlib-4.5.3/rigs/yaesu/ft5000.c
--- old/Hamlib-4.5.2/rigs/yaesu/ft5000.c        2022-12-24 00:04:12.000000000 
+0100
+++ new/Hamlib-4.5.3/rigs/yaesu/ft5000.c        2022-12-31 21:46:26.000000000 
+0100
@@ -51,7 +51,7 @@
         { .index = 8, .set_value = 0, .get_value = '6', .width = 3000, 
.optional = 0 },
         { .index = 9, .set_value = 0, .get_value = '9', .width = 600, 
.optional = 0 },
         { .index = 10, .set_value = 0, .get_value = 'A', .width = 300, 
.optional = 0 },
-    }
+    },
 };
 
 const struct confparams ftdx5000_ext_levels[] =
@@ -140,7 +140,7 @@
     RIG_MODEL(RIG_MODEL_FTDX5000),
     .model_name =         "FTDX-5000",
     .mfg_name =           "Yaesu",
-    .version =            NEWCAT_VER ".7",
+    .version =            NEWCAT_VER ".9",
     .copyright =          "LGPL",
     .status =             RIG_STATUS_STABLE,
     .rig_type =           RIG_TYPE_TRANSCEIVER,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/rigs/yaesu/ft5000.h 
new/Hamlib-4.5.3/rigs/yaesu/ft5000.h
--- old/Hamlib-4.5.2/rigs/yaesu/ft5000.h        2022-12-24 00:04:12.000000000 
+0100
+++ new/Hamlib-4.5.3/rigs/yaesu/ft5000.h        2022-12-31 21:46:26.000000000 
+0100
@@ -141,7 +141,7 @@
 /* Delay between bytes sent to FT-5000
  * Should not exceed value set in CAT TOT menu (rig default is 10 mSec)
  */
-#define FTDX5000_WRITE_DELAY                    1
+#define FTDX5000_WRITE_DELAY                    0
 
 
 /* Delay sequential fast writes */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/rigs/yaesu/newcat.c 
new/Hamlib-4.5.3/rigs/yaesu/newcat.c
--- old/Hamlib-4.5.2/rigs/yaesu/newcat.c        2022-12-24 00:04:12.000000000 
+0100
+++ new/Hamlib-4.5.3/rigs/yaesu/newcat.c        2022-12-31 21:46:26.000000000 
+0100
@@ -545,6 +545,7 @@
     struct newcat_priv_data *priv = rig->state.priv;
     struct rig_state *rig_s = &rig->state;
     const char *handshake[3] = {"None", "Xon/Xoff", "Hardware"};
+    int err;
 
     ENTERFUNC;
 
@@ -600,7 +601,6 @@
             || priv->rig_id == NC_RIGID_FTDX3000
             || priv->rig_id == NC_RIGID_FTDX3000DM)
     {
-        int err;
         char *cmd = "EX0291;EX029;"; // FT2000/D
 
         if (priv->rig_id == NC_RIGID_FT950 || rig->caps->rig_model == 
RIG_MODEL_FT950) { cmd = "EX0271;EX027;"; }
@@ -631,6 +631,21 @@
         rig_debug(RIG_DEBUG_VERBOSE, "%s: disabling FTDX3000 band select\n", 
__func__);
     }
 
+    if (is_ftdx5000)
+    {
+        // Remember EX103 status
+        SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "EX103;");
+        rig_debug(RIG_DEBUG_TRACE, "%s: cmd_str = %s\n", __func__, 
priv->cmd_str);
+        err = newcat_get_cmd(rig);
+
+        if (RIG_OK != (err = newcat_get_cmd(rig)))
+        {
+            RETURNFUNC(err);
+        }
+
+        if (priv->ret_data[6] == ';') { priv->front_rear_status = 
priv->ret_data[5]; }
+    }
+
     RETURNFUNC(RIG_OK);
 }
 
@@ -664,8 +679,9 @@
 
     if (is_ftdx5000)
     {
-        // Ensure FT5000 is back to MIC input
-        SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "EX1030;");
+        // Restore EX103 status
+        SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "EX103%c;",
+                 priv->front_rear_status);
         rig_debug(RIG_DEBUG_TRACE, "%s: cmd_str = %s\n", __func__, 
priv->cmd_str);
         newcat_set_cmd(rig); // don't care about the return
     }
@@ -1741,7 +1757,7 @@
 int newcat_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
 {
     struct newcat_priv_data *priv  = (struct newcat_priv_data 
*)rig->state.priv;
-    int err;
+    int err = -RIG_EPROTO;
     char txon[] = "TX1;";
     char txoff[] = "TX0;";
 
@@ -1756,24 +1772,45 @@
 
     switch (ptt)
     {
-    // the FTDX5000 uses menu 103 for front/rear audio in USB mode
     case RIG_PTT_ON_MIC:
-        SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "EX1030;");
+
+        /* Build the command string */
+        // the FTDX5000 uses menu 103 for front/rear audio in USB mode
+        if (is_ftdx5000)
+        {
+            // Ensure FT5000 is back to MIC input
+            SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "EX1030;");
+            rig_debug(RIG_DEBUG_TRACE, "%s: cmd_str = %s\n", __func__, 
priv->cmd_str);
+            newcat_set_cmd(rig); // don't care about the return
+        }
+
+        SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "%s", txon);
         rig_debug(RIG_DEBUG_TRACE, "%s: cmd_str = %s\n", __func__, 
priv->cmd_str);
         err = newcat_set_cmd(rig);
         break;
 
     case RIG_PTT_ON_DATA:
-        SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "EX1031;");
+
+        /* Build the command string */
+        // the FTDX5000 uses menu 103 for front/rear audio in USB mode
+        if (is_ftdx5000)
+        {
+            // Ensure FT5000 is back to MIC input
+            SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "EX1031;");
+            rig_debug(RIG_DEBUG_TRACE, "%s: cmd_str = %s\n", __func__, 
priv->cmd_str);
+            newcat_set_cmd(rig); // don't care about the return
+        }
+
+        SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "%s", txon);
         rig_debug(RIG_DEBUG_TRACE, "%s: cmd_str = %s\n", __func__, 
priv->cmd_str);
         err = newcat_set_cmd(rig);
         break;
 
     case RIG_PTT_ON:
-        /* Build the command string */
         SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "%s", txon);
         rig_debug(RIG_DEBUG_TRACE, "%s: cmd_str = %s\n", __func__, 
priv->cmd_str);
         err = newcat_set_cmd(rig);
+
         break;
 
     case RIG_PTT_OFF:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/rigs/yaesu/newcat.h 
new/Hamlib-4.5.3/rigs/yaesu/newcat.h
--- old/Hamlib-4.5.2/rigs/yaesu/newcat.h        2022-12-24 00:04:12.000000000 
+0100
+++ new/Hamlib-4.5.3/rigs/yaesu/newcat.h        2022-12-31 21:46:26.000000000 
+0100
@@ -50,7 +50,7 @@
 typedef char ncboolean;
 
 /* shared function version */
-#define NEWCAT_VER "20221223"
+#define NEWCAT_VER "20221228"
 
 /* Hopefully large enough for future use, 128 chars plus '\0' */
 #define NEWCAT_DATA_LEN                 129
@@ -128,6 +128,7 @@
     char last_if_response[NEWCAT_DATA_LEN];
     int poweron; /* to prevent powering on more than once */
     int question_mark_response_means_rejected; /* the question mark response 
has multiple meanings */
+    char front_rear_status; /* e.g. FTDX5000 EX103 status */
 };
 
 /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/simulators/simftdx5000.c 
new/Hamlib-4.5.3/simulators/simftdx5000.c
--- old/Hamlib-4.5.2/simulators/simftdx5000.c   2022-12-24 00:04:12.000000000 
+0100
+++ new/Hamlib-4.5.3/simulators/simftdx5000.c   2022-12-31 21:46:26.000000000 
+0100
@@ -22,6 +22,7 @@
 int sh = 25;
 int na = 0;
 int ex039 = 0;
+int ex103 = 0;
 
 // ID 0310 == 310, Must drop leading zero
 typedef enum nc_rigid_e
@@ -316,6 +317,20 @@
         {
             sscanf(buf, "EX039%d", &ex039);
         }
+        else if (strcmp(buf, "EX103;") == 0)
+        {
+            SNPRINTF(buf, sizeof(buf), "EX103%d;", ex103);
+            n = write(fd, buf, strlen(buf));
+        }
+        else if (strncmp(buf, "EX103", 3) == 0)
+        {
+            sscanf(buf, "EX103%d", &ex103);
+        }
+        else if (strcmp(buf, "PS;") == 0)
+        {
+            SNPRINTF(buf, sizeof(buf), "PS1;");
+            n = write(fd, buf, strlen(buf));
+        }
         else if (strlen(buf) > 0)
         {
             fprintf(stderr, "Unknown command: %s\n", buf);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/src/Makefile.am 
new/Hamlib-4.5.3/src/Makefile.am
--- old/Hamlib-4.5.2/src/Makefile.am    2022-12-24 00:04:12.000000000 +0100
+++ new/Hamlib-4.5.3/src/Makefile.am    2022-12-31 21:46:26.000000000 +0100
@@ -30,9 +30,10 @@
 # directory  before  the  source directory  for  the  hamlibdatetime.h
 # header.
 hamlibdatetime.h: FORCE
+       echo "#define HAMLIBDATETIME "\"$$(TZ=UTC git 
--git-dir=$(top_srcdir)/.git log --no-merges --date='format-local:%b %d 
%H:%M:%SZ %Y SHA=' --format='%cd' -n 1)$$(git --git-dir=$(top_srcdir)/.git log 
--no-merges -n 1 | cut -c8-13)\"  
        @if test -x $(top_srcdir)/.git ; then \
                echo "/* This date time is from the last non-merge commit to 
Hamlib. */" > $(builddir)/$(@F).tmp ;\
-               echo "#define HAMLIBDATETIME "\"$$(TZ=UTC git 
--git-dir=$(top_srcdir)/.git log --no-merges --date='format-local:%a %b %d 
%H:%M:%S %Y %z SHA=' --format='%cd' -n 1)$$(git --git-dir=$(top_srcdir)/.git 
log --no-merges | grep commit | head -n 1 | cut -c8-13)\"  >> 
$(builddir)/$(@F).tmp ;\
+               echo "#define HAMLIBDATETIME "\"$$(TZ=UTC git 
--git-dir=$(top_srcdir)/.git log --no-merges --date='format-local:%b %d 
%H:%M:%SZ %Y SHA=' --format='%cd' -n 1)$$(git --git-dir=$(top_srcdir)/.git log 
--no-merges -n 1 | head -n 1 | cut -c8-13)\"  >> $(builddir)/$(@F).tmp ;\
                diff -qN $(builddir)/$(@F).tmp $(builddir)/$(@F) ; test $$? -eq 
0 || { echo "Generating SCS header \"$(builddir)/$(@F)\"" ; mv -f 
$(builddir)/$(@F).tmp $(builddir)/$(@F) ; } ;\
                rm -f $(builddir)/$(@F).tmp ;\
        else \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Hamlib-4.5.2/src/serial.c 
new/Hamlib-4.5.3/src/serial.c
--- old/Hamlib-4.5.2/src/serial.c       2022-12-24 00:04:12.000000000 +0100
+++ new/Hamlib-4.5.3/src/serial.c       2022-12-31 21:46:26.000000000 +0100
@@ -290,8 +290,10 @@
     fd = rp->fd;
 
     // Linux sets pins high so we force them low once
-    ser_set_rts(rp, 0);
-    ser_set_dtr(rp, 0);
+    // This fails on Linux and MacOS with hardware flow control
+    // Seems setting low disables hardware flow setting later
+//    ser_set_rts(rp, 0);
+//    ser_set_dtr(rp, 0);
 
     /*
      * Get the current options for the port...

Reply via email to