[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. 5c00d46cc3a2ec75e4773
Library to control radio transceivers and receivers
Brought to you by:
n0nb
|
From: Michael B. <mdb...@us...> - 2021-08-30 13:47:12
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Hamlib -- Ham radio control libraries".
The branch, master has been updated
via 5c00d46cc3a2ec75e4773343c27f58b748a23958 (commit)
via f65022b4caf1db9b8218710918fdcba4f35cef05 (commit)
via 118dcbb35f4ba0b3fb97eae84001eb519b645d43 (commit)
via 53b67d24ec2730516dff5b5670d2afafdcb39243 (commit)
via dc47740c400c120852c09c4e43e8c66712d01a9b (commit)
from a0672e4f7e600f4ad9b887c11880baa6e9ab4052 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 5c00d46cc3a2ec75e4773343c27f58b748a23958
Merge: f65022b4 118dcbb3
Author: Mike Black W9MDB <mdb...@ya...>
Date: Mon Aug 30 08:46:55 2021 -0500
Merge branch 'master' of https://github.com/Hamlib/Hamlib
commit f65022b4caf1db9b8218710918fdcba4f35cef05
Author: Mike Black W9MDB <mdb...@ya...>
Date: Mon Aug 30 08:45:56 2021 -0500
If set_split_freq_mode is called when split=off we'll turn on split based on current vfo selection
https://github.com/Hamlib/Hamlib/issues/764
diff --git a/src/rig.c b/src/rig.c
index dce1adc0..dba18783 100644
--- a/src/rig.c
+++ b/src/rig.c
@@ -4369,6 +4369,19 @@ int HAMLIB_API rig_set_split_freq_mode(RIG *rig,
caps = rig->caps;
+ // if split is off we'll turn it on
+ if (rig->state.cache.split == 0)
+ {
+ if (rig->state.current_vfo & (RIG_VFO_A | RIG_VFO_MAIN))
+ {
+ rig_set_split_vfo(rig, RIG_VFO_A, 1, RIG_VFO_B);
+ }
+ else
+ {
+ rig_set_split_vfo(rig, RIG_VFO_B, 1, RIG_VFO_A);
+ }
+ }
+
vfo = vfo_fixup(rig, RIG_VFO_TX, rig->state.cache.split); // get the TX VFO
rig_debug(RIG_DEBUG_VERBOSE,
"%s: vfo=%s, tx_freq=%.0f, tx_mode=%s, tx_width=%d\n", __func__,
commit 118dcbb35f4ba0b3fb97eae84001eb519b645d43
Merge: a0672e4f dc47740c
Author: Michael Black <mdb...@ya...>
Date: Mon Aug 30 08:25:26 2021 -0500
Merge pull request #779 from cjritola/fcdppAug2021
Map FCDPP LNA and Mixer Gain as PREAMP values. Closes #766
commit 53b67d24ec2730516dff5b5670d2afafdcb39243
Author: Mike Black W9MDB <mdb...@ya...>
Date: Sun Aug 29 23:32:29 2021 -0500
Fix Startup information in rigctl and rigctld
diff --git a/tests/rigctl.c b/tests/rigctl.c
index 6e027faf..58a2b6b0 100644
--- a/tests/rigctl.c
+++ b/tests/rigctl.c
@@ -154,6 +154,7 @@ int main(int argc, char *argv[])
int ext_resp = 0;
char resp_sep = '\n';
int i;
+ char rigstartup[1024];
while (1)
{
@@ -440,11 +441,11 @@ int main(int argc, char *argv[])
rig_set_debug(verbose);
- rig_debug(RIG_DEBUG_VERBOSE, "%s(%d) Startup:", __FILE__, __LINE__);
+ snprintf(rigstartup, sizeof(rigstartup), "%s(%d) Startup:", __FILE__, __LINE__);
- for (i = 0; i < argc; ++i) { rig_debug(RIG_DEBUG_VERBOSE, " %s", argv[i]); }
+ for (i = 0; i < argc; ++i) { strcat(rigstartup, " "); strcat(rigstartup, argv[i]); }
- rig_debug(RIG_DEBUG_VERBOSE, "%s", "\n");
+ rig_debug(RIG_DEBUG_VERBOSE, "%s\n", rigstartup);
rig_debug(RIG_DEBUG_VERBOSE, "rigctl %s\n", hamlib_version2);
diff --git a/tests/rigctld.c b/tests/rigctld.c
index 508ae8cd..854227e0 100644
--- a/tests/rigctld.c
+++ b/tests/rigctld.c
@@ -257,6 +257,7 @@ int main(int argc, char *argv[])
int uplink = 0;
char host[NI_MAXHOST];
char serv[NI_MAXSERV];
+ char rigstartup[1024];
#if HAVE_SIGACTION
struct sigaction act;
#endif
@@ -577,12 +578,11 @@ int main(int argc, char *argv[])
rig_set_debug(verbose);
- rig_debug(RIG_DEBUG_VERBOSE, "%s(%d) Startup:", __FILE__, __LINE__);
+ snprintf(rigstartup, sizeof(rigstartup), "%s(%d) Startup:", __FILE__, __LINE__);
- for (i = 0; i < argc; ++i) { rig_debug(RIG_DEBUG_VERBOSE, " %s", argv[i]); }
-
- rig_debug(RIG_DEBUG_VERBOSE, "%s", "\n");
+ for (i = 0; i < argc; ++i) { strcat(rigstartup, " "); strcat(rigstartup, argv[i]); }
+ rig_debug(RIG_DEBUG_VERBOSE, "%s\n", rigstartup);
rig_debug(RIG_DEBUG_VERBOSE, "rigctld %s\n", hamlib_version2);
rig_debug(RIG_DEBUG_VERBOSE, "%s",
commit dc47740c400c120852c09c4e43e8c66712d01a9b
Author: Chuck Ritola <cjr...@gm...>
Date: Mon Aug 30 00:18:42 2021 -0400
Map FCDPP LNA and Mixer Gain as PREAMP values. Closes #766
diff --git a/rigs/kit/funcube.c b/rigs/kit/funcube.c
index 1402471f..b79b5f72 100644
--- a/rigs/kit/funcube.c
+++ b/rigs/kit/funcube.c
@@ -36,10 +36,11 @@
#include <math.h>
#include "hamlib/rig.h"
#include "token.h"
+#include "misc.h"
#include "kit.h"
-#define BACKEND_VER "20200112"
+#define BACKEND_VER "20210830"
/*
* Compile this model only if libusb is available
@@ -56,6 +57,8 @@
#include "funcube.h"
+static int funcube_hid_cmd(RIG *rig, unsigned char *au8BufOut, unsigned char *au8BufIn, int inputSize);
+
static int funcube_init(RIG *rig);
static int funcubeplus_init(RIG *rig);
static int funcube_cleanup(RIG *rig);
@@ -180,23 +183,17 @@ const struct rig_caps funcubeplus_caps =
.has_get_func = RIG_FUNC_NONE,
.has_set_func = RIG_FUNC_NONE,
- .has_get_level = RIG_LEVEL_ATT | RIG_LEVEL_PREAMP | RIG_LEVEL_RF, // RIG_LEVEL_ATT: Mixer gain on/off
- // RIG_LEVEL_PREAMP: LNA gain on/off
+ .has_get_level = RIG_LEVEL_PREAMP | RIG_LEVEL_RF,
+ // RIG_LEVEL_PREAMP: 10dB=LNAon MixGainOff. 20dB=LNAoff, MixGainOn. 30dB=LNAOn, MixGainOn
// RIG_LEVEL_RF 0..1 : IF gain 0 .. 59 dB
-
-
- .has_set_level = RIG_LEVEL_ATT | RIG_LEVEL_PREAMP | RIG_LEVEL_RF, // RIG_LEVEL_ATT: Mixer gain on/off
- // RIG_LEVEL_PREAMP: LNA gain on/off
- // RIG_LEVEL_RF 0..1 : IF gain 0 .. 59 dB
- // so values have to be mapped
+ .has_set_level = RIG_LEVEL_PREAMP | RIG_LEVEL_RF,
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE,
.level_gran = {},
.parm_gran = {},
.ctcss_list = NULL,
.dcs_list = NULL,
- //.preamp = { 5, 10, 15, 20, 25, 30, RIG_DBLST_END, },
- //.attenuator = { 0, 1, 2, RIG_DBLST_END, },
+ .preamp = { 10, 20, 30, RIG_DBLST_END, },
.max_rit = Hz(0),
.max_xit = Hz(0),
.max_ifshift = Hz(0),
@@ -638,6 +635,7 @@ int funcube_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
return RIG_OK;
}
+
int funcube_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
{
libusb_device_handle *udh = rig->state.rigport.handle;
@@ -761,44 +759,12 @@ int funcube_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
return RIG_OK;
}
-int funcubepro_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
+
+int funcube_hid_cmd(RIG *rig, unsigned char *au8BufOut, unsigned char *au8BufIn, int inputSize)
{
libusb_device_handle *udh = rig->state.rigport.handle;
int ret;
int actual_length;
- unsigned char au8BufOut[64] = { 0 }; // endpoint size
- unsigned char au8BufIn[64] = { 0 }; // endpoint size
-
- switch (level)
- {
- case RIG_LEVEL_PREAMP:
- au8BufOut[0] = REQUEST_SET_LNA_GAIN; // Command to set LNA gain
- au8BufOut[1] = val.i & 0x1;
- break;
-
- case RIG_LEVEL_ATT:
- au8BufOut[0] = REQUEST_SET_MIXER_GAIN; // Command to Mixer gain
- au8BufOut[1] = val.i & 0x1;
- break;
-
- case RIG_LEVEL_RF:
- au8BufOut[0] = REQUEST_SET_IF_GAIN; // Command to set IF gain
- au8BufOut[1] = (int)(val.f * 100) ;
-
- if (au8BufOut[1] > 59)
- {
- au8BufOut[1] = 59;
- }
-
- break;
-
-
- default:
- rig_debug(RIG_DEBUG_ERR, "%s: unsupported level %s\n", __func__,
- rig_strlevel(level));
- return -RIG_EINVAL;
- }
-
rig_debug(RIG_DEBUG_TRACE, "%s: HID packet set to %02x%02x%02x%02x\n",
__func__, au8BufOut[0] & 0xFF, au8BufOut[1] & 0xFF, au8BufOut[2] & 0xFF,
au8BufOut[3] & 0xFF);
@@ -813,10 +779,10 @@ int funcubepro_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
libusb_error_name(ret));
}
- ret = libusb_interrupt_transfer(udh, INPUT_ENDPOINT, au8BufIn, sizeof(au8BufIn),
+ ret = libusb_interrupt_transfer(udh, INPUT_ENDPOINT, au8BufIn, inputSize,
&actual_length, rig->state.rigport.timeout);
- if (ret < 0 || actual_length != sizeof(au8BufIn))
+ if (ret < 0 || actual_length != inputSize)
{
rig_debug(RIG_DEBUG_ERR, "%s: libusb_interrupt_transfer failed (%d): %s\n",
__func__, ret,
@@ -828,85 +794,140 @@ int funcubepro_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
if (au8BufIn[1] != FUNCUBE_SUCCESS)
{
- rig_debug(RIG_DEBUG_ERR, "%s: REQUEST_GET_FREQ_HZ not supported\n",
- __func__);
+ rig_debug(RIG_DEBUG_ERR, "%s: failed to perform FUNCube HID command %d.\n",
+ __func__, au8BufOut[0]);
return -RIG_EIO;
}
return RIG_OK;
}
-int funcubepro_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
+
+int funcubepro_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{
- libusb_device_handle *udh = rig->state.rigport.handle;
+ ENTERFUNC;
int ret;
- int actual_length;
unsigned char au8BufOut[64] = { 0 }; // endpoint size
unsigned char au8BufIn[64] = { 0 }; // endpoint size
switch (level)
{
- case RIG_LEVEL_ATT:
- au8BufOut[0] = REQUEST_GET_MIXER_GAIN; // Command to Mixer gain enabled
- break;
-
case RIG_LEVEL_PREAMP:
- au8BufOut[0] = REQUEST_GET_LNA_GAIN; // Command to get LNA gain enabled
- break;
+ rig_debug(RIG_DEBUG_TRACE, "%s: Setting PREAMP state to %d.\n",
+ __func__, val.i);
+ au8BufOut[0] = REQUEST_SET_LNA_GAIN; // Command to set LNA gain
+
+ if( val.i == 10 || val.i == 30 )
+ {
+ au8BufOut[1] = 1;
+ }
+ else
+ {
+ au8BufOut[1] = 0;
+ }
+
+ ret = funcube_hid_cmd(rig, au8BufOut, au8BufIn, sizeof(au8BufIn));
+
+ if( ret < 0 )
+ {
+ return ret;
+ }
+
+ au8BufOut[0] = REQUEST_SET_MIXER_GAIN; // Set mixer gain
+
+ if( val.i == 20 || val.i == 30 )
+ {
+ au8BufOut[1] = 1;
+ }
+ else
+ {
+ au8BufOut[1] = 0;
+ }
+
+ return funcube_hid_cmd(rig, au8BufOut, au8BufIn, sizeof(au8BufIn));
case RIG_LEVEL_RF:
- au8BufOut[0] = REQUEST_GET_IF_GAIN;
- break;
+ au8BufOut[0] = REQUEST_SET_IF_GAIN; // Command to set IF gain
+ au8BufOut[1] = (int)(val.f * 100) ;
+
+ if (au8BufOut[1] > 59)
+ {
+ au8BufOut[1] = 59;
+ }
+
+ return funcube_hid_cmd(rig, au8BufOut, au8BufIn, sizeof(au8BufIn));
default:
rig_debug(RIG_DEBUG_ERR, "%s: unsupported level %s\n", __func__,
rig_strlevel(level));
return -RIG_EINVAL;
}
+}
- rig_debug(RIG_DEBUG_TRACE, "%s: HID packet set to %02x%02x%02x%02x\n",
- __func__, au8BufOut[0] & 0xFF, au8BufOut[1] & 0xFF, au8BufOut[2] & 0xFF,
- au8BufOut[3] & 0xFF);
-
- ret = libusb_interrupt_transfer(udh, OUTPUT_ENDPOINT, au8BufOut,
- sizeof(au8BufOut), &actual_length, rig->state.rigport.timeout);
+int funcubepro_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
+{
+ ENTERFUNC;
+ int ret;
+ int gain_state;
+ unsigned char au8BufOut[64] = { 0 }; // endpoint size
+ unsigned char au8BufIn[64] = { 0 }; // endpoint size
- if (ret < 0)
+ switch (level)
{
- rig_debug(RIG_DEBUG_ERR, "%s: libusb_interrupt_transfer failed (%d): %s\n",
- __func__, ret,
- libusb_error_name(ret));
- }
- ret = libusb_interrupt_transfer(udh, INPUT_ENDPOINT, au8BufIn, sizeof(au8BufIn),
- &actual_length, rig->state.rigport.timeout);
+ case RIG_LEVEL_PREAMP:
+ au8BufOut[0] = REQUEST_GET_MIXER_GAIN; // Command to get mixer gain enabled
+ ret = funcube_hid_cmd(rig, au8BufOut, au8BufIn, sizeof(au8BufIn));
- if (ret < 0 || actual_length != sizeof(au8BufIn))
- {
- rig_debug(RIG_DEBUG_ERR, "%s: libusb_interrupt_transfer failed (%d): %s\n",
- __func__, ret,
- libusb_error_name(ret));
- }
+ if( ret < 0 )
+ {
+ return ret;
+ }
- rig_debug(RIG_DEBUG_TRACE, "%s: Answer buf=%02x%02x%02x\n",
- __func__, au8BufIn[0] & 0xFF, au8BufIn[1] & 0xFF, au8BufIn[2] & 0xFF);
+ rig_debug(RIG_DEBUG_TRACE, "%s: Mixer gain state returned %d.\n",
+ __func__, au8BufIn[2] & 0xFF);
- if (au8BufIn[1] != FUNCUBE_SUCCESS)
- {
- rig_debug(RIG_DEBUG_ERR, "%s: REQUEST_LEVEL_x failed\n",
- __func__);
- return -RIG_EIO;
- }
+ gain_state = au8BufIn[2] & 0x1;
- switch (level)
- {
- case RIG_LEVEL_PREAMP:
- case RIG_LEVEL_ATT:
- val->i = au8BufIn[2] & 0x01;
- break;
+ au8BufOut[0] = REQUEST_GET_LNA_GAIN; // Command to get LNA gain enabled
+
+ ret = funcube_hid_cmd(rig, au8BufOut, au8BufIn, sizeof(au8BufIn));
+
+ if( ret < 0 )
+ {
+ return ret;
+ }
+
+ rig_debug(RIG_DEBUG_TRACE, "%s: LNA gain state returned %d.\n",
+ __func__, au8BufIn[2] & 0xFF);
+
+ //Mixer gain is 20dB 0x2
+ gain_state *= 2;
+
+ //Add the LNA gain if present (10dB) 0x1
+ gain_state += ( au8BufIn[2] & 0x1 );
+
+ //Scale it to tens 1->10dB 2->20dB 3->30dB
+ gain_state *= 10;
+
+ rig_debug(RIG_DEBUG_TRACE, "%s: Calculated gain state is %d.\n",
+ __func__, gain_state);
+
+ if( gain_state > 30 || gain_state < 0 || gain_state % 10 != 0)
+ {
+ rig_debug(RIG_DEBUG_ERR, "%s: unrecognized composite gain: %d\n", __func__,
+ gain_state);
+ return -RIG_EINVAL;
+ }
+
+ val->i = gain_state;
+
+ return RIG_OK;
case RIG_LEVEL_RF:
+ au8BufOut[0] = REQUEST_GET_IF_GAIN;
+ ret = funcube_hid_cmd(rig, au8BufOut, au8BufIn, sizeof(au8BufIn));
val->f = ((float)au8BufIn[2]) / 100.;
- break;
+ return ret;
default:
rig_debug(RIG_DEBUG_ERR, "%s: unsupported level %s\n", __func__,
-----------------------------------------------------------------------
Summary of changes:
rigs/kit/funcube.c | 209 +++++++++++++++++++++++++++++------------------------
src/rig.c | 13 ++++
tests/rigctl.c | 7 +-
tests/rigctld.c | 8 +-
4 files changed, 136 insertions(+), 101 deletions(-)
hooks/post-receive
--
Hamlib -- Ham radio control libraries
|