Fix ID5100 ID4100 ID31 ID51 get/set freq

Remove get_powerstat from ID4100 ID31 ID51 as it they are not capable
Add new rig_is_model function to help with Icom rig identification checks
https://github.com/Hamlib/Hamlib/issues/1202
https://github.com/Hamlib/Hamlib/issues/1200
Hamlib-4.5.4
Mike Black W9MDB 2023-01-02 11:30:52 -06:00
rodzic b22db1cf34
commit 1199dc2b6b
8 zmienionych plików z 48 dodań i 13 usunięć

Wyświetl plik

@ -3427,6 +3427,8 @@ extern HAMLIB_EXPORT(char*) rig_make_md5(char *pass);
extern HAMLIB_EXPORT(int) rig_set_lock_mode(RIG *rig, int lock);
extern HAMLIB_EXPORT(int) rig_get_lock_mode(RIG *rig, int *lock);
extern HAMLIB_EXPORT(int) rig_is_model(RIG *rig, rig_model_t model);
//! @endcond

Wyświetl plik

@ -1324,7 +1324,15 @@ int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
RETURNFUNC2(retval);
}
freq_len = priv->civ_731_mode ? 4 : 5;
if (ICOM_IS_ID5100 || ICOM_IS_ID5100)
{
freq_len = 3;
}
else
{
freq_len = priv->civ_731_mode ? 4 : 5;
}
/*
* to_bcd requires nibble len
*/
@ -1688,7 +1696,11 @@ int icom_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
RETURNFUNC(RIG_OK);
}
if (freq_len != 4 && freq_len != 5)
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__);
}
else if (freq_len != 4 && freq_len != 5)
{
rig_debug(RIG_DEBUG_ERR, "%s: wrong frame len=%d\n",
__func__, freq_len);
@ -1698,7 +1710,7 @@ int icom_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
RETURNFUNC(-RIG_ERJCTED);
}
if (freq_len != (priv->civ_731_mode ? 4 : 5))
if (freq_len != 3 && freq_len != (priv->civ_731_mode ? 4 : 5))
{
rig_debug(RIG_DEBUG_WARN, "%s: freq len (%d) differs from expected\n",
__func__, freq_len);

Wyświetl plik

@ -31,7 +31,12 @@
#include <sys/time.h>
#endif
#define BACKEND_VER "20221120"
#define BACKEND_VER "20230102"
#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_ID4100 rig_is_model(rig, RIG_MODEL_ID4100)
#define ICOM_IS_ID5100 rig_is_model(rig, RIG_MODEL_ID5100)
#define ICOM_IS_SECONDARY_VFO(vfo) ((vfo) & (RIG_VFO_B | RIG_VFO_SUB | RIG_VFO_SUB_B | RIG_VFO_MAIN_B))
#define ICOM_GET_VFO_NUMBER(vfo) (ICOM_IS_SECONDARY_VFO(vfo) ? 0x01 : 0x00)

Wyświetl plik

@ -82,7 +82,7 @@ const struct rig_caps id31_caps =
RIG_MODEL(RIG_MODEL_ID31),
.model_name = "ID-31",
.mfg_name = "Icom",
.version = BACKEND_VER ".0",
.version = BACKEND_VER ".1",
.copyright = "LGPL",
.status = RIG_STATUS_ALPHA,
.rig_type = RIG_TYPE_HANDHELD,
@ -179,7 +179,7 @@ const struct rig_caps id31_caps =
.get_mode = icom_get_mode,
.set_powerstat = icom_set_powerstat,
.get_powerstat = icom_get_powerstat,
// .get_powerstat = icom_get_powerstat, // not capable
.decode_event = icom_decode_event,
.set_func = icom_set_func,

Wyświetl plik

@ -86,9 +86,9 @@ const struct rig_caps id4100_caps =
RIG_MODEL(RIG_MODEL_ID4100),
.model_name = "ID-4100",
.mfg_name = "Icom",
.version = BACKEND_VER ".0",
.version = BACKEND_VER ".1",
.copyright = "LGPL",
.status = RIG_STATUS_ALPHA,
.status = RIG_STATUS_BETA,
.rig_type = RIG_TYPE_MOBILE,
.ptt_type = RIG_PTT_RIG,
.dcd_type = RIG_DCD_RIG,
@ -98,7 +98,7 @@ const struct rig_caps id4100_caps =
.serial_data_bits = 8,
.serial_stop_bits = 1,
.serial_parity = RIG_PARITY_NONE,
.serial_handshake = RIG_HANDSHAKE_NONE,
.serial_handshake = RIG_HANDSHAKE_XONXOFF,
.write_delay = 0,
.post_write_delay = 0,
.timeout = 1000,
@ -187,7 +187,7 @@ const struct rig_caps id4100_caps =
.get_mode = icom_get_mode,
.set_vfo = icom_set_vfo,
.set_powerstat = icom_set_powerstat,
//.set_powerstat = icom_set_powerstat, // ID-4100 does cannot query power
.get_powerstat = icom_get_powerstat,
.decode_event = icom_decode_event,

Wyświetl plik

@ -90,7 +90,7 @@ const struct rig_caps id51_caps =
RIG_MODEL(RIG_MODEL_ID51),
.model_name = "ID-51",
.mfg_name = "Icom",
.version = BACKEND_VER ".0",
.version = BACKEND_VER ".1",
.copyright = "LGPL",
.status = RIG_STATUS_ALPHA,
.rig_type = RIG_TYPE_HANDHELD,
@ -186,7 +186,7 @@ const struct rig_caps id51_caps =
.rig_open = icom_rig_open,
.rig_close = icom_rig_close,
.set_powerstat = icom_set_powerstat,
.get_powerstat = icom_get_powerstat,
// .get_powerstat = icom_get_powerstat, // not capable
.set_freq = icom_set_freq,
.get_freq = icom_get_freq,

Wyświetl plik

@ -7713,3 +7713,15 @@ HAMLIB_EXPORT(int) rig_get_lock_mode(RIG *rig, int *mode)
return (retcode);
}
HAMLIB_EXPORT(int) rig_is_model(RIG *rig, rig_model_t model)
{
int is_rig;
//a bit too verbose so disable this unless needed
//rig_debug(RIG_DEBUG_TRACE, "%s(%d):%s called\n", __FILE__, __LINE__, __func__);
is_rig = (model == rig->caps->rig_model) ? 1 : 0;
return (is_rig); // RETURN is too verbose here
}

Wyświetl plik

@ -14,7 +14,7 @@ endif
DISTCLEANFILES = rigctl.log rigctl.sum testbcd.log testbcd.sum
bin_PROGRAMS = rigctl rigctld rigmem rigsmtr rigswr rotctl rotctld rigctlcom ampctl ampctld $(TESTLIBUSB)
bin_PROGRAMS = rigctl rigctld rigmem rigsmtr rigswr rotctl rotctld rigctlcom rigctltcp ampctl ampctld $(TESTLIBUSB)
#check_PROGRAMS = dumpmem testrig testrigopen testrigcaps testtrn testbcd testfreq listrigs testloc rig_bench testcache cachetest cachetest2 testcookie testgrid testsecurity
check_PROGRAMS = dumpmem testrig testrigopen testrigcaps testtrn testbcd testfreq listrigs testloc rig_bench testcache cachetest cachetest2 testcookie testgrid
@ -26,6 +26,7 @@ AMPCOMMONSRC = ampctl_parse.c ampctl_parse.h dumpcaps_amp.c uthash.h
rigctl_SOURCES = rigctl.c $(RIGCOMMONSRC)
rigctld_SOURCES = rigctld.c $(RIGCOMMONSRC)
rigctlcom_SOURCES = rigctlcom.c $(RIGCOMMONSRC)
rigctltcp_SOURCES = rigctltcp.c $(RIGCOMMONSRC)
rotctl_SOURCES = rotctl.c $(ROTCOMMONSRC)
rotctld_SOURCES = rotctld.c $(ROTCOMMONSRC)
ampctl_SOURCES = ampctl.c $(AMPCOMMONSRC)
@ -50,6 +51,7 @@ rotctld_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -I$(top_builddir)/src
ampctl_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -I$(top_builddir)/src
ampctld_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -I$(top_builddir)/src
rigctlcom_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -I$(top_builddir)/security
rigctltcp_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -I$(top_builddir)/security
if HAVE_LIBUSB
rigtestlibusb_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) $(LIBUSB_CFLAGS)
endif
@ -63,6 +65,7 @@ ampctl_LDADD = $(PTHREAD_LIBS) $(LDADD) $(READLINE_LIBS)
ampctld_LDADD = $(NET_LIBS) $(PTHREAD_LIBS) $(LDADD) $(READLINE_LIBS)
rigmem_LDADD = $(LIBXML2_LIBS) $(LDADD)
rigctlcom_LDADD = $(NET_LIBS) $(PTHREAD_LIBS) $(LDADD) $(READLINE_LIBS)
rigctltcp_LDADD = $(NET_LIBS) $(PTHREAD_LIBS) $(LDADD) $(READLINE_LIBS)
if HAVE_LIBUSB
rigtestlibusb_LDADD = $(LIBUSB_LIBS)
endif
@ -78,6 +81,7 @@ rigctld_LDFLAGS = $(WINEXELDFLAGS)
rotctld_LDFLAGS = $(WINEXELDFLAGS)
ampctld_LDFLAGS = $(WINEXELDFLAGS)
rigctlcom_LDFLAGS = $(WINEXELDFLAGS)
rigctltcp_LDFLAGS = $(WINEXELDFLAGS)
if HAVE_LIBUSB
rigtestlibusb_LDFLAGS = $(WINEXELDFLAGS)
endif