Another attempt to fix get/set freq for ID5100 ID4100 ID31 ID51

https://github.com/Hamlib/Hamlib/issues/1202
https://github.com/Hamlib/Hamlib/issues/1200
pull/1215/head
Mike Black W9MDB 2023-01-03 12:17:16 -06:00
rodzic 4c09344f32
commit 1b6b78f54a
2 zmienionych plików z 13 dodań i 5 usunięć

Wyświetl plik

@ -1324,9 +1324,9 @@ int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
RETURNFUNC2(retval); RETURNFUNC2(retval);
} }
if (ICOM_IS_ID5100 || ICOM_IS_ID5100) if (ICOM_IS_ID5100 || ICOM_IS_ID4100 || ICOM_IS_ID31 || ICOM_IS_ID51)
{ {
freq_len = 3; freq_len = 5;
} }
else else
{ {
@ -1370,6 +1370,13 @@ int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
else else
{ {
cmd = C_SET_FREQ; cmd = C_SET_FREQ;
if (ICOM_IS_ID5100 || ICOM_IS_ID4100 || ICOM_IS_ID31 || ICOM_IS_ID51)
{
// for these rigs 0x00 is setting the freq and 0x03 is just for reading
cmd = 0x00;
}
subcmd = -1; subcmd = -1;
retval = icom_transaction(rig, cmd, subcmd, freqbuf, freq_len, ackbuf, retval = icom_transaction(rig, cmd, subcmd, freqbuf, freq_len, ackbuf,
&ack_len); &ack_len);
@ -1696,7 +1703,8 @@ int icom_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
RETURNFUNC(RIG_OK); RETURNFUNC(RIG_OK);
} }
if (freq_len == 3 && (ICOM_IS_ID5100 || ICOM_IS_ID4100 || ICOM_IS_ID31 || ICOM_IS_ID51)) if (freq_len == 3 && (ICOM_IS_ID5100 || ICOM_IS_ID4100 || ICOM_IS_ID31
|| ICOM_IS_ID51))
{ {
rig_debug(RIG_DEBUG_TRACE, "%s: 3-byte ID5100/4100 length\n", __func__); rig_debug(RIG_DEBUG_TRACE, "%s: 3-byte ID5100/4100 length\n", __func__);
} }
@ -1721,7 +1729,7 @@ int icom_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
*/ */
*freq = from_bcd(freqbuf + freqbuf_offset, freq_len * 2); *freq = from_bcd(freqbuf + freqbuf_offset, freq_len * 2);
if (freq_len == 3) *freq *= 1000; // 3-byte freq is in KHz so convert to Hz if (freq_len == 3) { *freq *= 100; } // 3-byte freq for ID5100 is in 100Hz units so convert to Hz
if (vfo == RIG_VFO_MEM && civ_731_mode) { priv->civ_731_mode = 1; } if (vfo == RIG_VFO_MEM && civ_731_mode) { priv->civ_731_mode = 1; }

Wyświetl plik

@ -31,7 +31,7 @@
#include <sys/time.h> #include <sys/time.h>
#endif #endif
#define BACKEND_VER "20230102" #define BACKEND_VER "20230103"
#define ICOM_IS_ID31 rig_is_model(rig, RIG_MODEL_ID31) #define ICOM_IS_ID31 rig_is_model(rig, RIG_MODEL_ID31)
#define ICOM_IS_ID51 rig_is_model(rig, RIG_MODEL_ID51) #define ICOM_IS_ID51 rig_is_model(rig, RIG_MODEL_ID51)