Fix Yaesu newcat meter reading for FTDX101

pull/426/head
Mikael Nousiainen 2020-10-23 11:47:32 +03:00
rodzic ce19b843ba
commit be2524b4c9
1 zmienionych plików z 31 dodań i 2 usunięć

Wyświetl plik

@ -3242,6 +3242,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
int err; int err;
int ret_data_len; int ret_data_len;
char *retlvl; char *retlvl;
int retlvl_len;
float scale; float scale;
char main_sub_vfo = '0'; char main_sub_vfo = '0';
@ -3572,6 +3573,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
/* skip command */ /* skip command */
retlvl = priv->ret_data + strlen(priv->cmd_str) - 1; retlvl = priv->ret_data + strlen(priv->cmd_str) - 1;
retlvl_len = strlen(retlvl);
/* chop term */ /* chop term */
priv->ret_data[ret_data_len - 1] = '\0'; priv->ret_data[ret_data_len - 1] = '\0';
@ -3596,8 +3598,10 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
break; break;
case RIG_LEVEL_SWR: case RIG_LEVEL_SWR:
// some rigs like ft101dx have 6 byte return so we just truncate if (retlvl_len > 3) {
// Some rigs like FTDX101 have 6-byte return so we just truncate
retlvl[3] = 0; retlvl[3] = 0;
}
if (rig->caps->swr_cal.size == 0) if (rig->caps->swr_cal.size == 0)
{ {
@ -3611,6 +3615,11 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
break; break;
case RIG_LEVEL_ALC: case RIG_LEVEL_ALC:
if (retlvl_len > 3) {
// Some rigs like FTDX101 have 6-byte return so we just truncate
retlvl[3] = 0;
}
if (rig->caps->alc_cal.size == 0) if (rig->caps->alc_cal.size == 0)
{ {
val->f = rig_raw2val_float(atoi(retlvl), &yaesu_default_alc_cal); val->f = rig_raw2val_float(atoi(retlvl), &yaesu_default_alc_cal);
@ -3622,6 +3631,11 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
break; break;
case RIG_LEVEL_RFPOWER_METER: case RIG_LEVEL_RFPOWER_METER:
if (retlvl_len > 3) {
// Some rigs like FTDX101 have 6-byte return so we just truncate
retlvl[3] = 0;
}
if (rig->caps->rfpower_meter_cal.size == 0) if (rig->caps->rfpower_meter_cal.size == 0)
{ {
val->f = rig_raw2val_float(atoi(retlvl), &yaesu_default_rfpower_meter_cal); val->f = rig_raw2val_float(atoi(retlvl), &yaesu_default_rfpower_meter_cal);
@ -3633,6 +3647,11 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
break; break;
case RIG_LEVEL_COMP_METER: case RIG_LEVEL_COMP_METER:
if (retlvl_len > 3) {
// Some rigs like FTDX101 have 6-byte return so we just truncate
retlvl[3] = 0;
}
if (rig->caps->comp_meter_cal.size == 0) if (rig->caps->comp_meter_cal.size == 0)
{ {
val->f = rig_raw2val_float(atoi(retlvl), &yaesu_default_comp_meter_cal); val->f = rig_raw2val_float(atoi(retlvl), &yaesu_default_comp_meter_cal);
@ -3644,6 +3663,11 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
break; break;
case RIG_LEVEL_VD_METER: case RIG_LEVEL_VD_METER:
if (retlvl_len > 3) {
// Some rigs like FTDX101 have 6-byte return so we just truncate
retlvl[3] = 0;
}
if (rig->caps->vd_meter_cal.size == 0) if (rig->caps->vd_meter_cal.size == 0)
{ {
val->f = rig_raw2val_float(atoi(retlvl), &yaesu_default_vd_meter_cal); val->f = rig_raw2val_float(atoi(retlvl), &yaesu_default_vd_meter_cal);
@ -3655,6 +3679,11 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
break; break;
case RIG_LEVEL_ID_METER: case RIG_LEVEL_ID_METER:
if (retlvl_len > 3) {
// Some rigs like FTDX101 have 6-byte return so we just truncate
retlvl[3] = 0;
}
if (rig->caps->id_meter_cal.size == 0) if (rig->caps->id_meter_cal.size == 0)
{ {
val->f = rig_raw2val_float(atoi(retlvl), &yaesu_default_id_meter_cal); val->f = rig_raw2val_float(atoi(retlvl), &yaesu_default_id_meter_cal);