kopia lustrzana https://github.com/Hamlib/Hamlib
Add SWR reading for PowerSDR/Thetis
rodzic
31298bb917
commit
337fb0f3e5
|
@ -2551,6 +2551,7 @@ struct rig_cache {
|
||||||
struct timespec time_ptt;
|
struct timespec time_ptt;
|
||||||
struct timespec time_split;
|
struct timespec time_split;
|
||||||
int satmode; // if rig is in satellite mode
|
int satmode; // if rig is in satellite mode
|
||||||
|
double swr; // keep swr
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
|
|
||||||
#define POWERSDR_FUNC_ALL (RIG_FUNC_VOX|RIG_FUNC_SQL|RIG_FUNC_NB|RIG_FUNC_ANF|RIG_FUNC_MUTE|RIG_FUNC_RIT|RIG_FUNC_XIT|RIG_FUNC_TUNER)
|
#define POWERSDR_FUNC_ALL (RIG_FUNC_VOX|RIG_FUNC_SQL|RIG_FUNC_NB|RIG_FUNC_ANF|RIG_FUNC_MUTE|RIG_FUNC_RIT|RIG_FUNC_XIT|RIG_FUNC_TUNER)
|
||||||
|
|
||||||
#define POWERSDR_LEVEL_ALL (RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW|RIG_LEVEL_KEYSPD|RIG_LEVEL_RFPOWER|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_MICGAIN|RIG_LEVEL_VOXGAIN|RIG_LEVEL_SQL|RIG_LEVEL_AF|RIG_LEVEL_AGC|RIG_LEVEL_RF|RIG_LEVEL_IF|RIG_LEVEL_STRENGTH)
|
#define POWERSDR_LEVEL_ALL (RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW|RIG_LEVEL_KEYSPD|RIG_LEVEL_RFPOWER|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_MICGAIN|RIG_LEVEL_VOXGAIN|RIG_LEVEL_SQL|RIG_LEVEL_AF|RIG_LEVEL_AGC|RIG_LEVEL_RF|RIG_LEVEL_IF|RIG_LEVEL_STRENGTH|RIG_LEVEL_SWR)
|
||||||
#define POWERSDR_LEVEL_SET (RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW|RIG_LEVEL_KEYSPD|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_VOXGAIN|RIG_LEVEL_SQL|RIG_LEVEL_AF|RIG_LEVEL_AGC|RIG_LEVEL_RF|RIG_LEVEL_IF)
|
#define POWERSDR_LEVEL_SET (RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW|RIG_LEVEL_KEYSPD|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_VOXGAIN|RIG_LEVEL_SQL|RIG_LEVEL_AF|RIG_LEVEL_AGC|RIG_LEVEL_RF|RIG_LEVEL_IF)
|
||||||
|
|
||||||
|
|
||||||
|
@ -837,6 +837,27 @@ int powersdr_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||||
ans = 3;
|
ans = 3;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case RIG_LEVEL_SWR:
|
||||||
|
{
|
||||||
|
// if not PTT we'll return the last SWR value
|
||||||
|
// seems desirable to able to see this always
|
||||||
|
if (!rig->state.cache.ptt) { val->f = rig->state.cache.swr; return RIG_OK; }
|
||||||
|
double forward=0, reverse=0;
|
||||||
|
cmd = "ZZRM5"; // get forward power
|
||||||
|
len = 5;
|
||||||
|
ans = 4;
|
||||||
|
retval = kenwood_safe_transaction(rig, cmd, lvlbuf, sizeof(lvlbuf), len + ans);
|
||||||
|
if (retval != RIG_OK) { val->f = 0; return RIG_OK;};
|
||||||
|
sscanf(lvlbuf,"ZZRM5%lg", &forward);
|
||||||
|
if (forward == 0) { val->f = 1.0; return RIG_OK;}
|
||||||
|
cmd = "ZZRM7";
|
||||||
|
retval = kenwood_safe_transaction(rig, cmd, lvlbuf, sizeof(lvlbuf), len + ans);
|
||||||
|
if (retval != RIG_OK) { val->f = 0; return RIG_OK;};
|
||||||
|
sscanf(lvlbuf,"ZZRM7%lg", &reverse);
|
||||||
|
rig->state.cache.swr = val->f = (1.0 + sqrt(reverse/forward)) / (1.0 - sqrt(reverse/forward));
|
||||||
|
return RIG_OK;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return kenwood_get_level(rig, vfo, level, val);
|
return kenwood_get_level(rig, vfo, level, val);
|
||||||
}
|
}
|
||||||
|
@ -1321,7 +1342,7 @@ const struct rig_caps powersdr_caps =
|
||||||
RIG_MODEL(RIG_MODEL_POWERSDR),
|
RIG_MODEL(RIG_MODEL_POWERSDR),
|
||||||
.model_name = "PowerSDR/Thetis",
|
.model_name = "PowerSDR/Thetis",
|
||||||
.mfg_name = "FlexRadio/ANAN",
|
.mfg_name = "FlexRadio/ANAN",
|
||||||
.version = "20230819.0",
|
.version = "20231104.0",
|
||||||
.copyright = "LGPL",
|
.copyright = "LGPL",
|
||||||
.status = RIG_STATUS_STABLE,
|
.status = RIG_STATUS_STABLE,
|
||||||
.rig_type = RIG_TYPE_TRANSCEIVER,
|
.rig_type = RIG_TYPE_TRANSCEIVER,
|
||||||
|
|
Ładowanie…
Reference in New Issue