kopia lustrzana https://github.com/Hamlib/Hamlib
Fix PowerSDR STRENGTH
rodzic
29f56de41d
commit
44c1645785
|
@ -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;
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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'
|
||||
|
|
Ładowanie…
Reference in New Issue