hamlib-developer Mailing List for Ham Radio Control Libraries (Page 12)
Library to control radio transceivers and receivers
Brought to you by:
n0nb
You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
(24) |
Oct
(16) |
Nov
(8) |
Dec
(9) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(49) |
Feb
(17) |
Mar
(3) |
Apr
(7) |
May
(3) |
Jun
(1) |
Jul
(2) |
Aug
(8) |
Sep
(18) |
Oct
(15) |
Nov
(15) |
Dec
(26) |
2002 |
Jan
(46) |
Feb
(14) |
Mar
(44) |
Apr
(3) |
May
(6) |
Jun
(47) |
Jul
(40) |
Aug
(14) |
Sep
(59) |
Oct
(39) |
Nov
(58) |
Dec
(76) |
2003 |
Jan
(82) |
Feb
(66) |
Mar
(37) |
Apr
(56) |
May
(34) |
Jun
(19) |
Jul
(23) |
Aug
(55) |
Sep
(31) |
Oct
(40) |
Nov
(21) |
Dec
(60) |
2004 |
Jan
(57) |
Feb
(110) |
Mar
(41) |
Apr
(17) |
May
(18) |
Jun
(19) |
Jul
(18) |
Aug
(5) |
Sep
(31) |
Oct
(16) |
Nov
(26) |
Dec
(36) |
2005 |
Jan
(69) |
Feb
(26) |
Mar
(62) |
Apr
(120) |
May
(31) |
Jun
(47) |
Jul
(7) |
Aug
(27) |
Sep
(4) |
Oct
(9) |
Nov
(26) |
Dec
(21) |
2006 |
Jan
(13) |
Feb
(26) |
Mar
(38) |
Apr
(31) |
May
(17) |
Jun
(6) |
Jul
(23) |
Aug
(6) |
Sep
(38) |
Oct
(87) |
Nov
(49) |
Dec
(49) |
2007 |
Jan
(52) |
Feb
(19) |
Mar
(20) |
Apr
(5) |
May
(25) |
Jun
(15) |
Jul
(49) |
Aug
(43) |
Sep
(21) |
Oct
(21) |
Nov
(27) |
Dec
(10) |
2008 |
Jan
(23) |
Feb
(20) |
Mar
(25) |
Apr
(39) |
May
(36) |
Jun
(17) |
Jul
(10) |
Aug
(18) |
Sep
(44) |
Oct
(88) |
Nov
(60) |
Dec
(65) |
2009 |
Jan
(99) |
Feb
(91) |
Mar
(49) |
Apr
(34) |
May
(52) |
Jun
(9) |
Jul
(11) |
Aug
(4) |
Sep
(41) |
Oct
(16) |
Nov
(51) |
Dec
(71) |
2010 |
Jan
(43) |
Feb
(79) |
Mar
(59) |
Apr
(55) |
May
(51) |
Jun
(38) |
Jul
(38) |
Aug
(61) |
Sep
(53) |
Oct
(46) |
Nov
(43) |
Dec
(41) |
2011 |
Jan
(74) |
Feb
(96) |
Mar
(41) |
Apr
(42) |
May
(61) |
Jun
(66) |
Jul
(50) |
Aug
(40) |
Sep
(11) |
Oct
(30) |
Nov
(21) |
Dec
(45) |
2012 |
Jan
(59) |
Feb
(4) |
Mar
(52) |
Apr
(19) |
May
(62) |
Jun
(46) |
Jul
(61) |
Aug
(18) |
Sep
(21) |
Oct
(25) |
Nov
(66) |
Dec
(41) |
2013 |
Jan
(36) |
Feb
(64) |
Mar
(37) |
Apr
(24) |
May
(74) |
Jun
(40) |
Jul
(43) |
Aug
(34) |
Sep
(65) |
Oct
(52) |
Nov
(23) |
Dec
(20) |
2014 |
Jan
(18) |
Feb
(29) |
Mar
(13) |
Apr
(41) |
May
(10) |
Jun
(12) |
Jul
(16) |
Aug
(25) |
Sep
(20) |
Oct
(56) |
Nov
(43) |
Dec
(61) |
2015 |
Jan
(36) |
Feb
(38) |
Mar
(92) |
Apr
(42) |
May
(13) |
Jun
(19) |
Jul
(18) |
Aug
(22) |
Sep
(21) |
Oct
(2) |
Nov
(49) |
Dec
(22) |
2016 |
Jan
(55) |
Feb
(144) |
Mar
(40) |
Apr
(98) |
May
(61) |
Jun
(36) |
Jul
(16) |
Aug
(33) |
Sep
(59) |
Oct
(16) |
Nov
(37) |
Dec
(32) |
2017 |
Jan
(70) |
Feb
(71) |
Mar
(14) |
Apr
(43) |
May
(31) |
Jun
(24) |
Jul
(38) |
Aug
(54) |
Sep
(24) |
Oct
(15) |
Nov
(26) |
Dec
(27) |
2018 |
Jan
(22) |
Feb
(24) |
Mar
(109) |
Apr
(12) |
May
(46) |
Jun
(23) |
Jul
(39) |
Aug
(34) |
Sep
(22) |
Oct
(43) |
Nov
(26) |
Dec
(157) |
2019 |
Jan
(102) |
Feb
(51) |
Mar
(63) |
Apr
(60) |
May
(91) |
Jun
(55) |
Jul
(27) |
Aug
(76) |
Sep
(52) |
Oct
(95) |
Nov
(67) |
Dec
(204) |
2020 |
Jan
(311) |
Feb
(148) |
Mar
(230) |
Apr
(122) |
May
(204) |
Jun
(204) |
Jul
(114) |
Aug
(36) |
Sep
(120) |
Oct
(186) |
Nov
(60) |
Dec
(151) |
2021 |
Jan
(182) |
Feb
(171) |
Mar
(202) |
Apr
(153) |
May
(110) |
Jun
(50) |
Jul
(58) |
Aug
(142) |
Sep
(112) |
Oct
(120) |
Nov
(97) |
Dec
(125) |
2022 |
Jan
(175) |
Feb
(147) |
Mar
(54) |
Apr
(73) |
May
(127) |
Jun
(95) |
Jul
(88) |
Aug
(85) |
Sep
(38) |
Oct
(40) |
Nov
(116) |
Dec
(159) |
2023 |
Jan
(175) |
Feb
(55) |
Mar
(83) |
Apr
(70) |
May
(165) |
Jun
(79) |
Jul
(123) |
Aug
(90) |
Sep
(40) |
Oct
(95) |
Nov
(84) |
Dec
(88) |
2024 |
Jan
(105) |
Feb
(60) |
Mar
(52) |
Apr
(43) |
May
(56) |
Jun
(59) |
Jul
(53) |
Aug
(47) |
Sep
(62) |
Oct
(36) |
Nov
(45) |
Dec
(100) |
2025 |
Jan
(52) |
Feb
(45) |
Mar
(30) |
Apr
(97) |
May
(72) |
Jun
(83) |
Jul
(124) |
Aug
(83) |
Sep
(84) |
Oct
|
Nov
|
Dec
|
From: Nate B. <n0...@n0...> - 2025-07-08 17:26:15
|
Thanks, I guess, Adrian. I can stare at that for a while and it isn't going to solve the bug. What we really need, and always request, is trace output from rigctl to see what is actually happening. Please get back to the reporter and have him run rigctl with the -vvvvv option and send that output to our list or put it in a GitHub issue. As there will be plenty of output, please only test the affected command. 73, Nate -- "The optimist proclaims that we live in the best of all possible worlds. The pessimist fears this is true." Web: https://www.n0nb.us Projects: https://github.com/N0NB GPG fingerprint: 82D6 4F6B 0E67 CD41 F689 BBA6 FB2C 5130 D55A 8819 |
From: George B. <geo...@gm...> - 2025-07-08 15:58:49
|
I looked at this also (using simft847) and AFAICT the data looks correct, but since I've never seen/used this protocol that's not worth much... I did note "All commands sent from the computer to the transceiver consist of five-byte blocks, with up to 200 ms between each byte." That's a full second to transfer 5 bytes. Could this be another serial speed problem, or a needed write delay? 73 n3gb PS: simft847 is pretty much worthless for anything beyond the fact that there's >some< data being transferred. On 7/7/25 10:58 PM, Nate Bargmann wrote: > I'll admit it's been a long day and I'm tired, but I'm not seeing the > error in our equivalent list of commands in the array in our ft847.c > file. > > Hopefully someone can show me... > > 73, Nate > > > > _______________________________________________ > Hamlib-developer mailing list > Ham...@li... > https://lists.sourceforge.net/lists/listinfo/hamlib-developer |
From: Adrian <vk...@gm...> - 2025-07-08 12:21:10
|
From the MSHS yaesu.cpp that works for the guys complaining about hamlib ; /* MSHV Part from RigControl * Copyright 2015 Hrisimir Hristov, LZ2HV * May be used under the terms of the GNU General Public License (GPL) */ #include "yaesu.h" #include "yaesu_def.h" #include "../hvutils.h" #include <stdio.h> #include <QTimer> //#include <QtGui> #define YAESU_CMD_LENGTH 5 #define NEWCAT 201 #define USECMD 202 #define PMR0 203 #define FI 0x3b //end of fraze NEWCAT -> ; enum native_cmd_e { NATIVE_CAT_PTT_ON = 0, NATIVE_CAT_PTT_OFF, NATIVE_CAT_SET_FREQ, NATIVE_CAT_GET_FREQ_MODE_STATUS, NATIVE_CAT_SET_MODE_USB, NATIVE_CAT_SET_MODE_DIGU, NATIVE_CAT_GET_MODE, CAT_ON, CAT_OFF }; struct yaesu_cmd_set { unsigned char ncomp; /* 1 = complete, 0 = incomplete, needs extra info */ unsigned char nseq[YAESU_CMD_LENGTH]; /* native cmd sequence */ }; typedef struct yaesu_cmd_set yaesu_cmd_set_t; static const yaesu_cmd_set_t ncmd[YAESU_COUNT][9] = { //FT-100 {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set freq */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x10 } }, /* get FREQ and MODE status 32 bites */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* mode set main USB */ { 1, { 0x00, 0x00, 0x00, 0x05, 0x0c } }, /* mode set main DIGU */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x10 } }, /* get FREQ and MODE status 32 bites */ { USECMD, { 0x00, 0x00, 0x00, 0x01, 0xfa } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FT-847 {{ 1, { 0x00, 0x00, 0x00, 0x00, 0x08 } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x88 } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* set freq */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* get FREQ and MODE status */ { 1, { 0x01, 0x00, 0x00, 0x00, 0x07 } }, /* mode set main USB */ { 1, { 0x01, 0x00, 0x00, 0x00, 0x07 } }, /* mode set main DIGU */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* get FREQ and MODE status */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* CAT = On */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x80 } },}, /* CAT = Off */ //FT-990 {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* Set Op Freq */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } },/* Update Op Data return 32 bites */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* OP Mode Set USB */ { 1, { 0x00, 0x00, 0x00, 0x09, 0x0c } }, /* OP Mode Set DIGU */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } },/* Update Op Data return 32 bites */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FT-991 {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FT-857 {{ 1, { 0x00, 0x00, 0x00, 0x00, 0x08 } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x88 } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* set freq */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* get FREQ and MODE status */ { 1, { 0x01, 0x00, 0x00, 0x00, 0x07 } }, /* mode set main USB */ { 1, { 0x0a, 0x00, 0x00, 0x00, 0x07 } }, /* mode set main DIGU */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* get FREQ and MODE status */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FT-1000D {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* Set Op Freq */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } }, /* Update Op Data return 16 bites */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* OP Mode Set USB */ { 1, { 0x00, 0x00, 0x00, 0x09, 0x0c } }, /* OP Mode Set DIGU */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } },/* Update Op Data return 16 bites */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FT-1000MP {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set VFOA freq */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } }, /* Update Op Data */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* vfo A mode set USB */ { 1, { 0x00, 0x00, 0x00, 0x09, 0x0c } }, /* OP Mode Set DIGU */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } },/* Update Op Data */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FT-2000 //{{ NEWCAT, { 0x54, 0x58, 0x31, 0x3b, 0x00 } }, /*identif newcat NEWCAT TX1; ptt on */ // { NEWCAT, { 0x54, 0x58, 0x30, 0x3b, 0x00 } },}, /*identif newcat NEWCAT TX0; ptt off */ //FT-2000 {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FT-DX3000 //AI0;=off AI1;-on Auto information VS;vefo select {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FT-DX5000 //AI0;=off AI1;-on Auto information VS;vefo select {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FTDX-9000 {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FT-950 {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FT-920 {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set vfo A freq */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } },/* Status Update Data--Current operating data for VFO/Memory (28 bytes) */ { 0, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* mode set */ //#define MODE_SET_A_USB 0x01 P1=3bit { 0, { 0x00, 0x00, 0x00, 0x0a, 0x0c } }, /* mode set */ //#define MODE_SET_A_DIGU 0x01 P1=3bit { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } }, /* Status Update Data--Current operating data for VFO/Memory (28 bytes) */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FT-900 {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set display freq */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } }, /* Status Update Data--Current operating data for VFO/Memory (19 bytes) */ { 0, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* mode set *///#define MODE_SET_USB 0x01 P1=3bit { 0, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* mode set *///#define MODE_SET_DIGU 0x01 P1=3bit { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } }, /* Status Update Data--Current operating data for VFO/Memory (19 bytes) */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FT-897 {{ 1, { 0x00, 0x00, 0x00, 0x00, 0x08 } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x88 } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* set freq */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* get FREQ and MODE status */ { 1, { 0x01, 0x00, 0x00, 0x00, 0x07 } }, /* mode set main USB */ { 1, { 0x0a, 0x00, 0x00, 0x00, 0x07 } }, /* mode set main DIGU */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* get FREQ and MODE status */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FT-890 {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set display freq */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } },/* Status Update Data--Current operating data for VFO/Memory (19 bytes) */ { 0, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* mode set */ // #define MODE_SET_USB 0x01 P1=3bit { 0, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* mode set */ // #define MODE_SET_DIGU 0x01 P1=3bit { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } },/* Status Update Data--Current operating data for VFO/Memory (19 bytes) */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FT-840 {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set display freq */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } }, /* Status Update Data--Current operating data for VFO/Memory (19 bytes) */ { 0, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* mode set */ // #define MODE_SET_USB 0x01 { 0, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* mode set */ // #define MODE_SET_DIGU 0x01 { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } }, /* Status Update Data--Current operating data for VFO/Memory (19 bytes) */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FT-817 {{ 1, { 0x00, 0x00, 0x00, 0x00, 0x08 } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x88 } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* set freq */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* get FREQ and MODE status */ { 1, { 0x01, 0x00, 0x00, 0x00, 0x07 } }, /* mode set main USB */ { 1, { 0x0a, 0x00, 0x00, 0x00, 0x07 } }, /* mode set main DIGU */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* get FREQ and MODE status */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FT-747GX //#define FT747_SUMO_DISPLAYED_FREQ 0x01 from_bcd_be //#define FT747_SUMO_VFO_A_FREQ 0x09 from_bcd_be {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set freq */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x10 } },//2.46 get mode/frq =0x10 status #define FT747_SUMO_DISPLAYED_FREQ 0x01 { 1, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* mode set USB */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* mode set DIGU */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x10 } },//2.46 get mode/frq =0x10 status #define FT747_SUMO_DISPLAYED_MODE 0x18 { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FT-450 {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FT-450D {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FT-767GX NONE HV ????????? get func {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x08 } }, //#define CMD_FREQ_SET 0x08 { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, //#define STATUS_CURR_FREQ 1 /* Operating Frequency */ //#define STATUS_VFOA_FREQ 14 ???? { 1, { 0x00, 0x00, 0x00, 0x11, 0x0a } }, //set mode //#define SUBCMD_MODE_USB 0x11 /* 8 bytes returned */ { 1, { 0x00, 0x00, 0x00, 0x11, 0x0a } }, //set mode //#define SUBCMD_MODE_DIGU 0x11 /* 8 bytes returned */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } },//PROBLEM get mode //#define STATUS_CURR_MODE 6 #define SUBCMD_MODE_USB 0x11 /* 8 bytes returned */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* CAT = On */ { USECMD, { 0x00, 0x00, 0x00, 0x01, 0x00 } },}, /* CAT = Off */ //FT-757GX NONE HV {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set freq */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x10 } }, //#define STATUS_CURR_FREQ 5 /* Operating Frequency * /#define STATUS_VFOA_FREQ 10 { 0, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, //set mode USB { 0, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, //set mode DIGU { 0, { 0x00, 0x00, 0x00, 0x00, 0x10} }, //get mode { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FRG-9600 NONE HV {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 1, { 0x0a, 0x00, 0x00, 0x00, 0x00 } }, /* set freq */ //-1 block { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get freq */ //none { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* set mode */ //none { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* set mode */ //none { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get mode */ //none { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FRG-8800 NONE HV {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* set freq */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get freq */ //none { 1, { 0x00, 0x00, 0x00, 0x02, 0x80 } }, /* set mode*/ { 1, { 0x00, 0x00, 0x00, 0x02, 0x80 } }, /* set mode*/ { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get freq */ //none { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FRG-100 NONE HV {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* Set Op Freq */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get freq */ //none { 1, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* OP Mode Set USB */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* OP Mode Set DIGU */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get freq */ //none { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //VR-5000 NONE HV {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get freq */ //none { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get freq */ //none { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get freq */ //none { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get freq */ //none { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get freq */ //none { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* CAT = On */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x80 } },}, /* CAT = Off */ //FT-736R ? {{ 1, { 0x00, 0x00, 0x00, 0x00, 0x08 } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x88 } }, /* ptt off */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* set freq */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get freq */ //none { 1, { 0x01, 0x00, 0x00, 0x00, 0x07 } }, /* set mode */ { 1, { 0x01, 0x00, 0x00, 0x00, 0x07 } }, /* set mode */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* get mode */ //none { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* CAT = On */ { USECMD, { 0x80, 0x80, 0x80, 0x80, 0x80 } },}, /* CAT = Off */ //FT-980 TESTED HV {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x08 } }, /* set freq */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* get freq */ // { 1, { 0x00, 0x00, 0x00, 0x11, 0x0a } }, /* set mode */ //#define MD_USB 0x11 { 1, { 0x00, 0x00, 0x00, 0x16, 0x0a } }, /* set mode */ //#define MD_DIGU 0x11 { 1, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* get mode */ // { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* CAT = On */ //2.56 { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //2.56 //MARK-V FT-1000MP {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set VFOA freq */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } }, /* Update Op Data */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* vfo A mode set USB */ { 1, { 0x00, 0x00, 0x00, 0x09, 0x0c } }, /* vfo A mode set DIGU */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } },/* Update Op Data */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //MARK-V Field FT-1000MP {{ 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set VFOA freq */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } }, /* Update Op Data */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x0c } }, /* vfo A mode set USB */ { 1, { 0x00, 0x00, 0x00, 0x09, 0x0c } }, /* vfo A mode set DIGU */ { 1, { 0x00, 0x00, 0x00, 0x02, 0x10 } },/* Update Op Data */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //FTX-1F {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FT-710 {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FT-891 {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FT-DX10 {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FT-DX101 {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //FT-DX1200 {{ NEWCAT, { "TX1;" } }, /*identif newcat NEWCAT TX1; ptt on */ { NEWCAT, { "TX0;" } }, /*identif newcat NEWCAT TX0; ptt off */ { NEWCAT, { "FA" } }, /*identif newcat NEWCAT FA; set freq */ { NEWCAT, { "FA;" } }, /*identif newcat NEWCAT FA; get freq */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode USB ili C data-usb */ { NEWCAT, { "MD0" } } , /*identif newcat NEWCAT FA; set mode DIGU ili C data-usb */ { NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; get mode */ { USECMD, { "AI0;" } }, /* ??? 0=no use CAT = On */ { 0, { "AI1;" } },}, /* ??? 0=no use CAT = Off */ //Ailunce HS2/HS3 {{ PMR0, { 0x07, 0x00, 0x00, 0x00, 0x00 } }, /* ptt on */ { PMR0, { 0x07, 0x01, 0x00, 0x00, 0x00 } }, /* ptt off */ { PMR0, { 0x09, 0x00, 0x00, 0x00, 0x00 } }, /* set freq */ { PMR0, { 0x0b, 0x00, 0x00, 0x00, 0x00 } }, /* get FREQ and MODE status */ { PMR0, { 0x0a, 0x00, 0x00, 0x00, 0x00 } }, /* mode set main USB */ { PMR0, { 0x0a, 0x07, 0x00, 0x00, 0x00 } }, /* mode set main DIGU */ { PMR0, { 0x0b, 0x00, 0x00, 0x00, 0x00 } }, /* get FREQ and MODE status */ { USECMD, { 0x04, 0x27, 0x00, 0x8f, 0x2d } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //Radioddity QR20 {{ PMR0, { 0x07, 0x00, 0x00, 0x00, 0x00 } }, /* ptt on */ { PMR0, { 0x07, 0x01, 0x00, 0x00, 0x00 } }, /* ptt off */ { PMR0, { 0x09, 0x00, 0x00, 0x00, 0x00 } }, /* set freq */ { PMR0, { 0x0b, 0x00, 0x00, 0x00, 0x00 } }, /* get FREQ and MODE status */ { PMR0, { 0x0a, 0x00, 0x00, 0x00, 0x00 } }, /* mode set main USB */ { PMR0, { 0x0a, 0x07, 0x00, 0x00, 0x00 } }, /* mode set main DIGU */ { PMR0, { 0x0b, 0x00, 0x00, 0x00, 0x00 } }, /* get FREQ and MODE status */ { USECMD, { 0x04, 0x27, 0x00, 0x8f, 0x2d } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ //Guohe Q900/PMR-171/TBR-119 {{ PMR0, { 0x07, 0x00, 0x00, 0x00, 0x00 } }, /* ptt on */ { PMR0, { 0x07, 0x01, 0x00, 0x00, 0x00 } }, /* ptt off */ { PMR0, { 0x09, 0x00, 0x00, 0x00, 0x00 } }, /* set freq */ { PMR0, { 0x0b, 0x00, 0x00, 0x00, 0x00 } }, /* get FREQ and MODE status */ { PMR0, { 0x0a, 0x00, 0x00, 0x00, 0x00 } }, /* mode set main USB */ { PMR0, { 0x0a, 0x07, 0x00, 0x00, 0x00 } }, /* mode set main DIGU */ { PMR0, { 0x0b, 0x00, 0x00, 0x00, 0x00 } }, /* get FREQ and MODE status */ { USECMD, { 0x04, 0x27, 0x00, 0x8f, 0x2d } }, /* CAT = On */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x00 } },}, /* CAT = Off */ }; typedef struct { int cat_read_ar_size; int pos_frq; int bcd_size;//bcd size in NEWCAT identif word size 8 or 9 int method_frq; //s_method_frq-> 0=from_bcd, 1=from_bcd_be, 2=3int, 3=4int, 4=ft100 double multypl; int pos_mod; unsigned char id_mod_usb; unsigned char id_mod_digu; } YaesuReadParms; static YaesuReadParms read_parms[YAESU_COUNT] = //{0, 0, 0, 0, 1.0, 0, 0x00},//NEWCAT { //size p frq bcd_size method multyp pos_mod mod_usb mod_digu->0x7e=no suport=int->126 NEWCAT=0x00 {32, 1, 4, 4, 1.25, 5, 0x01, 0x05},//FT-100 {5, 0, 4, 1, 10.0, 4, 0x01, 0x7e},//FT-847 {19, 1, 3, 2, 10.0, 7, 0x01, 0x05},//FT-990 0x05=rtty {0, 0, 9, 0, 1.0, 0, 0x00, 0x00},//FT-991 NEWCAT {5, 0, 4, 1, 10.0, 4, 0x01, 0x0a},//FT-857 {16, 1, 3, 2, 10.0, 7, 0x01, 0x05},//FT-1000D 0x05=rtty {16, 1, 4, 3, 0.625, 7, 0x01, 0x05},//FT-1000MP" 0.625 0x05=rtty {0, 0, 8, 0, 1.0, 0, 0x00, 0x00},//FT-2000 NEWCAT bcd_size special!!! {0, 0, 8, 0, 1.0, 0, 0x00, 0x00},//FT-DX3000 NEWCAT bcd_size special!!! {0, 0, 8, 0, 1.0, 0, 0x00, 0x00},//FT-DX5000 NEWCAT bcd_size special!!! {0, 0, 8, 0, 1.0, 0, 0x00, 0x00},//FTDX-9000 NEWCAT bcd_size special!!! {0, 0, 8, 0, 1.0, 0, 0x00, 0x00},//FT-950 NEWCAT bcd_size special!!! {28, 1, 4, 3, 1.0, 7, 0x40, 0x05},//FT-920 {19, 2, 3, 2, 10.0, 7, 0x01, 0x7e},//FT-900 {5, 0, 4, 1, 10.0, 4, 0x01, 0x0a},//FT-897 {19, 2, 3, 2, 10.0, 7, 0x01, 0x7e},//FT-890 {19, 2, 3, 2, 10.0, 7, 0x01, 0x7e},//FT-840 {5, 0, 4, 1, 10.0, 4, 0x01, 0x0a},//FT-817 {344, 1, 5, 1, 1.0, 24, 0x08, 0x7e},//FT-747GX //2.46 = pos_mode=24 {0, 0, 8, 0, 1.0, 0, 0x00, 0x00},//FT-450 NEWCAT bcd_size special!!! {0, 0, 8, 0, 1.0, 0, 0x00, 0x00},//FT-450D NEWCAT bcd_size special!!! {86, 1, 4, 1, 10.0, 6, 0x10, 0x7e},//FT-767GX {75, 5, 4, 0, 10.0, 9, 0x01, 0x7e},//FT-757GX {0, 0, 0, 0, 1.0, 0, 0x00, 0x7e},//FRG-9600 NO {0, 0, 0, 0, 1.0, 0, 0x00, 0x7e},//FRG-8800 NO {0, 0, 0, 0, 1.0, 0, 0x00, 0x7e},//FRG-100 NO {0, 0, 0, 0, 1.0, 0, 0x00, 0x7e},//VR-5000 NO {0, 0, 0, 0, 1.0, 0, 0x00, 0x7e},//FT-736R NO READ {148, 143, 4, 0, 10.0, 142, 0x01, 0x06},//FT-980 pos EXT CTRL=121 {16, 1, 4, 3, 0.625, 7, 0x01, 0x05},//MARK-V FT-1000MP {16, 1, 4, 3, 0.625, 7, 0x01, 0x05},//MARK-V Field FT-1000MP {0, 0, 9, 0, 1.0, 0, 0x00, 0x00},//FTX-1F NEWCAT {0, 0, 9, 0, 1.0, 0, 0x00, 0x00},//FT-710 NEWCAT {0, 0, 9, 0, 1.0, 0, 0x00, 0x00},//FT-891 NEWCAT {0, 0, 9, 0, 1.0, 0, 0x00, 0x00},//FT-DX10 NEWCAT {0, 0, 9, 0, 1.0, 0, 0x00, 0x00},//FT-DX101 NEWCAT {0, 0, 9, 0, 1.0, 0, 0x00, 0x00},//FT-DX1200 NEWCAT {32, 9, 4, 3, 1.0, 7, 0x00, 0x07},//Ailunce HS2/HS3 {32, 9, 4, 3, 1.0, 7, 0x00, 0x07},//Radioddity QR20 {32, 9, 4, 3, 1.0, 7, 0x00, 0x07},//Guohe Q900/PMR-171/TBR-119 }; static char cmd_OK_ft[YAESU_CMD_LENGTH] = { 0x00,0x00,0x00,0x00,0x0b }; static char echo_back_ft[YAESU_CMD_LENGTH]; Yaesu::Yaesu(int ModelID,QWidget *parent) : QWidget(parent) { s_ModelID = ModelID; s_rig_name = rigs_yeasu[s_ModelID].name; s_ncomp = ncmd[s_ModelID][NATIVE_CAT_PTT_ON].ncomp; if (s_rig_name=="FT-980" || s_rig_name=="FT-767GX") f_echo_back = true; else f_echo_back = false; i_ext_cntl = 0; oldcat_read_ar_size = read_parms[s_ModelID].cat_read_ar_size; s_pos_frq = read_parms[s_ModelID].pos_frq; s_bcd_size = read_parms[s_ModelID].bcd_size; s_method_frq = read_parms[s_ModelID].method_frq; s_multypl = read_parms[s_ModelID].multypl; s_pos_mod = read_parms[s_ModelID].pos_mod; s_id_mod_usb = read_parms[s_ModelID].id_mod_usb; s_id_mod_digu= read_parms[s_ModelID].id_mod_digu; s_CmdID = -1; s_read_array.clear(); timer_cmd_ok = new QTimer(); connect(timer_cmd_ok, SIGNAL(timeout()), this, SLOT(SetCmdOk())); timer_cmd_ok->setSingleShot(true); pmr171fB = 14999000;//max = 2.000.000.000 GHz pmr171mB = 0x00;//=USB //qDebug()<<"NEW RESET "<<s_rig_name<<s_ncomp; } Yaesu::~Yaesu() { //qDebug()<<"Delete"<<rigs_yeasu[s_ModelID].name; } #include <unistd.h> void Yaesu::SetCmdOk() { emit EmitWriteCmd(cmd_OK_ft,YAESU_CMD_LENGTH); timer_cmd_ok->stop(); } void Yaesu::SetWriteCmd(char *cmdd,int lenn) { if (f_echo_back) { for (int i = 0; i<YAESU_CMD_LENGTH; ++i) echo_back_ft[i]=cmdd[i]; } emit EmitWriteCmd(cmdd,lenn); } void Yaesu::SetExtCntl()//2.57 { unsigned char cmd[8]; for (int i = 0; i < YAESU_CMD_LENGTH; i++) cmd[i]=ncmd[s_ModelID][CAT_ON].nseq[i]; SetWriteCmd((char*)cmd,YAESU_CMD_LENGTH); } void Yaesu::SetOnOffCatCommand(bool f, int model_id, int fact_id) { if (model_id!=s_ModelID || fact_id!=YAESU_ID) return; i_ext_cntl = 0; if (f && ncmd[s_ModelID][CAT_ON].ncomp==USECMD) { unsigned char cmd[50];//qDebug()<<"Yaesu CAT ON SetOnOffCatCommand="<<rigs_yeasu[model_id].name<<rigs_yeasu[s_ModelID].name<<f; int len = YAESU_CMD_LENGTH; if (s_ncomp == NEWCAT) len = strlen((char*)ncmd[s_ModelID][CAT_ON].nseq); if (s_ncomp == PMR0) { len = 9; for (int i = 0; i < len; ++i) //0:q900 0:HS2 0:TBR-119 ??? -> A5 A5 A5 A5 04 27 00 8F 2D A5 A5 A5 A5 04 27 01 9F 0C { if (i<4) cmd[i] = 0xa5; else cmd[i]=ncmd[s_ModelID][CAT_ON].nseq[i-4]; } } else { for (int i = 0; i < len; i++) cmd[i]=ncmd[s_ModelID][CAT_ON].nseq[i]; } if (s_rig_name=="FT-980") i_ext_cntl = 2;//2.57 special ID for ft980 else SetWriteCmd((char*)cmd,len); //2.57 else ,EmitWriteCmd((char*)cmd,len); } else if (!f && ncmd[s_ModelID][CAT_OFF].ncomp==USECMD) { unsigned char cmd[50];//qDebug()<<"Yaesu CAT OFF SetOnOffCatCommand<========"<<rigs_yeasu[model_id].name<<rigs_yeasu[s_ModelID].name<<f; int len = YAESU_CMD_LENGTH; if (s_ncomp == NEWCAT) len = strlen((char*)ncmd[s_ModelID][CAT_OFF].nseq); for (int i = 0; i < len; i++) cmd[i]=ncmd[s_ModelID][CAT_OFF].nseq[i]; emit EmitWriteCmd((char*)cmd,len); if (f_echo_back)// no from timer { usleep(80000);//for (int i = 0; i<YAESU_CMD_LENGTH; ++i) echo_back_ft980[i]=cmd[i]; emit EmitWriteCmd(cmd_OK_ft,YAESU_CMD_LENGTH); } } } void Yaesu::SetCmd(CmdID i,ptt_t ptt,QString str) { switch (i) { case GET_SETT: emit EmitRigSet(rigs_yeasu[s_ModelID]); break; case SET_PTT: set_ptt(ptt); break; case SET_FREQ: set_freq(str.toLongLong()); break; case GET_FREQ: s_CmdID = GET_FREQ; get_freq(); break; case SET_MODE: set_mode(str); break; case GET_MODE: s_CmdID = GET_MODE; get_mode(); break; } } /*int crc16(const unsigned char *bytes, int len) { int crc = 0xFFFF; for (int j = 0; j < len; ++j) { crc = ((crc >> 8) | (crc << 8)) & 0xffff; crc ^= (bytes[j] & 0xff); crc ^= ((crc & 0xff) >> 4); crc ^= (crc << 12) & 0xffff; crc ^= ((crc & 0xFF) << 5) & 0xffff; } crc &= 0xffff; return crc; }*/ uint16_t Yaesu::CRC16Check(const unsigned char *buf, int len) { uint16_t crc = 0xFFFF; uint16_t polynomial = 0x1021; for (int i = 0; i < len; i++) { crc ^= ((uint16_t)buf[i] << 8); for (int j = 0; j < 8; j++) { if (crc & 0x8000) crc = (crc << 1) ^ polynomial; else crc = crc << 1; } } //qDebug()<<"New0="<<crc<<"New1="<<crc16(buf,len); return crc; } void Yaesu::set_ptt(ptt_t ptt) { unsigned char *cmd;/* points to sequence to send */ if (ptt==RIG_PTT_ON) cmd = (unsigned char *) &ncmd[s_ModelID][NATIVE_CAT_PTT_ON].nseq; /* get native sequence */ else cmd = (unsigned char *) &ncmd[s_ModelID][NATIVE_CAT_PTT_OFF].nseq; if (s_ncomp == NEWCAT) { int len = strlen((const char*)cmd); emit EmitWriteCmd((char *)cmd,len); /* get native sequence */ } else if (s_ncomp == PMR0) { unsigned char buf[11]={0xa5,0xa5,0xa5,0xa5,0x04,0x00,0x00,0x00,0x00, 0x00};//9 buf[5]=cmd[0]; buf[6]=cmd[1]; unsigned int crc = CRC16Check(&buf[4],3); buf[7] = crc >> 8; buf[8] = crc & 0xff; SetWriteCmd((char *)buf,9); } else SetWriteCmd((char *)cmd,YAESU_CMD_LENGTH);//EmitWriteCmd((char *)cmd,YAESU_CMD_LENGTH); /* get native sequence */ } void Yaesu::set_freq(unsigned long long freq) { if (s_ncomp == NEWCAT) { ////991,891 -> 14.250.000 FA;<-read ansver->FA014250000; //FT2000,5000,9000,950,450,450d /10 FA;<-read ansver->FA14250000; char cmdnc[40];//1.75 [30 to 40] out of baunds O4 QString frq = (char*)ncmd[s_ModelID][NATIVE_CAT_SET_FREQ].nseq; if (s_bcd_size==8) frq.append(QString("%1").arg(freq,8,10,QChar('0'))); //FT2000,5000,9000,950,450,450d /10 //FA;<-read ansver->FA14250000; else frq.append(QString("%1").arg(freq,9,10,QChar('0'))); //FA;<-read ansver->FA014250000; frq.append(";"); for (int i = 0; i < frq.count(); i++) cmdnc[i]=frq.at(i).toLatin1(); emit EmitWriteCmd(cmdnc,frq.count()); /* get native sequence */ //qDebug()<<"FREQ==========="<<frq; } else if (s_ncomp == PMR0) { if (freq > 2000000000) return; //qDebug()<<"FREQ==========="<<freq; unsigned char *cmd = (unsigned char *)ncmd[s_ModelID][NATIVE_CAT_SET_FREQ].nseq; unsigned char buf[18]={0xa5,0xa5,0xa5,0xa5,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00};//16 buf[5]=cmd[0]; buf[6]=((freq >> 24) & 0xff);//to_be(&buf[6],freq,4); buf[7]=((freq >> 16) & 0xff); buf[8]=((freq >> 8) & 0xff); buf[9]=( freq & 0xff); buf[10]=((pmr171fB >> 24) & 0xff);//to_be(&buf[10],freq,4); buf[11]=((pmr171fB >> 16) & 0xff); buf[12]=((pmr171fB >> 8) & 0xff); buf[13]=( pmr171fB & 0xff); unsigned int crc = CRC16Check(&buf[4],10);//unsigned int crc = CRC16Check(&buf[4],12); buf[14] = crc >> 8; buf[15] = crc & 0xff; SetWriteCmd((char *)buf,16); } else { unsigned char cmd[50]; for (int i = 0; i < YAESU_CMD_LENGTH; i++) cmd[i]=ncmd[s_ModelID][NATIVE_CAT_SET_FREQ].nseq[i]; //to_bcd_be(data, (freq + 5) / 10, 8);//847,857,897,817 //to_bcd(p->p_cmd, (freq+12)/10, 8);//747 //to_bcd_be(cmd+1, freq/10, 8); frg9600 if (s_rig_name=="FT-847" || s_rig_name=="FT-857" || s_rig_name=="FT-897" || s_rig_name=="FT-817") { if (s_rig_name=="FT-847") freq = (int)(freq)/10; else freq = (int)(freq+5)/10; to_bcd_be_(cmd,freq,8); } else if (s_rig_name=="FT-747GX") { //freq = (int)(freq+12)/10; freq = (int)(freq+5)/10;//2.46 to_bcd_(cmd,freq,8);//??? be triabva da e } else { freq = (int)(freq)/10; to_bcd_(cmd,freq,8); } //to_bcd_(cmd,freq,8); /*store bcd format in in cmd*/ SetWriteCmd((char*)cmd,YAESU_CMD_LENGTH);//EmitWriteCmd((char*)cmd,YAESU_CMD_LENGTH); /* get native sequence */ } } void Yaesu::set_mode(QString str) { if (s_ncomp == NEWCAT)//{ NEWCAT, { "MD0;" } }, /*identif newcat NEWCAT FA; set mode USB = 2 moze i da e C -> data-usb*/ { unsigned char cmdnc[11];//MD0 2; <-USB QString mod = (char*)ncmd[s_ModelID][NATIVE_CAT_SET_MODE_USB].nseq; if (str=="LSB" ) mod.append("1"); else if (str=="USB" ) mod.append("2"); else if (str=="DIGU") mod.append("C");//DIGU else return;//mod.append("2");//usb mod.append(";"); for (int i = 0; i < mod.count(); i++) cmdnc[i]=mod.at(i).toLatin1(); emit EmitWriteCmd((char *)cmdnc,mod.count());//qDebug()<<"MOD==========="<<mod; } else if (s_ncomp == PMR0) { unsigned char *cmd; //From Guohe PMR-171 v.1.5 protocol if (str=="USB") cmd = (unsigned char *) &ncmd[s_ModelID][NATIVE_CAT_SET_MODE_USB].nseq; else if (str=="DIGU") cmd = (unsigned char *) &ncmd[s_ModelID][NATIVE_CAT_SET_MODE_DIGU].nseq; else return; unsigned char buf[12]={0xa5,0xa5,0xa5,0xa5,0x05,0x00,0x00,0x00,0x00,0x00, 0x00};// buf[5]=cmd[0]; buf[6]=cmd[1]; buf[7]=pmr171mB; unsigned int crc = CRC16Check(&buf[4],4); buf[8] = crc >> 8; buf[9] = crc & 0xff; SetWriteCmd((char *)buf,10); //From CNSDR v.1.?? protocol /*unsigned char buf[11]={0xa5,0xa5,0xa5,0xa5,0x04,0x00,0x00,0x00,0x00, 0x00};// buf[5]=cmd[0]; buf[6]=cmd[1]; unsigned int crc = CRC16Check(&buf[4],3); buf[7] = crc >> 8; buf[8] = crc & 0xff; SetWriteCmd((char *)buf,9);*/ } else { unsigned char cmd[20]; if (str=="USB") { for (int i = 0; i < YAESU_CMD_LENGTH; i++) cmd[i]=ncmd[s_ModelID][NATIVE_CAT_SET_MODE_USB].nseq[i];//set USB } else if (str=="DIGU" && s_id_mod_digu!=0x7e) { for (int i = 0; i < YAESU_CMD_LENGTH; i++) cmd[i]=ncmd[s_ModelID][NATIVE_CAT_SET_MODE_DIGU].nseq[i];//set DIGU } else return; SetWriteCmd((char*)cmd,YAESU_CMD_LENGTH);//EmitWriteCmd((char*)cmd,YAESU_CMD_LENGTH); } } bool Yaesu::WaitSetExtCntl() //2.57 ft980 { if (i_ext_cntl < 1) return false; if (i_ext_cntl < 2) { s_CmdID = 200;//special id SetExtCntl(); } i_ext_cntl--; return true; } void Yaesu::get_freq() { if (s_ncomp == NEWCAT) //osobenno -> FT-767GX FT747 from_bcd_be "FT-897" FT-817 { char *cmdnc; //FA;<-read ansver->FA014250000; cmdnc = (char *)ncmd[s_ModelID][NATIVE_CAT_GET_FREQ_MODE_STATUS].nseq; int len = strlen(cmdnc); emit EmitWriteCmd(cmdnc,len); } else if (s_ncomp == PMR0) { s_read_array.clear(); //for error corection no word end unsigned char *cmd =(unsigned char *)&ncmd[s_ModelID][NATIVE_CAT_GET_FREQ_MODE_STATUS].nseq; unsigned char buf[10]={0xa5,0xa5,0xa5,0xa5,0x03,0x00,0x00,0x00, 0x00};// buf[5] = cmd[0]; unsigned int crc = CRC16Check(&buf[4],2);//3 buf[6] = crc >> 8; buf[7] = crc & 0xff; SetWriteCmd((char *)buf,8); } else { if (WaitSetExtCntl()) return; //2.57 //qDebug()<<"FR COMMAND="<<i_ext_cntl; s_read_array.clear(); //for error corection no word end unsigned char cmd[10]; for (int i = 0; i < YAESU_CMD_LENGTH; i++) cmd[i]=ncmd[s_ModelID][NATIVE_CAT_GET_FREQ_MODE_STATUS].nseq[i]; SetWriteCmd((char *)cmd,YAESU_CMD_LENGTH);//EmitWriteCmd((char *)cmd,YAESU_CMD_LENGTH); } } void Yaesu::get_mode() { if (s_ncomp == NEWCAT) //osobenno -> FT-767GX FT747 from_bcd_be "FT-897" FT-817 { char *cmdnc; //MD0;<-read ansver->MD02; cmdnc = (char *)ncmd[s_ModelID][NATIVE_CAT_GET_MODE].nseq; int len = strlen(cmdnc); emit EmitWriteCmd(cmdnc,len); } else if (s_ncomp == PMR0) { s_read_array.clear(); //for error corection no word end unsigned char *cmd =(unsigned char *)&ncmd[s_ModelID][NATIVE_CAT_GET_MODE].nseq; unsigned char buf[10]={0xa5,0xa5,0xa5,0xa5,0x03,0x00,0x00,0x00, 0x00};// buf[5] = cmd[0]; unsigned int crc = CRC16Check(&buf[4],2);//3 buf[6] = crc >> 8; buf[7] = crc & 0xff; SetWriteCmd((char *)buf,8); } else { if (WaitSetExtCntl()) return; //2.57 qDebug()<<"MD COMMAND="<<i_ext_cntl; s_read_array.clear(); //for error corection no word end unsigned char cmd[10]; for (int i = 0; i < YAESU_CMD_LENGTH; i++) cmd[i]=ncmd[s_ModelID][NATIVE_CAT_GET_MODE].nseq[i]; SetWriteCmd((char *)cmd,YAESU_CMD_LENGTH);//EmitWriteCmd((char *)cmd,YAESU_CMD_LENGTH); } } void Yaesu::SetReadyRead(QByteArray ar,int size0) { for (int i = 0; i < size0; i++) { if (s_ncomp == NEWCAT) { if ((unsigned char)ar[i]==FI)//;=hex value ??? end of word EOM { //qDebug()<<"YESU READ ALL COMMAND="<<(QString(s_read_array.toHex()))<<s_read_array.size(); //s_read_array.append(ar[i]); // no ;=fi added int size = s_read_array.size(); //rejekt small array if (size < 4)//to get mde ansver->MD02; ansver->FA014250000; { s_read_array.clear();//qDebug()<<"NO INAF SIZE"; return; }//F=0x46 A=0x41 if (s_CmdID==GET_FREQ && s_read_array[0]==(char)0x46 && s_read_array[1]==(char)0x41)//my qestion for freq and freq filter vfoA { if (size==11 || size==10)//bez fd=fi (size==11) { QByteArray tfreq; if (s_bcd_size==8) tfreq.append(s_read_array.mid(2,8)); //FA;<-read ansver->FA14250000 ;//FT2000,5000,9000,950,450,450d /10 else tfreq.append(s_read_array.mid(2,9)); //FA;<-read ansver->FA014250000 ; unsigned long long f = tfreq.toLongLong(); emit EmitReadedInfo(GET_FREQ,QString("%1").arg(f)); s_CmdID = -1;//I Find my answer no need more } }//M=0x4d D=0x44 0=0x30 if (s_CmdID==GET_MODE && s_read_array[0]==(char)0x4d && s_read_array[1]==(char)0x44 && s_read_array[2]==(char)0x30)//my qestion for mode and mode filter { if (size==4)//no fd=fi 4 { QString smode = "WRONG_MODE"; if (s_read_array[3]==(char)0x31) smode = "LSB"; //0x31=LSB=1 else if (s_read_array[3]==(char)0x32) smode = "USB"; //0x32=USB=2 else if (s_read_array[3]==(char)0x33) smode = "CWU";//0x33=CW-U=3 else if (s_read_array[3]==(char)0x34) smode = "FM"; //0x34=FM=4 else if (s_read_array[3]==(char)0x35) smode = "AM"; //0x35=AM=5 else if (s_read_array[3]==(char)0x36) smode = "R-L"; //0x36=RTTY-LSB=6 else if (s_read_array[3]==(char)0x37) smode = "CWL";//0x37=CW-L=7 else if (s_read_array[3]==(char)0x38) smode = "DIGL";//0x38=DATA-LSB=8 else if (s_read_array[3]==(char)0x39) smode = "R-U"; //0x39=RTTY-USB=9 else if (s_read_array[3]==(char)0x41) smode = "FM-D"; //0x41=DATA-FM=A //else if (s_read_array[3]==(char)0x42) smode = "FM-N";//0x42=FM-N=B else if (s_read_array[3]==(char)0x43) smode = "DIGU";//0x43=DATA-USB=C //else if (s_read_array[3]==(char)0x44) smode = "AM-N";//0x44=AM-N=D else if (s_read_array[3]==(char)0x45) smode = "C4FM";//0x44=AM-N=D emit EmitReadedInfo(GET_MODE,smode); s_CmdID = -1;//I Find my answer no need more } } s_read_array.clear(); } else s_read_array.append(ar[i]); } else if (s_ncomp == PMR0)//Guohe Q900/PMR-171/TBR-119, Ailunce HS2, Radioddity QR20, Retevis Ailunce HS3 { //a5 a5 a5 a5 1b 0b 00 07 07 00 D6 C0 90 00 E4 DD D8 00 00 3c 3c 00 00 00 00 00 00 00 00 00 49 3d //DIGU 14.074.000 //a5 a5 a5 a5 1b 0b 00 00 00 00 D7 C0 90 00 D5 9F 80 00 00 3c 3c 00 00 00 00 00 00 00 00 00 EA 7E // USB 14.139.536 //a5 a5 a5 a5 1b 0b 00 07 07 00 D6 C1 58 00 E4 DD D8 00 00 3c 3c 00 00 00 00 00 00 00 00 00 7A CD //DIGU 14.074.200 s_read_array.append(ar[i]); int size = s_read_array.size(); bool f0 = true; //LZ2HV method for recognizing truncated (broken) message (have begin identification not have end character) if (size == 1) { if (s_read_array[0]!=(char)0xa5) f0 = false; } else if (size == 2) { if (s_read_array[1]!=(char)0xa5) f0 = false; } else if (size == 3) { if (s_read_array[2]!=(char)0xa5) f0 = false; } else if (size == 4) { if (s_read_array[3]!=(char)0xa5) f0 = false; } else if (size == 5) { if (s_read_array[4]!=(char)0x1b) f0 = false; } else if (size == 6) { if (s_read_array[5]!=(char)0x0b) f0 = false; } if (!f0) { s_read_array.clear(); continue; } if (size >= oldcat_read_ar_size)//oldcat_read_ar_size &&//17 to full=32 { //qDebug()<<"YESU READ ALL COMMAND="<<(QString(s_read_array.toHex()))<<s_read_array.size(); unsigned char *fbcd = new unsigned char[oldcat_read_ar_size+2]; for (int j = 0; j < oldcat_read_ar_size; ++j) fbcd[j]=(unsigned char)s_read_array[j]; unsigned int end = ((fbcd[30]&0xff)<<8)|(fbcd[31]&0xff); unsigned int crc = CRC16Check(&fbcd[4],26);//qDebug()<<end<<crc; if ((s_CmdID==GET_FREQ || s_CmdID==GET_MODE) && end==crc) { unsigned long long freq = 0; freq = (unsigned long long)((((((fbcd[s_pos_frq]<<8) + fbcd[s_pos_frq+1])<<8) + fbcd[s_pos_frq+2])<<8) + fbcd[s_pos_frq+3]);//from_be(fbcd,4); emit EmitReadedInfo(GET_FREQ,QString("%1").arg(freq)); pmr171fB = (unsigned long long)((((((fbcd[s_pos_frq+4]<<8) + fbcd[s_pos_frq+5])<<8) + fbcd[s_pos_frq+6])<<8) + fbcd[s_pos_frq+7]);//from_be(fbcd,4); unsigned char mod = (unsigned char)s_read_array[s_pos_mod]; QString smode = "WRONG_MODE"; if (mod==s_id_mod_usb) smode = "USB";//USB else if (mod==s_id_mod_digu) smode = "DIGU";//DATA-USB else if (mod==0x01) smode = "LSB";//LSB else if (mod==0x02) smode = "CWR";//2:CWR else if (mod==0x03) smode = "CWL";//3:CWL else if (mod==0x04) smode = "AM"; //4:AM else if (mod==0x05) smode = "WFM";//5:WFM else if (mod==0x06) smode = "NFM";//6:NFM else if (mod==0x08) smode = "PKT";//8:PKT emit EmitReadedInfo(GET_MODE,smode); pmr171mB = (unsigned char)s_read_array[s_pos_mod+1]; //qDebug()<<"MODE-B="<<pmr171mB<<"FREQ-B="<<pmr171fB; } s_CmdID = -1; s_read_array.clear(); delete [] fbcd; } } else { s_read_array.append(ar[i]); if (f_echo_back)//2.56 ft980 ft767gx { if (s_read_array.size()==5 && size0==5) { if ( s_read_array[0]==(char)echo_back_ft[0] && s_read_array[1]==(char)echo_back_ft[1] && s_read_array[2]==(char)echo_back_ft[2] && s_read_array[3]==(char)echo_back_ft[3] && s_read_array[4]==(char)echo_back_ft[4]) { s_read_array.clear(); timer_cmd_ok->start(20); continue; } } } if (s_read_array.size()==oldcat_read_ar_size) { //qDebug()<<"YAESU READ ALL COMMAND="<<(QString(s_read_array.toHex()))<<s_read_array.size(); if (s_CmdID==200) //2.57 ft980 special ID for ft980 { unsigned char ext_cntl = (unsigned char)s_read_array[121];//qDebug()<<"COMMAND="<<s_CmdID<<(unsigned char)s_read_array[121]; if (ext_cntl==0x00) QTimer::singleShot(20, this, SLOT(SetExtCntl())); } if (s_CmdID==GET_FREQ || s_CmdID==GET_MODE) { unsigned char *fbcd = new unsigned char[s_bcd_size+2];//fbcd[s_bcd_size+2]; for (int j=0; j < s_bcd_size; j++) fbcd[j]=(unsigned char)s_read_array[j+s_pos_frq];//2.12 unsigned long long freq = 0;//s_method_frq-> 0=from_bcd,1=from_bcd_be,2=3int,3=4int,4=ft100 if (s_method_frq==0) freq = from_bcd_(fbcd, s_bcd_size*2)*s_multypl; else if (s_method_frq==1) freq = from_bcd_be_(fbcd, s_bcd_size*2)*s_multypl; else if (s_method_frq==2) freq = ((((fbcd[0]<<8) + fbcd[1])<<8) + fbcd[2])*s_multypl; else if (s_method_frq==3) freq = (int)((double)((((((fbcd[0]<<8) + fbcd[1])<<8) + fbcd[2])<<8) + fbcd[3])*s_multypl); else if (s_method_frq==4) { char freq_str[20]; sprintf(freq_str, "%02X%02X%02X%02X",fbcd[0],fbcd[1],fbcd[2],fbcd[3]); unsigned long long d1=strtol(freq_str,NULL,16); freq =(int)((double)d1*s_multypl); } emit EmitReadedInfo(GET_FREQ,QString("%1").arg(freq)); unsigned char mod = (unsigned char)s_read_array[s_pos_mod]; if (s_rig_name=="FT-747GX")//2.46 { mod &= 0x9f; mod = (mod & 0x1f); //qDebug()<<"MODE="<<mod<<s_rig_name; } QString smode = "WRONG_MODE"; if (mod==s_id_mod_usb) smode = "USB";//USB else if (mod==s_id_mod_digu && s_id_mod_digu!=0x7e) smode = "DIGU";//DATA-USB no suported 0x7e emit EmitReadedInfo(GET_MODE,smode); delete [] fbcd; } s_CmdID = -1; s_read_array.clear(); } } } //qDebug()<<s_read_array.size(); if (s_read_array.size()>1024) s_read_array.clear(); //2.55 protection max>344=FT-747GX=512 something is wrong } 73 vk4tux On 8/7/25 12:58, Nate Bargmann wrote: > I'll admit it's been a long day and I'm tired, but I'm not seeing the > error in our equivalent list of commands in the array in our ft847.c > file. > > Hopefully someone can show me... > > 73, Nate > > > > _______________________________________________ > Hamlib-developer mailing list > Ham...@li... > https://lists.sourceforge.net/lists/listinfo/hamlib-developer ... [truncated message content] |
From: Nate B. <n0...@n0...> - 2025-07-08 02:58:47
|
I'll admit it's been a long day and I'm tired, but I'm not seeing the error in our equivalent list of commands in the array in our ft847.c file. Hopefully someone can show me... 73, Nate -- "The optimist proclaims that we live in the best of all possible worlds. The pessimist fears this is true." Web: https://www.n0nb.us Projects: https://github.com/N0NB GPG fingerprint: 82D6 4F6B 0E67 CD41 F689 BBA6 FB2C 5130 D55A 8819 |
From: Nate B. <no...@gi...> - 2025-07-08 02:47:49
|
Branch: refs/heads/Hamlib-4.6.3 Home: https://github.com/Hamlib/Hamlib Commit: a42e5f62a6407d1470c2ddafbc0342c667c3b8ef https://github.com/Hamlib/Hamlib/commit/a42e5f62a6407d1470c2ddafbc0342c667c3b8ef Author: aa5sh <844...@us...> Date: 2025-07-07 (Mon, 07 Jul 2025) Changed paths: M rigs/flexradio/smartsdr.c M rigs/flexradio/smartsdr_caps.h Log Message: ----------- smartsdr--CWX Updates Needed to replace spaces with 0x7f characters. (cherry picked from commit 0c94ba468ac1cd5e03de2e948784ad5e83bf5f11) Commit: 4801ebd081b563ae0eb77c2d8a14d89c923f619d https://github.com/Hamlib/Hamlib/commit/4801ebd081b563ae0eb77c2d8a14d89c923f619d Author: Nate Bargmann <n0...@n0...> Date: 2025-07-07 (Mon, 07 Jul 2025) Changed paths: M NEWS Log Message: ----------- Update NEWS for SmartSDR space CW handling Compare: https://github.com/Hamlib/Hamlib/compare/e03441d9aed4...4801ebd081b5 To unsubscribe from these emails, change your notification settings at https://github.com/Hamlib/Hamlib/settings/notifications |
From: Nate B. <n0...@n0...> - 2025-07-07 23:54:47
|
* On 2025 07 Jul 18:34 -0500, Adrian wrote: > Nate, Did you take a look at the existing FT-847 code for errors, as > experienced by wsjtx users ? I haven't yet. That should be included in 4.6.4. 73, Nate -- "The optimist proclaims that we live in the best of all possible worlds. The pessimist fears this is true." Web: https://www.n0nb.us Projects: https://github.com/N0NB GPG fingerprint: 82D6 4F6B 0E67 CD41 F689 BBA6 FB2C 5130 D55A 8819 |
From: Michael M. <no...@gi...> - 2025-07-07 23:32:40
|
Branch: refs/heads/master Home: https://github.com/Hamlib/Hamlib Commit: 0c94ba468ac1cd5e03de2e948784ad5e83bf5f11 https://github.com/Hamlib/Hamlib/commit/0c94ba468ac1cd5e03de2e948784ad5e83bf5f11 Author: aa5sh <844...@us...> Date: 2025-07-07 (Mon, 07 Jul 2025) Changed paths: M rigs/flexradio/smartsdr.c M rigs/flexradio/smartsdr_caps.h Log Message: ----------- smartsdr--CWX Updates Needed to replace spaces with 0x7f characters. To unsubscribe from these emails, change your notification settings at https://github.com/Hamlib/Hamlib/settings/notifications |
From: Adrian <vk...@gm...> - 2025-07-07 23:32:37
|
Nate, Did you take a look at the existing FT-847 code for errors, as experienced by wsjtx users ? Thankyou. vk4tux On 8/7/25 09:24, Nate Bargmann wrote: > > I'm thinking about doing a 4.6.4 in a few days as time permits. I've > just been cherry picking some things into the Hamlib-4.6.3 branch for > this point release. When I do it I'll tag and make the release tarball. > > This one is a bit odd just due to historical factors. In the future I > plan to create something like a Hamlib-4.7 branch and do the point > releases from it. > > 73, Nate > > |
From: Nate B. <n0...@n0...> - 2025-07-07 23:24:43
|
* On 2025 07 Jul 13:41 -0500, Brian Morrison via Hamlib-developer wrote: > On Mon, 9 Jun 2025 21:07:48 -0500 > Nate Bargmann <n0...@n0...> wrote: > > > 4.6.3 is available from the usual download sites: > > > > https://github.com/Hamlib/Hamlib/releases/tag/4.6.3 > > https://sourceforge.net/projects/hamlib/files/hamlib/4.6.3/ > > Nate, there have been a few updates to 4.6.3 since the release, is the > tarball available updated to include the few commits involved? > > If not, should there be a 4.6.4~git branch? I am wondering how this > will be packaged by Linux distro packagers, I assume the late commits > are important enough to need to be included. I'm thinking about doing a 4.6.4 in a few days as time permits. I've just been cherry picking some things into the Hamlib-4.6.3 branch for this point release. When I do it I'll tag and make the release tarball. This one is a bit odd just due to historical factors. In the future I plan to create something like a Hamlib-4.7 branch and do the point releases from it. 73, Nate -- "The optimist proclaims that we live in the best of all possible worlds. The pessimist fears this is true." Web: https://www.n0nb.us Projects: https://github.com/N0NB GPG fingerprint: 82D6 4F6B 0E67 CD41 F689 BBA6 FB2C 5130 D55A 8819 |
From: Brian M. <bd...@fe...> - 2025-07-07 18:40:43
|
On Mon, 9 Jun 2025 21:07:48 -0500 Nate Bargmann <n0...@n0...> wrote: > 4.6.3 is available from the usual download sites: > > https://github.com/Hamlib/Hamlib/releases/tag/4.6.3 > https://sourceforge.net/projects/hamlib/files/hamlib/4.6.3/ Nate, there have been a few updates to 4.6.3 since the release, is the tarball available updated to include the few commits involved? If not, should there be a 4.6.4~git branch? I am wondering how this will be packaged by Linux distro packagers, I assume the late commits are important enough to need to be included. -- Brian G8SEZ |
From: Nate B. <n0...@n0...> - 2025-07-07 18:25:12
|
* On 2025 07 Jul 12:50 -0500, George Baltz wrote: > I'm in the process of moving some data structures out of rig.h into separate > include files, mostly with cut&paste. While setting up the headers and > looking at other files, I wondered if there is an *official* name for > generic Hamlib development for the copyright declaration. Not to get into > general license questions, but I'd at least like to get this in the right > form. I'd say that if it is a significant amount of your original work then you should note yourself as the copyright holder and licensed under the LGPL 2.1 as the rest of the library. In some cases I've used the name of "The Hamlib Group" which is not a formal entity and so probably really can't claim copyright but I mainly limited that to things like README files and the like where a long list of copyright holders isn't readable. As Hamlib is not a formal entity, each contributor should assign themselves as the copyright holder or add oneself to the list in the cases of a significant amount of contribution to existing files. As I see it, we're a collection of hobbyists contributing source code for the use of the greater radio hobby. 73, Nate -- "The optimist proclaims that we live in the best of all possible worlds. The pessimist fears this is true." Web: https://www.n0nb.us Projects: https://github.com/N0NB GPG fingerprint: 82D6 4F6B 0E67 CD41 F689 BBA6 FB2C 5130 D55A 8819 |
From: George B. <geo...@gm...> - 2025-07-07 17:49:46
|
I'm in the process of moving some data structures out of rig.h into separate include files, mostly with cut&paste. While setting up the headers and looking at other files, I wondered if there is an *official* name for generic Hamlib development for the copyright declaration. Not to get into general license questions, but I'd at least like to get this in the right form. TIA & 73 n3gb |
From: Adrian <vk...@gm...> - 2025-07-07 10:34:21
|
Developers, FYI concerning an issue with FT-847 selection in wsjtx, which is problematic, vs fine operation in MSHV, which does not use hamlib. Please see below; -------- Forwarded Message -------- Subject: Re: [WSJTX] OOB and frequency shifted on display #CAT #Cat_RigControl #frequency Resent-Date: Mon, 07 Jul 2025 01:35:04 -0700 Resent-From: vk...@gm... Date: Mon, 7 Jul 2025 18:34:59 +1000 From: Adrian Fewster via groups.io <vk4tux=gma...@gr...> Reply-To: ma...@WS... To: ma...@WS... Yes MSHV , has its own CAT instruction defined, i.e; in source code /MSHV_2763/src/HvRigControl/HvRigCat/yaesu yaesu.cpp /* MSHV Part from RigControl * Copyright 2015 Hrisimir Hristov, LZ2HV * May be used under the terms of the GNU General Public License (GPL) */ #include "yaesu.h" #include "yaesu_def.h" #include "../hvutils.h" #include <stdio.h> #include <QTimer> //#include <QtGui> #define YAESU_CMD_LENGTH 5 #define NEWCAT 201 #define USECMD 202 #define PMR0 203 #define FI 0x3b //end of fraze NEWCAT -> ; <snip> //FT-847 {{ 1, { 0x00, 0x00, 0x00, 0x00, 0x08 } }, /* ptt on */ { 1, { 0x00, 0x00, 0x00, 0x01, 0x88 } }, /* ptt off */ { 0, { 0x00, 0x00, 0x00, 0x00, 0x01 } }, /* set freq */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* get FREQ and MODE status */ { 1, { 0x01, 0x00, 0x00, 0x00, 0x07 } }, /* mode set main USB */ { 1, { 0x01, 0x00, 0x00, 0x00, 0x07 } }, /* mode set main DIGU */ { 1, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* get FREQ and MODE status */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x00 } }, /* CAT = On */ { USECMD, { 0x00, 0x00, 0x00, 0x00, 0x80 } },}, /* CAT = Off */ <snip> 73 vk4tux On 7/7/25 18:09, eichi200 via groups.io wrote: > I also tried out MSHV. And guess what: I get no OOB and the frequency > displayed correctly. This with the exact same hardware setup. So it > must be WSTJ-X or Hamlib related. > Original Issue ; _" eic...@gm..._<https://wsjtx.groups.io/g/main/topic/113834442#> Jun 26#56386 // <https://wsjtx.groups.io/g/main/message/56386> For a few years my setup consiting of a Yaesu FT-847 controlled via CAT worked just fine. All of a sudden I get "OOB" and when tuned on 20 Meters, the display on the WSJTX shows 407.400 010. So this seems to be a character (or bit) shift (the "1" is missing in front) Hans anyone experienced that before? Thank you all and 73 -- HB9HJY " 73 vk4tux |
From: Daniele F. <iu...@gm...> - 2025-07-06 13:27:49
|
Hello, I have nothing against reverting this commit, but it doesn't work like you said, in fact it also prints TRACE message if you set debug to none and no error happened, but now I see that the reason for my commit is that the old py3test.py used rigerror() instead of rigerror2() so the output of the line print("status(str):\t\t%s" % Hamlib.rigerror(my_rig.error_status)) was unexpected to me. > assert Hamlib.rigerror(my_rig.error_status) == "Command completed successfully\n" E AssertionError: assert 'network.c(16...uccessfully\n' == 'Command comp...uccessfully\n' E E + network.c(1615): not starting multicast publisher E + *1:network.c(1616):network_multicast_publisher_start returning(0) E + *1:network.c(1798):network_multicast_receiver_start entered E + network.c(1810): multicast receiver address=0.0.0.0, port=4532 E + network.c(1816): not starting multicast receiver E + *1:network.c(1817):network_multicast_receiver_start returning(0) ... E E ...Full output truncated (14 lines hidden), use '-vv' to show python/test_startup.py:34: AssertionError I'll revert and also change the test to use rigerror2 -- 73 de IU5HKX Daniele |
From: George B. <geo...@gm...> - 2025-07-04 06:25:40
|
The code removed by this change was working exactly as designed (and desired). It allowed someone to run with debug level set low (ERR or WARN) but still get needed info if an error occurred. Having this info (without wading through megabytes of other messages) is essential for debugging transient or hard-to-reproduce errors. I think this commit should be reverted. On 6/7/25 8:31 AM, dforsi via Hamlib-developer wrote: > Branch: refs/heads/master > Home: https://github.com/Hamlib/Hamlib > Commit: ae9556462a2989b8b97af0d6e320558ffa0e1f3e > https://github.com/Hamlib/Hamlib/commit/ae9556462a2989b8b97af0d6e320558ffa0e1f3e > Author: Daniele Forsi IU5HKX <iu...@gm...> > Date: 2025-06-07 (Sat, 07 Jun 2025) > > Changed paths: > M include/hamlib/rig.h > M src/debug.c > > Log Message: > ----------- > Fix debug messages shown even from disabled levels > > Messages from ENTERFUNC and RETURNFUNC where stored in an internal buffer > even whe debug_level wasn't TRACE and were returned when calling rigerror(). > > > > To unsubscribe from these emails, change your notification settings at https://github.com/Hamlib/Hamlib/settings/notifications > > > _______________________________________________ > Hamlib-developer mailing list > Ham...@li... > https://lists.sourceforge.net/lists/listinfo/hamlib-developer |
From: dforsi <no...@gi...> - 2025-07-01 20:36:21
|
Branch: refs/heads/master Home: https://github.com/Hamlib/Hamlib Commit: 7acb809eef99b923149a3efa088aba05f3aaffca https://github.com/Hamlib/Hamlib/commit/7acb809eef99b923149a3efa088aba05f3aaffca Author: Daniele Forsi IU5HKX <iu...@gm...> Date: 2025-07-01 (Tue, 01 Jul 2025) Changed paths: M bindings/amplifier.swg M bindings/rotator.swg Log Message: ----------- Do not try to compile Python code when building other bindings Fixes the issue reported by @dl8fcl https://github.com/Hamlib/Hamlib/commit/f7d38f92cac73fb8b952f5dde3853f40ef910e14#commitcomment-161078321 Commit: 623ff17f61e227d461fca524c60a331c9a897672 https://github.com/Hamlib/Hamlib/commit/623ff17f61e227d461fca524c60a331c9a897672 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: 2025-07-01 (Tue, 01 Jul 2025) Changed paths: M .github/workflows/c-cpp.yml Log Message: ----------- Build all language bindings Compare: https://github.com/Hamlib/Hamlib/compare/ca7353abaab7...623ff17f61e2 To unsubscribe from these emails, change your notification settings at https://github.com/Hamlib/Hamlib/settings/notifications |
From: Praet K. <on...@gm...> - 2025-06-30 19:05:51
|
G'day mate, Maybe this can help. 73 de ON4CIR, Karel <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Virusvrij.www.avast.com <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> |
From: Nate B. <no...@gi...> - 2025-06-30 12:57:02
|
Branch: refs/heads/Hamlib-4.6.3 Home: https://github.com/Hamlib/Hamlib Commit: c0d7a320565a50fefb8372571a2f5ab1ff965e00 https://github.com/Hamlib/Hamlib/commit/c0d7a320565a50fefb8372571a2f5ab1ff965e00 Author: Michael Morgan <844...@us...> Date: 2025-06-30 (Mon, 30 Jun 2025) Changed paths: M rigs/flexradio/smartsdr.c M rigs/flexradio/smartsdr_caps.h Log Message: ----------- FlexCW Added the option to send CW using CWX commands on Flex's. (cherry picked from commit b365d988a42ba468bc663f3d59043f75bc245fa2) Commit: 0accc406c836cb56ff2fa165c806f0a21ffd1bc5 https://github.com/Hamlib/Hamlib/commit/0accc406c836cb56ff2fa165c806f0a21ffd1bc5 Author: aa5sh <844...@us...> Date: 2025-06-30 (Mon, 30 Jun 2025) Changed paths: M rigs/flexradio/smartsdr.c Log Message: ----------- Added RetVal (cherry picked from commit 3b6577834eac8f46e6c3d3264509f9401a6f88d2) Commit: e03441d9aed44c556dd0acc45f6438b1e6ad6942 https://github.com/Hamlib/Hamlib/commit/e03441d9aed44c556dd0acc45f6438b1e6ad6942 Author: Nate Bargmann <n0...@n0...> Date: 2025-06-30 (Mon, 30 Jun 2025) Changed paths: M NEWS Log Message: ----------- Update NEWS for Flex CW Compare: https://github.com/Hamlib/Hamlib/compare/8abb5efcf0b3...e03441d9aed4 To unsubscribe from these emails, change your notification settings at https://github.com/Hamlib/Hamlib/settings/notifications |
From: Nate B. <no...@gi...> - 2025-06-30 12:45:49
|
Branch: refs/heads/master Home: https://github.com/Hamlib/Hamlib Commit: b365d988a42ba468bc663f3d59043f75bc245fa2 https://github.com/Hamlib/Hamlib/commit/b365d988a42ba468bc663f3d59043f75bc245fa2 Author: Michael Morgan <844...@us...> Date: 2025-06-28 (Sat, 28 Jun 2025) Changed paths: M rigs/flexradio/smartsdr.c M rigs/flexradio/smartsdr_caps.h Log Message: ----------- FlexCW Added the option to send CW using CWX commands on Flex's. Commit: 3b6577834eac8f46e6c3d3264509f9401a6f88d2 https://github.com/Hamlib/Hamlib/commit/3b6577834eac8f46e6c3d3264509f9401a6f88d2 Author: aa5sh <844...@us...> Date: 2025-06-28 (Sat, 28 Jun 2025) Changed paths: M rigs/flexradio/smartsdr.c Log Message: ----------- Added RetVal Commit: ca7353abaab701eca3893bdad3f1895d22239b85 https://github.com/Hamlib/Hamlib/commit/ca7353abaab701eca3893bdad3f1895d22239b85 Author: Nate Bargmann <n0...@n0...> Date: 2025-06-30 (Mon, 30 Jun 2025) Changed paths: M rigs/flexradio/smartsdr.c M rigs/flexradio/smartsdr_caps.h Log Message: ----------- Merge GitHun PR #1788 Compare: https://github.com/Hamlib/Hamlib/compare/a6fb8a079a56...ca7353abaab7 To unsubscribe from these emails, change your notification settings at https://github.com/Hamlib/Hamlib/settings/notifications |
From: FVsonar <no...@gi...> - 2025-06-30 12:37:47
|
Branch: refs/heads/master Home: https://github.com/Hamlib/Hamlib Commit: c9161e2e25d80609d5127ca0c1ebe8e78cb00040 https://github.com/Hamlib/Hamlib/commit/c9161e2e25d80609d5127ca0c1ebe8e78cb00040 Author: 声纳 <159...@qq...> Date: 2025-06-28 (Sat, 28 Jun 2025) Changed paths: M rigs/guohetec/guohetec.c M rigs/guohetec/guohetec.h M rigs/guohetec/pmr171.c M rigs/guohetec/q900.c Log Message: ----------- Improve error handling for GUOHETEC drivers to enhance WSJT-X compatibility - Add graceful degradation for communication errors - Return cached values instead of error codes on failures - Implement unified response validation functions - Add cache return macros for consistent error handling - Maintain backward compatibility while improving stability This change ensures WSJT-X and similar applications continue working even when temporary communication issues occur with GUOHETEC radios. Fixes: WSJT-X compatibility issues with PMR-171 and Q900 drivers Commit: abf6be0b5e80b3d2376ac873ccf2602ad8e8199f https://github.com/Hamlib/Hamlib/commit/abf6be0b5e80b3d2376ac873ccf2602ad8e8199f Author: 声纳 <159...@qq...> Date: 2025-06-28 (Sat, 28 Jun 2025) Changed paths: M rigs/guohetec/guohetec.c M rigs/guohetec/pmr171.c Log Message: ----------- Fix compilation errors in GUOHETEC drivers - Remove duplicate function declarations in pmr171_send - Remove duplicate code blocks in pmr171_set_mode - Remove duplicate pmr171_send calls in pmr171_set_ptt - Add missing from_be function implementation - Fix syntax errors that were causing CI failures Commit: dee29c555f98413486dd7110b601aa403035970d https://github.com/Hamlib/Hamlib/commit/dee29c555f98413486dd7110b601aa403035970d Author: 声纳 <159...@qq...> Date: 2025-06-28 (Sat, 28 Jun 2025) Changed paths: M rigs/guohetec/pmr171.c M rigs/guohetec/q900.c Log Message: ----------- Implement consistent error handling for GUOHETEC drivers - Use unified error handling mechanism in send_cmd2 functions - Always return RIG_OK to prevent WSJT-X errors - Update cache with requested values even when communication fails - Use English comments and debug messages - Ensure graceful degradation with cached values on protocol/timeout errors Commit: 19c2cc03156846d22262536e9cde7f70deff26db https://github.com/Hamlib/Hamlib/commit/19c2cc03156846d22262536e9cde7f70deff26db Author: 声纳 <159...@qq...> Date: 2025-06-28 (Sat, 28 Jun 2025) Changed paths: M rigs/guohetec/guohetec.c Log Message: ----------- Fix duplicate retval variable definition in guohetec.c probe function Commit: a61877a60be23df45439cc607585ecfe55d46395 https://github.com/Hamlib/Hamlib/commit/a61877a60be23df45439cc607585ecfe55d46395 Author: 声纳 <159...@qq...> Date: 2025-06-28 (Sat, 28 Jun 2025) Changed paths: M rigs/guohetec/pmr171.c M rigs/guohetec/q900.c Log Message: ----------- Fix duplicate stdint.h includes in pmr171.c and q900.c Commit: c2d4fbe601c7d6dce463d133634c2458e0489fd3 https://github.com/Hamlib/Hamlib/commit/c2d4fbe601c7d6dce463d133634c2458e0489fd3 Author: 声纳 <159...@qq...> Date: 2025-06-28 (Sat, 28 Jun 2025) Changed paths: M rigs/guohetec/guohetec.c M rigs/guohetec/guohetec.h M rigs/guohetec/pmr171.c M rigs/guohetec/q900.c Log Message: ----------- guohetec: comprehensive code quality improvements - Fix compilation warnings by removing unnecessary dump_hex function calls - Resolve implicit function declaration warnings for validation macros - Remove duplicate GUOHE_MODE_TABLE_MAX definitions across files - Optimize header includes based on IWYU suggestions: * Add iofunc.h (for read_block/write_block functions) * Add riglist.h (for RIG_MODEL_* constants) * Remove unistd.h, misc.h, serial.h (unnecessary includes) - Convert validation macros to functions for better compiler compatibility - Maintain backward compatibility with existing macro definitions - Improve code structure and maintainability - Ensure WSJT-X compatibility with consistent error handling All changes maintain existing functionality while improving code quality and reducing compilation warnings. Commit: 6797ab7646030b93ebffdcb57e8583928d106a5f https://github.com/Hamlib/Hamlib/commit/6797ab7646030b93ebffdcb57e8583928d106a5f Author: 声纳 <159...@qq...> Date: 2025-06-28 (Sat, 28 Jun 2025) Changed paths: M rigs/guohetec/guohetec.c M rigs/guohetec/guohetec.h M rigs/guohetec/pmr171.c M rigs/guohetec/q900.c Log Message: ----------- guohetec: fix cppcheck warnings and improve code quality Based on cppcheck analysis and maintainer feedback: - Fix constParameterPointer warnings: declare reply parameters as const where appropriate - Fix variableScope warnings: reduce reply variable scope to minimum required - Apply IWYU (IncludeWhatYouUse) suggestions for header optimization: * Add iofunc.h (for read_block, write_block functions) * Add riglist.h (for RIG_MODEL_* constants) * Remove unistd.h, misc.h, serial.h (unnecessary includes) - Maintain backward compatibility and existing functionality - Improve code maintainability and reduce compilation warnings All changes follow maintainer recommendations and maintain WSJT-X compatibility. Commit: b95d349bff845a6cc936f838087fdce62aa7194d https://github.com/Hamlib/Hamlib/commit/b95d349bff845a6cc936f838087fdce62aa7194d Author: 声纳 <159...@qq...> Date: 2025-06-30 (Mon, 30 Jun 2025) Changed paths: M rigs/guohetec/guohetec.c M rigs/guohetec/guohetec.h M rigs/guohetec/pmr171.c M rigs/guohetec/q900.c Log Message: ----------- Add LGPLv2.1 license headers to GUOHETEC driver files Commit: a6fb8a079a562014b9948e16a2dd817346fcf4e2 https://github.com/Hamlib/Hamlib/commit/a6fb8a079a562014b9948e16a2dd817346fcf4e2 Author: 声纳 <159...@qq...> Date: 2025-06-30 (Mon, 30 Jun 2025) Changed paths: M rigs/guohetec/guohetec.c M rigs/guohetec/guohetec.h M rigs/guohetec/pmr171.c M rigs/guohetec/q900.c Log Message: ----------- Update copyright to GUOHETEC in license headers for all GUOHETEC driver files Compare: https://github.com/Hamlib/Hamlib/compare/862fda58be87...a6fb8a079a56 To unsubscribe from these emails, change your notification settings at https://github.com/Hamlib/Hamlib/settings/notifications |
From: Nate B. <no...@gi...> - 2025-06-27 12:43:45
|
Branch: refs/heads/master Home: https://github.com/Hamlib/Hamlib Commit: 5eda68367f86a770cae92d0a601ba1c040714597 https://github.com/Hamlib/Hamlib/commit/5eda68367f86a770cae92d0a601ba1c040714597 Author: Mark J. Fine <mar...@fi...> Date: 2025-06-27 (Fri, 27 Jun 2025) Changed paths: M rigs/icom/icom_alt_agc.c Log Message: ----------- Corrected a couple of cppcheck warnings: uninitialize variable and condition always false. Commit: 862fda58be871ce33f9d946c30d61232dd41549c https://github.com/Hamlib/Hamlib/commit/862fda58be871ce33f9d946c30d61232dd41549c Author: Nate Bargmann <n0...@n0...> Date: 2025-06-27 (Fri, 27 Jun 2025) Changed paths: M rigs/icom/icom_alt_agc.c Log Message: ----------- Merge GitHub PR #1786 Compare: https://github.com/Hamlib/Hamlib/compare/9c1873491175...862fda58be87 To unsubscribe from these emails, change your notification settings at https://github.com/Hamlib/Hamlib/settings/notifications |
From: Nate B. <no...@gi...> - 2025-06-27 12:26:16
|
Branch: refs/heads/master Home: https://github.com/Hamlib/Hamlib Commit: 7fe7602a8289fd9bc74a350ea084c72640c319ad https://github.com/Hamlib/Hamlib/commit/7fe7602a8289fd9bc74a350ea084c72640c319ad Author: 声纳 <159...@qq...> Date: 2025-06-27 (Fri, 27 Jun 2025) Changed paths: M rigs/guohetec/guohetec.c M rigs/guohetec/pmr171.c M rigs/guohetec/q900.c Log Message: ----------- Delete redundant functions and structures in guohetec. c, pmr171. c, and q900. c, optimize code structure, fix data length verification logic, and ensure the security and stability of data processing. All cppcheck style warnings have been fixed Commit: cb308819e7c1f65e6b0045fe154446f06376ad7c https://github.com/Hamlib/Hamlib/commit/cb308819e7c1f65e6b0045fe154446f06376ad7c Author: Nate Bargmann <n0...@n0...> Date: 2025-06-27 (Fri, 27 Jun 2025) Changed paths: M rigs/guohetec/guohetec.c M rigs/guohetec/pmr171.c M rigs/guohetec/q900.c Log Message: ----------- Merge GitHub PR #1785 Commit: 9c187349117592a5a3fe21375c0508c11a262c09 https://github.com/Hamlib/Hamlib/commit/9c187349117592a5a3fe21375c0508c11a262c09 Author: Nate Bargmann <n0...@n0...> Date: 2025-06-27 (Fri, 27 Jun 2025) Changed paths: M NEWS Log Message: ----------- Update NEWS for recent merges Compare: https://github.com/Hamlib/Hamlib/compare/36f582222f6a...9c1873491175 To unsubscribe from these emails, change your notification settings at https://github.com/Hamlib/Hamlib/settings/notifications |
From: Nate B. <no...@gi...> - 2025-06-27 11:49:15
|
Branch: refs/heads/master Home: https://github.com/Hamlib/Hamlib Commit: 453e68c6cd6d5b21286cc914773cfdb029ca86c7 https://github.com/Hamlib/Hamlib/commit/453e68c6cd6d5b21286cc914773cfdb029ca86c7 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: 2025-06-25 (Wed, 25 Jun 2025) Changed paths: M bindings/python/test_rig.py M bindings/rig.swg Log Message: ----------- Fix Rig.get_split_vfo() The VFO argument optional with a default of RIG_VFO_CURR. Fixes PR ##1555. Commit: 7223fb0766468fabe2c40b3a3d0e309c9b1abfa1 https://github.com/Hamlib/Hamlib/commit/7223fb0766468fabe2c40b3a3d0e309c9b1abfa1 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: 2025-06-25 (Wed, 25 Jun 2025) Changed paths: M bindings/python/test_rig.py M bindings/rig.swg Log Message: ----------- Fix Rig.get_vfo_info() Commit: 6c399b55ffd9027de2c0958d43b8f5fcb07d4d97 https://github.com/Hamlib/Hamlib/commit/6c399b55ffd9027de2c0958d43b8f5fcb07d4d97 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: 2025-06-25 (Wed, 25 Jun 2025) Changed paths: M bindings/python/test_rig.py Log Message: ----------- Assert the length of sequences instead of the list datatype We only need to check how many values exist. Commit: bf518c06098d68ce5cae6e58812b78ff46d5be05 https://github.com/Hamlib/Hamlib/commit/bf518c06098d68ce5cae6e58812b78ff46d5be05 Author: Daniele Forsi IU5HKX <iu...@gm...> Date: 2025-06-26 (Thu, 26 Jun 2025) Changed paths: M bindings/python/test_rig.py M bindings/rig.swg Log Message: ----------- Fix Rig.get_ant() The only supported value for get_ant() in the union of "option" is signed integer. Do the test when the rig is open. Commit: 36f582222f6a460735cf0538990cfc20fd46888e https://github.com/Hamlib/Hamlib/commit/36f582222f6a460735cf0538990cfc20fd46888e Author: Nate Bargmann <n0...@n0...> Date: 2025-06-27 (Fri, 27 Jun 2025) Changed paths: M bindings/python/test_rig.py M bindings/rig.swg Log Message: ----------- Merge GitHub PR #1784 Compare: https://github.com/Hamlib/Hamlib/compare/ef3e27820319...36f582222f6a To unsubscribe from these emails, change your notification settings at https://github.com/Hamlib/Hamlib/settings/notifications |
From: Nate B. <no...@gi...> - 2025-06-26 18:15:49
|
Branch: refs/heads/master Home: https://github.com/Hamlib/Hamlib Commit: a09603fdd4e5699a72f509db284f9bbb494f4e10 https://github.com/Hamlib/Hamlib/commit/a09603fdd4e5699a72f509db284f9bbb494f4e10 Author: markjfine <mar...@fi...> Date: 2025-06-23 (Mon, 23 Jun 2025) Changed paths: M rigs/icom/icom_defs.h Log Message: ----------- Correct and update mapping of D_AGC values Ref issue#1775 (part 1) Corrected mapping of D_AGC values to currently enumerated AGC set. Will separately provide alternate mapping, if required, in backends that require it. Commit: 8abe1ec8e4fe08560fc14ebb2965f89105213a18 https://github.com/Hamlib/Hamlib/commit/8abe1ec8e4fe08560fc14ebb2965f89105213a18 Author: markjfine <mar...@fi...> Date: 2025-06-23 (Mon, 23 Jun 2025) Changed paths: M rigs/icom/icom.c Log Message: ----------- Correct mapping of D_AGC values Ref issue#1775 (part 1) Corrected mapping of D_AGC values to currently enumerated AGC set. Will separately provide alternate mapping, if required, in backends that require it. Commit: 6dffee33df0a9b79401a17150d5c431e268b8a64 https://github.com/Hamlib/Hamlib/commit/6dffee33df0a9b79401a17150d5c431e268b8a64 Author: markjfine <mar...@fi...> Date: 2025-06-23 (Mon, 23 Jun 2025) Changed paths: M rigs/icom/icom.c Log Message: ----------- Correct CWPitch set/get for Icom radios Icom has two confusing ways to set/get CW Pitch. The first way is to read/write the knob setting using CI-V command 14 subcommand 9. The second way is just to set/get the actual value via mode command 10. At some point the commands in hamlib changed from the former to the latter, but never adjusted the interpolation code of the former. This commit fixes the set and get routines appropriately. Commit: 82dd540d3a3fc181a81f1c3c3891f4331e770bbd https://github.com/Hamlib/Hamlib/commit/82dd540d3a3fc181a81f1c3c3891f4331e770bbd Author: Mark J. Fine <mar...@fi...> Date: 2025-06-26 (Thu, 26 Jun 2025) Changed paths: M rigs/icom/Makefile.am A rigs/icom/icom_alt_agc.c A rigs/icom/icom_alt_agc.h Log Message: ----------- Part 2 of Issue#1775: Adds optional wrappers for rigs that need to use the alternate AGC mapping originally specified in icom.c. Instructions for employment are provided within icom_alt_agc.c. Commit: ef0b7e30bd6fa770a2bccd27cd5e8b554a7dd764 https://github.com/Hamlib/Hamlib/commit/ef0b7e30bd6fa770a2bccd27cd5e8b554a7dd764 Author: Mark J. Fine <mar...@fi...> Date: 2025-06-26 (Thu, 26 Jun 2025) Changed paths: M rigs/icom/icom.c M rigs/icom/icom_alt_agc.c M rigs/icom/icom_defs.h Log Message: ----------- Reverted CW Pitch value<->knob conversion for non-ICR75 radios. Apparently R75 is the only one using the set mode command. Edited out all non-essential code commenting that was done during local testing. Commit: ef3e2782031967ffb6feeb5176cc47cd2e080f4b https://github.com/Hamlib/Hamlib/commit/ef3e2782031967ffb6feeb5176cc47cd2e080f4b Author: Nate Bargmann <n0...@n0...> Date: 2025-06-26 (Thu, 26 Jun 2025) Changed paths: M rigs/icom/Makefile.am M rigs/icom/icom.c A rigs/icom/icom_alt_agc.c A rigs/icom/icom_alt_agc.h M rigs/icom/icom_defs.h Log Message: ----------- Merge GitHub PR #1776 Compare: https://github.com/Hamlib/Hamlib/compare/31c3c973520e...ef3e27820319 To unsubscribe from these emails, change your notification settings at https://github.com/Hamlib/Hamlib/settings/notifications |
From: Nate B. <no...@gi...> - 2025-06-26 02:43:19
|
Branch: refs/heads/Hamlib-4.6.3 Home: https://github.com/Hamlib/Hamlib Commit: f518c478f2a1a5ac6d23823f5b1b547d20168199 https://github.com/Hamlib/Hamlib/commit/f518c478f2a1a5ac6d23823f5b1b547d20168199 Author: George Baltz N3GB <Geo...@gm...> Date: 2025-06-25 (Wed, 25 Jun 2025) Changed paths: M rigs/kenwood/ts590.c Log Message: ----------- Restore TS-590S/SG RIG_LEVEL_RFPOWER_METER (cherry picked from commit ec4590df8decc4c47a57e6dc78e92871b92c230e) Commit: 53c30fcf8c0eb3c392c6891a38985200925d311d https://github.com/Hamlib/Hamlib/commit/53c30fcf8c0eb3c392c6891a38985200925d311d Author: George Baltz N3GB <Geo...@gm...> Date: 2025-06-25 (Wed, 25 Jun 2025) Changed paths: M include/hamlib/rotator.h M src/sprintflst.c Log Message: ----------- Fix rotctl \dump_caps output rot_sprintf_status() was printing items multiple times. Cause of problem noticed by cppcheck. (cherry picked from commit 0b75b96ef160a5d14be39361b8bcf0a59f04982c) Commit: 8abb5efcf0b3eec5e9e7f8d1dac6bc4e10c7f560 https://github.com/Hamlib/Hamlib/commit/8abb5efcf0b3eec5e9e7f8d1dac6bc4e10c7f560 Author: Nate Bargmann <n0...@n0...> Date: 2025-06-25 (Wed, 25 Jun 2025) Changed paths: M NEWS Log Message: ----------- Update NEWS for TS-590 and rotctl fixes Compare: https://github.com/Hamlib/Hamlib/compare/867fc5886a5a...8abb5efcf0b3 To unsubscribe from these emails, change your notification settings at https://github.com/Hamlib/Hamlib/settings/notifications |