kopia lustrzana https://github.com/Hamlib/Hamlib
Add missing calibration tables for TS890S
rodzic
2fc6344d54
commit
b5e258228e
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include <hamlib/rig.h>
|
||||
#include "kenwood.h"
|
||||
#include "cal.h"
|
||||
|
||||
// TODO: Copied from TS-480, to be verified
|
||||
#define TS890_VFO (RIG_VFO_A|RIG_VFO_B)
|
||||
|
@ -37,7 +38,7 @@
|
|||
|
||||
// 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)
|
||||
#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)
|
||||
#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)
|
||||
#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)
|
||||
|
@ -302,23 +303,17 @@ int kenwood_ts890_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
return retval;
|
||||
}
|
||||
|
||||
if (levelint < 0 || levelint >= 70)
|
||||
if (rig->caps->swr_cal.size)
|
||||
{
|
||||
val->f = 99.0; /* 99 == infinty */
|
||||
val->f = rig_raw2val_float(val->i, &rig->caps->swr_cal);
|
||||
}
|
||||
else
|
||||
{
|
||||
#if 0
|
||||
val->f = 70.0 / (70 - levelint);
|
||||
#else
|
||||
|
||||
/* Linear approximations of a very non-linear function */
|
||||
if (levelint < 12) { val->f = 1.0 + (float)levelint / 22.0; }
|
||||
else if (levelint < 24) { val->f = 1.5 + (float)(levelint - 11) / 24.0; }
|
||||
else if (levelint < 36) { val->f = 2.0 + (float)(levelint - 23) / 12.0; }
|
||||
else { val->f = 3.0 + (float)(levelint - 35) / 6.0; }
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
return RIG_OK;
|
||||
|
@ -383,6 +378,50 @@ static struct kenwood_priv_caps ts890s_priv_caps =
|
|||
.cmdtrm = EOM_KEN,
|
||||
};
|
||||
|
||||
/* S-meter calibration table
|
||||
* The TS-890S has two distinct S-meter curves, selectable
|
||||
* by menu option. Define both, but since Hamlib has only
|
||||
* one slot, use the the IARU one.
|
||||
* Values taken from TS-890S In-Depth Manual, p. 8
|
||||
*/
|
||||
/* Meter Type 1 - Kenwood specific (default) */
|
||||
#define TS890_SM_CAL2 { 9, \
|
||||
{ \
|
||||
{ 0, -28 }, \
|
||||
{ 3, -26 }, \
|
||||
{ 11, -20 }, \
|
||||
{ 19, -13 }, \
|
||||
{ 27, -7 }, \
|
||||
{ 35, 0 }, \
|
||||
{ 48, 20 }, \
|
||||
{ 59, 40 }, \
|
||||
{ 70, 60 }, \
|
||||
} }
|
||||
/* Meter Type 2 - IARU Standard */
|
||||
#define TS890_SM_CAL1 { 9, \
|
||||
{ \
|
||||
{ 0, -54 }, \
|
||||
{ 3, -48 }, \
|
||||
{ 11, -36 }, \
|
||||
{ 19, -24 }, \
|
||||
{ 27, -12 }, \
|
||||
{ 35, 0 }, \
|
||||
{ 48, 20 }, \
|
||||
{ 59, 40 }, \
|
||||
{ 70, 60 }, \
|
||||
} }
|
||||
|
||||
/* SWR meter calibration table */
|
||||
/* The full scale value reads infinity, so arbitrary */
|
||||
#define TS890_SWR_CAL { 5, \
|
||||
{ \
|
||||
{ 0, 1.0 }, \
|
||||
{ 11, 1.5 }, \
|
||||
{ 23, 2.0 }, \
|
||||
{ 35, 3.0 }, \
|
||||
{ 70, 15.0 } \
|
||||
} }
|
||||
|
||||
/*
|
||||
* TS-890S rig capabilities
|
||||
* Copied from ts480_caps, many of the values have not been verified.
|
||||
|
@ -393,7 +432,7 @@ const struct rig_caps ts890s_caps =
|
|||
RIG_MODEL(RIG_MODEL_TS890S),
|
||||
.model_name = "TS-890S",
|
||||
.mfg_name = "Kenwood",
|
||||
.version = BACKEND_VER ".8",
|
||||
.version = BACKEND_VER ".9",
|
||||
.copyright = "LGPL",
|
||||
.status = RIG_STATUS_STABLE,
|
||||
.rig_type = RIG_TYPE_TRANSCEIVER,
|
||||
|
@ -415,7 +454,7 @@ const struct rig_caps ts890s_caps =
|
|||
.max_rit = kHz(9.99),
|
||||
.max_xit = kHz(9.99),
|
||||
.max_ifshift = Hz(0),
|
||||
.targetable_vfo = RIG_TARGETABLE_FREQ|RIG_TARGETABLE_MODE,
|
||||
.targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE,
|
||||
.transceive = RIG_TRN_RIG,
|
||||
.agc_level_count = 5,
|
||||
.agc_levels = { RIG_AGC_OFF, RIG_AGC_SLOW, RIG_AGC_MEDIUM, RIG_AGC_FAST, RIG_AGC_ON },
|
||||
|
@ -504,6 +543,9 @@ const struct rig_caps ts890s_caps =
|
|||
},
|
||||
.vfo_ops = TS890_VFO_OPS,
|
||||
|
||||
.str_cal = TS890_SM_CAL1,
|
||||
.swr_cal = TS890_SWR_CAL,
|
||||
|
||||
.priv = (void *)& ts890s_priv_caps,
|
||||
.rig_init = kenwood_init,
|
||||
.rig_open = kenwood_open,
|
||||
|
|
Ładowanie…
Reference in New Issue