[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. b5ba3f45b8de53866d160
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: n0nb <n0...@us...> - 2025-07-09 12:32:20
|
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 b5ba3f45b8de53866d160a86911672812627ee1e (commit) via f0b1c5bde2148c70f35eecec0e671e76e1fa8cd3 (commit) via 6fade7fa33f306150d707d577b06e151b09d3e2d (commit) via 256037296f3d6785a74e8f6877d78afa9b6da7f9 (commit) via 84799e2f6c3da704a0877465b77cd3d9bc1dfe15 (commit) via 976bfb42767019de50c8d29aebdbfdb933a88b01 (commit) via 22636be85e7a33e42077860112b858ecdac79449 (commit) via 54c2eb89a2fe75103c942596a6f81dbb71b4a0fc (commit) via 8c94897208b2197c3fd2ec3eef138f66306065d4 (commit) via 633cee04d2b78053c470c5d78ca92d2722ea4fbe (commit) via 2fc0b8eef5e85cccf00c449c95a5405a78617038 (commit) via 98489501fe80c32cf456c4bf962f628a4dc175ca (commit) via 3706f365a545aa67ec4147cf9aa146ec40ace871 (commit) via b96afa9372433735235895b4a2dddbedc2f54a74 (commit) via e5e4ef84fe0b6811ac8bd6bc5307aa36c8a0c512 (commit) via ec0a04669c3dd658d5b7fbe57ffc1af642a48552 (commit) via f68c48aac54210e2bd1ee7ee2fd15401e8a201d2 (commit) via b73d4a5cefda6f35331d39295e5c0263f7aa3576 (commit) via 585d23ae5b25844c49e492eda21338d56ed5141b (commit) via 419cb02dd5998c937fb6df3bd180b3d6c3dce00c (commit) via 6433447e913eb865e655ab30a144363fcd04bbf7 (commit) via 6a9f93a89e166fc3b293f18ba440986be40e6f43 (commit) via bdde43f175692144e436e3d3bf1b23fd4c648925 (commit) via 55805c90c91dbcab9270bf73616c9d9cd19afd23 (commit) via e7daf11d5cdd05d6299fedbc8d18b40b6bfacf48 (commit) via 49b01e196874961d64a60136cfe44c29c5c7ebd8 (commit) via cb0646c7275eebe254b3da857b1f5791a59995d6 (commit) via f4cebd5339ce813ab2eba541bc5eca835db240c1 (commit) via d065bcb8ef0311ab21f85c8a7d1aec83db2c6cb1 (commit) via 7a975784769b2b45605f7ecde22f4d49d15d40ba (commit) via 6ac3dd596be40f5b2ea20d6316394fcf25a5f948 (commit) via 48405744b534fbef90db88f63cf08fd09bd47a2f (commit) via db863a69212291ea6acbb93eaff54d349a9b0cc1 (commit) via 3ff4bc99cc843a014ff8bc55aba5be9653ca87a5 (commit) via d32d605be67f46d75fd1185224ebb9606324ad6c (commit) via 3b8a24179ee06a6dabc262284ad40fda805ef930 (commit) via e1562e675feb19b302c445363af0fe791dd6b748 (commit) via 03bf68c45925999af7aaf31af8f7cb01d1397f89 (commit) via f94ec6a47b3b06f166a19d74cf34148342a9bea2 (commit) via 83168860635dfba5bbb227a2a7dbe57b91b46d6a (commit) from 0c94ba468ac1cd5e03de2e948784ad5e83bf5f11 (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 b5ba3f45b8de53866d160a86911672812627ee1e Author: Nate Bargmann <n0...@n0...> Date: Wed Jul 9 07:30:29 2025 -0500 Update NEWS for R8 backend diff --git a/NEWS b/NEWS index 8e7e076a8..c98fe66bb 100644 --- a/NEWS +++ b/NEWS @@ -27,6 +27,7 @@ Version 4.7.0 * Fix AGC for IC-R75, fix AGC for all Icom rigs. (TNX Mark Fine). * Separate PMR-171 and Q900 into new the GUOHETEC backend, add additional support add clean up code. (TNX FVsonar). + * New Drake R8 backend. (TNX Mark Fine) Version 4.6.3 * 2025-06-10 commit f0b1c5bde2148c70f35eecec0e671e76e1fa8cd3 Merge: 6fade7fa3 256037296 Author: Nate Bargmann <n0...@n0...> Date: Wed Jul 9 07:15:34 2025 -0500 Merge GitHub PR #1796 commit 6fade7fa33f306150d707d577b06e151b09d3e2d Merge: 0c94ba468 84799e2f6 Author: Nate Bargmann <n0...@n0...> Date: Mon Jul 7 18:37:54 2025 -0500 Merge GitHub PR #1795 commit 256037296f3d6785a74e8f6877d78afa9b6da7f9 Author: Mark J. Fine <mar...@fi...> Date: Mon Jul 7 16:49:25 2025 -0400 Fixed typos and copyright attribution on drake.c and r8.c diff --git a/rigs/drake/drake.c b/rigs/drake/drake.c index 251cfccd1..3d00eb8cf 100644 --- a/rigs/drake/drake.c +++ b/rigs/drake/drake.c @@ -1,6 +1,6 @@ /* * Hamlib Drake backend - main file - * Copyright (c) 2001-2008 by Stephane Fillod + * Copyright (c) 2001-2008 by Stephane Fillod, 2025 Mark J. Fine * * * This library is free software; you can redistribute it and/or @@ -254,7 +254,7 @@ int drake_report_signal(RIG *rig, char* owner) * * inputs: rig - pointer to RIG structure * freqbuf - buffer containung radio's response string - * offset - offset to beginning of string due to differnces in R8 vs. R8A/B + * offset - offset to beginning of string due to differences in R8 vs. R8A/B * Note: strings are virtually identical. offset is provided as a failsafe. * * Assumes rig!=NULL @@ -332,7 +332,7 @@ int drake_report_frequency(RIG *rig, char* owner) * * inputs: rig - pointer to RIG structure * mdbuf - buffer containung radio's response string - * offset - offset to beginning of string due to differnces in R8 vs. R8A/B + * offset - offset to beginning of string due to differences in R8 vs. R8A/B * * Assumes rig!=NULL */ @@ -511,7 +511,7 @@ int drake_report_mode(RIG *rig, char* owner) * * inputs: rig - pointer to RIG structure * mdbuf - buffer containung radio's response string - * offset - offset to beginning of string due to differnces in R8 vs. R8A/B + * offset - offset to beginning of string due to differences in R8 vs. R8A/B * Note: except for channel number size, strings are virtually identical. offset is provided as a failsafe. * * Assumes rig!=NULL @@ -657,7 +657,7 @@ int drake_report_all(RIG *rig, char* owner) drake_decode_frequency(rig, mdbuf, freq_offset); // TODO handle channel name on R8A/B - // TODO These models also have an additonal RN (Report Name) command for polling channel names that is not handled here + // TODO These models also have an additional RN (Report Name) command for polling channel names that is not handled here return RIG_OK; } diff --git a/rigs/drake/r8.c b/rigs/drake/r8.c index 09858b965..80cd81acd 100644 --- a/rigs/drake/r8.c +++ b/rigs/drake/r8.c @@ -1,6 +1,6 @@ /* * Hamlib Drake backend - R-8 description - * Copyright (c) 2001-2010, 2025 by Stephane Fillod + * Copyright (c) 2025 by Mark J. Fine * * * This library is free software; you can redistribute it and/or commit 84799e2f6c3da704a0877465b77cd3d9bc1dfe15 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sun Jul 6 19:44:43 2025 +0200 Revert "Install Lua for macOS in the CI" This reverts commit 419cb02dd5998c937fb6df3bd180b3d6c3dce00c. Conflicts: .github/workflows/c-cpp.yml diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 169863e35..db7bdb037 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -67,7 +67,6 @@ jobs: brew install automake brew install libtool brew install grep - brew install lua brew install swig brew install tcl-tk - name: bootstrap commit 976bfb42767019de50c8d29aebdbfdb933a88b01 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sun Jul 6 19:42:10 2025 +0200 Remove the executable bit from data files diff --git a/doc/manuals/OTRSP_Protocol.pdf b/doc/manuals/OTRSP_Protocol.pdf old mode 100755 new mode 100644 diff --git a/rigs/yaesu/FT-817CAT.pdf b/rigs/yaesu/FT-817CAT.pdf old mode 100755 new mode 100644 diff --git a/rigs/yaesu/FT-817MemoryMap.pdf b/rigs/yaesu/FT-817MemoryMap.pdf old mode 100755 new mode 100644 diff --git a/rotators/grbltrk/Makefile.am b/rotators/grbltrk/Makefile.am old mode 100755 new mode 100644 diff --git a/security/AESStringCrypt.h b/security/AESStringCrypt.h old mode 100755 new mode 100644 diff --git a/security/Makefile.nt b/security/Makefile.nt old mode 100755 new mode 100644 diff --git a/security/aes.h b/security/aes.h old mode 100755 new mode 100644 diff --git a/security/password.h b/security/password.h old mode 100755 new mode 100644 diff --git a/security/sha256.h b/security/sha256.h old mode 100755 new mode 100644 diff --git a/src/Makefile.am b/src/Makefile.am old mode 100755 new mode 100644 diff --git a/src/version_dll.rc b/src/version_dll.rc old mode 100755 new mode 100644 commit 22636be85e7a33e42077860112b858ecdac79449 Author: Mark J. Fine <mar...@fi...> Date: Sat Jul 5 17:11:33 2025 -0400 Commented out the embedded debugging (WARN level) that echoes all transaction data. diff --git a/rigs/drake/drake.c b/rigs/drake/drake.c index a247a9734..251cfccd1 100644 --- a/rigs/drake/drake.c +++ b/rigs/drake/drake.c @@ -227,7 +227,7 @@ int drake_report_signal(RIG *rig, char* owner) //char testbuf[5] = {'2', '5', '5', 0x0d, 0x0a }; - drake_trans_rept(owner, "RSS" EOM, 4, lvlbuf, lvl_len, retval); + //drake_trans_rept(owner, "RSS" EOM, 4, lvlbuf, lvl_len, retval); if (retval != RIG_OK) { @@ -306,7 +306,7 @@ int drake_report_frequency(RIG *rig, char* owner) //char testbuf[15] = {' ', '1', '5', '.', '0', '0', '0', '0', '0', '#', 'm', 'H', 'z', 0x0d, 0x0a }; - drake_trans_rept(owner, "RF" EOM, 3, freqbuf, freq_len, retval); + //drake_trans_rept(owner, "RF" EOM, 3, freqbuf, freq_len, retval); if (retval != RIG_OK) { @@ -472,7 +472,7 @@ int drake_report_mode(RIG *rig, char* owner) //r8a/b - TODO Seems to be undocumented extra character at beginning of string, pushing everything to the right //char testbuf[8] = {'?','2','0','2','<','8', 0x0d, 0x0a}; //NB off, AGC fast, RF off, MN off, ant 1, AM mode, 6.0 bw, VFOA, sync off, not scanning - drake_trans_rept(owner, "RM" EOM, 3, mdbuf, mdbuf_len, retval); + //drake_trans_rept(owner, "RM" EOM, 3, mdbuf, mdbuf_len, retval); if (rig->caps->rig_model == RIG_MODEL_DKR8) { @@ -561,7 +561,7 @@ int drake_report_mem_channel(RIG *rig, char* owner) // r8a/b 000 - 439 //char testbuf[6] = {' ','0','0','0', 0x0d, 0x0a }; - drake_trans_rept(owner, "RC" EOM, 3, mdbuf, mdbuf_len, retval); + //drake_trans_rept(owner, "RC" EOM, 3, mdbuf, mdbuf_len, retval); if (rig->caps->rig_model == RIG_MODEL_DKR8) { @@ -621,7 +621,7 @@ int drake_report_all(RIG *rig, char* owner) // r8a/b - TODO Note 7-char channel name that eitehr starts at [25] or [26] //char testbuf[35] = {' ','0','0','0',' ','2','0','2','<','8',' ',' ','1','5','.','0','0','0','0','0','#','m','H','z',' ','M','E','M','N','A','M','E',' ', 0x0d, 0x0a }; - drake_trans_rept(owner, "RA" EOM, 3, mdbuf, mdbuf_len, retval); + //drake_trans_rept(owner, "RA" EOM, 3, mdbuf, mdbuf_len, retval); if (rig->caps->rig_model == RIG_MODEL_DKR8) { @@ -787,7 +787,7 @@ int drake_set_vfo(RIG *rig, vfo_t vfo) retval = drake_transaction(rig, cmdbuf, strlen(cmdbuf), ackbuf, &ack_len); - drake_trans_rept("drake_set_vfo", cmdbuf, strlen(cmdbuf), ackbuf, ack_len, retval); + //drake_trans_rept("drake_set_vfo", cmdbuf, strlen(cmdbuf), ackbuf, ack_len, retval); return retval; } @@ -852,7 +852,7 @@ int drake_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) retval = drake_transaction(rig, mdbuf, strlen(mdbuf), ackbuf, &ack_len); - drake_trans_rept("drake_set_mode", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); + //drake_trans_rept("drake_set_mode", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); if (retval != RIG_OK) { @@ -894,7 +894,7 @@ int drake_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) SNPRINTF((char *) mdbuf, sizeof(mdbuf), "W%c" EOM, width_sel); retval = drake_transaction(rig, mdbuf, strlen(mdbuf), ackbuf, &ack_len); - drake_trans_rept("drake_set_bw", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); + //drake_trans_rept("drake_set_bw", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); } } @@ -907,7 +907,7 @@ int drake_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) (mode == RIG_MODE_ECSSLSB)) ? 'O' : 'F'); retval = drake_transaction(rig, mdbuf, strlen(mdbuf), ackbuf, &ack_len); - drake_trans_rept("drake_set_synch", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); + //drake_trans_rept("drake_set_synch", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); } return retval; @@ -951,7 +951,7 @@ int drake_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option) retval = drake_transaction(rig, buf, strlen(buf), ackbuf, &ack_len); - drake_trans_rept("drake_set_ant", buf, strlen(buf), ackbuf, ack_len, retval); + //drake_trans_rept("drake_set_ant", buf, strlen(buf), ackbuf, ack_len, retval); return retval; } @@ -1004,7 +1004,7 @@ int drake_set_mem(RIG *rig, vfo_t vfo, int ch) ack_len = 0; // fix compile-time warning "possibly uninitialized" retval = drake_transaction(rig, buf, strlen(buf), ackbuf, &ack_len); - drake_trans_rept("drake_set_mem", buf, strlen(buf), ackbuf, ack_len, retval); + //drake_trans_rept("drake_set_mem", buf, strlen(buf), ackbuf, ack_len, retval); if (ack_len != 2) { @@ -1105,7 +1105,7 @@ int drake_set_chan(RIG *rig, vfo_t vfo, const channel_t *chan) retval = 0; }*/ - drake_trans_rept("drake_set_chan", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); + //drake_trans_rept("drake_set_chan", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); if (old_vfo == RIG_VFO_MEM) { @@ -1280,8 +1280,8 @@ int drake_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) retval = drake_transaction(rig, buf, len, buf[len - 1] == 0x0d ? ackbuf : NULL, buf[len - 1] == 0x0d ? &ack_len : NULL); - drake_trans_rept("drake_vfo_op", buf, len, buf[len - 1] == 0x0d ? ackbuf : NULL, - buf[len - 1] == 0x0d ? ack_len : 0, retval); + //drake_trans_rept("drake_vfo_op", buf, len, buf[len - 1] == 0x0d ? ackbuf : NULL, + // buf[len - 1] == 0x0d ? ack_len : 0, retval); return retval; } @@ -1335,7 +1335,7 @@ int drake_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) retval = drake_transaction(rig, buf, strlen(buf), ackbuf, &ack_len); - drake_trans_rept("drake_set_func", buf, strlen(buf), ackbuf, ack_len, retval); + //drake_trans_rept("drake_set_func", buf, strlen(buf), ackbuf, ack_len, retval); return retval; } @@ -1404,7 +1404,7 @@ int drake_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) retval = drake_transaction(rig, buf, strlen(buf), ackbuf, &ack_len); - drake_trans_rept("set_level", buf, strlen(buf), ackbuf, ack_len, retval); + //drake_trans_rept("set_level", buf, strlen(buf), ackbuf, ack_len, retval); return retval; } @@ -1487,7 +1487,7 @@ int drake_set_powerstat(RIG *rig, powerstat_t status) retval = drake_transaction(rig, buf, strlen(buf), ackbuf, &ack_len); - drake_trans_rept("set_power", buf, strlen(buf), ackbuf, ack_len, retval); + //drake_trans_rept("set_power", buf, strlen(buf), ackbuf, ack_len, retval); return retval; } @@ -1521,7 +1521,7 @@ const char *drake_get_info(RIG *rig) retval = drake_transaction(rig, "ID" EOM, 3, idbuf, &id_len); - drake_trans_rept("get_id", "ID" EOM, 3, idbuf, id_len, retval); + //drake_trans_rept("get_id", "ID" EOM, 3, idbuf, id_len, retval); if (retval != RIG_OK) { commit 54c2eb89a2fe75103c942596a6f81dbb71b4a0fc Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sat Jul 5 22:19:46 2025 +0200 Revert "Temporarily disable parallel builds" This reverts commit 3706f365a545aa67ec4147cf9aa146ec40ace871. diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 33780993e..169863e35 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -86,7 +86,7 @@ jobs: if: runner.os == 'macOS' run: ./configure ${{ matrix.configure_args }} --enable-silent-rules --without-python-binding --without-lua-binding - name: make - run: make V=0 --no-print-directory + run: make -j 4 V=0 --no-print-directory - name: make distcheck run: make distcheck V=0 --no-print-directory commit 8c94897208b2197c3fd2ec3eef138f66306065d4 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sat Jul 5 22:09:18 2025 +0200 Install development package for rigmatrix for Linux in the CI diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index e50897563..33780993e 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -54,6 +54,7 @@ jobs: if: runner.os == 'Linux' run: | sudo apt install libusb-1.0-0-dev + sudo apt install libgd-dev sudo apt install libgpiod-dev sudo apt install libindi-dev libnova-dev sudo apt install grep commit 633cee04d2b78053c470c5d78ca92d2722ea4fbe Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sat Jul 5 21:40:13 2025 +0200 Install INDI development packages for Linux in the CI diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 2ca09632e..e50897563 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -55,6 +55,7 @@ jobs: run: | sudo apt install libusb-1.0-0-dev sudo apt install libgpiod-dev + sudo apt install libindi-dev libnova-dev sudo apt install grep sudo apt install python3-dev python3-pytest sudo apt install lua5.4 liblua5.4-dev libperl-dev tcl-dev commit 2fc0b8eef5e85cccf00c449c95a5405a78617038 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sat Jul 5 20:23:45 2025 +0200 Fix make distcheck again diff --git a/Makefile.am b/Makefile.am index 5fd285816..de615d314 100644 --- a/Makefile.am +++ b/Makefile.am @@ -27,7 +27,7 @@ SUBDIRS = macros include lib security \ DIST_SUBDIRS = \ $(RIG_BACKEND_OPTIONAL_LIST) \ $(ROT_BACKEND_OPTIONAL_LIST) \ - macros include lib src c++ bindings tests doc android scripts rotators/indi simulators\ + macros include lib src c++ bindings tests doc android scripts simulators\ security $(BACKEND_LIST) $(RIG_BACKEND_LIST) $(ROT_BACKEND_LIST) $(AMP_BACKEND_LIST) # Install any third party macros into our tree for distribution commit 98489501fe80c32cf456c4bf962f628a4dc175ca Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sat Jul 5 19:44:54 2025 +0200 Revert "Sort SUBDIRS and DIST_SUBDIRS and fix them" This reverts commit d065bcb8ef0311ab21f85c8a7d1aec83db2c6cb1. Conflicts: Makefile.am diff --git a/Makefile.am b/Makefile.am index 24601fdec..5fd285816 100644 --- a/Makefile.am +++ b/Makefile.am @@ -13,29 +13,22 @@ EXTRA_DIST = PLAN LICENSE hamlib.m4 hamlib.pc.in README.md README.developer \ doc_DATA = ChangeLog COPYING COPYING.LIB LICENSE \ README.md README.betatester README.developer -SUBDIRS = \ - $(AMP_BACKEND_LIST) \ - $(BINDINGS) \ +SUBDIRS = macros include lib security \ + $(BACKEND_LIST) \ $(RIG_BACKEND_LIST) \ $(ROT_BACKEND_LIST) \ - doc \ - include \ - lib \ - macros \ - security \ + $(AMP_BACKEND_LIST) \ + security \ src \ - tests + $(BINDINGS) \ + tests doc ## Static list of distributed directories. DIST_SUBDIRS = \ $(RIG_BACKEND_OPTIONAL_LIST) \ $(ROT_BACKEND_OPTIONAL_LIST) \ - $(SUBDIRS) \ - android \ - bindings \ - c++ \ - scripts \ - simulators + macros include lib src c++ bindings tests doc android scripts rotators/indi simulators\ + security $(BACKEND_LIST) $(RIG_BACKEND_LIST) $(ROT_BACKEND_LIST) $(AMP_BACKEND_LIST) # Install any third party macros into our tree for distribution ACLOCAL_AMFLAGS = -I macros --install commit 3706f365a545aa67ec4147cf9aa146ec40ace871 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sat Jul 5 18:31:54 2025 +0200 Temporarily disable parallel builds diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 46ecaff38..2ca09632e 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -84,7 +84,7 @@ jobs: if: runner.os == 'macOS' run: ./configure ${{ matrix.configure_args }} --enable-silent-rules --without-python-binding --without-lua-binding - name: make - run: make -j 4 V=0 --no-print-directory + run: make V=0 --no-print-directory - name: make distcheck run: make distcheck V=0 --no-print-directory commit b96afa9372433735235895b4a2dddbedc2f54a74 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sat Jul 5 16:58:52 2025 +0200 Remove redundant rule for make make knows how to build an excutable from a single source file. diff --git a/simulators/Makefile.am b/simulators/Makefile.am index 5913dbd2b..2c7cb7f04 100644 --- a/simulators/Makefile.am +++ b/simulators/Makefile.am @@ -10,11 +10,6 @@ bin_PROGRAMS = check_PROGRAMS = simelecraft simicgeneric simkenwood simyaesu simic9100 simic9700 simft991 simftdx1200 simftdx3000 simjupiter simpowersdr simid5100 simft736 simftdx5000 simtmd700 simrotorez simspid simft817 simts590 simft847 simic7300 simic7000 simic7100 simic7200 simatd578 simic905 simts450 simic7600 simic7610 simic705 simts950 simts990 simic7851 simftdx101 simxiegug90 simqrplabs simft818 simic275 simtrusdx simft1000 simtmd710 simts890 simxiegux108g simxiegux6100 simic910 simft450 simelecraftk4 simmicom simflex simft710 simic2730 simorion simpmr171 simic7700 simft990 simpstrotator simeasycomm simicr8600 -simelecraft_SOURCES = simelecraft.c -simkenwood_SOURCES = simkenwood.c -simyaesu_SOURCES = simyaesu.c -simid5100_SOURCES = simid5100.c - # include generated include files ahead of any in sources #rigctl_CPPFLAGS = -I$(top_builddir)/tests -I$(top_builddir)/src -I$(srcdir) $(AM_CPPFLAGS) commit e5e4ef84fe0b6811ac8bd6bc5307aa36c8a0c512 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sat Jul 5 16:49:29 2025 +0200 Remove redundant rule for make clean All built files are deleted automatically. diff --git a/simulators/Makefile.am b/simulators/Makefile.am index a9a799e79..5913dbd2b 100644 --- a/simulators/Makefile.am +++ b/simulators/Makefile.am @@ -46,5 +46,3 @@ EXTRA_DIST = $(top_builddir)/src/libhamlib.la: $(MAKE) -C $(top_builddir)/src/ libhamlib.la - -CLEANFILES = simelelecraft simicgeneric simkenwood simyaesu commit ec0a04669c3dd658d5b7fbe57ffc1af642a48552 Author: Mark J. Fine <mar...@fi...> Date: Sat Jul 5 09:41:52 2025 -0400 Merged remaining R8 set/get memory channel routines over to drake.c Cleaned up comments and added interface documentation to newly added routines Added TODO notes for things yet to be handled on R8A/B, such as channel name diff --git a/rigs/drake/drake.c b/rigs/drake/drake.c index 32999d6cc..a247a9734 100644 --- a/rigs/drake/drake.c +++ b/rigs/drake/drake.c @@ -51,10 +51,13 @@ #define MD_FM '5' #define MD_AM '6' +/* DEBUGGING ROUTINES TO ECHO TRANSACTIONS WITH SCREEN READABLE CTRL CHARS */ /* * drake_fix_string * recursively replaces all special characters so they are readable at output + * + * input: inStr - the raw string to expand * */ void drake_fix_string(char* inStr) @@ -93,6 +96,13 @@ void drake_fix_string(char* inStr) /* * drake_trans_rept * non-destructively echoes transaction in a readable way for debugging + * + * inputs: hdrStr - the calling routine identifier + * sentStr - the command sent to the radio + * sentLen - the length of sentSt + * recdStr - the radio's response string + * recdLen - the length of recdStr + * res - The transaction reposnse */ void drake_trans_rept(char* hdrStr, char* sentStr, int sentLen, char* recdStr, int recdLen, int res) { @@ -134,10 +144,20 @@ void drake_trans_rept(char* hdrStr, char* sentStr, int sentLen, char* recdStr, i } +/* PRIMARY COMMS LOOP TO RADIO */ /* * drake_transaction + * + * inputs: rig - pointer to RIG structure + * cmd - buffer containing command to be sent to the radio + * cmd_len - the length of cmd + * data - buffer that will receive the radio's response string + * data_len - the length of data + * returns : transaction error status + * * We assume that rig!=NULL, STATE(rig)!= NULL, data!=NULL, data_len!=NULL + * Note: size of data buffer must be BUFSZ otherwise a buffer overrun is possible */ int drake_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int *data_len) @@ -147,8 +167,8 @@ int drake_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, rig_flush(rp); - //assume nothing. - //initialize the buffer in case empty on return + // assume nothing. + // initialize the buffer in case empty on return if ((data) && (data_len)) { data[0] = 0x00; @@ -162,7 +182,7 @@ int drake_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, return retval; } - /* no data expected, TODO: flush input? */ + // no data expected, TODO: flush input? if (!data || !data_len) { return 0; @@ -171,12 +191,6 @@ int drake_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, retval = read_string(rp, (unsigned char *) data, BUFSZ, LF, 1, 0, 1); - //if (retval == -RIG_ETIMEOUT) - //{ - //data[0] = 0x00; - //*data_len = 0; - //} - if (retval < 0) { return retval; @@ -188,7 +202,20 @@ int drake_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, return RIG_OK; } +/* COMMON RADIO POLLING AND RESPONSE DECODING ROUTINES */ +/* + * drake_report_signal + * Common routine to retrieve signal strength on R8A/B + * Note that we use dcd to emulate signal presence on the R8 + * since it has no actual signal strength reporting capability + * + * inputs: rig - pointer to RIG structure + * owner - the calling routine identifier + * returns: command error status + * + * Assumes rig!=NULL + */ int drake_report_signal(RIG *rig, char* owner) { char lvlbuf[BUFSZ]; @@ -198,6 +225,8 @@ int drake_report_signal(RIG *rig, char* owner) retval = drake_transaction(rig, "RSS" EOM, 4, lvlbuf, &lvl_len); + //char testbuf[5] = {'2', '5', '5', 0x0d, 0x0a }; + drake_trans_rept(owner, "RSS" EOM, 4, lvlbuf, lvl_len, retval); if (retval != RIG_OK) @@ -207,8 +236,8 @@ int drake_report_signal(RIG *rig, char* owner) if (lvl_len != 5) { - rig_debug(RIG_DEBUG_ERR, "drake_get_level: wrong answer" - "len=%d\n", lvl_len); + rig_debug(RIG_DEBUG_ERR, "%s: wrong answer" + "len=%d\n", owner, lvl_len); return -RIG_ERJCTED; } @@ -222,6 +251,13 @@ int drake_report_signal(RIG *rig, char* owner) /* * drake_decode_frequency * Common routine to decode the frequency block + * + * inputs: rig - pointer to RIG structure + * freqbuf - buffer containung radio's response string + * offset - offset to beginning of string due to differnces in R8 vs. R8A/B + * Note: strings are virtually identical. offset is provided as a failsafe. + * + * Assumes rig!=NULL */ void drake_decode_frequency(RIG *rig, char* freqbuf, int offset) { @@ -238,7 +274,7 @@ void drake_decode_frequency(RIG *rig, char* freqbuf, int offset) freqbuf[9+offset] = '\0'; - /* extract freq */ + // extract freq sscanf(freqbuf+offset, "%lf", &f); f *= 1000.0; @@ -253,6 +289,11 @@ void drake_decode_frequency(RIG *rig, char* freqbuf, int offset) * drake_report_freq * Common routine to retrieve frequency and squelch settings (used for DCD) * Data stored in priv for any routine to use + * + * inputs: rig - pointer to RIG structure + * owner - the calling routine identifier + * returns: command error status + * * Assumes rig!=NULL */ int drake_report_frequency(RIG *rig, char* owner) @@ -263,19 +304,8 @@ int drake_report_frequency(RIG *rig, char* owner) retval = drake_transaction(rig, "RF" EOM, 3, freqbuf, &freq_len); - //let's trick it - /* - char testbuf[15] = {' ', '1', '5', '.', '0', '0', '0', '0', '0', '#', 'm', 'H', 'z', 0x0d, 0x0a }; - if (freq_len == 0) - { - for (int i=0; i < 15; i++) { - freqbuf[i] = testbuf[i]; - } - freq_len = 15; - freqbuf[freq_len] = 0x00; - retval = RIG_OK; - }*/ - + //char testbuf[15] = {' ', '1', '5', '.', '0', '0', '0', '0', '0', '#', 'm', 'H', 'z', 0x0d, 0x0a }; + drake_trans_rept(owner, "RF" EOM, 3, freqbuf, freq_len, retval); if (retval != RIG_OK) @@ -299,6 +329,12 @@ int drake_report_frequency(RIG *rig, char* owner) /* * drake_decode_mode * Common routine to break out the 5-character mode string + * + * inputs: rig - pointer to RIG structure + * mdbuf - buffer containung radio's response string + * offset - offset to beginning of string due to differnces in R8 vs. R8A/B + * + * Assumes rig!=NULL */ void drake_decode_mode(RIG *rig, char* mdbuf, int offset) { @@ -413,7 +449,12 @@ void drake_decode_mode(RIG *rig, char* mdbuf, int offset) * drake_report_mode * Common routine to retrieve NB, AGC, ATT, PRE, NF, ANT, MODE, BW, and VFO (and scanning) settings * Data stored in priv for any routine to use - * Assumes rig!=NULL + * + * inputs: rig - pointer to RIG structure + * owner - the calling routine identifier + * returns: command error status + * + * Assumes rig!=NULL */ int drake_report_mode(RIG *rig, char* owner) { @@ -426,21 +467,10 @@ int drake_report_mode(RIG *rig, char* owner) retval = drake_transaction(rig, "RM" EOM, 3, mdbuf, &mdbuf_len); - //let's trick it - /* //r8 - char testbuf[7] = {'2','0','2','<','8', 0x0d, 0x0a}; //NB off, AGC fast, RF off, MN off, ant 1, AM mode, 6.0 bw, VFOA, sync off, not scanning - //r8a/b - char testbuf[7] = {' ','2','0','2','<','8', 0x0d, 0x0a}; //NB off, AGC fast, RF off, MN off, ant 1, AM mode, 6.0 bw, VFOA, sync off, not scanning - if (mdbuf_len == 0) - { - for (int i=0; i < 7; i++) { - mdbuf[i] = testbuf[i]; - } - mdbuf_len = 7; - mdbuf[mdbuf_len] = 0x00; - retval = 0; - }*/ + //char testbuf[7] = {'2','0','2','<','8', 0x0d, 0x0a}; //NB off, AGC fast, RF off, MN off, ant 1, AM mode, 6.0 bw, VFOA, sync off, not scanning + //r8a/b - TODO Seems to be undocumented extra character at beginning of string, pushing everything to the right + //char testbuf[8] = {'?','2','0','2','<','8', 0x0d, 0x0a}; //NB off, AGC fast, RF off, MN off, ant 1, AM mode, 6.0 bw, VFOA, sync off, not scanning drake_trans_rept(owner, "RM" EOM, 3, mdbuf, mdbuf_len, retval); @@ -478,6 +508,13 @@ int drake_report_mode(RIG *rig, char* owner) /* * drake_decode_mem_channel * Common routine to break out the 3 or 4-character mem string + * + * inputs: rig - pointer to RIG structure + * mdbuf - buffer containung radio's response string + * offset - offset to beginning of string due to differnces in R8 vs. R8A/B + * Note: except for channel number size, strings are virtually identical. offset is provided as a failsafe. + * + * Assumes rig!=NULL */ void drake_decode_mem_channel(RIG *rig, char* mdbuf, int offset) { @@ -502,6 +539,11 @@ void drake_decode_mem_channel(RIG *rig, char* mdbuf, int offset) * drake_report_mem_channel * Common routine to retrieve the memory channel number * Data stored in priv for any routine to use + * + * inputs: rig - pointer to RIG structure + * owner - the calling routine identifier + * returns: command error status + * * Assumes rig!=NULL */ int drake_report_mem_channel(RIG *rig, char* owner) @@ -514,18 +556,10 @@ int drake_report_mem_channel(RIG *rig, char* owner) retval = drake_transaction(rig, "RC" EOM, 3, mdbuf, &mdbuf_len); - //let's trick it - /* - char testbuf[5] = {' ','0','0', 0x0d, 0x0a }; - if (mdbuf_len == 0) - { - for (int i=0; i < 5; i++) { - mdbuf[i] = testbuf[i]; - } - mdbuf_len = 5; - mdbuf[mdbuf_len] = 0x00; - retval = 0; - }*/ + // r8 00 - 99 + //char testbuf[5] = {' ','0','0', 0x0d, 0x0a }; + // r8a/b 000 - 439 + //char testbuf[6] = {' ','0','0','0', 0x0d, 0x0a }; drake_trans_rept(owner, "RC" EOM, 3, mdbuf, mdbuf_len, retval); @@ -562,6 +596,11 @@ int drake_report_mem_channel(RIG *rig, char* owner) * drake_report_all * Common routine to retrieve all of the radio's settings * Data stored in priv for any routine to use + * + * inputs: rig - pointer to RIG structure + * owner - the calling routine identifier + * returns: command error status + * * Assumes rig!=NULL */ int drake_report_all(RIG *rig, char* owner) @@ -576,22 +615,11 @@ int drake_report_all(RIG *rig, char* owner) retval = drake_transaction(rig, "RA" EOM, 3, mdbuf, &mdbuf_len); - //let's trick it - /* - // mem off, ch 00, NB off, AGC fast, RF off, MN off, ant 1, AM mode, 6.0 bw, VFOA, sync off, not scanning + // strings show mem off, ch 00, NB off, AGC fast, RF off, MN off, ant 1, AM mode, 6.0 bw, VFOA, sync off, not scanning // r8 - char testbuf[25] = {' ','0','0',' ','2','0','2','<','8',' ',' ','1','5','.','0','0','0','0','0','#','m','H','z', 0x0d, 0x0a }; - // r8a/b 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 - char testbuf[35] = {' ','0','0','0',' ','2','0','2','<','8',' ',' ','1','5','.','0','0','0','0','0','#','m','H','z',' ','M','E','M','N','A','M','E',' ', 0x0d, 0x0a }; - if (mdbuf_len == 0) - { - for (int i=0; i < 25; i++) { - mdbuf[i] = testbuf[i]; - } - mdbuf_len = 25; - mdbuf[mdbuf_len] = 0x00; - retval = RIG_OK; - }*/ + //char testbuf[25] = {' ','0','0',' ','2','0','2','<','8',' ',' ','1','5','.','0','0','0','0','0','#','m','H','z', 0x0d, 0x0a }; + // r8a/b - TODO Note 7-char channel name that eitehr starts at [25] or [26] + //char testbuf[35] = {' ','0','0','0',' ','2','0','2','<','8',' ',' ','1','5','.','0','0','0','0','0','#','m','H','z',' ','M','E','M','N','A','M','E',' ', 0x0d, 0x0a }; drake_trans_rept(owner, "RA" EOM, 3, mdbuf, mdbuf_len, retval); @@ -622,15 +650,19 @@ int drake_report_all(RIG *rig, char* owner) return -RIG_ERJCTED; } - //check RC *after* decoding the VFO in RM - //otherwise RIG_VFO_MEM gets squashed + // check RC *after* decoding the VFO in RM + // otherwise RIG_VFO_MEM gets squashed drake_decode_mode(rig, mdbuf, mode_offset); drake_decode_mem_channel(rig, mdbuf, chan_offset); drake_decode_frequency(rig, mdbuf, freq_offset); + + // TODO handle channel name on R8A/B + // TODO These models also have an additonal RN (Report Name) command for polling channel names that is not handled here return RIG_OK; } +/* COMMON HAMLIB INTERFACE ROUTINES */ int drake_init(RIG *rig) { @@ -684,27 +716,12 @@ int drake_set_freq(RIG *rig, vfo_t vfo, freq_t freq) int ack_len; int retval; - /* - * 10Hz resolution - * TODO: round nearest? - */ + // 10Hz resolution - TODO: round nearest? SNPRINTF((char *) freqbuf, sizeof(freqbuf), "F%07u" EOM, (unsigned int)freq / 10); retval = drake_transaction(rig, freqbuf, strlen(freqbuf), ackbuf, &ack_len); - //let's trick it - /* - char testbuf[2] = {0x0d, 0x0a}; - if (ack_len == 0) - { - ackbuf[0] = testbuf[0]; - ackbuf[1] = testbuf[1]; - ack_len = 2; - ackbuf[ack_len] = 0x00; - retval = 0; - }*/ - - drake_trans_rept("drake_set_freq", freqbuf, strlen(freqbuf), ackbuf, ack_len, retval); + //drake_trans_rept("drake_set_freq", freqbuf, strlen(freqbuf), ackbuf, ack_len, retval); return retval; } @@ -770,17 +787,6 @@ int drake_set_vfo(RIG *rig, vfo_t vfo) retval = drake_transaction(rig, cmdbuf, strlen(cmdbuf), ackbuf, &ack_len); - //let's trick it - /* - char testbuf[1] = {0x0a}; - if (ack_len == 0) - { - ackbuf[0] = testbuf[0]; - ack_len = 1; - ackbuf[ack_len] = 0x00; - retval = RIG_OK; - }*/ - drake_trans_rept("drake_set_vfo", cmdbuf, strlen(cmdbuf), ackbuf, ack_len, retval); return retval; @@ -846,17 +852,6 @@ int drake_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) retval = drake_transaction(rig, mdbuf, strlen(mdbuf), ackbuf, &ack_len); - //let's trick it - /* - char testbuf[1] = {0x0a}; - if (ack_len == 0) - { - ackbuf[0] = testbuf[0]; - ack_len = 1; - ackbuf[ack_len] = 0x00; - retval = 0; - }*/ - drake_trans_rept("drake_set_mode", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); if (retval != RIG_OK) @@ -899,17 +894,6 @@ int drake_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) SNPRINTF((char *) mdbuf, sizeof(mdbuf), "W%c" EOM, width_sel); retval = drake_transaction(rig, mdbuf, strlen(mdbuf), ackbuf, &ack_len); - //let's trick it - /* - char testbuf[1] = {0x0a}; - if (ack_len == 0) - { - ackbuf[0] = testbuf[0]; - ack_len = 1; - ackbuf[ack_len] = 0x00; - retval = 0; - }*/ - drake_trans_rept("drake_set_bw", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); } @@ -923,17 +907,6 @@ int drake_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) (mode == RIG_MODE_ECSSLSB)) ? 'O' : 'F'); retval = drake_transaction(rig, mdbuf, strlen(mdbuf), ackbuf, &ack_len); - //let's trick it - /* - char testbuf[1] = {0x0a}; - if (ack_len == 0) - { - ackbuf[0] = testbuf[0]; - ack_len = 1; - ackbuf[ack_len] = 0x00; - retval = 0; - }*/ - drake_trans_rept("drake_set_synch", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); } @@ -978,17 +951,6 @@ int drake_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option) retval = drake_transaction(rig, buf, strlen(buf), ackbuf, &ack_len); - //let's trick it - /* - char testbuf[1] = {0x0a}; - if (ack_len == 0) - { - ackbuf[0] = testbuf[0]; - ack_len = 1; - ackbuf[ack_len] = 0x00; - retval = 0; - }*/ - drake_trans_rept("drake_set_ant", buf, strlen(buf), ackbuf, ack_len, retval); return retval; @@ -1042,18 +1004,6 @@ int drake_set_mem(RIG *rig, vfo_t vfo, int ch) ack_len = 0; // fix compile-time warning "possibly uninitialized" retval = drake_transaction(rig, buf, strlen(buf), ackbuf, &ack_len); - //let's trick it - /* - char testbuf[2] = {0x0d, 0x0a}; - if (ack_len == 0) - { - ackbuf[0] = testbuf[0]; - ackbuf[1] = testbuf[1]; - ack_len = 2; - ackbuf[ack_len] = 0x00; - retval = 0; - }*/ - drake_trans_rept("drake_set_mem", buf, strlen(buf), ackbuf, ack_len, retval); if (ack_len != 2) @@ -1092,19 +1042,21 @@ int drake_get_mem(RIG *rig, vfo_t vfo, int *ch) */ int drake_set_chan(RIG *rig, vfo_t vfo, const channel_t *chan) { - const struct drake_priv_data *priv = STATE(rig)->priv; + char mdbuf[16]; + char ackbuf[BUFSZ]; + int ack_len; vfo_t old_vfo; int old_chan; - char mdbuf[16], ackbuf[BUFSZ]; - int ack_len, retval; + int retval; value_t dummy; + const struct drake_priv_data *priv = STATE(rig)->priv; dummy.i = 0; drake_get_vfo(rig, &old_vfo); old_chan = 0; - /* set to vfo if needed */ + // set to vfo if needed if (old_vfo == RIG_VFO_MEM) { old_chan = priv->curr_ch; @@ -1116,7 +1068,7 @@ int drake_set_chan(RIG *rig, vfo_t vfo, const channel_t *chan) } } - /* set all memory features */ + // set all memory features drake_set_ant(rig, RIG_VFO_CURR, chan->ant, dummy); drake_set_freq(rig, RIG_VFO_CURR, chan->freq); drake_set_mode(rig, RIG_VFO_CURR, chan->mode, chan->width); @@ -1131,9 +1083,30 @@ int drake_set_chan(RIG *rig, vfo_t vfo, const channel_t *chan) drake_set_func(rig, RIG_VFO_CURR, RIG_FUNC_MN, (chan->funcs & RIG_FUNC_MN) == RIG_FUNC_MN); - SNPRINTF(mdbuf, sizeof(mdbuf), "PR" EOM "%03d" EOM, chan->channel_num); + if (rig->caps->rig_model == RIG_MODEL_DKR8) + { + SNPRINTF(mdbuf, sizeof(mdbuf), "PR" EOM "%02d" EOM, chan->channel_num); + } + else + { + SNPRINTF(mdbuf, sizeof(mdbuf), "PR" EOM "%03d" EOM, chan->channel_num); + } retval = drake_transaction(rig, mdbuf, strlen(mdbuf), ackbuf, &ack_len); + //let's trick it + /* + char testbuf[2] = {0x0d, 0x0a}; + if (ack_len == 0) + { + ackbuf[0] = testbuf[0]; + ackbuf[1] = testbuf[1]; + ack_len = 2; + ackbuf[ack_len] = 0x00; + retval = 0; + }*/ + + drake_trans_rept("drake_set_chan", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); + if (old_vfo == RIG_VFO_MEM) { drake_set_mem(rig, RIG_VFO_CURR, old_chan); @@ -1149,11 +1122,10 @@ int drake_set_chan(RIG *rig, vfo_t vfo, const channel_t *chan) */ int drake_get_chan(RIG *rig, vfo_t vfo, channel_t *chan, int read_only) { - const struct drake_priv_data *priv = STATE(rig)->priv; vfo_t old_vfo; int old_chan; - char mdbuf[BUFSZ], freqstr[BUFSZ]; - int mdbuf_len, retval; + int retval; + const struct drake_priv_data *priv = STATE(rig)->priv; chan->vfo = RIG_VFO_MEM; chan->ant = RIG_ANT_NONE; @@ -1190,7 +1162,7 @@ int drake_get_chan(RIG *rig, vfo_t vfo, channel_t *chan, int read_only) old_chan = priv->curr_ch; } - //go to new channel + // go to new channel retval = drake_set_mem(rig, RIG_VFO_CURR, chan->channel_num); if (retval != RIG_OK) @@ -1198,141 +1170,39 @@ int drake_get_chan(RIG *rig, vfo_t vfo, channel_t *chan, int read_only) return RIG_OK; } - //now decipher it - retval = drake_transaction(rig, "RA" EOM, 3, mdbuf, &mdbuf_len); + // now decipher it into priv + retval = drake_report_all(rig, "drake_get_chan"); if (retval != RIG_OK) { - return retval; - } - - if (mdbuf_len < 35) - { - rig_debug(RIG_DEBUG_ERR, "drake_get_channel: wrong answer %s, " - "len=%d\n", mdbuf, mdbuf_len); - return -RIG_ERJCTED; + return RIG_OK; } - if ((mdbuf[5] >= '4') && (mdbuf[5] <= '?')) + if (priv->curr_nb) { chan->funcs |= RIG_FUNC_NB; } - - switch (mdbuf[5] & 0x33) + if (priv->curr_nb2) { - case '0': chan->levels[rig_setting2idx(RIG_LEVEL_AGC)].i = RIG_AGC_OFF; break; - - case '2': chan->levels[rig_setting2idx(RIG_LEVEL_AGC)].i = RIG_AGC_FAST; break; - - case '3': chan->levels[rig_setting2idx(RIG_LEVEL_AGC)].i = RIG_AGC_SLOW; break; - - default : chan->levels[rig_setting2idx(RIG_LEVEL_AGC)].i = RIG_AGC_FAST; + chan->funcs |= RIG_FUNC_NB2; } - if ((mdbuf[6] & 0x3c) == '8') - { - chan->levels[rig_setting2idx(RIG_LEVEL_PREAMP)].i = 10; - } + chan->levels[rig_setting2idx(RIG_LEVEL_AGC)].i = priv->curr_agc; + chan->levels[rig_setting2idx(RIG_LEVEL_PREAMP)].i = (priv->curr_pre ? 10 : 0); + chan->levels[rig_setting2idx(RIG_LEVEL_ATT)].i = (priv->curr_att ? 10 : 0); - if ((mdbuf[6] & 0x3c) == '4') - { - chan->levels[rig_setting2idx(RIG_LEVEL_ATT)].i = 10; - } - - if ((mdbuf[6] & 0x32) == '2') + if (priv->curr_notch) { chan->funcs |= RIG_FUNC_MN; } + + chan->ant = priv->curr_ant; + chan->width = priv->curr_width; + chan->mode = priv->curr_mode; + chan->freq = priv->curr_freq; - switch (mdbuf[7] & 0x3c) - { - case '0': chan->ant = RIG_ANT_1; break; - - case '4': chan->ant = RIG_ANT_3; break; - - case '8': chan->ant = RIG_ANT_2; break; - - default : chan->ant = RIG_ANT_NONE; - } - - switch (mdbuf[8] & 0x37) - { - case '0': chan->width = s_Hz(500); break; - - case '1': chan->width = s_Hz(1800); break; - - case '2': chan->width = s_Hz(2300); break; - - case '3': chan->width = s_Hz(4000); break; - - case '4': chan->width = s_Hz(6000); break; - - default : chan->width = RIG_PASSBAND_NORMAL; - } - - if ((mdbuf[8] >= '0') && (mdbuf[8] <= '4')) - { - switch (mdbuf[7] & 0x33) - { - case '0': chan->mode = RIG_MODE_LSB; break; - - case '1': chan->mode = RIG_MODE_RTTY; break; - - case '2': chan->mode = RIG_MODE_FM; - chan->width = s_Hz(12000); break; - - default : chan->mode = RIG_MODE_NONE; - } - } - else - { - switch (mdbuf[7] & 0x33) - { - case '0': chan->mode = RIG_MODE_USB; break; - - case '1': chan->mode = RIG_MODE_CW; break; - - case '2': chan->mode = RIG_MODE_AM; break; - - default : chan->mode = RIG_MODE_NONE; - } - } - - if ((mdbuf[9] & 0x34) == '4') - { - if (chan->mode == RIG_MODE_AM) - { - chan->mode = RIG_MODE_AMS; - } - else if (chan->mode == RIG_MODE_USB) - { - chan->mode = RIG_MODE_ECSSUSB; - } - else if (chan->mode == RIG_MODE_LSB) - { - chan->mode = RIG_MODE_ECSSLSB; - } - } - - strncpy(freqstr, mdbuf + 11, 9); - freqstr[9] = 0x00; - - if ((mdbuf[21] == 'k') || (mdbuf[21] == 'K')) - { - chan->freq = strtod(freqstr, NULL) * 1000.0; - } - - if ((mdbuf[21] == 'm') || (mdbuf[21] == 'M')) - { - chan->freq = strtod(freqstr, NULL) * 1000000.0; - } - - - strncpy(chan->channel_desc, mdbuf + 25, 7); - chan->channel_desc[7] = '\0'; // in case strncpy did not terminate the string - - //now put the radio back the way it was - //we apparently can't do a read-only channel read + // now put the radio back the way it was + // we apparently can't do a read-only channel read if (old_vfo != RIG_VFO_MEM) { retval = drake_set_vfo(rig, RIG_VFO_VFO); @@ -1384,7 +1254,6 @@ int drake_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) break; case RIG_OP_TO_VFO: - /* len = SNPRINTF(buf,"C%03d" EOM, priv->curr_ch); */ SNPRINTF(buf, sizeof(buf), "F" EOM); break; @@ -1411,21 +1280,6 @@ int drake_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) retval = drake_transaction(rig, buf, len, buf[len - 1] == 0x0d ? ackbuf : NULL, buf[len - 1] == 0x0d ? &ack_len : NULL); - //let's trick it - /* - if ((op == RIG_OP_TO_VFO) || (op == RIG_OP_FROM_VFO)) - { - char testbuf[2] = {0x0d, 0x0a}; - if (ack_len == 0) - { - ackbuf[0] = testbuf[0]; - ackbuf[1] = testbuf[1]; - ack_len = 2; - ackbuf[ack_len] = 0x00; - retval = 0; - } - }*/ - drake_trans_rept("drake_vfo_op", buf, len, buf[len - 1] == 0x0d ? ackbuf : NULL, buf[len - 1] == 0x0d ? ack_len : 0, retval); @@ -1481,17 +1335,6 @@ int drake_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) retval = drake_transaction(rig, buf, strlen(buf), ackbuf, &ack_len); - //let's trick it - /* - char testbuf[1] = {0x0a}; - if (ack_len == 0) - { - ackbuf[0] = testbuf[0]; - ack_len = 1; - ackbuf[ack_len] = 0x00; - retval = 0; - }*/ - drake_trans_rept("drake_set_func", buf, strlen(buf), ackbuf, ack_len, retval); return retval; @@ -1561,17 +1404,6 @@ int drake_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) retval = drake_transaction(rig, buf, strlen(buf), ackbuf, &ack_len); - //let's trick it - /* - char testbuf[1] = {0x0a}; - if (ack_len == 0) - { - ackbuf[0] = testbuf[0]; - ack_len = 1; - ackbuf[ack_len] = 0x00; - retval = 0; - }*/ - drake_trans_rept("set_level", buf, strlen(buf), ackbuf, ack_len, retval); return retval; @@ -1655,17 +1487,6 @@ int drake_set_powerstat(RIG *rig, powerstat_t status) retval = drake_transaction(rig, buf, strlen(buf), ackbuf, &ack_len); - //let's trick it - /* - char testbuf[1] = {0x0a}; - if (ack_len == 0) - { - ackbuf[0] = testbuf[0]; - ack_len = 1; - ackbuf[ack_len] = 0x00; - retval = 0; - }*/ - drake_trans_rept("set_power", buf, strlen(buf), ackbuf, ack_len, retval); return retval; @@ -1700,18 +1521,6 @@ const char *drake_get_info(RIG *rig) retval = drake_transaction(rig, "ID" EOM, 3, idbuf, &id_len); - //let's trick it - /* - char testbuf[4] = {'R','8',0x0d,0x0a}; - if (id_len == 0) - { - for (int i = 0; i < 4; i++) - idbuf[i] = testbuf[i]; - id_len = 4; - idbuf[id_len] = 0x00; - retval = 0; - }*/ - drake_trans_rept("get_id", "ID" EOM, 3, idbuf, id_len, retval); if (retval != RIG_OK) @@ -1779,7 +1588,7 @@ DECLARE_PROBERIG_BACKEND(drake) return RIG_MODEL_NONE; } - idbuf[id_len - 2] = '\0'; + idbuf[id_len - 2] = '\0'; //strip off <CR><LF> if (!strcmp(idbuf, "R8B")) { @@ -1791,7 +1600,7 @@ DECLARE_PROBERIG_BACKEND(drake) return RIG_MODEL_DKR8B; } - if (!strcmp(idbuf, "R8A")) /* TBC */ + if (!strcmp(idbuf, "R8A")) // TBC { if (cfunc) { @@ -1811,10 +1620,8 @@ DECLARE_PROBERIG_BACKEND(drake) return RIG_MODEL_DKR8; } - /* - * not found... - */ - if (memcmp(idbuf, "ID" EOM, 3)) /* catch loopback serial */ + // not found... + if (memcmp(idbuf, "ID" EOM, 3)) // catch loopback serial rig_debug(RIG_DEBUG_VERBOSE, "probe_drake: found unknown device " "with ID '%s', please report to Hamlib " "developers.\n", idbuf); diff --git a/rigs/drake/drake.h b/rigs/drake/drake.h index e1f5f6cd7..2645c182b 100644 --- a/rigs/drake/drake.h +++ b/rigs/drake/drake.h @@ -66,13 +66,6 @@ int drake_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val); int drake_set_powerstat (RIG * rig, powerstat_t status); int drake_get_powerstat (RIG * rig, powerstat_t *status); const char *drake_get_info(RIG *rig); -//temporary until everything from r8.c is moved back over to drake.c -void drake_trans_rept(char* hdrStr, char* sentStr, int sentLen, char* recdStr, int recdLen, int res); -int drake_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int *data_len); -int drake_report_frequency(RIG *rig, char* owner); -int drake_report_mode(RIG *rig, char* owner); -int drake_report_mem_channel(RIG *rig, char* owner); -int drake_report_all(RIG *rig, char* owner); extern struct rig_caps r8_caps; extern struct rig_caps r8a_caps; diff --git a/rigs/drake/r8.c b/rigs/drake/r8.c index 9e831b0f8..09858b965 100644 --- a/rigs/drake/r8.c +++ b/rigs/drake/r8.c @@ -19,30 +19,12 @@ * */ -//#include <stdio.h> #include <stdlib.h> -//#include <stdbool.h> -//#include <string.h> /* String function definitions */ -//#include <unistd.h> /* UNIX standard function definitions */ #include <hamlib/rig.h> #include "idx_builtin.h" -//#include "serial.h" -//#include "misc.h" -//#include "cal.h" -//#include "register.h" - #include "drake.h" -int drake_r8_set_chan(RIG *rig, vfo_t vfo, const channel_t *chan); -int drake_r8_get_chan(RIG *rig, vfo_t vfo, channel_t *chan, int read_only); - -#define BUFSZ 64 - -#define CR "\x0d" -#define LF "\x0a" -#define EOM CR - #define R8_MODES (RIG_MODE_SSB|RIG_MODE_CW|RIG_MODE_RTTY|RIG_MODE_AM|RIG_MODE_AMS|RIG_MODE_FM) #define R8_FUNC (RIG_FUNC_MN|RIG_FUNC_NB|RIG_FUNC_NB2) @@ -100,7 +82,7 @@ struct rig_caps r8_caps = .serial_parity = RIG_PARITY_EVEN, .serial_handshake = RIG_HANDSHAKE_HARDWARE, .write_delay = 1, - .post_write_delay = 100, //1, + .post_write_delay = 100, .timeout = 250, .retry = 3, @@ -193,8 +175,8 @@ struct rig_caps r8_caps = .get_ant = drake_get_ant, .set_mem = drake_set_mem, .get_mem = drake_get_mem, - .set_channel = drake_r8_set_chan, - .get_channel = drake_r8_get_chan, + .set_channel = drake_set_chan, + .get_channel = drake_get_chan, .vfo_op = drake_vfo_op, .set_powerstat = drake_set_powerstat, .get_powerstat = drake_get_powerstat, @@ -206,186 +188,3 @@ struct rig_caps r8_caps = * Function definitions below */ -/* - * drake_set_chan - * Assumes rig!=NULL - */ -int drake_r8_set_chan(RIG *rig, vfo_t vfo, const channel_t *chan) -{ - const struct drake_priv_data *priv = STATE(rig)->priv; - vfo_t old_vfo; - int old_chan; - char mdbuf[16]; - char ackbuf[BUFSZ]; - int ack_len; - int retval; - value_t dummy; - - dummy.i = 0; - - drake_get_vfo(rig, &old_vfo); - old_chan = 0; - - /* set to vfo if needed */ - if (old_vfo == RIG_VFO_MEM) - { - old_chan = priv->curr_ch; - retval = drake_set_vfo(rig, RIG_VFO_VFO); - - if (retval != RIG_OK) - { - return retval; - } - } - - /* set all memory features */ - drake_set_ant(rig, RIG_VFO_CURR, chan->ant, dummy); - drake_set_freq(rig, RIG_VFO_CURR, chan->freq); - drake_set_mode(rig, RIG_VFO_CURR, chan->mode, chan->width); - drake_set_func(rig, RIG_VFO_CURR, RIG_FUNC_NB, - (chan->funcs & RIG_FUNC_NB) == RIG_FUNC_NB); - drake_set_func(rig, RIG_VFO_CURR, RIG_FUNC_NB2, - (chan->funcs & RIG_FUNC_NB2) == RIG_FUNC_NB2); - drake_set_level(rig, RIG_VFO_CURR, RIG_LEVEL_AGC, - chan->levels[rig_setting2idx(RIG_LEVEL_AGC)]); - drake_set_level(rig, RIG_VFO_CURR, RIG_LEVEL_PREAMP, - chan->levels[rig_setting2idx(RIG_LEVEL_PREAMP)]); - drake_set_level(rig, RIG_VFO_CURR, RIG_LEVEL_ATT, - chan->levels[rig_setting2idx(RIG_LEVEL_ATT)]); - drake_set_func(rig, RIG_VFO_CURR, RIG_FUNC_MN, - (chan->funcs & RIG_FUNC_MN) == RIG_FUNC_MN); - - SNPRINTF(mdbuf, sizeof(mdbuf), "PR" EOM "%02d" EOM, chan->channel_num); - retval = drake_transaction(rig, mdbuf, strlen(mdbuf), ackbuf, &ack_len); - - //let's trick it - /* - char testbuf[2] = {0x0d, 0x0a}; - if (ack_len == 0) - { - ackbuf[0] = testbuf[0]; - ackbuf[1] = testbuf[1]; - ack_len = 2; - ackbuf[ack_len] = 0x00; - retval = 0; - }*/ - - drake_trans_rept("drake_set_chan", mdbuf, strlen(mdbuf), ackbuf, ack_len, retval); - - if (old_vfo == RIG_VFO_MEM) - { - drake_set_mem(rig, RIG_VFO_CURR, old_chan); - } - - return retval; -} - - -/* - * drake_get_chan - * Assumes rig!=NULL - */ -int drake_r8_get_chan(RIG *rig, vfo_t vfo, channel_t *chan, int read_only) -{ - vfo_t old_vfo; - int old_chan; - int retval; - const struct drake_priv_data *priv = STATE(rig)->priv; - - chan->vfo = RIG_VFO_MEM; - chan->ant = RIG_ANT_NONE; - chan->freq = 0; - chan->mode = RIG_MODE_NONE; - chan->width = RIG_PASSBAND_NORMAL; - chan->tx_freq = 0; - chan->tx_mode = RIG_MODE_NONE; - chan->tx_width = RIG_PASSBAND_NORMAL; - chan->split = RIG_SPLIT_OFF; - chan->tx_vfo = RIG_VFO_NONE; - chan->rptr_shift = RIG_RPT_SHIFT_NONE; - chan->rptr_offs = 0; - chan->tuning_step = 0; - chan->rit = 0; - chan->xit = 0; - chan->funcs = 0; - chan->levels[rig_setting2idx(RIG_LEVEL_AGC)].i = RIG_AGC_OFF; - chan->levels[rig_setting2idx(RIG_LEVEL_ATT)].i = 0; - chan->levels[rig_setting2idx(RIG_LEVEL_PREAMP)].i = 0; - chan->ctcss_tone = 0; - chan->ctcss_sql = 0; - chan->dcs_code = 0; - chan->dcs_sql = 0; - chan->scan_group = 0; - chan->flags = RIG_CHFLAG_SKIP; - strcpy(chan->channel_desc, " "); - - drake_get_vfo(rig, &old_vfo); - old_chan = 0; - - if (old_vfo == RIG_VFO_MEM) - { - old_chan = priv->curr_ch; - } - - //go to new channel - retval = drake_set_mem(rig, RIG_VFO_CURR, chan->channel_num); - - if (retval != RIG_OK) - { - return RIG_OK; - } - - retval = drake_report_all(rig, "drake_get_chan"); - - if (retval != RIG_OK) - { - return RIG_OK; - } - - if (priv->curr_nb) - { - chan->funcs |= RIG_FUNC_NB; - } - if (priv->curr_nb2) - { - chan->funcs |= RIG_FUNC_NB2; - } - - chan->levels[rig_setting2idx(RIG_LEVEL_AGC)].i = priv->curr_agc; - chan->levels[rig_setting2idx(RIG_LEVEL_PREAMP)].i = (priv->curr_pre ? 10 : 0); - chan->levels[rig_setting2idx(RIG_LEVEL_ATT)].i = (priv->curr_att ? 10 : 0); - - if (priv->curr_notch) - { - chan->funcs |= RIG_FUNC_MN; - } - - chan->ant = priv->curr_ant; - chan->width = priv->curr_width; - chan->mode = priv->curr_mode; - chan->freq = priv->curr_freq; - - //now put the radio back the way it was - //we apparently can't do a read-only channel read - if (old_vfo != RIG_VFO_MEM) - { - retval = drake_set_vfo(rig, RIG_VFO_VFO); - - if (retval != RIG_OK) - { - return retval; - } - } - else - { - retval = drake_set_mem(rig, RIG_VFO_CURR, old_chan); - - if (retval != RIG_OK) - { - return retval; - } - } - - return RIG_OK; -} - commit f68c48aac54210e2bd1ee7ee2fd15401e8a201d2 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sat Jul 5 13:04:49 2025 +0200 Add dependency to hamlibdatetime.h Fixes a race during parallel builds: rig.c:74:10: fatal error: 'hamlibdatetime.h' file not found Occurred in https://github.com/Hamlib/Hamlib/actions/runs/16087329208/job/45400068817 diff --git a/src/Makefile.am b/src/Makefile.am index 0e940b317..a1a92ba23 100755 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -49,6 +49,8 @@ hamlibdatetime.h: FORCE test -f $(srcdir)/$(@F) || cp $(srcdir)/$(@F).in $(srcdir)/$(@F) ;\ fi +snapshot_data.o rig.o: hamlibdatetime.h + RCCOMPILE = $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RCCOMPILE) commit b73d4a5cefda6f35331d39295e5c0263f7aa3576 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sat Jul 5 12:42:42 2025 +0200 Install SWIG for macOS in the CI Install the latest version available. diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 562f4bfc9..46ecaff38 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -66,6 +66,7 @@ jobs: brew install libtool brew install grep brew install lua + brew install swig brew install tcl-tk - name: bootstrap run: ./bootstrap commit 585d23ae5b25844c49e492eda21338d56ed5141b Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sat Jul 5 12:39:38 2025 +0200 Temporarily disable building Lua bindings on macOS diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index dd4ab5709..562f4bfc9 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -81,7 +81,7 @@ jobs: run: ./configure ${{ matrix.configure_args }} --enable-silent-rules - name: configure on macOS if: runner.os == 'macOS' - run: ./configure ${{ matrix.configure_args }} --enable-silent-rules --without-python-binding + run: ./configure ${{ matrix.configure_args }} --enable-silent-rules --without-python-binding --without-lua-binding - name: make run: make -j 4 V=0 --no-print-directory - name: make distcheck commit 419cb02dd5998c937fb6df3bd180b3d6c3dce00c Author: Daniele Forsi IU5HKX <iu...@gm...> Date: Sat Jul 5 11:51:49 2025 +0200 Install Lua for macOS in the CI Install the latest version available. diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 6c1f89991..dd4ab5709 100644 --- a/.github/workflows/c-cpp.yml ... [truncated message content] |