Fix PowerSDR STRENGTH

pull/494/head
Michael Black W9MDB 2020-12-31 14:24:22 -06:00
rodzic 29f56de41d
commit 44c1645785
4 zmienionych plików z 44 dodań i 8 usunięć

Wyświetl plik

@ -1967,7 +1967,8 @@ static int flrig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
switch (level)
{
case RIG_LEVEL_STRENGTH:
val->i = atoi(value);
val->i = atoi(value) - 54;
//if (val->i > 0) val->i /= 10;
rig_debug(RIG_DEBUG_TRACE, "%s: val.i='%s'(%d)\n", __func__, value, val->i);
break;

Wyświetl plik

@ -53,7 +53,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_LEVEL_ALL (RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW|RIG_LEVEL_KEYSPD|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)
#define POWERSDR_LEVEL_ALL (RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW|RIG_LEVEL_KEYSPD|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)
static rmode_t flex_mode_table[KENWOOD_MODE_TABLE_MAX] =
@ -739,6 +739,7 @@ int powersdr_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
rmode_t mode;
pbwidth_t width;
ptt_t ptt;
double dval;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
@ -773,6 +774,20 @@ int powersdr_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
ans = 4;
break;
case RIG_LEVEL_STRENGTH:
flex6k_get_ptt(rig, vfo, &ptt);
if (ptt) // not applicable if transmitting
{
val->f = 0;
return RIG_OK;
}
cmd = "ZZRM0";
len = 5;
ans = 9;
break;
case RIG_LEVEL_RFPOWER_METER:
case RIG_LEVEL_RFPOWER_METER_WATTS:
flex6k_get_ptt(rig, vfo, &ptt);
@ -810,7 +825,7 @@ int powersdr_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
return kenwood_get_level(rig, vfo, level, val);
}
retval = kenwood_safe_transaction(rig, cmd, lvlbuf, 10, len + ans);
retval = kenwood_safe_transaction(rig, cmd, lvlbuf, sizeof(lvlbuf), len + ans);
if (retval != RIG_OK)
{
@ -845,6 +860,21 @@ int powersdr_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
break;
case RIG_LEVEL_STRENGTH:
n = sscanf(lvlbuf, "ZZRM0%lf", &dval);
if (n != 1)
{
rig_debug(RIG_DEBUG_ERR, "%s: Error parsing value from lvlbuf='%s'\n",
__func__, lvlbuf);
val->i = 0;
return -RIG_EPROTO;
}
val->i = dval + 73; // dbm to S9-based=0dB
break;
case RIG_LEVEL_AF:
case RIG_LEVEL_RFPOWER_METER:
case RIG_LEVEL_RFPOWER_METER_WATTS:
@ -1162,7 +1192,7 @@ const struct rig_caps powersdr_caps =
RIG_MODEL(RIG_MODEL_POWERSDR),
.model_name = "PowerSDR/Thetis",
.mfg_name = "FlexRadio/ANAN",
.version = "20201227.0",
.version = "20201231.0",
.copyright = "LGPL",
.status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER,

Wyświetl plik

@ -598,6 +598,8 @@ int kenwood_safe_transaction(RIG *rig, const char *cmd, char *buf,
do
{
size_t length;
// some PowerSDR commands have variable len
int checklen = !RIG_IS_POWERSDR;
err = kenwood_transaction(rig, cmd, buf, buf_size);
if (err != RIG_OK) /* return immediately on error as any
@ -608,7 +610,7 @@ int kenwood_safe_transaction(RIG *rig, const char *cmd, char *buf,
length = strlen(buf);
if (length != expected) /* worth retrying as some rigs
if (checklen && length != expected) /* worth retrying as some rigs
occasionally send short results */
{
rig_debug(RIG_DEBUG_ERR,
@ -637,7 +639,8 @@ rmode_t kenwood2rmode(unsigned char mode, const rmode_t mode_table[])
char rmode2kenwood(rmode_t mode, const rmode_t mode_table[])
{
rig_debug(RIG_DEBUG_VERBOSE, "%s called, mode=%s\n", __func__, rig_strrmode(mode));
rig_debug(RIG_DEBUG_VERBOSE, "%s called, mode=%s\n", __func__,
rig_strrmode(mode));
if (mode != RIG_MODE_NONE)
{
@ -1840,7 +1843,8 @@ int kenwood_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
struct kenwood_priv_caps *caps = kenwood_caps(rig);
rig_debug(RIG_DEBUG_VERBOSE, "%s called, vfo=%s, mode=%s, width=%d\n", __func__, rig_strvfo(vfo), rig_strrmode(mode), (int)width);
rig_debug(RIG_DEBUG_VERBOSE, "%s called, vfo=%s, mode=%s, width=%d\n", __func__,
rig_strvfo(vfo), rig_strrmode(mode), (int)width);
if (RIG_IS_TS590S || RIG_IS_TS590SG || RIG_IS_TS950S || RIG_IS_TS950SDX)
{
@ -1892,6 +1896,7 @@ int kenwood_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
{
c = 'A' + kmode - 10;
}
rig_debug(RIG_DEBUG_VERBOSE, "%s: kmode=%d, cmode=%c\n", __func__, kmode, c);
if (RIG_IS_TS990S)

Wyświetl plik

@ -27,7 +27,7 @@
#include <string.h>
#include "token.h"
#define BACKEND_VER "20201214"
#define BACKEND_VER "20201231"
#define EOM_KEN ';'
#define EOM_TH '\r'