Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package hamlib for openSUSE:Factory checked 
in at 2025-02-11 21:23:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hamlib (Old)
 and      /work/SRC/openSUSE:Factory/.hamlib.new.19470 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "hamlib"

Tue Feb 11 21:23:20 2025 rev:23 rq:1244843 version:4.6.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/hamlib/hamlib.changes    2025-01-27 
20:56:59.202918367 +0100
+++ /work/SRC/openSUSE:Factory/.hamlib.new.19470/hamlib.changes 2025-02-11 
21:24:39.634340786 +0100
@@ -1,0 +2,10 @@
+Mon Feb 10 18:18:10 UTC 2025 - Andreas Stieger <andreas.stie...@gmx.de>
+
+- Update to 4.6.2:
+  * Add missing levels for IC746/PRO RIG_LEVEL_RFPOWER_METER,
+    RIG_LEVEL_RFPOWER_METER_WATTS,RIG_LEVEL_SWR,RIG_LEVEL_ALC
+  * Fix IC905 for gpredict
+  * Fix potential segfault on QMX 
+  * Fix pmr171
+
+-------------------------------------------------------------------

Old:
----
  hamlib-4.6.1.tar.gz
  hamlib-4.6.1.tar.gz.asc

New:
----
  hamlib-4.6.2.tar.gz
  hamlib-4.6.2.tar.gz.asc

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

Other differences:
------------------
++++++ hamlib.spec ++++++
--- /var/tmp/diff_new_pack.OnVCdg/_old  2025-02-11 21:24:40.358370721 +0100
+++ /var/tmp/diff_new_pack.OnVCdg/_new  2025-02-11 21:24:40.358370721 +0100
@@ -19,7 +19,7 @@
 
 %define sover   4
 Name:           hamlib
-Version:        4.6.1
+Version:        4.6.2
 Release:        0
 Summary:        Run-time library to control radio transcievers and receivers
 License:        LGPL-2.1-only

++++++ hamlib-4.6.1.tar.gz -> hamlib-4.6.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hamlib-4.6.1/NEWS new/hamlib-4.6.2/NEWS
--- old/hamlib-4.6.1/NEWS       2025-01-22 03:01:39.000000000 +0100
+++ new/hamlib-4.6.2/NEWS       2025-02-09 22:22:13.000000000 +0100
@@ -12,6 +12,12 @@
         * rot_get_conf deprecated and replaced by rot_get_conf2
         * Change FT1000MP Mark V model names to align with FT1000MP
 
+Version 4.6.2
+        * Add missing levels for IC746/PRO 
RIG_LEVEL_RFPOWER_METER,RIG_LEVEL_RFPOWER_METER_WATTS,RIG_LEVEL_SWR,RIG_LEVEL_ALC
+        * Fix IC905 for gpredict
+        * Fix potential segfault on QMX 
+        * Fix pmr171
+        
 Version 4.6.1
         * Fix C++ builds failing on rig_list_foreach function
         * Fix IC9100 rigctld startup to end up on VFOA
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hamlib-4.6.1/README.developer 
new/hamlib-4.6.2/README.developer
--- old/hamlib-4.6.1/README.developer   2025-01-22 03:01:39.000000000 +0100
+++ new/hamlib-4.6.2/README.developer   2025-02-09 22:22:13.000000000 +0100
@@ -239,7 +239,7 @@
 you'll need the following tools. Make sure you have at least the required
 version or you won't even be able to build from the Git clone.
 
-N.B. The Debian and derivatives (Ubuntu and friends) 'build-essentials'
+N.B. The Debian and derivatives (Ubuntu and friends) 'build-essential'
 package will install a number of tools and minimize the number of packages
 that need to be installed manually (Debian package names are listed, other
 distributions may differ).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hamlib-4.6.1/configure new/hamlib-4.6.2/configure
--- old/hamlib-4.6.1/configure  2025-01-22 03:01:45.000000000 +0100
+++ new/hamlib-4.6.2/configure  2025-02-09 22:22:20.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for Hamlib 4.6.1.
+# Generated by GNU Autoconf 2.69 for Hamlib 4.6.2.
 #
 # Report bugs to <hamlib-develo...@lists.sourceforge.net>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='Hamlib'
 PACKAGE_TARNAME='hamlib'
-PACKAGE_VERSION='4.6.1'
-PACKAGE_STRING='Hamlib 4.6.1'
+PACKAGE_VERSION='4.6.2'
+PACKAGE_STRING='Hamlib 4.6.2'
 PACKAGE_BUGREPORT='hamlib-develo...@lists.sourceforge.net'
 PACKAGE_URL='http://www.hamlib.org'
 
@@ -1485,7 +1485,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures Hamlib 4.6.1 to adapt to many kinds of systems.
+\`configure' configures Hamlib 4.6.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1556,7 +1556,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Hamlib 4.6.1:";;
+     short | recursive ) echo "Configuration of Hamlib 4.6.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1713,7 +1713,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Hamlib configure 4.6.1
+Hamlib configure 4.6.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2394,7 +2394,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Hamlib $as_me 4.6.1, which was
+It was created by Hamlib $as_me 4.6.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -4637,7 +4637,7 @@
 
 # Define the identity of the package.
  PACKAGE='hamlib'
- VERSION='4.6.1'
+ VERSION='4.6.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4938,7 +4938,7 @@
 # Set them here to keep c++/Makefile and src/Makefile in sync.
 ABI_VERSION=4
 ABI_REVISION=6
-ABI_PATCH=1
+ABI_PATCH=2
 ABI_AGE=0
 
 
@@ -23870,7 +23870,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Hamlib $as_me 4.6.1, which was
+This file was extended by Hamlib $as_me 4.6.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -23937,7 +23937,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-Hamlib config.status 4.6.1
+Hamlib config.status 4.6.2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hamlib-4.6.1/configure.ac 
new/hamlib-4.6.2/configure.ac
--- old/hamlib-4.6.1/configure.ac       2025-01-22 03:01:39.000000000 +0100
+++ new/hamlib-4.6.2/configure.ac       2025-02-09 22:22:13.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.6.1],[hamlib-develo...@lists.sourceforge.net],[hamlib],[http://www.hamlib.org])
+AC_INIT([Hamlib],[4.6.2],[hamlib-develo...@lists.sourceforge.net],[hamlib],[http://www.hamlib.org])
 #AC_INIT([PRODUCT_NAME], [Hamlib])
 #AC_DEFINE([Hamlib], [PRODUCT_VERSION_RESOURCE])
 
@@ -76,7 +76,7 @@
 # Set them here to keep c++/Makefile and src/Makefile in sync.
 ABI_VERSION=4
 ABI_REVISION=6
-ABI_PATCH=1
+ABI_PATCH=2
 ABI_AGE=0
 
 AC_DEFINE_UNQUOTED([ABI_VERSION], [$ABI_VERSION], [Frontend ABI version])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hamlib-4.6.1/doc/hamlib.cfg 
new/hamlib-4.6.2/doc/hamlib.cfg
--- old/hamlib-4.6.1/doc/hamlib.cfg     2025-01-22 03:02:00.000000000 +0100
+++ new/hamlib-4.6.2/doc/hamlib.cfg     2025-02-09 22:22:35.000000000 +0100
@@ -1,7 +1,7 @@
 ## hamlib.cfg.in--converted into hamlib.cfg by config.status
 
 PROJECT_NAME    = Hamlib
-PROJECT_NUMBER  = 4.6.1
+PROJECT_NUMBER  = 4.6.2
 PROJECT_LOGO    = ../doc/hamlib.png
 
 # Output
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hamlib-4.6.1/rigs/icom/ic746.c 
new/hamlib-4.6.2/rigs/icom/ic746.c
--- old/hamlib-4.6.1/rigs/icom/ic746.c  2025-01-22 03:01:39.000000000 +0100
+++ new/hamlib-4.6.2/rigs/icom/ic746.c  2025-02-09 22:22:13.000000000 +0100
@@ -54,7 +54,7 @@
 
 #define IC746_FUNC_ALL 
(RIG_FUNC_NB|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_SBKIN|RIG_FUNC_FBKIN|RIG_FUNC_NR|RIG_FUNC_MON|RIG_FUNC_MN|RIG_FUNC_RF|RIG_FUNC_ANF|RIG_FUNC_APF|RIG_FUNC_RESUME|RIG_FUNC_ARO)
 
-#define IC746_LEVEL_ALL 
(RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_APF|RIG_LEVEL_AGC_TIME)
+#define IC746_LEVEL_ALL 
(RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_APF|RIG_LEVEL_AGC_TIME|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_SWR|RIG_LEVEL_ALC)
 
 #define IC746_GET_PARM (RIG_PARM_BACKLIGHT|RIG_PARM_BEEP)
 #define IC746_SET_PARM (RIG_PARM_BACKLIGHT|RIG_PARM_BEEP|RIG_PARM_ANN)
@@ -181,7 +181,7 @@
     RIG_MODEL(RIG_MODEL_IC746),
     .model_name = "IC-746",
     .mfg_name =  "Icom",
-    .version =  BACKEND_VER ".4",
+    .version =  BACKEND_VER ".5",
     .copyright =  "LGPL",
     .status =  RIG_STATUS_STABLE,
     .rig_type =  RIG_TYPE_TRANSCEIVER,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hamlib-4.6.1/rigs/kenwood/kenwood.h 
new/hamlib-4.6.2/rigs/kenwood/kenwood.h
--- old/hamlib-4.6.1/rigs/kenwood/kenwood.h     2025-01-22 03:01:39.000000000 
+0100
+++ new/hamlib-4.6.2/rigs/kenwood/kenwood.h     2025-02-09 22:22:13.000000000 
+0100
@@ -183,7 +183,7 @@
     int save_k2_ext_lvl; // so we can restore to original
     int save_k3_ext_lvl; // so we can restore to original -- for future use if 
needed
     int voice_bank; /* last voice bank send for use by stop_voice_mem */
-    mode_t last_mode_pc; // last mode memory for PC command
+    rmode_t last_mode_pc; // last mode memory for PC command
     int power_now,power_min,power_max;
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hamlib-4.6.1/rigs/kenwood/ts480.c 
new/hamlib-4.6.2/rigs/kenwood/ts480.c
--- old/hamlib-4.6.1/rigs/kenwood/ts480.c       2025-01-22 03:01:39.000000000 
+0100
+++ new/hamlib-4.6.2/rigs/kenwood/ts480.c       2025-02-09 22:22:13.000000000 
+0100
@@ -1943,7 +1943,7 @@
     RIG_MODEL(RIG_MODEL_QRPLABS_QMX),
     .model_name = "QMX",
     .mfg_name = "QRPLabs",
-    .version = BACKEND_VER ".1",
+    .version = BACKEND_VER ".2",
     .copyright = "LGPL",
     .status = RIG_STATUS_BETA,
     .rig_type = RIG_TYPE_TRANSCEIVER,
@@ -1980,6 +1980,8 @@
         RIG_FLT_END,
     },
 
+    .priv = (void *)& ts480_priv_caps,
+
     .rig_init = ts480_init,
     .rig_open = qrplabs_open,
     .rig_cleanup = kenwood_cleanup,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hamlib-4.6.1/rigs/yaesu/pmr171.c 
new/hamlib-4.6.2/rigs/yaesu/pmr171.c
--- old/hamlib-4.6.1/rigs/yaesu/pmr171.c        2025-01-22 03:01:39.000000000 
+0100
+++ new/hamlib-4.6.2/rigs/yaesu/pmr171.c        2025-02-09 22:22:13.000000000 
+0100
@@ -179,7 +179,7 @@
     .mfg_name =            "Guohe",
     .version =             "20240704.0",
     .copyright =           "LGPL",
-    .status =              RIG_STATUS_ALPHA,
+    .status =              RIG_STATUS_STABLE,
     .rig_type =            RIG_TYPE_TRANSCEIVER,
     .ptt_type =            RIG_PTT_RIG,
     .dcd_type =            RIG_DCD_RIG,
@@ -453,19 +453,106 @@
 {
     hamlib_port_t *rp = RIGPORT(rig);
     rig_debug(RIG_DEBUG_VERBOSE, "%s: called\n", __func__);
-    unsigned char buf[64] = { 0xa5, 0xa5, 0xa5, 0xa5, 0x03, 0x00, 0x00, 0x00 };
+    unsigned char buf[8] = { 0xa5, 0xa5, 0xa5, 0xa5, 0x03, 0x00, 0x00, 0x00 };
 
     buf[5] = cmd;
-    unsigned int crc = CRC16Check(&buf[4], 3);
+    unsigned int crc = CRC16Check(&buf[4], 2);
     buf[6] = crc >> 8;
     buf[7] = crc & 0xff;
     rig_flush(rp);
-    write_block(rp, buf, 9);
+    write_block(rp, buf, 8);
     return RIG_OK;
 }
 
 
-rmode_t pmr171_modes[] = { RIG_MODE_USB, RIG_MODE_LSB, RIG_MODE_CWR, 
RIG_MODE_CW, RIG_MODE_FM, RIG_MODE_FMN, RIG_MODE_PKTUSB, RIG_MODE_RTTY };
+#define GUOHE_MODE_TABLE_MAX  9
+rmode_t pmr171_modes[GUOHE_MODE_TABLE_MAX] =
+{
+    RIG_MODE_USB,
+    RIG_MODE_LSB,
+    RIG_MODE_CWR,
+    RIG_MODE_CW,
+    RIG_MODE_AM,
+    RIG_MODE_FM,
+    RIG_MODE_FMN,
+    RIG_MODE_PKTUSB,
+    RIG_MODE_RTTY // not functioning
+};
+
+rmode_t guohe2rmode(unsigned char mode, const rmode_t mode_table[])
+{
+    rig_debug(RIG_DEBUG_VERBOSE, "%s called, mode=0x%02x\n", __func__,
+              mode);
+
+    if (mode >= GUOHE_MODE_TABLE_MAX)
+    {
+        return (RIG_MODE_NONE);
+    }
+
+    rig_debug(RIG_DEBUG_VERBOSE, "%s: returning %s\n", __func__,
+              rig_strrmode(mode_table[mode]));
+    return (mode_table[mode]);
+}
+
+unsigned char rmode2guohe(rmode_t mode, const rmode_t mode_table[])
+{
+    rig_debug(RIG_DEBUG_VERBOSE, "%s called, mode=%s\n", __func__,
+              rig_strrmode(mode));
+
+    if (mode != RIG_MODE_NONE)
+    {
+        unsigned char i;
+
+        for (i = 0; i < GUOHE_MODE_TABLE_MAX; i++)
+        {
+            if (mode_table[i] == mode)
+            {
+                rig_debug(RIG_DEBUG_VERBOSE, "%s: returning 0x%02x\n", 
__func__, i);
+                return (i);
+            }
+        }
+    }
+
+    return (-1);
+}
+
+/**
+ * Converting to Big-endian bytes
+ */
+unsigned char *to_be(unsigned char data[],
+                     unsigned long long freq,
+                     unsigned int byte_len)
+{
+    int i;
+
+    rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
+
+    for (i = byte_len - 1; i >= 0; i--)
+    {
+        unsigned char a = freq & 0xFF;
+        freq >>= 8;
+        data[i] = a;
+    }
+
+    return data;
+}
+
+
+unsigned long long from_be(const unsigned char data[],
+                           unsigned int byte_len)
+{
+    int i;
+    unsigned long long f = 0;
+
+    rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
+
+    for (i = 0; i < byte_len; i++)
+    {
+        f = (f << 8) + data[i];
+    }
+
+    return f;
+}
 
 static int pmr171_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
 {
@@ -484,8 +571,8 @@
     pmr171_send_cmd1(rig, 0x0b, 0);
     read_block(rp, reply, 5);
     read_block(rp, &reply[5], reply[4]);
-    vfoa = from_bcd_be(&reply[9], 8);
-    vfob = from_bcd_be(&reply[13], 8);
+    vfoa = from_be(&reply[9], 4);
+    vfob = from_be(&reply[13], 4);
     cachep->freqMainA = vfoa;
     cachep->freqMainB = vfob;
     rig_debug(RIG_DEBUG_VERBOSE, "%s: vfoa=%.0f, vfob=%.0f\n", __func__, vfoa,
@@ -494,8 +581,8 @@
     // Now grab the ptt status
     cachep->ptt = reply[6] == 1;
     // And the mode
-    cachep->modeMainA = pmr171_modes[reply[7]];
-    cachep->modeMainB = pmr171_modes[reply[8]];
+    cachep->modeMainA = guohe2rmode(reply[7], pmr171_modes);
+    cachep->modeMainB = guohe2rmode(reply[8], pmr171_modes);
 
     if (vfo == RIG_VFO_B) { *freq = cachep->freqMainA; }
     else { *freq = cachep->freqMainB; }
@@ -790,7 +877,7 @@
 
 static int pmr171_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
 {
-    unsigned char cmd[16] = { 0xa5, 0xa5, 0xa5, 0xa5, 12, 0x09, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+    unsigned char cmd[16] = { 0xa5, 0xa5, 0xa5, 0xa5, 11, 0x09, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
     unsigned char reply[16];
     //int retval;
     hamlib_port_t *rp = RIGPORT(rig);
@@ -800,16 +887,16 @@
     /* fill in the frequency */
     if (vfo == RIG_VFO_B)
     {
-        to_bcd_be(&cmd[6], CACHE(rig)->freqMainA, 8);
-        to_bcd_be(&cmd[10], freq, 8);
+        to_be(&cmd[6], CACHE(rig)->freqMainA, 4);
+        to_be(&cmd[10], freq, 4);
     }
     else
     {
-        to_bcd_be(&cmd[6], freq, 8);
-        to_bcd_be(&cmd[10], CACHE(rig)->freqMainB, 8);
+        to_be(&cmd[6], freq, 4);
+        to_be(&cmd[10], CACHE(rig)->freqMainB, 4);
     }
 
-    unsigned int crc = CRC16Check(&cmd[4], 12);
+    unsigned int crc = CRC16Check(&cmd[4], 10);
     cmd[14] = crc >> 8;
     cmd[15] = crc & 0xff;
     rig_flush(rp);
@@ -823,34 +910,38 @@
 static int pmr171_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
 {
     hamlib_port_t *rp = RIGPORT(rig);
-    unsigned char cmd[10] = { 0xa5, 0xa5, 0xa5, 0xa5, 3, 0x0a, 0x00, 0x00, 
0x00, 0x00 };
+    unsigned char cmd[10] = { 0xa5, 0xa5, 0xa5, 0xa5, 5, 0x0a, 0x00, 0x00, 
0x00, 0x00 };
     unsigned char reply[10];
-    int i, crc;
+    int crc;
+    unsigned char i = rmode2guohe(mode, pmr171_modes);
 
-    for (i = 0; i < sizeof(pmr171_modes) / sizeof(rmode_t); ++i)
+    if (i != (-1))
     {
-        if (pmr171_modes[i] == mode)
+        if (vfo == RIG_VFO_B)
         {
-            if (vfo == RIG_VFO_B)
-            {
-                cmd[6] = CACHE(rig)->modeMainA;
-                cmd[7] = i;
-            }
-            else
-            {
-                cmd[6] = i;
-                cmd[7] = CACHE(rig)->modeMainB;
-            }
-
-            crc = CRC16Check(&cmd[4], 4);
-            cmd[8] = crc >> 8;
-            cmd[9] = crc & 0xff;
-            rig_flush(rp);
-            write_block(rp, cmd, 16);
-            read_block(rp, reply, 16);
-            dump_hex(reply, 16);
-            return RIG_OK;
+            cmd[6] = rmode2guohe(CACHE(rig)->modeMainA, pmr171_modes);
+            cmd[7] = i;
+        }
+        else
+        {
+            cmd[6] = i;
+            cmd[7] = rmode2guohe(CACHE(rig)->modeMainB, pmr171_modes);
         }
+
+        crc = CRC16Check(&cmd[4], 4);
+        cmd[8] = crc >> 8;
+        cmd[9] = crc & 0xff;
+        rig_flush(rp);
+        write_block(rp, cmd, 10);
+        read_block(rp, reply, 5);
+        read_block(rp, &reply[5], reply[4]);
+        dump_hex(reply, reply[4] + 5);
+        /*
+        // Grab the modes
+        CACHE(rig)->modeMainA = guohe2rmode(reply[6], pmr171_modes);
+        CACHE(rig)->modeMainB = guohe2rmode(reply[7], pmr171_modes);
+        */
+        return RIG_OK;
     }
 
     rig_debug(RIG_DEBUG_ERR, "%s: invalid mode=%s\n", __func__, 
rig_strrmode(mode));
@@ -863,13 +954,15 @@
     hamlib_port_t *rp = RIGPORT(rig);
     rig_debug(RIG_DEBUG_VERBOSE, "%s: called\n", __func__);
 
+    // According to the manual, sending 0 means PTT ON.
+    // TODO: How to process ack messages?
     switch (ptt)
     {
     case RIG_PTT_ON:
-        return pmr171_send_cmd2(rig, 0x07, 0x01, 1);
+        return pmr171_send_cmd2(rig, 0x07, 0x00, 1);
 
     case RIG_PTT_OFF:
-        return pmr171_send_cmd2(rig, 0x07, 0x00, 0);
+        return pmr171_send_cmd2(rig, 0x07, 0x01, 1);
 
     default:
         return -RIG_EINVAL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hamlib-4.6.1/src/hamlibdatetime.h 
new/hamlib-4.6.2/src/hamlibdatetime.h
--- old/hamlib-4.6.1/src/hamlibdatetime.h       2025-01-22 03:02:06.000000000 
+0100
+++ new/hamlib-4.6.2/src/hamlibdatetime.h       2025-02-09 22:22:41.000000000 
+0100
@@ -1,2 +1,2 @@
 /* This date time is from the last non-merge commit to Hamlib. */
-#define HAMLIBDATETIME "2025-01-21T09:43:13Z SHA=cb77f3"
+#define HAMLIBDATETIME "2025-02-09T21:03:50Z SHA=870364"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hamlib-4.6.1/src/rig.c new/hamlib-4.6.2/src/rig.c
--- old/hamlib-4.6.1/src/rig.c  2025-01-22 03:01:39.000000000 +0100
+++ new/hamlib-4.6.2/src/rig.c  2025-02-09 22:22:13.000000000 +0100
@@ -169,6 +169,8 @@
 #define CHECK_RIG_ARG(r) (!(r) || !(r)->caps || !STATE((r))->comm_state)
 #define CHECK_RIG_CAPS(r) (!(r) || !(r)->caps)
 
+#define ICOM_EXCEPTIONS (rig->caps->rig_model == RIG_MODEL_IC9700 || 
rig->caps->rig_model == RIG_MODEL_IC9100 || rig->caps->rig_model == 
RIG_MODEL_IC910)
+
 // The LOCK macro is for the primary thread calling the rig functions
 // For a separate thread use rig_lock directly
 // The purpose here is to avoid deadlock during recursion
@@ -1547,7 +1549,7 @@
     {
         vfo_t myvfo = RIG_VFO_A;
 
-        if (rig->caps->rig_model == RIG_MODEL_IC9700 || rig->caps->rig_model 
== RIG_MODEL_IC9100) { myvfo = RIG_VFO_MAIN_A; }
+        if (ICOM_EXCEPTIONS) { myvfo = RIG_VFO_MAIN_A; }
 
         retval = rig_get_freq(rig, myvfo, &freq);
 
@@ -1557,7 +1559,7 @@
             vfo_t tx_vfo = RIG_VFO_NONE;
             myvfo = RIG_VFO_B;
 
-            if (rig->caps->rig_model == RIG_MODEL_IC9700 || 
rig->caps->rig_model == RIG_MODEL_IC9100) { myvfo = RIG_VFO_MAIN_B; }
+            if (ICOM_EXCEPTIONS) { myvfo = RIG_VFO_MAIN_B; }
 
             rig_get_freq(rig, myvfo, &freq);
             rig_get_split_vfo(rig, RIG_VFO_RX, &split, &tx_vfo);
@@ -1570,7 +1572,8 @@
             {
                 myvfo = RIG_VFO_A;
 
-                if (rig->caps->rig_model == RIG_MODEL_IC9700 || 
rig->caps->rig_model == RIG_MODEL_IC9100) { myvfo = RIG_VFO_MAIN_A; }
+                if (ICOM_EXCEPTIONS) { myvfo = RIG_VFO_MAIN_A; }
+
 
                 rig_get_mode(rig, myvfo, &mode, &width);
 
@@ -1578,7 +1581,7 @@
                 {
                     myvfo = RIG_VFO_B;
 
-                    if (rig->caps->rig_model == RIG_MODEL_IC9700 || 
rig->caps->rig_model == RIG_MODEL_IC9100) { myvfo = RIG_VFO_MAIN_A; }
+                    if (ICOM_EXCEPTIONS) { myvfo = RIG_VFO_MAIN_A; }
 
                     rig_debug(RIG_DEBUG_VERBOSE, "xxxsplit=%d\n", split);
                     HAMLIB_TRACE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hamlib-4.6.1/src/serial.c 
new/hamlib-4.6.2/src/serial.c
--- old/hamlib-4.6.1/src/serial.c       2025-01-22 03:01:39.000000000 +0100
+++ new/hamlib-4.6.2/src/serial.c       2025-02-09 22:22:13.000000000 +0100
@@ -242,7 +242,7 @@
         return -RIG_EIO;
 
     case SER_AVAILABLE:
-        rig_debug(RIG_DEBUG_ERR, "%s: serial port %s is OK\n", __func__, 
rp->pathname);
+        rig_debug(RIG_DEBUG_VERBOSE, "%s: serial port %s is OK\n", __func__, 
rp->pathname);
         break;
     }
 

Reply via email to