kopia lustrzana https://github.com/Hamlib/Hamlib
Fix rig_set_lock_mode and rig_get_lock_mode
https://github.com/Hamlib/Hamlib/issues/1044pull/1068/head
rodzic
c17bcaa343
commit
ad2f5047e0
|
@ -2649,19 +2649,35 @@ int netrigctl_password(RIG *rig, const char *key1)
|
||||||
RETURNFUNC(retval);
|
RETURNFUNC(retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
int lock_mode;
|
int netrigctl_set_lock_mode(RIG *rig, int lock)
|
||||||
|
|
||||||
int netrigctl_set_lock_mode(RIG *rig, int mode)
|
|
||||||
{
|
{
|
||||||
//rig->state.lock_mode = mode;
|
char cmdbuf[256];
|
||||||
lock_mode = mode;
|
char buf[BUF_MAX];
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
SNPRINTF(cmdbuf, sizeof(cmdbuf), "\\set_lock_mode %d\n", lock);
|
||||||
|
|
||||||
|
ret = netrigctl_transaction(rig, cmdbuf, strlen(cmdbuf), buf);
|
||||||
|
|
||||||
|
if (ret > 0)
|
||||||
|
{
|
||||||
|
return -RIG_EPROTO;
|
||||||
|
}
|
||||||
return (RIG_OK);
|
return (RIG_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
int netrigctl_get_lock_mode(RIG *rig, int *mode)
|
int netrigctl_get_lock_mode(RIG *rig, int *lock)
|
||||||
{
|
{
|
||||||
//*mode = rig->state.lock_mode;
|
char cmdbuf[256];
|
||||||
*mode = lock_mode;
|
char buf[BUF_MAX];
|
||||||
|
int ret;
|
||||||
|
SNPRINTF(cmdbuf, sizeof(cmdbuf), "\\get_lock_mode\n");
|
||||||
|
ret = netrigctl_transaction(rig, cmdbuf, strlen(cmdbuf), buf);
|
||||||
|
if (ret == 0)
|
||||||
|
{
|
||||||
|
return -RIG_EPROTO;
|
||||||
|
}
|
||||||
|
sscanf(buf,"%d", lock);
|
||||||
return (RIG_OK);
|
return (RIG_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2674,7 +2690,7 @@ struct rig_caps netrigctl_caps =
|
||||||
RIG_MODEL(RIG_MODEL_NETRIGCTL),
|
RIG_MODEL(RIG_MODEL_NETRIGCTL),
|
||||||
.model_name = "NET rigctl",
|
.model_name = "NET rigctl",
|
||||||
.mfg_name = "Hamlib",
|
.mfg_name = "Hamlib",
|
||||||
.version = "20211123.0",
|
.version = "20220606.0",
|
||||||
.copyright = "LGPL",
|
.copyright = "LGPL",
|
||||||
.status = RIG_STATUS_STABLE,
|
.status = RIG_STATUS_STABLE,
|
||||||
.rig_type = RIG_TYPE_OTHER,
|
.rig_type = RIG_TYPE_OTHER,
|
||||||
|
|
|
@ -93,6 +93,7 @@ const char *hamlib_license = "LGPL";
|
||||||
const char hamlib_version[21] = "Hamlib " PACKAGE_VERSION;
|
const char hamlib_version[21] = "Hamlib " PACKAGE_VERSION;
|
||||||
const char *hamlib_version2 = "Hamlib " PACKAGE_VERSION " " HAMLIBDATETIME;
|
const char *hamlib_version2 = "Hamlib " PACKAGE_VERSION " " HAMLIBDATETIME;
|
||||||
HAMLIB_EXPORT_VAR(int) cookie_use;
|
HAMLIB_EXPORT_VAR(int) cookie_use;
|
||||||
|
int lock_mode; // for use by rigctld
|
||||||
//! @endcond
|
//! @endcond
|
||||||
|
|
||||||
struct rig_caps caps_test;
|
struct rig_caps caps_test;
|
||||||
|
@ -2153,6 +2154,7 @@ int HAMLIB_API rig_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
||||||
{
|
{
|
||||||
const struct rig_caps *caps;
|
const struct rig_caps *caps;
|
||||||
int retcode;
|
int retcode;
|
||||||
|
int locked_mode;
|
||||||
|
|
||||||
ELAPSED1;
|
ELAPSED1;
|
||||||
|
|
||||||
|
@ -2161,12 +2163,14 @@ int HAMLIB_API rig_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
||||||
rig_strvfo(vfo), rig_strrmode(mode), (int)width,
|
rig_strvfo(vfo), rig_strrmode(mode), (int)width,
|
||||||
rig_strvfo(rig->state.current_vfo));
|
rig_strvfo(rig->state.current_vfo));
|
||||||
|
|
||||||
if (rig->state.lock_mode) { return(RIG_OK); }
|
|
||||||
if (CHECK_RIG_ARG(rig))
|
if (CHECK_RIG_ARG(rig))
|
||||||
{
|
{
|
||||||
RETURNFUNC2(-RIG_EINVAL);
|
RETURNFUNC2(-RIG_EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rig_get_lock_mode(rig, &locked_mode);
|
||||||
|
if (locked_mode) { return(RIG_OK); }
|
||||||
|
|
||||||
// do not mess with mode while PTT is on
|
// do not mess with mode while PTT is on
|
||||||
if (rig->state.cache.ptt)
|
if (rig->state.cache.ptt)
|
||||||
{
|
{
|
||||||
|
|
|
@ -99,6 +99,8 @@ static int chk_vfo_executed;
|
||||||
char rigctld_password[64];
|
char rigctld_password[64];
|
||||||
int is_passwordOK;
|
int is_passwordOK;
|
||||||
int is_rigctld;
|
int is_rigctld;
|
||||||
|
extern int lock_mode; // used by rigctld
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* variables for readline support */
|
/* variables for readline support */
|
||||||
|
@ -2166,6 +2168,8 @@ declare_proto_rig(set_mode)
|
||||||
|
|
||||||
ENTERFUNC;
|
ENTERFUNC;
|
||||||
|
|
||||||
|
if (rig->state.lock_mode || lock_mode) { RETURNFUNC(RIG_OK); }
|
||||||
|
|
||||||
if (!strcmp(arg1, "?"))
|
if (!strcmp(arg1, "?"))
|
||||||
{
|
{
|
||||||
char s[SPRINTF_MAX_SIZE];
|
char s[SPRINTF_MAX_SIZE];
|
||||||
|
@ -5222,8 +5226,23 @@ declare_proto_rig(get_separator)
|
||||||
declare_proto_rig(set_lock_mode)
|
declare_proto_rig(set_lock_mode)
|
||||||
{
|
{
|
||||||
int lock;
|
int lock;
|
||||||
|
int retval;
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s:\n", __func__);
|
||||||
CHKSCN1ARG(sscanf(arg1, "%d", &lock));
|
CHKSCN1ARG(sscanf(arg1, "%d", &lock));
|
||||||
return (rig_set_lock_mode(rig, lock));
|
|
||||||
|
if (is_rigctld)
|
||||||
|
{
|
||||||
|
rig_debug(RIG_DEBUG_ERR, "%s: rigctld lock\n", __func__);
|
||||||
|
lock_mode = lock;
|
||||||
|
retval = RIG_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rig_debug(RIG_DEBUG_ERR, "%s: rig lock\n", __func__);
|
||||||
|
retval = rig_set_lock_mode(rig, lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* '0xa3' */
|
/* '0xa3' */
|
||||||
|
@ -5232,12 +5251,24 @@ declare_proto_rig(get_lock_mode)
|
||||||
int retval;
|
int retval;
|
||||||
int lock;
|
int lock;
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s:\n", __func__);
|
||||||
|
|
||||||
if ((interactive && prompt) || (interactive && !prompt && ext_resp))
|
if ((interactive && prompt) || (interactive && !prompt && ext_resp))
|
||||||
{
|
{
|
||||||
fprintf(fout, "%s: ", cmd->arg1);
|
fprintf(fout, "%s: ", cmd->arg1);
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = rig_get_lock_mode(rig, &lock);
|
if (is_rigctld)
|
||||||
|
{
|
||||||
|
rig_debug(RIG_DEBUG_ERR, "%s: rigctld lock\n", __func__);
|
||||||
|
lock = lock_mode;
|
||||||
|
retval = RIG_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rig_debug(RIG_DEBUG_ERR, "%s: rig lock\n", __func__);
|
||||||
|
retval = rig_get_lock_mode(rig, &lock);
|
||||||
|
}
|
||||||
|
|
||||||
if (retval != RIG_OK)
|
if (retval != RIG_OK)
|
||||||
{
|
{
|
||||||
|
|
|
@ -152,6 +152,7 @@ const char *multicast_addr = "0.0.0.0";
|
||||||
int multicast_port = 4532;
|
int multicast_port = 4532;
|
||||||
extern char rigctld_password[65];
|
extern char rigctld_password[65];
|
||||||
char resp_sep = '\n';
|
char resp_sep = '\n';
|
||||||
|
extern int lock_mode;
|
||||||
|
|
||||||
#define MAXCONFLEN 1024
|
#define MAXCONFLEN 1024
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue