Re: [Hamlib-developer] Fwd: [WSJTX] OOB and frequency shifted on display #CAT #Cat_RigControl #freq
Library to control radio transceivers and receivers
Brought to you by:
n0nb
|
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] |