Michael Black W9MDB 2020-09-30 20:49:37 -07:00
rodzic b6ed9b53e6
commit bbde85064a
1 zmienionych plików z 50 dodań i 42 usunięć

Wyświetl plik

@ -1693,7 +1693,7 @@ int k3_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
*/
int k3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
{
char lvlbuf[50];
char levelbuf[16];
int retval;
int lvl;
struct kenwood_priv_data *priv = rig->state.priv;
@ -1725,14 +1725,14 @@ int k3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
{
cal_table_t str_cal = K3_SM_CAL;
retval = kenwood_safe_transaction(rig, "SM", lvlbuf, sizeof(lvlbuf), 6);
retval = kenwood_safe_transaction(rig, "SM", levelbuf, sizeof(levelbuf), 6);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%d", &val->i); /* rawstr */
sscanf(levelbuf + 2, "%d", &val->i); /* rawstr */
val->i = (int) rig_raw2val(val->i, &str_cal);
}
@ -1740,14 +1740,14 @@ int k3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
{
cal_table_t str_cal = K3_SMH_CAL;
retval = kenwood_safe_transaction(rig, "SMH", lvlbuf, sizeof(lvlbuf), 6);
retval = kenwood_safe_transaction(rig, "SMH", levelbuf, sizeof(levelbuf), 6);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 3, "%d", &val->i); /* rawstr */
sscanf(levelbuf + 3, "%d", &val->i); /* rawstr */
val->i = (int) rig_raw2val(val->i, &str_cal);
}
@ -1809,14 +1809,14 @@ int k3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
}
case RIG_LEVEL_AGC:
retval = kenwood_safe_transaction(rig, "GT", lvlbuf, sizeof(lvlbuf), 5);
retval = kenwood_safe_transaction(rig, "GT", levelbuf, sizeof(levelbuf), 5);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%d", &lvl);
sscanf(levelbuf + 2, "%d", &lvl);
if (lvl == 0)
{
@ -1838,14 +1838,14 @@ int k3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
break;
case RIG_LEVEL_ATT:
retval = kenwood_safe_transaction(rig, "RA", lvlbuf, sizeof(lvlbuf), 4);
retval = kenwood_safe_transaction(rig, "RA", levelbuf, sizeof(levelbuf), 4);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%d", &lvl);
sscanf(levelbuf + 2, "%d", &lvl);
if (lvl == 0)
{
@ -1879,62 +1879,62 @@ int k3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
break;
case RIG_LEVEL_MICGAIN:
retval = kenwood_safe_transaction(rig, "MG", lvlbuf, sizeof(lvlbuf), 5);
retval = kenwood_safe_transaction(rig, "MG", levelbuf, sizeof(levelbuf), 5);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%d", &lvl);
sscanf(levelbuf + 2, "%d", &lvl);
val->f = (float) lvl / 60.0f;
break;
case RIG_LEVEL_COMP:
retval = kenwood_safe_transaction(rig, "CP", lvlbuf, sizeof(lvlbuf), 5);
retval = kenwood_safe_transaction(rig, "CP", levelbuf, sizeof(levelbuf), 5);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%d", &lvl);
sscanf(levelbuf + 2, "%d", &lvl);
val->f = (float) lvl / 40.0f;
break;
case RIG_LEVEL_SQL:
retval = kenwood_safe_transaction(rig, "SQ", lvlbuf, sizeof(lvlbuf), 5);
retval = kenwood_safe_transaction(rig, "SQ", levelbuf, sizeof(levelbuf), 5);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%d", &lvl);
sscanf(levelbuf + 2, "%d", &lvl);
val->f = (float) lvl / 29.0f;
break;
case RIG_LEVEL_RF:
retval = kenwood_safe_transaction(rig, "RG", lvlbuf, sizeof(lvlbuf), 5);
retval = kenwood_safe_transaction(rig, "RG", levelbuf, sizeof(levelbuf), 5);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%d", &lvl);
sscanf(levelbuf + 2, "%d", &lvl);
val->f = (float) lvl / 250.0f;
break;
case RIG_LEVEL_AF:
retval = kenwood_safe_transaction(rig, "AG", lvlbuf, sizeof(lvlbuf), 5);
retval = kenwood_safe_transaction(rig, "AG", levelbuf, sizeof(levelbuf), 5);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%d", &lvl);
sscanf(levelbuf + 2, "%d", &lvl);
val->f = (float) lvl / 250.0f;
break;
@ -1942,14 +1942,14 @@ int k3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
return k3_get_nb_level(rig, &val->f, NULL);
case RIG_LEVEL_MONITOR_GAIN:
retval = kenwood_safe_transaction(rig, "ML", lvlbuf, sizeof(lvlbuf), 5);
retval = kenwood_safe_transaction(rig, "ML", levelbuf, sizeof(levelbuf), 5);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%d", &lvl);
sscanf(levelbuf + 2, "%d", &lvl);
val->f = (float) lvl / 60.0f;
break;
@ -1975,7 +1975,12 @@ int kx3_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
ival = val.f * (250.0 - 190.0) + 190.0;
snprintf(cmdbuf,sizeof(cmdbuf)-1,"RG%03d", ival);
return kenwood_transaction(rig, cmdbuf, NULL, 0);
case RIG_LEVEL_AF:
// manual says 0-255 as of Rev G5 but experiment says 0-60
snprintf(cmdbuf, sizeof(cmdbuf), "AG%03d", (int)(val.f * 60.0f));
return kenwood_transaction(rig, cmdbuf, NULL, 0);
}
return k3_set_level(rig, vfo, level, val);
}
@ -1987,13 +1992,19 @@ int kx3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
switch (level)
{
case RIG_LEVEL_AF:
retval = get_kenwood_level(rig, "AG", NULL, &val->i);
if (retval != RIG_OK) { return retval; }
// manual says 0-255 as of Rev G5 but experiment says 0-60
val->f = val->i / 60.0;
return retval;
case RIG_LEVEL_RF:
retval = get_kenwood_level(rig, "RG", NULL, &val->i);
if (retval != RIG_OK) { return retval; }
val->f = (val->i - 190.0) / (250.0-190.0);
return retval;
case RIG_LEVEL_RFPOWER_METER:
{
int tx_status = 0;
@ -2021,14 +2032,11 @@ int kx3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
}
val->f = pwr;
break;
return retval;
}
}
default:
return k3_get_level(rig, vfo, level, val);
}
return RIG_OK;
return k3_get_level(rig, vfo, level, val);
}
@ -2147,7 +2155,7 @@ int set_rit_xit(RIG *rig, shortfreq_t rit)
int k3_set_nb_level(RIG *rig, float dsp_nb, float if_nb)
{
char lvlbuf[16];
char levelbuf[16];
int dsp_nb_raw = 0;
int if_nb_raw = 0;
@ -2168,14 +2176,14 @@ int k3_set_nb_level(RIG *rig, float dsp_nb, float if_nb)
int current_dsp_nb_raw;
int current_if_nb_raw;
int retval = kenwood_safe_transaction(rig, "NL", lvlbuf, sizeof(lvlbuf), 6);
int retval = kenwood_safe_transaction(rig, "NL", levelbuf, sizeof(levelbuf), 6);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%02d%02d", &current_dsp_nb_raw, &current_if_nb_raw);
sscanf(levelbuf + 2, "%02d%02d", &current_dsp_nb_raw, &current_if_nb_raw);
if (dsp_nb < 0)
{
@ -2188,28 +2196,28 @@ int k3_set_nb_level(RIG *rig, float dsp_nb, float if_nb)
}
}
snprintf(lvlbuf, sizeof(lvlbuf), "NL%02d%02d", dsp_nb_raw, if_nb_raw);
snprintf(levelbuf, sizeof(levelbuf), "NL%02d%02d", dsp_nb_raw, if_nb_raw);
return kenwood_transaction(rig, lvlbuf, NULL, 0);
return kenwood_transaction(rig, levelbuf, NULL, 0);
}
int k3_get_nb_level(RIG *rig, float *dsp_nb, float *if_nb)
{
char lvlbuf[16];
char levelbuf[16];
int retval;
int dsp_nb_raw;
int if_nb_raw;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
retval = kenwood_safe_transaction(rig, "NL", lvlbuf, sizeof(lvlbuf), 6);
retval = kenwood_safe_transaction(rig, "NL", levelbuf, sizeof(levelbuf), 6);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%02d%02d", &dsp_nb_raw, &if_nb_raw);
sscanf(levelbuf + 2, "%02d%02d", &dsp_nb_raw, &if_nb_raw);
if (dsp_nb != NULL)
{
@ -2227,7 +2235,7 @@ int k3_get_nb_level(RIG *rig, float *dsp_nb, float *if_nb)
int k3_get_bar_graph_level(RIG *rig, float *smeter, float *pwr, float *alc,
int *mode_tx)
{
char lvlbuf[16];
char levelbuf[16];
int retval;
int tm_raw;
int bg_raw;
@ -2243,14 +2251,14 @@ int k3_get_bar_graph_level(RIG *rig, float *smeter, float *pwr, float *alc,
return retval;
}
retval = kenwood_safe_transaction(rig, "BG", lvlbuf, sizeof(lvlbuf), 5);
retval = kenwood_safe_transaction(rig, "BG", levelbuf, sizeof(levelbuf), 5);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%02d%c", &bg_raw, &mode);
sscanf(levelbuf + 2, "%02d%c", &bg_raw, &mode);
if (mode == 'R')
{
@ -2324,20 +2332,20 @@ int k3_get_bar_graph_level(RIG *rig, float *smeter, float *pwr, float *alc,
int kx3_get_bar_graph_level(RIG *rig, float *level)
{
char lvlbuf[16];
char levelbuf[16];
int retval;
int bg_raw;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
retval = kenwood_safe_transaction(rig, "BG", lvlbuf, sizeof(lvlbuf), 4);
retval = kenwood_safe_transaction(rig, "BG", levelbuf, sizeof(levelbuf), 4);
if (retval != RIG_OK)
{
return retval;
}
sscanf(lvlbuf + 2, "%02d", &bg_raw);
sscanf(levelbuf + 2, "%02d", &bg_raw);
if (bg_raw >= 0 && bg_raw <= 10)
{