Fix flrig set_micgain to use i4 format

pull/518/head
Michael Black W9MDB 2021-01-12 23:03:20 -06:00
rodzic a9a806f8e0
commit 00a7f2c749
1 zmienionych plików z 19 dodań i 8 usunięć

Wyświetl plik

@ -58,7 +58,7 @@
RIG_MODE_FM | RIG_MODE_WFM | RIG_MODE_FMN | RIG_MODE_PKTFM |\
RIG_MODE_C4FM)
#define FLRIG_LEVELS (RIG_LEVEL_AF | RIG_LEVEL_RF | RIG_LEVEL_MICGAIN | RIG_LEVEL_STRENGTH | RIG_LEVEL_RFPOWER_METER | RIG_LEVEL_RFPOWER_METER_WATTS)
#define FLRIG_LEVELS (RIG_LEVEL_AF | RIG_LEVEL_RF | RIG_LEVEL_MICGAIN | RIG_LEVEL_STRENGTH | RIG_LEVEL_RFPOWER_METER | RIG_LEVEL_RFPOWER_METER_WATTS | RIG_LEVEL_RFPOWER)
#define streq(s1,s2) (strcmp(s1,s2)==0)
@ -1883,6 +1883,7 @@ static int flrig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
int retval;
char cmd_arg[MAXARGLEN];
char *cmd;
char *param_type="i4";
rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s level=%d, val=%f\n", __func__,
rig_strvfo(vfo), (int)level, val.f);
@ -1894,23 +1895,26 @@ static int flrig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
return -RIG_EINVAL;
}
sprintf(cmd_arg,
"<params><param><value><double>%d</double></value></param></params>",
(int)val.f);
switch (level)
{
case RIG_LEVEL_RF: cmd = "rig.set_rfgain"; break;
case RIG_LEVEL_RF: cmd = "rig.set_rfgain"; val.f*= 100; break;
case RIG_LEVEL_AF: cmd = "rig.set_volume"; break;
case RIG_LEVEL_AF: cmd = "rig.set_volume"; val.f*= 100; break;
case RIG_LEVEL_MICGAIN: cmd = "rig.set_micgain"; break;
case RIG_LEVEL_MICGAIN: cmd = "rig.set_micgain"; val.f*= 100; break;
case RIG_LEVEL_RFPOWER: cmd = "rig.set_power"; val.f*= 100; break;
default:
rig_debug(RIG_DEBUG_ERR, "%s: invalid level=%d\n", __func__, (int)level);
return -RIG_EINVAL;
}
sprintf(cmd_arg,
"<params><param><value><%s>%d</%s></value></param></params>",
param_type, (int)val.f, param_type);
retval = flrig_transaction(rig, cmd, cmd_arg, NULL, 0);
if (retval < 0)
@ -1945,6 +1949,8 @@ static int flrig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
case RIG_LEVEL_MICGAIN: cmd = "rig.get_micgain"; break;
case RIG_LEVEL_STRENGTH: cmd = "rig.get_smeter"; break;
case RIG_LEVEL_RFPOWER: cmd = "rig.get_power"; break;
case RIG_LEVEL_RFPOWER_METER_WATTS:
case RIG_LEVEL_RFPOWER_METER: cmd = "rig.get_pwrmeter"; break;
@ -1972,6 +1978,11 @@ static int flrig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
rig_debug(RIG_DEBUG_TRACE, "%s: val.i='%s'(%d)\n", __func__, value, val->i);
break;
case RIG_LEVEL_RFPOWER:
val->f = atof(value) / 100.0 * priv->powermeter_scale;
rig_debug(RIG_DEBUG_TRACE, "%s: val.f='%s'(%g)\n", __func__, value, val->f);
break;
case RIG_LEVEL_RFPOWER_METER:
val->f = atof(value) / 100.0 * priv->powermeter_scale;
rig_debug(RIG_DEBUG_TRACE, "%s: val.f='%s'(%g)\n", __func__, value, val->f);