Fix TS590S/SG RIG_STRENGTH readings

pull/34/head
Michael Black W9MDB 2018-06-15 10:32:57 -05:00
rodzic d1b545beac
commit b0cd3ada11
2 zmienionych plików z 41 dodań i 5 usunięć

Wyświetl plik

@ -1835,26 +1835,43 @@ int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
return -RIG_EINVAL; return -RIG_EINVAL;
char lvlbuf[KENWOOD_MAX_BUF_LEN]; char lvlbuf[KENWOOD_MAX_BUF_LEN];
char *cmd;
int retval; int retval;
int lvl; int lvl;
int i, ret, agclevel; int i, ret, agclevel, len;
switch (level) { switch (level) {
case RIG_LEVEL_RAWSTR: case RIG_LEVEL_RAWSTR:
retval = kenwood_safe_transaction(rig, "SM", lvlbuf, 10, 6); if (RIG_MODEL_TS590S == rig->caps->rig_model || RIG_MODEL_TS590SG == rig->caps->rig_model) {
cmd = "SM0";
len= 3;
}
else {
cmd = "SM";
len = 2;
}
retval = kenwood_safe_transaction(rig, cmd, lvlbuf, 10, len+4);
if (retval != RIG_OK) if (retval != RIG_OK)
return retval; return retval;
/* XXX atoi ? */ /* XXX atoi ? */
sscanf(lvlbuf+2, "%d", &val->i); /* rawstr */ sscanf(lvlbuf+len, "%d", &val->i); /* rawstr */
break; break;
case RIG_LEVEL_STRENGTH: case RIG_LEVEL_STRENGTH:
retval = kenwood_safe_transaction(rig, "SM", lvlbuf, 10, 6); if (RIG_MODEL_TS590S == rig->caps->rig_model || RIG_MODEL_TS590SG == rig->caps->rig_model) {
cmd = "SM0";
len = 3;
}
else {
cmd = "SM";
len = 2;
}
retval = kenwood_safe_transaction(rig, "SM", lvlbuf, 10, len+4);
if (retval != RIG_OK) if (retval != RIG_OK)
return retval; return retval;
sscanf(lvlbuf+2, "%d", &val->i); /* rawstr */ sscanf(lvlbuf+len, "%d", &val->i); /* rawstr */
if (rig->caps->str_cal.size) if (rig->caps->str_cal.size)
val->i = (int) rig_raw2val(val->i, &rig->caps->str_cal); val->i = (int) rig_raw2val(val->i, &rig->caps->str_cal);

Wyświetl plik

@ -60,6 +60,23 @@ const char* ts590_get_info(RIG *rig);
.flags=RIG_CHFLAG_SKIP \ .flags=RIG_CHFLAG_SKIP \
} }
#define TS590_STR_CAL {13, {\
{0x00, -54},\
{0x04, -48},\
{0x08, -42},\
{0x0C, -36},\
{0x10, -30},\
{0x14, -24},\
{0x18, -18},\
{0x1C, -12},\
{0x20, -6},\
{0x24, 0},\
{0x28, 20},\
{0x2C, 40},\
{0x30, 60}}\
}
static struct kenwood_priv_caps ts590_priv_caps = { static struct kenwood_priv_caps ts590_priv_caps = {
.cmdtrm = EOM_KEN, .cmdtrm = EOM_KEN,
}; };
@ -187,6 +204,7 @@ const struct rig_caps ts590_caps = {
{RIG_MODE_FM, kHz(12)}, {RIG_MODE_FM, kHz(12)},
RIG_FLT_END, RIG_FLT_END,
}, },
.str_cal = TS590_STR_CAL,
.priv = (void *) &ts590_priv_caps, .priv = (void *) &ts590_priv_caps,
.rig_init = kenwood_init, .rig_init = kenwood_init,
.rig_cleanup = kenwood_cleanup, .rig_cleanup = kenwood_cleanup,
@ -354,6 +372,7 @@ const struct rig_caps ts590sg_caps = {
{RIG_MODE_FM, kHz(12)}, {RIG_MODE_FM, kHz(12)},
RIG_FLT_END, RIG_FLT_END,
}, },
.str_cal = TS590_STR_CAL,
.priv = (void *) &ts590_priv_caps, .priv = (void *) &ts590_priv_caps,
.rig_init = kenwood_init, .rig_init = kenwood_init,
.rig_cleanup = kenwood_cleanup, .rig_cleanup = kenwood_cleanup,