kopia lustrzana https://github.com/Hamlib/Hamlib
Fix Elecraft K4 set_mode to work with VFOB
https://github.com/Hamlib/Hamlib/issues/825pull/846/head
rodzic
891ca6ed75
commit
50512b4bf9
|
@ -484,7 +484,7 @@ const struct rig_caps k4_caps =
|
||||||
RIG_MODEL(RIG_MODEL_K4),
|
RIG_MODEL(RIG_MODEL_K4),
|
||||||
.model_name = "K4",
|
.model_name = "K4",
|
||||||
.mfg_name = "Elecraft",
|
.mfg_name = "Elecraft",
|
||||||
.version = BACKEND_VER ".14",
|
.version = BACKEND_VER ".15",
|
||||||
.copyright = "LGPL",
|
.copyright = "LGPL",
|
||||||
.status = RIG_STATUS_STABLE,
|
.status = RIG_STATUS_STABLE,
|
||||||
.rig_type = RIG_TYPE_TRANSCEIVER,
|
.rig_type = RIG_TYPE_TRANSCEIVER,
|
||||||
|
@ -1088,9 +1088,11 @@ int k3_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
|
||||||
int k3_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
int k3_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
char cmd_m[4];
|
char cmd_m[5];
|
||||||
char buf[KENWOOD_MAX_BUF_LEN];
|
char buf[KENWOOD_MAX_BUF_LEN];
|
||||||
|
char *dtcmd;
|
||||||
struct kenwood_priv_caps *caps = kenwood_caps(rig);
|
struct kenwood_priv_caps *caps = kenwood_caps(rig);
|
||||||
|
struct kenwood_priv_data *priv = rig->state.priv;
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||||
|
|
||||||
|
@ -1112,40 +1114,46 @@ int k3_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rig_debug(RIG_DEBUG_TRACE,
|
rig_debug(RIG_DEBUG_TRACE,
|
||||||
"%s(%d): changing mode=%s, oldmode=%s, width=%ld, oldwidth=%ld\n", __FILE__,
|
"%s(%d): changing oldmode=%s, to mode=%s, oldwidth=%ld, to width=%ld\n", __FILE__,
|
||||||
__LINE__, rig_strrmode(tmode), rig_strrmode(mode), twidth, width);
|
__LINE__, rig_strrmode(tmode), rig_strrmode(mode), twidth, width);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dtcmd = "DT";
|
||||||
|
if ((priv->is_k4 || priv->is_k4d || priv->is_k4hd) && vfo == RIG_VFO_B)
|
||||||
|
{
|
||||||
|
dtcmd = "DT$";
|
||||||
|
}
|
||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case RIG_MODE_PKTLSB:
|
case RIG_MODE_PKTLSB:
|
||||||
mode = RIG_MODE_RTTYR; // in "DT0" Subband RIG_MODE_RTTYR = USB and RIG_MODE_RTTY = LSB
|
mode = RIG_MODE_RTTYR; // in "DT0" Subband RIG_MODE_RTTYR = USB and RIG_MODE_RTTY = LSB
|
||||||
snprintf(cmd_m, sizeof(cmd_m),
|
snprintf(cmd_m, sizeof(cmd_m),
|
||||||
"DT0"); /* DATA A mode - DATA (REV) on LSB optimized for HF Packet, VFO dial is suppressed carrier QRG */
|
"%s0", dtcmd); /* DATA A mode - DATA (REV) on LSB optimized for HF Packet, VFO dial is suppressed carrier QRG */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_MODE_PKTUSB:
|
case RIG_MODE_PKTUSB:
|
||||||
mode = RIG_MODE_RTTY; // in "DT0" Subband RIG_MODE_RTTYR = USB and RIG_MODE_RTTY = LSB
|
mode = RIG_MODE_RTTY; // in "DT0" Subband RIG_MODE_RTTYR = USB and RIG_MODE_RTTY = LSB
|
||||||
snprintf(cmd_m, sizeof(cmd_m),
|
snprintf(cmd_m, sizeof(cmd_m),
|
||||||
"DT0"); /* DATA A mode - DATA on USB general, VFO dial is suppressed carrier QRG */
|
"%s0", dtcmd); /* DATA A mode - DATA on USB general, VFO dial is suppressed carrier QRG */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_MODE_RTTY:
|
case RIG_MODE_RTTY:
|
||||||
mode = RIG_MODE_RTTY; // in "DT1" Subband RIG_MODE_RTTY = LSB and RIG_MODE_RTTYR = USB
|
mode = RIG_MODE_RTTY; // in "DT1" Subband RIG_MODE_RTTY = LSB and RIG_MODE_RTTYR = USB
|
||||||
snprintf(cmd_m, sizeof(cmd_m),
|
snprintf(cmd_m, sizeof(cmd_m),
|
||||||
"DT2"); /* FSK D mode - direct FSK on LSB optimized for RTTY, VFO dial is MARK */
|
"%s2", dtcmd); /* FSK D mode - direct FSK on LSB optimized for RTTY, VFO dial is MARK */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_MODE_RTTYR:
|
case RIG_MODE_RTTYR:
|
||||||
mode = RIG_MODE_RTTYR; // in "DT2" Subband RIG_MODE_RTTY = LSB and RIG_MODE_RTTYR = USB
|
mode = RIG_MODE_RTTYR; // in "DT2" Subband RIG_MODE_RTTY = LSB and RIG_MODE_RTTYR = USB
|
||||||
snprintf(cmd_m, sizeof(cmd_m),
|
snprintf(cmd_m, sizeof(cmd_m),
|
||||||
"DT1"); /* FSK D mode - direct FSK keying, LSB is "normal", VFO dial is MARK */
|
"%s1", dtcmd); /* FSK D mode - direct FSK keying, LSB is "normal", VFO dial is MARK */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_MODE_PSK:
|
case RIG_MODE_PSK:
|
||||||
mode = RIG_MODE_PSK; // in "DT3" subband RIG_MODE_PSK = USB # kenwood.c mode but may need kenwwod.c mode table review.
|
mode = RIG_MODE_PSK; // in "DT3" subband RIG_MODE_PSK = USB # kenwood.c mode but may need kenwwod.c mode table review.
|
||||||
snprintf(cmd_m, sizeof(cmd_m),
|
snprintf(cmd_m, sizeof(cmd_m),
|
||||||
"DT3"); /* PSK D Mode - direct PSK keying, USB is "normal", VFO dial is MARK */
|
"%s3", dtcmd); /* PSK D Mode - direct PSK keying, USB is "normal", VFO dial is MARK */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
Ładowanie…
Reference in New Issue