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;
char lvlbuf[KENWOOD_MAX_BUF_LEN];
char *cmd;
int retval;
int lvl;
int i, ret, agclevel;
int i, ret, agclevel, len;
switch (level) {
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)
return retval;
/* XXX atoi ? */
sscanf(lvlbuf+2, "%d", &val->i); /* rawstr */
sscanf(lvlbuf+len, "%d", &val->i); /* rawstr */
break;
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)
return retval;
sscanf(lvlbuf+2, "%d", &val->i); /* rawstr */
sscanf(lvlbuf+len, "%d", &val->i); /* rawstr */
if (rig->caps->str_cal.size)
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 \
}
#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 = {
.cmdtrm = EOM_KEN,
};
@ -187,6 +204,7 @@ const struct rig_caps ts590_caps = {
{RIG_MODE_FM, kHz(12)},
RIG_FLT_END,
},
.str_cal = TS590_STR_CAL,
.priv = (void *) &ts590_priv_caps,
.rig_init = kenwood_init,
.rig_cleanup = kenwood_cleanup,
@ -354,6 +372,7 @@ const struct rig_caps ts590sg_caps = {
{RIG_MODE_FM, kHz(12)},
RIG_FLT_END,
},
.str_cal = TS590_STR_CAL,
.priv = (void *) &ts590_priv_caps,
.rig_init = kenwood_init,
.rig_cleanup = kenwood_cleanup,