kopia lustrzana https://github.com/Hamlib/Hamlib
Merge pull request #1404 from GeoBaltz/usb_stuff
Implement RIG_LEVEL_USB_* on Kenwood TS-890Spull/1406/head
commit
e1ca06655d
|
@ -1076,9 +1076,8 @@ typedef uint64_t rig_level_e;
|
|||
#define RIG_LEVEL_TEMP_METER CONSTANT_64BIT_FLAG(48) /*!< \c TEMP_METER -- arg float (C, centigrade) */
|
||||
#define RIG_LEVEL_BAND_SELECT CONSTANT_64BIT_FLAG(49) /*!< \c BAND_SELECT -- arg enum BAND_ENUM */
|
||||
#define RIG_LEVEL_USB_AF CONSTANT_64BIT_FLAG(50) /*!< \c ACC/USB AF output level */
|
||||
#define RIG_LEVEL_USB_AF_INPUT CONSTANT_64BIT_FLAG(51) /*!< \c ACC/USB AF output level */
|
||||
#define RIG_LEVEL_AGC_TIME CONSTANT_64BIT_FLAG(51) /*!< \c AGC_TIME -- in seconds, rig dependent */
|
||||
#define RIG_LEVEL_52 CONSTANT_64BIT_FLAG(52) /*!< \c Future use */
|
||||
#define RIG_LEVEL_USB_AF_INPUT CONSTANT_64BIT_FLAG(51) /*!< \c ACC/USB AF input level */
|
||||
#define RIG_LEVEL_AGC_TIME CONSTANT_64BIT_FLAG(52) /*!< \c AGC_TIME -- in seconds, rig dependent */
|
||||
#define RIG_LEVEL_53 CONSTANT_64BIT_FLAG(53) /*!< \c Future use */
|
||||
#define RIG_LEVEL_54 CONSTANT_64BIT_FLAG(54) /*!< \c Future use */
|
||||
#define RIG_LEVEL_55 CONSTANT_64BIT_FLAG(55) /*!< \c Future use */
|
||||
|
@ -1092,7 +1091,7 @@ typedef uint64_t rig_level_e;
|
|||
#define RIG_LEVEL_63 CONSTANT_64BIT_FLAG(63) /*!< \c Future use */
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
#define RIG_LEVEL_FLOAT_LIST (RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_APF|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_COMP|RIG_LEVEL_BALANCE|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB|RIG_LEVEL_SPECTRUM_REF|RIG_LEVEL_TEMP_METER|RIG_LEVEL_USB_AF|RIG_LEVEL_AGC_TIME)
|
||||
#define RIG_LEVEL_FLOAT_LIST (RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_APF|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_COMP|RIG_LEVEL_BALANCE|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB|RIG_LEVEL_SPECTRUM_REF|RIG_LEVEL_TEMP_METER|RIG_LEVEL_USB_AF|RIG_LEVEL_USB_AF_INPUT|RIG_LEVEL_AGC_TIME)
|
||||
|
||||
#define RIG_LEVEL_READONLY_LIST (RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_STRENGTH|RIG_LEVEL_RAWSTR|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_TEMP_METER|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS)
|
||||
|
||||
|
|
|
@ -28,31 +28,28 @@
|
|||
#include "cal.h"
|
||||
#include "misc.h"
|
||||
|
||||
// TODO: Copied from TS-480, to be verified
|
||||
#define TS890_VFO (RIG_VFO_A|RIG_VFO_B)
|
||||
|
||||
#define TS890_ALL_MODES (RIG_MODE_LSB|RIG_MODE_USB|RIG_MODE_CW|RIG_MODE_FM|RIG_MODE_AM|RIG_MODE_RTTY|RIG_MODE_CWR|RIG_MODE_RTTYR|RIG_MODE_PSK|RIG_MODE_PSKR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|RIG_MODE_PKTAM)
|
||||
|
||||
// TODO: Copied from TS-480, to be verified
|
||||
#define TS890_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_FM|RIG_MODE_RTTY)
|
||||
// TODO: Copied from TS-480, to be verified
|
||||
#define TS890_AM_TX_MODES RIG_MODE_AM
|
||||
|
||||
// TODO: Copied from TS-480, to be verified
|
||||
#define TS890_LEVEL_SET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_KEYSPD|RIG_LEVEL_CWPITCH|RIG_LEVEL_ATT)
|
||||
#define TS890_LEVEL_GET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_KEYSPD|RIG_LEVEL_ALC|RIG_LEVEL_SWR|RIG_LEVEL_COMP_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_TEMP_METER|RIG_LEVEL_CWPITCH|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_ATT)
|
||||
#define TS890_LEVEL_SET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_KEYSPD|RIG_LEVEL_CWPITCH|RIG_LEVEL_ATT|RIG_LEVEL_USB_AF|RIG_LEVEL_USB_AF_INPUT)
|
||||
#define TS890_LEVEL_GET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_KEYSPD|RIG_LEVEL_ALC|RIG_LEVEL_SWR|RIG_LEVEL_COMP_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_TEMP_METER|RIG_LEVEL_CWPITCH|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_ATT|RIG_LEVEL_USB_AF|RIG_LEVEL_USB_AF_INPUT)
|
||||
#define TS890_FUNC_ALL (RIG_FUNC_NB|RIG_FUNC_NB2|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_NR|RIG_FUNC_BC|RIG_FUNC_BC2|RIG_FUNC_RIT|RIG_FUNC_XIT|RIG_FUNC_TUNER|RIG_FUNC_SEND_MORSE)
|
||||
|
||||
#define TS890_VFO_OPS (RIG_OP_UP|RIG_OP_DOWN|RIG_OP_BAND_UP|RIG_OP_BAND_DOWN|RIG_OP_CPY|RIG_OP_TUNE)
|
||||
|
||||
int kenwood_ts890_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
||||
{
|
||||
char levelbuf[16];
|
||||
char levelbuf[16], *command_string;
|
||||
int kenwood_val, retval;
|
||||
gran_t *level_info;
|
||||
|
||||
rig_debug(RIG_DEBUG_TRACE, "%s called\n", __func__);
|
||||
|
||||
retval = check_level_param(rig, level, val, NULL);
|
||||
retval = check_level_param(rig, level, val, &level_info);
|
||||
if (retval != RIG_OK)
|
||||
{
|
||||
return retval;
|
||||
|
@ -60,16 +57,6 @@ int kenwood_ts890_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
|
||||
switch (level)
|
||||
{
|
||||
case RIG_LEVEL_RF:
|
||||
kenwood_val = val.f * 255;
|
||||
SNPRINTF(levelbuf, sizeof(levelbuf), "RG%03d", kenwood_val);
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_SQL:
|
||||
kenwood_val = val.f * 255;
|
||||
SNPRINTF(levelbuf, sizeof(levelbuf), "SQ%03d", kenwood_val);
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_AGC:
|
||||
/* hamlib argument is int, possible values rig.h:enum agc_level_e */
|
||||
/* possible values for TS890 0(=off), 1(=slow), 2(=mid), 3(=fast), 4(=off/Last) */
|
||||
|
@ -91,12 +78,31 @@ int kenwood_ts890_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
}
|
||||
|
||||
SNPRINTF(levelbuf, sizeof(levelbuf), "GC%d", kenwood_val);
|
||||
return kenwood_transaction(rig, levelbuf, NULL, 0); /* Odd man out */
|
||||
|
||||
case RIG_LEVEL_RF:
|
||||
command_string = "RG%03d";
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_SQL:
|
||||
command_string = "SQ%03d";
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_USB_AF:
|
||||
command_string = "EX00708 %03d";
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_USB_AF_INPUT:
|
||||
command_string = "EX00706 %03d";
|
||||
break;
|
||||
|
||||
default:
|
||||
return kenwood_set_level(rig, vfo, level, val);
|
||||
}
|
||||
|
||||
//TODO: Add use of RIG_LEVEL_IS_FLOAT() if need to handle int level
|
||||
kenwood_val = val.f / level_info->step.f + 0.5;
|
||||
SNPRINTF(levelbuf, sizeof(levelbuf), command_string, kenwood_val);
|
||||
return kenwood_transaction(rig, levelbuf, NULL, 0);
|
||||
}
|
||||
|
||||
|
@ -153,10 +159,13 @@ int ts890_get_meter_reading(RIG *rig, char meter, int *pips)
|
|||
int kenwood_ts890_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||
{
|
||||
char ackbuf[50];
|
||||
size_t ack_len, ack_len_expected;
|
||||
size_t ack_len, ack_len_expected, len;
|
||||
int levelint;
|
||||
int retval;
|
||||
char *command_string;
|
||||
gran_t *level_info;
|
||||
|
||||
level_info = &rig->caps->level_gran[rig_setting2idx(level)];
|
||||
rig_debug(RIG_DEBUG_TRACE, "%s called\n", __func__);
|
||||
|
||||
switch (level)
|
||||
|
@ -219,7 +228,7 @@ int kenwood_ts890_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
return -RIG_EPROTO;
|
||||
}
|
||||
|
||||
val->f = (float) levelint / 255.;
|
||||
val->f = (float) levelint * level_info->step.f;
|
||||
return RIG_OK;
|
||||
|
||||
case RIG_LEVEL_AGC:
|
||||
|
@ -383,6 +392,19 @@ int kenwood_ts890_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
return RIG_OK;
|
||||
}
|
||||
|
||||
case RIG_LEVEL_USB_AF:
|
||||
case RIG_LEVEL_USB_AF_INPUT:
|
||||
if ( level == RIG_LEVEL_USB_AF )
|
||||
{ command_string = "EX00708"; }
|
||||
else
|
||||
{ command_string = "EX00706"; }
|
||||
len = strlen(command_string);
|
||||
retval = kenwood_safe_transaction(rig, command_string, ackbuf, sizeof(ackbuf), len + 4);
|
||||
if (retval != RIG_OK) { return retval; }
|
||||
sscanf(&ackbuf[len + 1], "%3d", &levelint); /* Skip the extra space */
|
||||
val->f = levelint * level_info->step.f;
|
||||
return RIG_OK;
|
||||
|
||||
default:
|
||||
return kenwood_get_level(rig, vfo, level, val);
|
||||
}
|
||||
|
@ -570,6 +592,8 @@ const struct rig_caps ts890s_caps =
|
|||
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 18 }, .step = { .i = 6 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1100 }, .step = { .i = 5 } },
|
||||
[LVL_SQL] = { .min = { .f = 0 }, .max = { .f = 1.0f }, .step = { .f = 1.0 / 255.0 } },
|
||||
[LVL_USB_AF] = { .min = { .f = 0 }, .max = { .f = 1.0f }, .step = { .f = 1.0/100.0 } },
|
||||
[LVL_USB_AF_INPUT] = { .min = { .f = 0 }, .max = { .f = 1.0f }, .step = { .f = 1.0/100.0 } },
|
||||
},
|
||||
.has_get_func = TS890_FUNC_ALL,
|
||||
.has_set_func = TS890_FUNC_ALL,
|
||||
|
|
Ładowanie…
Reference in New Issue