From 096b6f0f4b4227c8d7044b28fb6b5ec7e4deb281 Mon Sep 17 00:00:00 2001 From: "Mark J. Fine" Date: Sat, 19 Jul 2025 06:32:05 -0400 Subject: [PATCH 1/9] Adds 'dummy' rig that talks to GQRX --- bindings/python/test_Hamlib_class.py | 2 +- include/hamlib/rig.h | 2 +- include/hamlib/riglist.h | 1 + rigs/dummy/Android.mk | 2 +- rigs/dummy/Makefile.am | 2 +- rigs/dummy/dummy.c | 1 + rigs/dummy/dummy.h | 1 + 7 files changed, 7 insertions(+), 4 deletions(-) diff --git a/bindings/python/test_Hamlib_class.py b/bindings/python/test_Hamlib_class.py index 76a2623db..044208911 100755 --- a/bindings/python/test_Hamlib_class.py +++ b/bindings/python/test_Hamlib_class.py @@ -21,7 +21,7 @@ class TestClass: def test_properties(self): """Check that nothing was added or removed""" - expected_properties = ['AMP_FLAG_1', 'AMP_FLAG_2', 'AMP_LEVEL_FAULT', 'AMP_LEVEL_NH', 'AMP_LEVEL_NONE', 'AMP_LEVEL_PF', 'AMP_LEVEL_PWR', 'AMP_LEVEL_PWR_FWD', 'AMP_LEVEL_PWR_INPUT', 'AMP_LEVEL_PWR_PEAK', 'AMP_LEVEL_PWR_REFLECTED', 'AMP_LEVEL_SWR', 'AMP_MODEL_DUMMY', 'AMP_MODEL_ELECRAFT_KPA1500', 'AMP_MODEL_EXPERT_FA', 'AMP_MODEL_GEMINI_DX1200', 'AMP_MODEL_NETAMPCTL', 'AMP_MODEL_NONE', 'AMP_RESET_AMP', 'AMP_RESET_FAULT', 'AMP_RESET_MEM', 'AMP_TYPE_OTHER', 'BUILTINFUNC', 'CTCSS_LIST_SIZE', 'DCS_LIST_SIZE', 'DEBUGMSGSAVE_SIZE', 'GPIO1', 'GPIO2', 'GPIO3', 'GPIO4', 'HAMLIB_CACHE_ALL', 'HAMLIB_CACHE_ALWAYS', 'HAMLIB_CACHE_FREQ', 'HAMLIB_CACHE_MODE', 'HAMLIB_CACHE_PTT', 'HAMLIB_CACHE_SPLIT', 'HAMLIB_CACHE_VFO', 'HAMLIB_CACHE_WIDTH', 'HAMLIB_CHANLSTSIZ', 'HAMLIB_CHECK_RIG_CAPS', 'HAMLIB_COOKIE_SIZE', 'HAMLIB_ELAPSED_GET', 'HAMLIB_ELAPSED_INVALIDATE', 'HAMLIB_ELAPSED_SET', 'HAMLIB_FIFO_SIZE', 'HAMLIB_FILPATHLEN', 'HAMLIB_FLTLSTSIZ', 'HAMLIB_FRQRANGESIZ', 'HAMLIB_MAXCHANDESC', 'HAMLIB_MAXDBLSTSIZ', 'HAMLIB_MAX_AGC_LEVELS', 'HAMLIB_MAX_CAL_LENGTH', 'HAMLIB_MAX_MODES', 'HAMLIB_MAX_ROTORS', 'HAMLIB_MAX_RSCANS', 'HAMLIB_MAX_SNAPSHOT_PACKET_SIZE', 'HAMLIB_MAX_SPECTRUM_AVG_MODES', 'HAMLIB_MAX_SPECTRUM_DATA', 'HAMLIB_MAX_SPECTRUM_MODES', 'HAMLIB_MAX_SPECTRUM_SCOPES', 'HAMLIB_MAX_SPECTRUM_SPANS', 'HAMLIB_MAX_VFOS', 'HAMLIB_MAX_VFO_OPS', 'HAMLIB_RIGNAMSIZ', 'HAMLIB_RIGVERSIZ', 'HAMLIB_SECRET_LENGTH', 'HAMLIB_SETTINGS_FILE', 'HAMLIB_TSLSTSIZ', 'MAX_MODELS_PER_BACKEND', 'NETAMPCTL_RET', 'NETRIGCTL_RET', 'NETROTCTL_RET', 'RIG_AGC_AUTO', 'RIG_AGC_FAST', 'RIG_AGC_LAST', 'RIG_AGC_LONG', 'RIG_AGC_MEDIUM', 'RIG_AGC_NONE', 'RIG_AGC_OFF', 'RIG_AGC_ON', 'RIG_AGC_SLOW', 'RIG_AGC_SUPERFAST', 'RIG_AGC_USER', 'RIG_ANN_CW', 'RIG_ANN_ENG', 'RIG_ANN_FREQ', 'RIG_ANN_JAP', 'RIG_ANN_NONE', 'RIG_ANN_OFF', 'RIG_ANN_RXMODE', 'RIG_ANT_MAX', 'RIG_ANT_NONE', 'RIG_BANDSELECT_10M', 'RIG_BANDSELECT_12M', 'RIG_BANDSELECT_13CM', 'RIG_BANDSELECT_15M', 'RIG_BANDSELECT_160M', 'RIG_BANDSELECT_17M', 'RIG_BANDSELECT_1_25M', 'RIG_BANDSELECT_20M', 'RIG_BANDSELECT_2200M', 'RIG_BANDSELECT_23CM', 'RIG_BANDSELECT_2M', 'RIG_BANDSELECT_30M', 'RIG_BANDSELECT_33CM', 'RIG_BANDSELECT_3CM', 'RIG_BANDSELECT_40M', 'RIG_BANDSELECT_4M', 'RIG_BANDSELECT_5CM', 'RIG_BANDSELECT_600M', 'RIG_BANDSELECT_60M', 'RIG_BANDSELECT_6M', 'RIG_BANDSELECT_70CM', 'RIG_BANDSELECT_80M', 'RIG_BANDSELECT_9CM', 'RIG_BANDSELECT_AIR', 'RIG_BANDSELECT_GEN', 'RIG_BANDSELECT_MW', 'RIG_BANDSELECT_UNUSED', 'RIG_BANDSELECT_WFM', 'RIG_BAND_10M', 'RIG_BAND_12M', 'RIG_BAND_144MHZ', 'RIG_BAND_15M', 'RIG_BAND_160M', 'RIG_BAND_17M', 'RIG_BAND_20M', 'RIG_BAND_30M', 'RIG_BAND_40M', 'RIG_BAND_430MHZ', 'RIG_BAND_60M', 'RIG_BAND_6M', 'RIG_BAND_80M', 'RIG_BAND_AIR', 'RIG_BAND_GEN', 'RIG_BAND_MW', 'RIG_BAND_UNUSED', 'RIG_BUSBUSY', 'RIG_BUSERROR', 'RIG_CAPS_HAS_GET_LEVEL', 'RIG_CAPS_HAS_SET_LEVEL', 'RIG_CAPS_MFG_NAME_CPTR', 'RIG_CAPS_MODEL_NAME_CPTR', 'RIG_CAPS_PORT_TYPE', 'RIG_CAPS_PTT_TYPE', 'RIG_CAPS_RIG_MODEL', 'RIG_CAPS_STATUS_CPTR', 'RIG_CAPS_TARGETABLE_VFO', 'RIG_CAPS_VERSION_CPTR', 'RIG_CHFLAG_DATA', 'RIG_CHFLAG_NONE', 'RIG_CHFLAG_PSKIP', 'RIG_CHFLAG_SKIP', 'RIG_CLIENT_GPREDICT', 'RIG_CLIENT_UNKNOWN', 'RIG_CLIENT_WSJTX', 'RIG_COMM_STATUS_CONNECTING', 'RIG_COMM_STATUS_DISCONNECTED', 'RIG_COMM_STATUS_ERROR', 'RIG_COMM_STATUS_OK', 'RIG_COMM_STATUS_TERMINATED', 'RIG_COMM_STATUS_WARNING', 'RIG_CONF_BINARY', 'RIG_CONF_BUTTON', 'RIG_CONF_CHECKBUTTON', 'RIG_CONF_COMBO', 'RIG_CONF_END', 'RIG_CONF_INT', 'RIG_CONF_NUMERIC', 'RIG_CONF_STRING', 'RIG_COOKIE_GET', 'RIG_COOKIE_RELEASE', 'RIG_COOKIE_RENEW', 'RIG_DCD_CM108', 'RIG_DCD_GPIO', 'RIG_DCD_GPION', 'RIG_DCD_NONE', 'RIG_DCD_OFF', 'RIG_DCD_ON', 'RIG_DCD_PARALLEL', 'RIG_DCD_RIG', 'RIG_DCD_SERIAL_CAR', 'RIG_DCD_SERIAL_CTS', 'RIG_DCD_SERIAL_DSR', 'RIG_DEBUG_BUG', 'RIG_DEBUG_CACHE', 'RIG_DEBUG_ERR', 'RIG_DEBUG_NONE', 'RIG_DEBUG_TRACE', 'RIG_DEBUG_VERBOSE', 'RIG_DEBUG_WARN', 'RIG_EACCESS', 'RIG_EARG', 'RIG_ECONF', 'RIG_EDEPRECATED', 'RIG_EDOM', 'RIG_EEND', 'RIG_EINTERNAL', 'RIG_EINVAL', 'RIG_EIO', 'RIG_ELIMIT', 'RIG_ENAVAIL', 'RIG_ENIMPL', 'RIG_ENOMEM', 'RIG_ENTARGET', 'RIG_EPOWER', 'RIG_EPROTO', 'RIG_ERJCTED', 'RIG_ESECURITY', 'RIG_ETIMEOUT', 'RIG_ETRUNC', 'RIG_EVFO', 'RIG_FLAG_APRS', 'RIG_FLAG_COMPUTER', 'RIG_FLAG_DXCLUSTER', 'RIG_FLAG_HANDHELD', 'RIG_FLAG_MOBILE', 'RIG_FLAG_RECEIVER', 'RIG_FLAG_SCANNER', 'RIG_FLAG_TNC', 'RIG_FLAG_TRANSMITTER', 'RIG_FLAG_TRUNKING', 'RIG_FLAG_TUNER', 'RIG_FLT_ANY', 'RIG_FUNCTION_CLEANUP', 'RIG_FUNCTION_CLOSE', 'RIG_FUNCTION_DECODE_EVENT', 'RIG_FUNCTION_GET_ANT', 'RIG_FUNCTION_GET_CHANNEL', 'RIG_FUNCTION_GET_CHAN_ALL_CB', 'RIG_FUNCTION_GET_CONF', 'RIG_FUNCTION_GET_CONF2', 'RIG_FUNCTION_GET_CTCSS_SQL', 'RIG_FUNCTION_GET_CTCSS_TONE', 'RIG_FUNCTION_GET_DCD', 'RIG_FUNCTION_GET_DCS_CODE', 'RIG_FUNCTION_GET_DCS_SQL', 'RIG_FUNCTION_GET_EXT_FUNC', 'RIG_FUNCTION_GET_EXT_LEVEL', 'RIG_FUNCTION_GET_EXT_PARM', 'RIG_FUNCTION_GET_FREQ', 'RIG_FUNCTION_GET_FUNC', 'RIG_FUNCTION_GET_INFO', 'RIG_FUNCTION_GET_LEVEL', 'RIG_FUNCTION_GET_MEM', 'RIG_FUNCTION_GET_MEM_ALL_CB', 'RIG_FUNCTION_GET_MODE', 'RIG_FUNCTION_GET_PARM', 'RIG_FUNCTION_GET_POWERSTAT', 'RIG_FUNCTION_GET_PTT', 'RIG_FUNCTION_GET_RIT', 'RIG_FUNCTION_GET_RPTR_OFFS', 'RIG_FUNCTION_GET_RPTR_SHIFT', 'RIG_FUNCTION_GET_SPLIT_FREQ', 'RIG_FUNCTION_GET_SPLIT_FREQ_MODE', 'RIG_FUNCTION_GET_SPLIT_VFO', 'RIG_FUNCTION_GET_TONE', 'RIG_FUNCTION_GET_TONE_SQL', 'RIG_FUNCTION_GET_TRN', 'RIG_FUNCTION_GET_TS', 'RIG_FUNCTION_GET_VFO', 'RIG_FUNCTION_GET_XIT', 'RIG_FUNCTION_INIT', 'RIG_FUNCTION_IS_ASYNC_FRAME', 'RIG_FUNCTION_MW2POWER', 'RIG_FUNCTION_OPEN', 'RIG_FUNCTION_POWER2MW', 'RIG_FUNCTION_PROCESS_ASYNC_FRAME', 'RIG_FUNCTION_READ_FRAME_DIRECT', 'RIG_FUNCTION_RESET', 'RIG_FUNCTION_SCAN', 'RIG_FUNCTION_SEND_DTMF', 'RIG_FUNCTION_SEND_MORSE', 'RIG_FUNCTION_SEND_VOICE_MEM', 'RIG_FUNCTION_SET_ANT', 'RIG_FUNCTION_SET_BANK', 'RIG_FUNCTION_SET_CHANNEL', 'RIG_FUNCTION_SET_CHAN_ALL_CB', 'RIG_FUNCTION_SET_CONF', 'RIG_FUNCTION_SET_CTCSS_SQL', 'RIG_FUNCTION_SET_CTCSS_TONE', 'RIG_FUNCTION_SET_DCS_CODE', 'RIG_FUNCTION_SET_DCS_SQL', 'RIG_FUNCTION_SET_EXT_FUNC', 'RIG_FUNCTION_SET_EXT_LEVEL', 'RIG_FUNCTION_SET_EXT_PARM', 'RIG_FUNCTION_SET_FREQ', 'RIG_FUNCTION_SET_FUNC', 'RIG_FUNCTION_SET_LEVEL', 'RIG_FUNCTION_SET_MEM', 'RIG_FUNCTION_SET_MEM_ALL_CB', 'RIG_FUNCTION_SET_MODE', 'RIG_FUNCTION_SET_PARM', 'RIG_FUNCTION_SET_POWERSTAT', 'RIG_FUNCTION_SET_PTT', 'RIG_FUNCTION_SET_RIT', 'RIG_FUNCTION_SET_RPTR_OFFS', 'RIG_FUNCTION_SET_RPTR_SHIFT', 'RIG_FUNCTION_SET_SPLIT_FREQ', 'RIG_FUNCTION_SET_SPLIT_FREQ_MODE', 'RIG_FUNCTION_SET_SPLIT_MODE', 'RIG_FUNCTION_SET_SPLIT_VFO', 'RIG_FUNCTION_SET_TONE', 'RIG_FUNCTION_SET_TONE_SQL', 'RIG_FUNCTION_SET_TRN', 'RIG_FUNCTION_SET_TS', 'RIG_FUNCTION_SET_VFO', 'RIG_FUNCTION_SET_VFO_OPT', 'RIG_FUNCTION_SET_XIT', 'RIG_FUNCTION_STOP_MORSE', 'RIG_FUNCTION_STOP_VOICE_MEM', 'RIG_FUNCTION_VFO_OP', 'RIG_FUNCTION_WAIT_MORSE', 'RIG_FUNC_ABM', 'RIG_FUNC_AFC', 'RIG_FUNC_AFLT', 'RIG_FUNC_AIP', 'RIG_FUNC_ANF', 'RIG_FUNC_ANL', 'RIG_FUNC_APF', 'RIG_FUNC_ARO', 'RIG_FUNC_BC', 'RIG_FUNC_BC2', 'RIG_FUNC_BIT49', 'RIG_FUNC_BIT50', 'RIG_FUNC_BIT51', 'RIG_FUNC_BIT52', 'RIG_FUNC_BIT53', 'RIG_FUNC_BIT54', 'RIG_FUNC_BIT55', 'RIG_FUNC_BIT56', 'RIG_FUNC_BIT57', 'RIG_FUNC_BIT58', 'RIG_FUNC_BIT59', 'RIG_FUNC_BIT60', 'RIG_FUNC_BIT61', 'RIG_FUNC_BIT62', 'RIG_FUNC_BIT63', 'RIG_FUNC_COMP', 'RIG_FUNC_CSQL', 'RIG_FUNC_DIVERSITY', 'RIG_FUNC_DSQL', 'RIG_FUNC_DUAL_WATCH', 'RIG_FUNC_FAGC', 'RIG_FUNC_FBKIN', 'RIG_FUNC_LOCK', 'RIG_FUNC_MBC', 'RIG_FUNC_MN', 'RIG_FUNC_MON', 'RIG_FUNC_MUTE', 'RIG_FUNC_NB', 'RIG_FUNC_NB2', 'RIG_FUNC_NONE', 'RIG_FUNC_NR', 'RIG_FUNC_OVF_STATUS', 'RIG_FUNC_RESUME', 'RIG_FUNC_REV', 'RIG_FUNC_RF', 'RIG_FUNC_RIT', 'RIG_FUNC_SATMODE', 'RIG_FUNC_SBKIN', 'RIG_FUNC_SCEN', 'RIG_FUNC_SCOPE', 'RIG_FUNC_SEND_MORSE', 'RIG_FUNC_SEND_VOICE_MEM', 'RIG_FUNC_SLICE', 'RIG_FUNC_SPECTRUM', 'RIG_FUNC_SPECTRUM_HOLD', 'RIG_FUNC_SQL', 'RIG_FUNC_SYNC', 'RIG_FUNC_TBURST', 'RIG_FUNC_TONE', 'RIG_FUNC_TRANSCEIVE', 'RIG_FUNC_TSQL', 'RIG_FUNC_TUNER', 'RIG_FUNC_VOX', 'RIG_FUNC_VSC', 'RIG_FUNC_XIT', 'RIG_HANDSHAKE_HARDWARE', 'RIG_HANDSHAKE_NONE', 'RIG_HANDSHAKE_XONXOFF', 'RIG_KEYERTYPE_BUG', 'RIG_KEYERTYPE_PADDLE', 'RIG_KEYERTYPE_STRAIGHT', 'RIG_KEYERTYPE_UNKNOWN', 'RIG_LEVEL_53', 'RIG_LEVEL_54', 'RIG_LEVEL_55', 'RIG_LEVEL_56', 'RIG_LEVEL_57', 'RIG_LEVEL_58', 'RIG_LEVEL_59', 'RIG_LEVEL_60', 'RIG_LEVEL_61', 'RIG_LEVEL_62', 'RIG_LEVEL_63', 'RIG_LEVEL_AF', 'RIG_LEVEL_AGC', 'RIG_LEVEL_AGC_TIME', 'RIG_LEVEL_ALC', 'RIG_LEVEL_ANTIVOX', 'RIG_LEVEL_APF', 'RIG_LEVEL_ATT', 'RIG_LEVEL_BALANCE', 'RIG_LEVEL_BAND_SELECT', 'RIG_LEVEL_BKINDL', 'RIG_LEVEL_BKIN_DLYMS', 'RIG_LEVEL_COMP', 'RIG_LEVEL_COMP_METER', 'RIG_LEVEL_CWPITCH', 'RIG_LEVEL_FLOAT_LIST', 'RIG_LEVEL_ID_METER', 'RIG_LEVEL_IF', 'RIG_LEVEL_KEYSPD', 'RIG_LEVEL_METER', 'RIG_LEVEL_MICGAIN', 'RIG_LEVEL_MONITOR_GAIN', 'RIG_LEVEL_NB', 'RIG_LEVEL_NONE', 'RIG_LEVEL_NOTCHF', 'RIG_LEVEL_NOTCHF_RAW', 'RIG_LEVEL_NR', 'RIG_LEVEL_PBT_IN', 'RIG_LEVEL_PBT_OUT', 'RIG_LEVEL_PREAMP', 'RIG_LEVEL_RAWSTR', 'RIG_LEVEL_READONLY_LIST', 'RIG_LEVEL_RF', 'RIG_LEVEL_RFPOWER', 'RIG_LEVEL_RFPOWER_METER', 'RIG_LEVEL_RFPOWER_METER_WATTS', 'RIG_LEVEL_SLOPE_HIGH', 'RIG_LEVEL_SLOPE_LOW', 'RIG_LEVEL_SPECTRUM_ATT', 'RIG_LEVEL_SPECTRUM_AVG', 'RIG_LEVEL_SPECTRUM_EDGE_HIGH', 'RIG_LEVEL_SPECTRUM_EDGE_LOW', 'RIG_LEVEL_SPECTRUM_MODE', 'RIG_LEVEL_SPECTRUM_REF', 'RIG_LEVEL_SPECTRUM_SPAN', 'RIG_LEVEL_SPECTRUM_SPEED', 'RIG_LEVEL_SQL', 'RIG_LEVEL_STRENGTH', 'RIG_LEVEL_SWR', 'RIG_LEVEL_TEMP_METER', 'RIG_LEVEL_USB_AF', 'RIG_LEVEL_USB_AF_INPUT', 'RIG_LEVEL_VD_METER', 'RIG_LEVEL_VOXDELAY', 'RIG_LEVEL_VOXGAIN', 'RIG_MEM_CAPS_ALL', 'RIG_METER_ALC', 'RIG_METER_COMP', 'RIG_METER_DB', 'RIG_METER_IC', 'RIG_METER_NONE', 'RIG_METER_PO', 'RIG_METER_SWR', 'RIG_METER_TEMP', 'RIG_METER_VDD', 'RIG_MODEL_505DSP', 'RIG_MODEL_ACLOG', 'RIG_MODEL_ADT_200A', 'RIG_MODEL_AR16', 'RIG_MODEL_AR2500', 'RIG_MODEL_AR2700', 'RIG_MODEL_AR3000', 'RIG_MODEL_AR3000A', 'RIG_MODEL_AR3030', 'RIG_MODEL_AR5000', 'RIG_MODEL_AR5000A', 'RIG_MODEL_AR7030', 'RIG_MODEL_AR7030P', 'RIG_MODEL_AR8000', 'RIG_MODEL_AR8200', 'RIG_MODEL_AR8600', 'RIG_MODEL_ARMSTRONG', 'RIG_MODEL_ATD578UVIII', 'RIG_MODEL_BARRETT_2050', 'RIG_MODEL_BARRETT_4050', 'RIG_MODEL_BARRETT_4100', 'RIG_MODEL_BARRETT_950', 'RIG_MODEL_BC235', 'RIG_MODEL_BC245', 'RIG_MODEL_BC250', 'RIG_MODEL_BC780', 'RIG_MODEL_BC785', 'RIG_MODEL_BC786', 'RIG_MODEL_BC895', 'RIG_MODEL_BC898', 'RIG_MODEL_BCD396T', 'RIG_MODEL_BCD996T', 'RIG_MODEL_BCT8', 'RIG_MODEL_CMH530', 'RIG_MODEL_CODAN_2110', 'RIG_MODEL_CODAN_ENVOY', 'RIG_MODEL_CODAN_NGT', 'RIG_MODEL_CTX10', 'RIG_MODEL_DDS60', 'RIG_MODEL_DELTAII', 'RIG_MODEL_DKR8', 'RIG_MODEL_DKR8A', 'RIG_MODEL_DKR8B', 'RIG_MODEL_DORJI_DRA818U', 'RIG_MODEL_DORJI_DRA818V', 'RIG_MODEL_DRT1', 'RIG_MODEL_DSP10', 'RIG_MODEL_DTTSP', 'RIG_MODEL_DTTSP_UDP', 'RIG_MODEL_DUMMY', 'RIG_MODEL_DUMMY_NOVFO', 'RIG_MODEL_DWT', 'RIG_MODEL_DX77', 'RIG_MODEL_DXSR8', 'RIG_MODEL_EB200', 'RIG_MODEL_EK070', 'RIG_MODEL_EK890', 'RIG_MODEL_EK891', 'RIG_MODEL_EK895', 'RIG_MODEL_EK89X', 'RIG_MODEL_EKD500', 'RIG_MODEL_ELAD_FDM_DUO', 'RIG_MODEL_ELEKTOR304', 'RIG_MODEL_ELEKTOR507', 'RIG_MODEL_ESM500', 'RIG_MODEL_ESMC', 'RIG_MODEL_F6K', 'RIG_MODEL_FASDR', 'RIG_MODEL_FIFISDR', 'RIG_MODEL_FLRIG', 'RIG_MODEL_FRG100', 'RIG_MODEL_FRG8800', 'RIG_MODEL_FRG9600', 'RIG_MODEL_FT100', 'RIG_MODEL_FT1000', 'RIG_MODEL_FT1000D', 'RIG_MODEL_FT1000MP', 'RIG_MODEL_FT1000MPMKV', 'RIG_MODEL_FT1000MPMKVFLD', 'RIG_MODEL_FT2000', 'RIG_MODEL_FT450', 'RIG_MODEL_FT450D', 'RIG_MODEL_FT575', 'RIG_MODEL_FT600', 'RIG_MODEL_FT650', 'RIG_MODEL_FT710', 'RIG_MODEL_FT736R', 'RIG_MODEL_FT747', 'RIG_MODEL_FT757', 'RIG_MODEL_FT757GXII', 'RIG_MODEL_FT767', 'RIG_MODEL_FT817', 'RIG_MODEL_FT818', 'RIG_MODEL_FT820', 'RIG_MODEL_FT840', 'RIG_MODEL_FT847', 'RIG_MODEL_FT847UNI', 'RIG_MODEL_FT857', 'RIG_MODEL_FT890', 'RIG_MODEL_FT891', 'RIG_MODEL_FT897', 'RIG_MODEL_FT897D', 'RIG_MODEL_FT900', 'RIG_MODEL_FT9000', 'RIG_MODEL_FT9000OLD', 'RIG_MODEL_FT920', 'RIG_MODEL_FT950', 'RIG_MODEL_FT980', 'RIG_MODEL_FT990', 'RIG_MODEL_FT990UNI', 'RIG_MODEL_FT991', 'RIG_MODEL_FTDX10', 'RIG_MODEL_FTDX101D', 'RIG_MODEL_FTDX101MP', 'RIG_MODEL_FTDX1200', 'RIG_MODEL_FTDX3000', 'RIG_MODEL_FTDX5000', 'RIG_MODEL_FUNCUBEDONGLE', 'RIG_MODEL_FUNCUBEDONGLEPLUS', 'RIG_MODEL_FX4', 'RIG_MODEL_G303', 'RIG_MODEL_G305', 'RIG_MODEL_G313', 'RIG_MODEL_G315', 'RIG_MODEL_G90', 'RIG_MODEL_GNURADIO', 'RIG_MODEL_GRAUDIO', 'RIG_MODEL_GRAUDIOIQ', 'RIG_MODEL_GS100', 'RIG_MODEL_HF1000', 'RIG_MODEL_HF1000A', 'RIG_MODEL_HF150', 'RIG_MODEL_HF225', 'RIG_MODEL_HF235', 'RIG_MODEL_HF250', 'RIG_MODEL_HIQSDR', 'RIG_MODEL_HPSDR', 'RIG_MODEL_IC1271', 'RIG_MODEL_IC1275', 'RIG_MODEL_IC271', 'RIG_MODEL_IC2730', 'RIG_MODEL_IC275', 'RIG_MODEL_IC375', 'RIG_MODEL_IC471', 'RIG_MODEL_IC475', 'RIG_MODEL_IC575', 'RIG_MODEL_IC7000', 'RIG_MODEL_IC703', 'RIG_MODEL_IC705', 'RIG_MODEL_IC706', 'RIG_MODEL_IC706MKII', 'RIG_MODEL_IC706MKIIG', 'RIG_MODEL_IC707', 'RIG_MODEL_IC7100', 'RIG_MODEL_IC718', 'RIG_MODEL_IC7200', 'RIG_MODEL_IC725', 'RIG_MODEL_IC726', 'RIG_MODEL_IC728', 'RIG_MODEL_IC729', 'RIG_MODEL_IC7300', 'RIG_MODEL_IC731', 'RIG_MODEL_IC735', 'RIG_MODEL_IC736', 'RIG_MODEL_IC737', 'RIG_MODEL_IC738', 'RIG_MODEL_IC7410', 'RIG_MODEL_IC746', 'RIG_MODEL_IC746PRO', 'RIG_MODEL_IC751', 'RIG_MODEL_IC751A', 'RIG_MODEL_IC756', 'RIG_MODEL_IC756PRO', 'RIG_MODEL_IC756PROII', 'RIG_MODEL_IC756PROIII', 'RIG_MODEL_IC7600', 'RIG_MODEL_IC761', 'RIG_MODEL_IC7610', 'RIG_MODEL_IC765', 'RIG_MODEL_IC7700', 'RIG_MODEL_IC775', 'RIG_MODEL_IC7760', 'RIG_MODEL_IC78', 'RIG_MODEL_IC7800', 'RIG_MODEL_IC781', 'RIG_MODEL_IC785x', 'RIG_MODEL_IC820', 'RIG_MODEL_IC821H', 'RIG_MODEL_IC905', 'RIG_MODEL_IC910', 'RIG_MODEL_IC9100', 'RIG_MODEL_IC92D', 'RIG_MODEL_IC970', 'RIG_MODEL_IC9700', 'RIG_MODEL_ICF8101', 'RIG_MODEL_ICID1', 'RIG_MODEL_ICR10', 'RIG_MODEL_ICR20', 'RIG_MODEL_ICR30', 'RIG_MODEL_ICR6', 'RIG_MODEL_ICR7000', 'RIG_MODEL_ICR71', 'RIG_MODEL_ICR7100', 'RIG_MODEL_ICR72', 'RIG_MODEL_ICR75', 'RIG_MODEL_ICR8500', 'RIG_MODEL_ICR8600', 'RIG_MODEL_ICR9000', 'RIG_MODEL_ICR9500', 'RIG_MODEL_ICRX7', 'RIG_MODEL_IC_M700PRO', 'RIG_MODEL_IC_M710', 'RIG_MODEL_IC_M802', 'RIG_MODEL_IC_M803', 'RIG_MODEL_ID31', 'RIG_MODEL_ID4100', 'RIG_MODEL_ID51', 'RIG_MODEL_ID5100', 'RIG_MODEL_JST145', 'RIG_MODEL_JST245', 'RIG_MODEL_K2', 'RIG_MODEL_K3', 'RIG_MODEL_K3S', 'RIG_MODEL_K4', 'RIG_MODEL_KX2', 'RIG_MODEL_KX3', 'RIG_MODEL_LAB599_TX500', 'RIG_MODEL_MALACHITE', 'RIG_MODEL_MC4020', 'RIG_MODEL_MCHFQRP', 'RIG_MODEL_MDS4710', 'RIG_MODEL_MDS9710', 'RIG_MODEL_MICOM2', 'RIG_MODEL_MICROTUNE_4702', 'RIG_MODEL_MICROTUNE_4707', 'RIG_MODEL_MICROTUNE_4937', 'RIG_MODEL_MINISCOUT', 'RIG_MODEL_MINIVNA', 'RIG_MODEL_NETRIGCTL', 'RIG_MODEL_NONE', 'RIG_MODEL_NRD345', 'RIG_MODEL_NRD525', 'RIG_MODEL_NRD535', 'RIG_MODEL_NRD545', 'RIG_MODEL_OMNIVI', 'RIG_MODEL_OMNIVIP', 'RIG_MODEL_OS456', 'RIG_MODEL_OS535', 'RIG_MODEL_PARAGON2', 'RIG_MODEL_PCR100', 'RIG_MODEL_PCR1000', 'RIG_MODEL_PCR1500', 'RIG_MODEL_PCR2500', 'RIG_MODEL_PERSEUS', 'RIG_MODEL_PMR171', 'RIG_MODEL_PMSDR', 'RIG_MODEL_POWERSDR', 'RIG_MODEL_PRM8060', 'RIG_MODEL_PRM8070', 'RIG_MODEL_PRO2052', 'RIG_MODEL_PT8000A', 'RIG_MODEL_Q900', 'RIG_MODEL_QRPLABS', 'RIG_MODEL_QRPLABS_QMX', 'RIG_MODEL_QUISK', 'RIG_MODEL_R5000', 'RIG_MODEL_RA3702', 'RIG_MODEL_RA3710', 'RIG_MODEL_RA3720', 'RIG_MODEL_RA3790', 'RIG_MODEL_RA6790', 'RIG_MODEL_RS2005', 'RIG_MODEL_RS2006', 'RIG_MODEL_RS2035', 'RIG_MODEL_RS2041', 'RIG_MODEL_RS2042', 'RIG_MODEL_RS64', 'RIG_MODEL_RSHFIQ', 'RIG_MODEL_RX320', 'RIG_MODEL_RX331', 'RIG_MODEL_RX340', 'RIG_MODEL_RX350', 'RIG_MODEL_SDR1000', 'RIG_MODEL_SDR1000RFE', 'RIG_MODEL_SDRCONSOLE', 'RIG_MODEL_SDRSHARP', 'RIG_MODEL_SDRUNO', 'RIG_MODEL_SDU5000', 'RIG_MODEL_SDU5500', 'RIG_MODEL_SI570AVRUSB', 'RIG_MODEL_SI570PEABERRY1', 'RIG_MODEL_SI570PEABERRY2', 'RIG_MODEL_SI570PICUSB', 'RIG_MODEL_SMARTSDR_A', 'RIG_MODEL_SMARTSDR_B', 'RIG_MODEL_SMARTSDR_C', 'RIG_MODEL_SMARTSDR_D', 'RIG_MODEL_SMARTSDR_E', 'RIG_MODEL_SMARTSDR_F', 'RIG_MODEL_SMARTSDR_G', 'RIG_MODEL_SMARTSDR_H', 'RIG_MODEL_SR2200', 'RIG_MODEL_TCI1X', 'RIG_MODEL_THD72A', 'RIG_MODEL_THD74', 'RIG_MODEL_THD7A', 'RIG_MODEL_THD7AG', 'RIG_MODEL_THETIS', 'RIG_MODEL_THF6A', 'RIG_MODEL_THF7E', 'RIG_MODEL_THG71', 'RIG_MODEL_TMD700', 'RIG_MODEL_TMD710', 'RIG_MODEL_TMV7', 'RIG_MODEL_TMV71', 'RIG_MODEL_TRANSFOX', 'RIG_MODEL_TRC80', 'RIG_MODEL_TRP7000', 'RIG_MODEL_TRP8000', 'RIG_MODEL_TRP8255', 'RIG_MODEL_TRP9000', 'RIG_MODEL_TRUSDX', 'RIG_MODEL_TRXMANAGER_RIG', 'RIG_MODEL_TS140S', 'RIG_MODEL_TS2000', 'RIG_MODEL_TS440', 'RIG_MODEL_TS450S', 'RIG_MODEL_TS480', 'RIG_MODEL_TS50', 'RIG_MODEL_TS570D', 'RIG_MODEL_TS570S', 'RIG_MODEL_TS590S', 'RIG_MODEL_TS590SG', 'RIG_MODEL_TS680S', 'RIG_MODEL_TS690S', 'RIG_MODEL_TS711', 'RIG_MODEL_TS790', 'RIG_MODEL_TS811', 'RIG_MODEL_TS850', 'RIG_MODEL_TS870S', 'RIG_MODEL_TS890S', 'RIG_MODEL_TS930', 'RIG_MODEL_TS940', 'RIG_MODEL_TS950S', 'RIG_MODEL_TS950SDX', 'RIG_MODEL_TS990S', 'RIG_MODEL_TT516', 'RIG_MODEL_TT526', 'RIG_MODEL_TT538', 'RIG_MODEL_TT550', 'RIG_MODEL_TT565', 'RIG_MODEL_TT585', 'RIG_MODEL_TT588', 'RIG_MODEL_TT599', 'RIG_MODEL_USRP', 'RIG_MODEL_USRP0', 'RIG_MODEL_USRP_G', 'RIG_MODEL_V4L', 'RIG_MODEL_V4L2', 'RIG_MODEL_VR5000', 'RIG_MODEL_VX1700', 'RIG_MODEL_WJ8711', 'RIG_MODEL_WJ8888', 'RIG_MODEL_WR1000', 'RIG_MODEL_WR1500', 'RIG_MODEL_WR1550', 'RIG_MODEL_WR3100', 'RIG_MODEL_WR3150', 'RIG_MODEL_WR3500', 'RIG_MODEL_WR3700', 'RIG_MODEL_X108G', 'RIG_MODEL_X5105', 'RIG_MODEL_X6100', 'RIG_MODEL_X6200', 'RIG_MODEL_XG3', 'RIG_MODEL_XK2100', 'RIG_MODEL_XK852', 'RIG_MODEL_XPLORER', 'RIG_MODE_ALL', 'RIG_MODE_AM', 'RIG_MODE_AMN', 'RIG_MODE_AMS', 'RIG_MODE_BIT46', 'RIG_MODE_BIT47', 'RIG_MODE_BIT48', 'RIG_MODE_BIT49', 'RIG_MODE_BIT50', 'RIG_MODE_BIT51', 'RIG_MODE_BIT52', 'RIG_MODE_BIT53', 'RIG_MODE_BIT54', 'RIG_MODE_BIT55', 'RIG_MODE_BIT56', 'RIG_MODE_BIT57', 'RIG_MODE_BIT58', 'RIG_MODE_BIT59', 'RIG_MODE_BIT60', 'RIG_MODE_BIT61', 'RIG_MODE_BIT62', 'RIG_MODE_C4FM', 'RIG_MODE_CW', 'RIG_MODE_CWN', 'RIG_MODE_CWR', 'RIG_MODE_DCR', 'RIG_MODE_DD', 'RIG_MODE_DPMR', 'RIG_MODE_DSB', 'RIG_MODE_DSTAR', 'RIG_MODE_ECSS', 'RIG_MODE_ECSSLSB', 'RIG_MODE_ECSSUSB', 'RIG_MODE_FAX', 'RIG_MODE_FM', 'RIG_MODE_FMN', 'RIG_MODE_IQ', 'RIG_MODE_ISBLSB', 'RIG_MODE_ISBUSB', 'RIG_MODE_LSB', 'RIG_MODE_LSBD1', 'RIG_MODE_LSBD2', 'RIG_MODE_LSBD3', 'RIG_MODE_NONE', 'RIG_MODE_NXDNVN', 'RIG_MODE_NXDN_N', 'RIG_MODE_P25', 'RIG_MODE_PKTAM', 'RIG_MODE_PKTFM', 'RIG_MODE_PKTFMN', 'RIG_MODE_PKTLSB', 'RIG_MODE_PKTSSB', 'RIG_MODE_PKTUSB', 'RIG_MODE_PSK', 'RIG_MODE_PSKR', 'RIG_MODE_RTTY', 'RIG_MODE_RTTYR', 'RIG_MODE_SAH', 'RIG_MODE_SAL', 'RIG_MODE_SAM', 'RIG_MODE_SPEC', 'RIG_MODE_SSB', 'RIG_MODE_TESTS_MAX', 'RIG_MODE_USB', 'RIG_MODE_USBD1', 'RIG_MODE_USBD2', 'RIG_MODE_USBD3', 'RIG_MODE_WFM', 'RIG_MTYPE_BAND', 'RIG_MTYPE_CALL', 'RIG_MTYPE_EDGE', 'RIG_MTYPE_MEM', 'RIG_MTYPE_MEMOPAD', 'RIG_MTYPE_MORSE', 'RIG_MTYPE_NONE', 'RIG_MTYPE_PRIO', 'RIG_MTYPE_SAT', 'RIG_MTYPE_SPLIT', 'RIG_MTYPE_VOICE', 'RIG_MULTICAST_POLL', 'RIG_MULTICAST_SPECTRUM', 'RIG_MULTICAST_TRANSCEIVE', 'RIG_OK', 'RIG_OP_BAND_DOWN', 'RIG_OP_BAND_UP', 'RIG_OP_CPY', 'RIG_OP_DOWN', 'RIG_OP_FROM_VFO', 'RIG_OP_LEFT', 'RIG_OP_MCL', 'RIG_OP_NONE', 'RIG_OP_RIGHT', 'RIG_OP_TOGGLE', 'RIG_OP_TO_VFO', 'RIG_OP_TUNE', 'RIG_OP_UP', 'RIG_OP_XCHG', 'RIG_PARITY_EVEN', 'RIG_PARITY_MARK', 'RIG_PARITY_NONE', 'RIG_PARITY_ODD', 'RIG_PARITY_SPACE', 'RIG_PARM_AFIF', 'RIG_PARM_AFIF_ACC', 'RIG_PARM_AFIF_LAN', 'RIG_PARM_AFIF_WLAN', 'RIG_PARM_ANN', 'RIG_PARM_APO', 'RIG_PARM_BACKLIGHT', 'RIG_PARM_BANDSELECT', 'RIG_PARM_BAT', 'RIG_PARM_BEEP', 'RIG_PARM_KEYERTYPE', 'RIG_PARM_KEYLIGHT', 'RIG_PARM_NONE', 'RIG_PARM_SCREENSAVER', 'RIG_PARM_TIME', 'RIG_PORT_CM108', 'RIG_PORT_DEVICE', 'RIG_PORT_DTMF', 'RIG_PORT_GPIO', 'RIG_PORT_GPION', 'RIG_PORT_NETWORK', 'RIG_PORT_NONE', 'RIG_PORT_PACKET', 'RIG_PORT_PARALLEL', 'RIG_PORT_RPC', 'RIG_PORT_SERIAL', 'RIG_PORT_UDP_NETWORK', 'RIG_PORT_ULTRA', 'RIG_PORT_USB', 'RIG_POWER_OFF', 'RIG_POWER_ON', 'RIG_POWER_OPERATE', 'RIG_POWER_STANDBY', 'RIG_POWER_UNKNOWN', 'RIG_PTRX_AMPPORT', 'RIG_PTRX_AMPSTATE', 'RIG_PTRX_CACHE', 'RIG_PTRX_DCDPORT', 'RIG_PTRX_MAXIMUM', 'RIG_PTRX_NONE', 'RIG_PTRX_PTTPORT', 'RIG_PTRX_RIGPORT', 'RIG_PTRX_ROTPORT', 'RIG_PTRX_ROTPORT2', 'RIG_PTRX_ROTSTATE', 'RIG_PTRX_STATE', 'RIG_PTT_CM108', 'RIG_PTT_GPIO', 'RIG_PTT_GPION', 'RIG_PTT_NONE', 'RIG_PTT_OFF', 'RIG_PTT_ON', 'RIG_PTT_ON_DATA', 'RIG_PTT_ON_MIC', 'RIG_PTT_PARALLEL', 'RIG_PTT_RIG', 'RIG_PTT_RIG_MICDATA', 'RIG_PTT_SERIAL_DTR', 'RIG_PTT_SERIAL_RTS', 'RIG_RESET_MASTER', 'RIG_RESET_MCALL', 'RIG_RESET_NONE', 'RIG_RESET_SOFT', 'RIG_RESET_VFO', 'RIG_RPT_SHIFT_MINUS', 'RIG_RPT_SHIFT_NONE', 'RIG_RPT_SHIFT_PLUS', 'RIG_SCAN_DELTA', 'RIG_SCAN_MEM', 'RIG_SCAN_NONE', 'RIG_SCAN_PLT', 'RIG_SCAN_PRIO', 'RIG_SCAN_PROG', 'RIG_SCAN_SLCT', 'RIG_SCAN_STOP', 'RIG_SCAN_VFO', 'RIG_SETTING_MAX', 'RIG_SIGNAL_OFF', 'RIG_SIGNAL_ON', 'RIG_SIGNAL_UNSET', 'RIG_SPECTRUM_MODE_CENTER', 'RIG_SPECTRUM_MODE_CENTER_SCROLL', 'RIG_SPECTRUM_MODE_FIXED', 'RIG_SPECTRUM_MODE_FIXED_SCROLL', 'RIG_SPECTRUM_MODE_NONE', 'RIG_SPLIT_OFF', 'RIG_SPLIT_ON', 'RIG_STATUS_ALPHA', 'RIG_STATUS_BETA', 'RIG_STATUS_BUGGY', 'RIG_STATUS_STABLE', 'RIG_STATUS_UNTESTED', 'RIG_TARGETABLE_ALL', 'RIG_TARGETABLE_ANT', 'RIG_TARGETABLE_BAND', 'RIG_TARGETABLE_BANK', 'RIG_TARGETABLE_COMMON', 'RIG_TARGETABLE_FREQ', 'RIG_TARGETABLE_FUNC', 'RIG_TARGETABLE_LEVEL', 'RIG_TARGETABLE_MEM', 'RIG_TARGETABLE_MODE', 'RIG_TARGETABLE_NONE', 'RIG_TARGETABLE_PTT', 'RIG_TARGETABLE_PURE', 'RIG_TARGETABLE_RITXIT', 'RIG_TARGETABLE_ROOFING', 'RIG_TARGETABLE_SPECTRUM', 'RIG_TARGETABLE_TONE', 'RIG_TRN_OFF', 'RIG_TRN_POLL', 'RIG_TRN_RIG', 'RIG_TS_ANY', 'RIG_TYPE_OTHER', 'RIG_VFO_A', 'RIG_VFO_ALL', 'RIG_VFO_B', 'RIG_VFO_C', 'RIG_VFO_CURR', 'RIG_VFO_MAIN', 'RIG_VFO_MAIN_A', 'RIG_VFO_MAIN_B', 'RIG_VFO_MAIN_C', 'RIG_VFO_MEM', 'RIG_VFO_NONE', 'RIG_VFO_OTHER', 'RIG_VFO_RX', 'RIG_VFO_SUB', 'RIG_VFO_SUB_A', 'RIG_VFO_SUB_B', 'RIG_VFO_SUB_C', 'RIG_VFO_TX', 'RIG_VFO_TX_FLAG', 'RIG_VFO_VFO', 'ROT_FLAG_AZIMUTH', 'ROT_FLAG_ELEVATION', 'ROT_FUNC_BIT63', 'ROT_FUNC_NONE', 'ROT_LEVEL_63', 'ROT_LEVEL_FLOAT_LIST', 'ROT_LEVEL_NONE', 'ROT_LEVEL_READONLY_LIST', 'ROT_LEVEL_SPEED', 'ROT_MODEL_AF6SA_WRC', 'ROT_MODEL_ANDROIDSENSOR', 'ROT_MODEL_APEX_SHARED_LOOP', 'ROT_MODEL_ARRAYSOLUTIONS_SAL_12_20_30', 'ROT_MODEL_CNCTRK', 'ROT_MODEL_DCU', 'ROT_MODEL_DUMMY', 'ROT_MODEL_EASYCOMM1', 'ROT_MODEL_EASYCOMM2', 'ROT_MODEL_EASYCOMM3', 'ROT_MODEL_ERC', 'ROT_MODEL_ETHER6', 'ROT_MODEL_F1TETRACKER', 'ROT_MODEL_FLIR', 'ROT_MODEL_FODTRACK', 'ROT_MODEL_GRBLTRK_NET', 'ROT_MODEL_GRBLTRK_SER', 'ROT_MODEL_GS23', 'ROT_MODEL_GS232', 'ROT_MODEL_GS232A', 'ROT_MODEL_GS232A_AZ', 'ROT_MODEL_GS232A_EL', 'ROT_MODEL_GS232B', 'ROT_MODEL_GS232B_AZ', 'ROT_MODEL_GS232B_EL', 'ROT_MODEL_GS232_GENERIC', 'ROT_MODEL_GS23_AZ', 'ROT_MODEL_HD1780', 'ROT_MODEL_IF100', 'ROT_MODEL_INDI', 'ROT_MODEL_IOPTRON', 'ROT_MODEL_LVB', 'ROT_MODEL_MEADE', 'ROT_MODEL_NETROTCTL', 'ROT_MODEL_NEXSTAR', 'ROT_MODEL_NONE', 'ROT_MODEL_PCROTOR', 'ROT_MODEL_PROSISTEL_COMBI_TRACK_AZEL', 'ROT_MODEL_PROSISTEL_D_AZ', 'ROT_MODEL_PROSISTEL_D_EL', 'ROT_MODEL_PROSISTEL_D_EL_CBOXAZ', 'ROT_MODEL_PSTROTATOR', 'ROT_MODEL_RADANT', 'ROT_MODEL_RC2800', 'ROT_MODEL_RC2800_EARLY_AZ', 'ROT_MODEL_RC2800_EARLY_AZEL', 'ROT_MODEL_RCI_AZ', 'ROT_MODEL_RCI_AZEL', 'ROT_MODEL_ROTORCARD', 'ROT_MODEL_ROTOREZ', 'ROT_MODEL_RT21', 'ROT_MODEL_SAEBRTRACK', 'ROT_MODEL_SARTEK1', 'ROT_MODEL_SATEL', 'ROT_MODEL_SATROTCTL', 'ROT_MODEL_SKYWATCHER', 'ROT_MODEL_SPID_MD01_ROT2PROG', 'ROT_MODEL_SPID_ROT1PROG', 'ROT_MODEL_SPID_ROT2PROG', 'ROT_MODEL_ST2', 'ROT_MODEL_TS7400', 'ROT_MODEL_YRC1', 'ROT_MOVE_CCW', 'ROT_MOVE_CW', 'ROT_MOVE_DOWN', 'ROT_MOVE_DOWN_CCW', 'ROT_MOVE_DOWN_CW', 'ROT_MOVE_DOWN_LEFT', 'ROT_MOVE_DOWN_RIGHT', 'ROT_MOVE_LEFT', 'ROT_MOVE_RIGHT', 'ROT_MOVE_UP', 'ROT_MOVE_UP_CCW', 'ROT_MOVE_UP_CW', 'ROT_MOVE_UP_LEFT', 'ROT_MOVE_UP_RIGHT', 'ROT_PARM_FLOAT_LIST', 'ROT_PARM_NONE', 'ROT_PARM_READONLY_LIST', 'ROT_RESET_ALL', 'ROT_SPEED_NOCHANGE', 'ROT_STATUS_BUSY', 'ROT_STATUS_LIMIT_DOWN', 'ROT_STATUS_LIMIT_LEFT', 'ROT_STATUS_LIMIT_RIGHT', 'ROT_STATUS_LIMIT_UP', 'ROT_STATUS_MOVING', 'ROT_STATUS_MOVING_AZ', 'ROT_STATUS_MOVING_DOWN', 'ROT_STATUS_MOVING_EL', 'ROT_STATUS_MOVING_LEFT', 'ROT_STATUS_MOVING_RIGHT', 'ROT_STATUS_MOVING_UP', 'ROT_STATUS_NONE', 'ROT_STATUS_OVERLAP_DOWN', 'ROT_STATUS_OVERLAP_LEFT', 'ROT_STATUS_OVERLAP_RIGHT', 'ROT_STATUS_OVERLAP_UP', 'ROT_TYPE_OTHER', 'TWIDDLE_OFF', 'TWIDDLE_ON', 'VFO_DUAL', 'cvar', 'hamlib_copyright', 'hamlib_version'] + expected_properties = ['AMP_FLAG_1', 'AMP_FLAG_2', 'AMP_LEVEL_FAULT', 'AMP_LEVEL_NH', 'AMP_LEVEL_NONE', 'AMP_LEVEL_PF', 'AMP_LEVEL_PWR', 'AMP_LEVEL_PWR_FWD', 'AMP_LEVEL_PWR_INPUT', 'AMP_LEVEL_PWR_PEAK', 'AMP_LEVEL_PWR_REFLECTED', 'AMP_LEVEL_SWR', 'AMP_MODEL_DUMMY', 'AMP_MODEL_ELECRAFT_KPA1500', 'AMP_MODEL_EXPERT_FA', 'AMP_MODEL_GEMINI_DX1200', 'AMP_MODEL_NETAMPCTL', 'AMP_MODEL_NONE', 'AMP_RESET_AMP', 'AMP_RESET_FAULT', 'AMP_RESET_MEM', 'AMP_TYPE_OTHER', 'BUILTINFUNC', 'CTCSS_LIST_SIZE', 'DCS_LIST_SIZE', 'DEBUGMSGSAVE_SIZE', 'GPIO1', 'GPIO2', 'GPIO3', 'GPIO4', 'HAMLIB_CACHE_ALL', 'HAMLIB_CACHE_ALWAYS', 'HAMLIB_CACHE_FREQ', 'HAMLIB_CACHE_MODE', 'HAMLIB_CACHE_PTT', 'HAMLIB_CACHE_SPLIT', 'HAMLIB_CACHE_VFO', 'HAMLIB_CACHE_WIDTH', 'HAMLIB_CHANLSTSIZ', 'HAMLIB_CHECK_RIG_CAPS', 'HAMLIB_COOKIE_SIZE', 'HAMLIB_ELAPSED_GET', 'HAMLIB_ELAPSED_INVALIDATE', 'HAMLIB_ELAPSED_SET', 'HAMLIB_FIFO_SIZE', 'HAMLIB_FILPATHLEN', 'HAMLIB_FLTLSTSIZ', 'HAMLIB_FRQRANGESIZ', 'HAMLIB_MAXCHANDESC', 'HAMLIB_MAXDBLSTSIZ', 'HAMLIB_MAX_AGC_LEVELS', 'HAMLIB_MAX_CAL_LENGTH', 'HAMLIB_MAX_MODES', 'HAMLIB_MAX_ROTORS', 'HAMLIB_MAX_RSCANS', 'HAMLIB_MAX_SNAPSHOT_PACKET_SIZE', 'HAMLIB_MAX_SPECTRUM_AVG_MODES', 'HAMLIB_MAX_SPECTRUM_DATA', 'HAMLIB_MAX_SPECTRUM_MODES', 'HAMLIB_MAX_SPECTRUM_SCOPES', 'HAMLIB_MAX_SPECTRUM_SPANS', 'HAMLIB_MAX_VFOS', 'HAMLIB_MAX_VFO_OPS', 'HAMLIB_RIGNAMSIZ', 'HAMLIB_RIGVERSIZ', 'HAMLIB_SECRET_LENGTH', 'HAMLIB_SETTINGS_FILE', 'HAMLIB_TSLSTSIZ', 'MAX_MODELS_PER_BACKEND', 'NETAMPCTL_RET', 'NETRIGCTL_RET', 'NETROTCTL_RET', 'RIG_AGC_AUTO', 'RIG_AGC_FAST', 'RIG_AGC_LAST', 'RIG_AGC_LONG', 'RIG_AGC_MEDIUM', 'RIG_AGC_NONE', 'RIG_AGC_OFF', 'RIG_AGC_ON', 'RIG_AGC_SLOW', 'RIG_AGC_SUPERFAST', 'RIG_AGC_USER', 'RIG_ANN_CW', 'RIG_ANN_ENG', 'RIG_ANN_FREQ', 'RIG_ANN_JAP', 'RIG_ANN_NONE', 'RIG_ANN_OFF', 'RIG_ANN_RXMODE', 'RIG_ANT_MAX', 'RIG_ANT_NONE', 'RIG_BANDSELECT_10M', 'RIG_BANDSELECT_12M', 'RIG_BANDSELECT_13CM', 'RIG_BANDSELECT_15M', 'RIG_BANDSELECT_160M', 'RIG_BANDSELECT_17M', 'RIG_BANDSELECT_1_25M', 'RIG_BANDSELECT_20M', 'RIG_BANDSELECT_2200M', 'RIG_BANDSELECT_23CM', 'RIG_BANDSELECT_2M', 'RIG_BANDSELECT_30M', 'RIG_BANDSELECT_33CM', 'RIG_BANDSELECT_3CM', 'RIG_BANDSELECT_40M', 'RIG_BANDSELECT_4M', 'RIG_BANDSELECT_5CM', 'RIG_BANDSELECT_600M', 'RIG_BANDSELECT_60M', 'RIG_BANDSELECT_6M', 'RIG_BANDSELECT_70CM', 'RIG_BANDSELECT_80M', 'RIG_BANDSELECT_9CM', 'RIG_BANDSELECT_AIR', 'RIG_BANDSELECT_GEN', 'RIG_BANDSELECT_MW', 'RIG_BANDSELECT_UNUSED', 'RIG_BANDSELECT_WFM', 'RIG_BAND_10M', 'RIG_BAND_12M', 'RIG_BAND_144MHZ', 'RIG_BAND_15M', 'RIG_BAND_160M', 'RIG_BAND_17M', 'RIG_BAND_20M', 'RIG_BAND_30M', 'RIG_BAND_40M', 'RIG_BAND_430MHZ', 'RIG_BAND_60M', 'RIG_BAND_6M', 'RIG_BAND_80M', 'RIG_BAND_AIR', 'RIG_BAND_GEN', 'RIG_BAND_MW', 'RIG_BAND_UNUSED', 'RIG_BUSBUSY', 'RIG_BUSERROR', 'RIG_CAPS_HAS_GET_LEVEL', 'RIG_CAPS_HAS_SET_LEVEL', 'RIG_CAPS_MFG_NAME_CPTR', 'RIG_CAPS_MODEL_NAME_CPTR', 'RIG_CAPS_PORT_TYPE', 'RIG_CAPS_PTT_TYPE', 'RIG_CAPS_RIG_MODEL', 'RIG_CAPS_STATUS_CPTR', 'RIG_CAPS_TARGETABLE_VFO', 'RIG_CAPS_VERSION_CPTR', 'RIG_CHFLAG_DATA', 'RIG_CHFLAG_NONE', 'RIG_CHFLAG_PSKIP', 'RIG_CHFLAG_SKIP', 'RIG_CLIENT_GPREDICT', 'RIG_CLIENT_UNKNOWN', 'RIG_CLIENT_WSJTX', 'RIG_COMM_STATUS_CONNECTING', 'RIG_COMM_STATUS_DISCONNECTED', 'RIG_COMM_STATUS_ERROR', 'RIG_COMM_STATUS_OK', 'RIG_COMM_STATUS_TERMINATED', 'RIG_COMM_STATUS_WARNING', 'RIG_CONF_BINARY', 'RIG_CONF_BUTTON', 'RIG_CONF_CHECKBUTTON', 'RIG_CONF_COMBO', 'RIG_CONF_END', 'RIG_CONF_INT', 'RIG_CONF_NUMERIC', 'RIG_CONF_STRING', 'RIG_COOKIE_GET', 'RIG_COOKIE_RELEASE', 'RIG_COOKIE_RENEW', 'RIG_DCD_CM108', 'RIG_DCD_GPIO', 'RIG_DCD_GPION', 'RIG_DCD_NONE', 'RIG_DCD_OFF', 'RIG_DCD_ON', 'RIG_DCD_PARALLEL', 'RIG_DCD_RIG', 'RIG_DCD_SERIAL_CAR', 'RIG_DCD_SERIAL_CTS', 'RIG_DCD_SERIAL_DSR', 'RIG_DEBUG_BUG', 'RIG_DEBUG_CACHE', 'RIG_DEBUG_ERR', 'RIG_DEBUG_NONE', 'RIG_DEBUG_TRACE', 'RIG_DEBUG_VERBOSE', 'RIG_DEBUG_WARN', 'RIG_EACCESS', 'RIG_EARG', 'RIG_ECONF', 'RIG_EDEPRECATED', 'RIG_EDOM', 'RIG_EEND', 'RIG_EINTERNAL', 'RIG_EINVAL', 'RIG_EIO', 'RIG_ELIMIT', 'RIG_ENAVAIL', 'RIG_ENIMPL', 'RIG_ENOMEM', 'RIG_ENTARGET', 'RIG_EPOWER', 'RIG_EPROTO', 'RIG_ERJCTED', 'RIG_ESECURITY', 'RIG_ETIMEOUT', 'RIG_ETRUNC', 'RIG_EVFO', 'RIG_FLAG_APRS', 'RIG_FLAG_COMPUTER', 'RIG_FLAG_DXCLUSTER', 'RIG_FLAG_HANDHELD', 'RIG_FLAG_MOBILE', 'RIG_FLAG_RECEIVER', 'RIG_FLAG_SCANNER', 'RIG_FLAG_TNC', 'RIG_FLAG_TRANSMITTER', 'RIG_FLAG_TRUNKING', 'RIG_FLAG_TUNER', 'RIG_FLT_ANY', 'RIG_FUNCTION_CLEANUP', 'RIG_FUNCTION_CLOSE', 'RIG_FUNCTION_DECODE_EVENT', 'RIG_FUNCTION_GET_ANT', 'RIG_FUNCTION_GET_CHANNEL', 'RIG_FUNCTION_GET_CHAN_ALL_CB', 'RIG_FUNCTION_GET_CONF', 'RIG_FUNCTION_GET_CONF2', 'RIG_FUNCTION_GET_CTCSS_SQL', 'RIG_FUNCTION_GET_CTCSS_TONE', 'RIG_FUNCTION_GET_DCD', 'RIG_FUNCTION_GET_DCS_CODE', 'RIG_FUNCTION_GET_DCS_SQL', 'RIG_FUNCTION_GET_EXT_FUNC', 'RIG_FUNCTION_GET_EXT_LEVEL', 'RIG_FUNCTION_GET_EXT_PARM', 'RIG_FUNCTION_GET_FREQ', 'RIG_FUNCTION_GET_FUNC', 'RIG_FUNCTION_GET_INFO', 'RIG_FUNCTION_GET_LEVEL', 'RIG_FUNCTION_GET_MEM', 'RIG_FUNCTION_GET_MEM_ALL_CB', 'RIG_FUNCTION_GET_MODE', 'RIG_FUNCTION_GET_PARM', 'RIG_FUNCTION_GET_POWERSTAT', 'RIG_FUNCTION_GET_PTT', 'RIG_FUNCTION_GET_RIT', 'RIG_FUNCTION_GET_RPTR_OFFS', 'RIG_FUNCTION_GET_RPTR_SHIFT', 'RIG_FUNCTION_GET_SPLIT_FREQ', 'RIG_FUNCTION_GET_SPLIT_FREQ_MODE', 'RIG_FUNCTION_GET_SPLIT_VFO', 'RIG_FUNCTION_GET_TONE', 'RIG_FUNCTION_GET_TONE_SQL', 'RIG_FUNCTION_GET_TRN', 'RIG_FUNCTION_GET_TS', 'RIG_FUNCTION_GET_VFO', 'RIG_FUNCTION_GET_XIT', 'RIG_FUNCTION_INIT', 'RIG_FUNCTION_IS_ASYNC_FRAME', 'RIG_FUNCTION_MW2POWER', 'RIG_FUNCTION_OPEN', 'RIG_FUNCTION_POWER2MW', 'RIG_FUNCTION_PROCESS_ASYNC_FRAME', 'RIG_FUNCTION_READ_FRAME_DIRECT', 'RIG_FUNCTION_RESET', 'RIG_FUNCTION_SCAN', 'RIG_FUNCTION_SEND_DTMF', 'RIG_FUNCTION_SEND_MORSE', 'RIG_FUNCTION_SEND_VOICE_MEM', 'RIG_FUNCTION_SET_ANT', 'RIG_FUNCTION_SET_BANK', 'RIG_FUNCTION_SET_CHANNEL', 'RIG_FUNCTION_SET_CHAN_ALL_CB', 'RIG_FUNCTION_SET_CONF', 'RIG_FUNCTION_SET_CTCSS_SQL', 'RIG_FUNCTION_SET_CTCSS_TONE', 'RIG_FUNCTION_SET_DCS_CODE', 'RIG_FUNCTION_SET_DCS_SQL', 'RIG_FUNCTION_SET_EXT_FUNC', 'RIG_FUNCTION_SET_EXT_LEVEL', 'RIG_FUNCTION_SET_EXT_PARM', 'RIG_FUNCTION_SET_FREQ', 'RIG_FUNCTION_SET_FUNC', 'RIG_FUNCTION_SET_LEVEL', 'RIG_FUNCTION_SET_MEM', 'RIG_FUNCTION_SET_MEM_ALL_CB', 'RIG_FUNCTION_SET_MODE', 'RIG_FUNCTION_SET_PARM', 'RIG_FUNCTION_SET_POWERSTAT', 'RIG_FUNCTION_SET_PTT', 'RIG_FUNCTION_SET_RIT', 'RIG_FUNCTION_SET_RPTR_OFFS', 'RIG_FUNCTION_SET_RPTR_SHIFT', 'RIG_FUNCTION_SET_SPLIT_FREQ', 'RIG_FUNCTION_SET_SPLIT_FREQ_MODE', 'RIG_FUNCTION_SET_SPLIT_MODE', 'RIG_FUNCTION_SET_SPLIT_VFO', 'RIG_FUNCTION_SET_TONE', 'RIG_FUNCTION_SET_TONE_SQL', 'RIG_FUNCTION_SET_TRN', 'RIG_FUNCTION_SET_TS', 'RIG_FUNCTION_SET_VFO', 'RIG_FUNCTION_SET_VFO_OPT', 'RIG_FUNCTION_SET_XIT', 'RIG_FUNCTION_STOP_MORSE', 'RIG_FUNCTION_STOP_VOICE_MEM', 'RIG_FUNCTION_VFO_OP', 'RIG_FUNCTION_WAIT_MORSE', 'RIG_FUNC_ABM', 'RIG_FUNC_AFC', 'RIG_FUNC_AFLT', 'RIG_FUNC_AIP', 'RIG_FUNC_ANF', 'RIG_FUNC_ANL', 'RIG_FUNC_APF', 'RIG_FUNC_ARO', 'RIG_FUNC_BC', 'RIG_FUNC_BC2', 'RIG_FUNC_BIT49', 'RIG_FUNC_BIT50', 'RIG_FUNC_BIT51', 'RIG_FUNC_BIT52', 'RIG_FUNC_BIT53', 'RIG_FUNC_BIT54', 'RIG_FUNC_BIT55', 'RIG_FUNC_BIT56', 'RIG_FUNC_BIT57', 'RIG_FUNC_BIT58', 'RIG_FUNC_BIT59', 'RIG_FUNC_BIT60', 'RIG_FUNC_BIT61', 'RIG_FUNC_BIT62', 'RIG_FUNC_BIT63', 'RIG_FUNC_COMP', 'RIG_FUNC_CSQL', 'RIG_FUNC_DIVERSITY', 'RIG_FUNC_DSQL', 'RIG_FUNC_DUAL_WATCH', 'RIG_FUNC_FAGC', 'RIG_FUNC_FBKIN', 'RIG_FUNC_LOCK', 'RIG_FUNC_MBC', 'RIG_FUNC_MN', 'RIG_FUNC_MON', 'RIG_FUNC_MUTE', 'RIG_FUNC_NB', 'RIG_FUNC_NB2', 'RIG_FUNC_NONE', 'RIG_FUNC_NR', 'RIG_FUNC_OVF_STATUS', 'RIG_FUNC_RESUME', 'RIG_FUNC_REV', 'RIG_FUNC_RF', 'RIG_FUNC_RIT', 'RIG_FUNC_SATMODE', 'RIG_FUNC_SBKIN', 'RIG_FUNC_SCEN', 'RIG_FUNC_SCOPE', 'RIG_FUNC_SEND_MORSE', 'RIG_FUNC_SEND_VOICE_MEM', 'RIG_FUNC_SLICE', 'RIG_FUNC_SPECTRUM', 'RIG_FUNC_SPECTRUM_HOLD', 'RIG_FUNC_SQL', 'RIG_FUNC_SYNC', 'RIG_FUNC_TBURST', 'RIG_FUNC_TONE', 'RIG_FUNC_TRANSCEIVE', 'RIG_FUNC_TSQL', 'RIG_FUNC_TUNER', 'RIG_FUNC_VOX', 'RIG_FUNC_VSC', 'RIG_FUNC_XIT', 'RIG_HANDSHAKE_HARDWARE', 'RIG_HANDSHAKE_NONE', 'RIG_HANDSHAKE_XONXOFF', 'RIG_KEYERTYPE_BUG', 'RIG_KEYERTYPE_PADDLE', 'RIG_KEYERTYPE_STRAIGHT', 'RIG_KEYERTYPE_UNKNOWN', 'RIG_LEVEL_53', 'RIG_LEVEL_54', 'RIG_LEVEL_55', 'RIG_LEVEL_56', 'RIG_LEVEL_57', 'RIG_LEVEL_58', 'RIG_LEVEL_59', 'RIG_LEVEL_60', 'RIG_LEVEL_61', 'RIG_LEVEL_62', 'RIG_LEVEL_63', 'RIG_LEVEL_AF', 'RIG_LEVEL_AGC', 'RIG_LEVEL_AGC_TIME', 'RIG_LEVEL_ALC', 'RIG_LEVEL_ANTIVOX', 'RIG_LEVEL_APF', 'RIG_LEVEL_ATT', 'RIG_LEVEL_BALANCE', 'RIG_LEVEL_BAND_SELECT', 'RIG_LEVEL_BKINDL', 'RIG_LEVEL_BKIN_DLYMS', 'RIG_LEVEL_COMP', 'RIG_LEVEL_COMP_METER', 'RIG_LEVEL_CWPITCH', 'RIG_LEVEL_FLOAT_LIST', 'RIG_LEVEL_ID_METER', 'RIG_LEVEL_IF', 'RIG_LEVEL_KEYSPD', 'RIG_LEVEL_METER', 'RIG_LEVEL_MICGAIN', 'RIG_LEVEL_MONITOR_GAIN', 'RIG_LEVEL_NB', 'RIG_LEVEL_NONE', 'RIG_LEVEL_NOTCHF', 'RIG_LEVEL_NOTCHF_RAW', 'RIG_LEVEL_NR', 'RIG_LEVEL_PBT_IN', 'RIG_LEVEL_PBT_OUT', 'RIG_LEVEL_PREAMP', 'RIG_LEVEL_RAWSTR', 'RIG_LEVEL_READONLY_LIST', 'RIG_LEVEL_RF', 'RIG_LEVEL_RFPOWER', 'RIG_LEVEL_RFPOWER_METER', 'RIG_LEVEL_RFPOWER_METER_WATTS', 'RIG_LEVEL_SLOPE_HIGH', 'RIG_LEVEL_SLOPE_LOW', 'RIG_LEVEL_SPECTRUM_ATT', 'RIG_LEVEL_SPECTRUM_AVG', 'RIG_LEVEL_SPECTRUM_EDGE_HIGH', 'RIG_LEVEL_SPECTRUM_EDGE_LOW', 'RIG_LEVEL_SPECTRUM_MODE', 'RIG_LEVEL_SPECTRUM_REF', 'RIG_LEVEL_SPECTRUM_SPAN', 'RIG_LEVEL_SPECTRUM_SPEED', 'RIG_LEVEL_SQL', 'RIG_LEVEL_STRENGTH', 'RIG_LEVEL_SWR', 'RIG_LEVEL_TEMP_METER', 'RIG_LEVEL_USB_AF', 'RIG_LEVEL_USB_AF_INPUT', 'RIG_LEVEL_VD_METER', 'RIG_LEVEL_VOXDELAY', 'RIG_LEVEL_VOXGAIN', 'RIG_MEM_CAPS_ALL', 'RIG_METER_ALC', 'RIG_METER_COMP', 'RIG_METER_DB', 'RIG_METER_IC', 'RIG_METER_NONE', 'RIG_METER_PO', 'RIG_METER_SWR', 'RIG_METER_TEMP', 'RIG_METER_VDD', 'RIG_MODEL_505DSP', 'RIG_MODEL_ACLOG', 'RIG_MODEL_ADT_200A', 'RIG_MODEL_AR16', 'RIG_MODEL_AR2500', 'RIG_MODEL_AR2700', 'RIG_MODEL_AR3000', 'RIG_MODEL_AR3000A', 'RIG_MODEL_AR3030', 'RIG_MODEL_AR5000', 'RIG_MODEL_AR5000A', 'RIG_MODEL_AR7030', 'RIG_MODEL_AR7030P', 'RIG_MODEL_AR8000', 'RIG_MODEL_AR8200', 'RIG_MODEL_AR8600', 'RIG_MODEL_ARMSTRONG', 'RIG_MODEL_ATD578UVIII', 'RIG_MODEL_BARRETT_2050', 'RIG_MODEL_BARRETT_4050', 'RIG_MODEL_BARRETT_4100', 'RIG_MODEL_BARRETT_950', 'RIG_MODEL_BC235', 'RIG_MODEL_BC245', 'RIG_MODEL_BC250', 'RIG_MODEL_BC780', 'RIG_MODEL_BC785', 'RIG_MODEL_BC786', 'RIG_MODEL_BC895', 'RIG_MODEL_BC898', 'RIG_MODEL_BCD396T', 'RIG_MODEL_BCD996T', 'RIG_MODEL_BCT8', 'RIG_MODEL_CMH530', 'RIG_MODEL_CODAN_2110', 'RIG_MODEL_CODAN_ENVOY', 'RIG_MODEL_CODAN_NGT', 'RIG_MODEL_CTX10', 'RIG_MODEL_DDS60', 'RIG_MODEL_DELTAII', 'RIG_MODEL_DKR8', 'RIG_MODEL_DKR8A', 'RIG_MODEL_DKR8B', 'RIG_MODEL_DORJI_DRA818U', 'RIG_MODEL_DORJI_DRA818V', 'RIG_MODEL_DRT1', 'RIG_MODEL_DSP10', 'RIG_MODEL_DTTSP', 'RIG_MODEL_DTTSP_UDP', 'RIG_MODEL_DUMMY', 'RIG_MODEL_DUMMY_NOVFO', 'RIG_MODEL_DWT', 'RIG_MODEL_DX77', 'RIG_MODEL_DXSR8', 'RIG_MODEL_EB200', 'RIG_MODEL_EK070', 'RIG_MODEL_EK890', 'RIG_MODEL_EK891', 'RIG_MODEL_EK895', 'RIG_MODEL_EK89X', 'RIG_MODEL_EKD500', 'RIG_MODEL_ELAD_FDM_DUO', 'RIG_MODEL_ELEKTOR304', 'RIG_MODEL_ELEKTOR507', 'RIG_MODEL_ESM500', 'RIG_MODEL_ESMC', 'RIG_MODEL_F6K', 'RIG_MODEL_FASDR', 'RIG_MODEL_FIFISDR', 'RIG_MODEL_FLRIG', 'RIG_MODEL_FRG100', 'RIG_MODEL_FRG8800', 'RIG_MODEL_FRG9600', 'RIG_MODEL_FT100', 'RIG_MODEL_FT1000', 'RIG_MODEL_FT1000D', 'RIG_MODEL_FT1000MP', 'RIG_MODEL_FT1000MPMKV', 'RIG_MODEL_FT1000MPMKVFLD', 'RIG_MODEL_FT2000', 'RIG_MODEL_FT450', 'RIG_MODEL_FT450D', 'RIG_MODEL_FT575', 'RIG_MODEL_FT600', 'RIG_MODEL_FT650', 'RIG_MODEL_FT710', 'RIG_MODEL_FT736R', 'RIG_MODEL_FT747', 'RIG_MODEL_FT757', 'RIG_MODEL_FT757GXII', 'RIG_MODEL_FT767', 'RIG_MODEL_FT817', 'RIG_MODEL_FT818', 'RIG_MODEL_FT820', 'RIG_MODEL_FT840', 'RIG_MODEL_FT847', 'RIG_MODEL_FT847UNI', 'RIG_MODEL_FT857', 'RIG_MODEL_FT890', 'RIG_MODEL_FT891', 'RIG_MODEL_FT897', 'RIG_MODEL_FT897D', 'RIG_MODEL_FT900', 'RIG_MODEL_FT9000', 'RIG_MODEL_FT9000OLD', 'RIG_MODEL_FT920', 'RIG_MODEL_FT950', 'RIG_MODEL_FT980', 'RIG_MODEL_FT990', 'RIG_MODEL_FT990UNI', 'RIG_MODEL_FT991', 'RIG_MODEL_FTDX10', 'RIG_MODEL_FTDX101D', 'RIG_MODEL_FTDX101MP', 'RIG_MODEL_FTDX1200', 'RIG_MODEL_FTDX3000', 'RIG_MODEL_FTDX5000', 'RIG_MODEL_FUNCUBEDONGLE', 'RIG_MODEL_FUNCUBEDONGLEPLUS', 'RIG_MODEL_FX4', 'RIG_MODEL_G303', 'RIG_MODEL_G305', 'RIG_MODEL_G313', 'RIG_MODEL_G315', 'RIG_MODEL_G90', 'RIG_MODEL_GNURADIO', 'RIG_MODEL_GQRX', 'RIG_MODEL_GRAUDIO', 'RIG_MODEL_GRAUDIOIQ', 'RIG_MODEL_GS100', 'RIG_MODEL_HF1000', 'RIG_MODEL_HF1000A', 'RIG_MODEL_HF150', 'RIG_MODEL_HF225', 'RIG_MODEL_HF235', 'RIG_MODEL_HF250', 'RIG_MODEL_HIQSDR', 'RIG_MODEL_HPSDR', 'RIG_MODEL_IC1271', 'RIG_MODEL_IC1275', 'RIG_MODEL_IC271', 'RIG_MODEL_IC2730', 'RIG_MODEL_IC275', 'RIG_MODEL_IC375', 'RIG_MODEL_IC471', 'RIG_MODEL_IC475', 'RIG_MODEL_IC575', 'RIG_MODEL_IC7000', 'RIG_MODEL_IC703', 'RIG_MODEL_IC705', 'RIG_MODEL_IC706', 'RIG_MODEL_IC706MKII', 'RIG_MODEL_IC706MKIIG', 'RIG_MODEL_IC707', 'RIG_MODEL_IC7100', 'RIG_MODEL_IC718', 'RIG_MODEL_IC7200', 'RIG_MODEL_IC725', 'RIG_MODEL_IC726', 'RIG_MODEL_IC728', 'RIG_MODEL_IC729', 'RIG_MODEL_IC7300', 'RIG_MODEL_IC731', 'RIG_MODEL_IC735', 'RIG_MODEL_IC736', 'RIG_MODEL_IC737', 'RIG_MODEL_IC738', 'RIG_MODEL_IC7410', 'RIG_MODEL_IC746', 'RIG_MODEL_IC746PRO', 'RIG_MODEL_IC751', 'RIG_MODEL_IC751A', 'RIG_MODEL_IC756', 'RIG_MODEL_IC756PRO', 'RIG_MODEL_IC756PROII', 'RIG_MODEL_IC756PROIII', 'RIG_MODEL_IC7600', 'RIG_MODEL_IC761', 'RIG_MODEL_IC7610', 'RIG_MODEL_IC765', 'RIG_MODEL_IC7700', 'RIG_MODEL_IC775', 'RIG_MODEL_IC7760', 'RIG_MODEL_IC78', 'RIG_MODEL_IC7800', 'RIG_MODEL_IC781', 'RIG_MODEL_IC785x', 'RIG_MODEL_IC820', 'RIG_MODEL_IC821H', 'RIG_MODEL_IC905', 'RIG_MODEL_IC910', 'RIG_MODEL_IC9100', 'RIG_MODEL_IC92D', 'RIG_MODEL_IC970', 'RIG_MODEL_IC9700', 'RIG_MODEL_ICF8101', 'RIG_MODEL_ICID1', 'RIG_MODEL_ICR10', 'RIG_MODEL_ICR20', 'RIG_MODEL_ICR30', 'RIG_MODEL_ICR6', 'RIG_MODEL_ICR7000', 'RIG_MODEL_ICR71', 'RIG_MODEL_ICR7100', 'RIG_MODEL_ICR72', 'RIG_MODEL_ICR75', 'RIG_MODEL_ICR8500', 'RIG_MODEL_ICR8600', 'RIG_MODEL_ICR9000', 'RIG_MODEL_ICR9500', 'RIG_MODEL_ICRX7', 'RIG_MODEL_IC_M700PRO', 'RIG_MODEL_IC_M710', 'RIG_MODEL_IC_M802', 'RIG_MODEL_IC_M803', 'RIG_MODEL_ID31', 'RIG_MODEL_ID4100', 'RIG_MODEL_ID51', 'RIG_MODEL_ID5100', 'RIG_MODEL_JST145', 'RIG_MODEL_JST245', 'RIG_MODEL_K2', 'RIG_MODEL_K3', 'RIG_MODEL_K3S', 'RIG_MODEL_K4', 'RIG_MODEL_KX2', 'RIG_MODEL_KX3', 'RIG_MODEL_LAB599_TX500', 'RIG_MODEL_MALACHITE', 'RIG_MODEL_MC4020', 'RIG_MODEL_MCHFQRP', 'RIG_MODEL_MDS4710', 'RIG_MODEL_MDS9710', 'RIG_MODEL_MICOM2', 'RIG_MODEL_MICROTUNE_4702', 'RIG_MODEL_MICROTUNE_4707', 'RIG_MODEL_MICROTUNE_4937', 'RIG_MODEL_MINISCOUT', 'RIG_MODEL_MINIVNA', 'RIG_MODEL_NETRIGCTL', 'RIG_MODEL_NONE', 'RIG_MODEL_NRD345', 'RIG_MODEL_NRD525', 'RIG_MODEL_NRD535', 'RIG_MODEL_NRD545', 'RIG_MODEL_OMNIVI', 'RIG_MODEL_OMNIVIP', 'RIG_MODEL_OS456', 'RIG_MODEL_OS535', 'RIG_MODEL_PARAGON2', 'RIG_MODEL_PCR100', 'RIG_MODEL_PCR1000', 'RIG_MODEL_PCR1500', 'RIG_MODEL_PCR2500', 'RIG_MODEL_PERSEUS', 'RIG_MODEL_PMR171', 'RIG_MODEL_PMSDR', 'RIG_MODEL_POWERSDR', 'RIG_MODEL_PRM8060', 'RIG_MODEL_PRM8070', 'RIG_MODEL_PRO2052', 'RIG_MODEL_PT8000A', 'RIG_MODEL_Q900', 'RIG_MODEL_QRPLABS', 'RIG_MODEL_QRPLABS_QMX', 'RIG_MODEL_QUISK', 'RIG_MODEL_R5000', 'RIG_MODEL_RA3702', 'RIG_MODEL_RA3710', 'RIG_MODEL_RA3720', 'RIG_MODEL_RA3790', 'RIG_MODEL_RA6790', 'RIG_MODEL_RS2005', 'RIG_MODEL_RS2006', 'RIG_MODEL_RS2035', 'RIG_MODEL_RS2041', 'RIG_MODEL_RS2042', 'RIG_MODEL_RS64', 'RIG_MODEL_RSHFIQ', 'RIG_MODEL_RX320', 'RIG_MODEL_RX331', 'RIG_MODEL_RX340', 'RIG_MODEL_RX350', 'RIG_MODEL_SDR1000', 'RIG_MODEL_SDR1000RFE', 'RIG_MODEL_SDRCONSOLE', 'RIG_MODEL_SDRSHARP', 'RIG_MODEL_SDRUNO', 'RIG_MODEL_SDU5000', 'RIG_MODEL_SDU5500', 'RIG_MODEL_SI570AVRUSB', 'RIG_MODEL_SI570PEABERRY1', 'RIG_MODEL_SI570PEABERRY2', 'RIG_MODEL_SI570PICUSB', 'RIG_MODEL_SMARTSDR_A', 'RIG_MODEL_SMARTSDR_B', 'RIG_MODEL_SMARTSDR_C', 'RIG_MODEL_SMARTSDR_D', 'RIG_MODEL_SMARTSDR_E', 'RIG_MODEL_SMARTSDR_F', 'RIG_MODEL_SMARTSDR_G', 'RIG_MODEL_SMARTSDR_H', 'RIG_MODEL_SR2200', 'RIG_MODEL_TCI1X', 'RIG_MODEL_THD72A', 'RIG_MODEL_THD74', 'RIG_MODEL_THD7A', 'RIG_MODEL_THD7AG', 'RIG_MODEL_THETIS', 'RIG_MODEL_THF6A', 'RIG_MODEL_THF7E', 'RIG_MODEL_THG71', 'RIG_MODEL_TMD700', 'RIG_MODEL_TMD710', 'RIG_MODEL_TMV7', 'RIG_MODEL_TMV71', 'RIG_MODEL_TRANSFOX', 'RIG_MODEL_TRC80', 'RIG_MODEL_TRP7000', 'RIG_MODEL_TRP8000', 'RIG_MODEL_TRP8255', 'RIG_MODEL_TRP9000', 'RIG_MODEL_TRUSDX', 'RIG_MODEL_TRXMANAGER_RIG', 'RIG_MODEL_TS140S', 'RIG_MODEL_TS2000', 'RIG_MODEL_TS440', 'RIG_MODEL_TS450S', 'RIG_MODEL_TS480', 'RIG_MODEL_TS50', 'RIG_MODEL_TS570D', 'RIG_MODEL_TS570S', 'RIG_MODEL_TS590S', 'RIG_MODEL_TS590SG', 'RIG_MODEL_TS680S', 'RIG_MODEL_TS690S', 'RIG_MODEL_TS711', 'RIG_MODEL_TS790', 'RIG_MODEL_TS811', 'RIG_MODEL_TS850', 'RIG_MODEL_TS870S', 'RIG_MODEL_TS890S', 'RIG_MODEL_TS930', 'RIG_MODEL_TS940', 'RIG_MODEL_TS950S', 'RIG_MODEL_TS950SDX', 'RIG_MODEL_TS990S', 'RIG_MODEL_TT516', 'RIG_MODEL_TT526', 'RIG_MODEL_TT538', 'RIG_MODEL_TT550', 'RIG_MODEL_TT565', 'RIG_MODEL_TT585', 'RIG_MODEL_TT588', 'RIG_MODEL_TT599', 'RIG_MODEL_USRP', 'RIG_MODEL_USRP0', 'RIG_MODEL_USRP_G', 'RIG_MODEL_V4L', 'RIG_MODEL_V4L2', 'RIG_MODEL_VR5000', 'RIG_MODEL_VX1700', 'RIG_MODEL_WJ8711', 'RIG_MODEL_WJ8888', 'RIG_MODEL_WR1000', 'RIG_MODEL_WR1500', 'RIG_MODEL_WR1550', 'RIG_MODEL_WR3100', 'RIG_MODEL_WR3150', 'RIG_MODEL_WR3500', 'RIG_MODEL_WR3700', 'RIG_MODEL_X108G', 'RIG_MODEL_X5105', 'RIG_MODEL_X6100', 'RIG_MODEL_X6200', 'RIG_MODEL_XG3', 'RIG_MODEL_XK2100', 'RIG_MODEL_XK852', 'RIG_MODEL_XPLORER', 'RIG_MODE_ALL', 'RIG_MODE_AM', 'RIG_MODE_AMN', 'RIG_MODE_AMS', 'RIG_MODE_BIT46', 'RIG_MODE_BIT47', 'RIG_MODE_BIT48', 'RIG_MODE_BIT49', 'RIG_MODE_BIT50', 'RIG_MODE_BIT51', 'RIG_MODE_BIT52', 'RIG_MODE_BIT53', 'RIG_MODE_BIT54', 'RIG_MODE_BIT55', 'RIG_MODE_BIT56', 'RIG_MODE_BIT57', 'RIG_MODE_BIT58', 'RIG_MODE_BIT59', 'RIG_MODE_BIT60', 'RIG_MODE_BIT61', 'RIG_MODE_BIT62', 'RIG_MODE_C4FM', 'RIG_MODE_CW', 'RIG_MODE_CWN', 'RIG_MODE_CWR', 'RIG_MODE_DCR', 'RIG_MODE_DD', 'RIG_MODE_DPMR', 'RIG_MODE_DSB', 'RIG_MODE_DSTAR', 'RIG_MODE_ECSS', 'RIG_MODE_ECSSLSB', 'RIG_MODE_ECSSUSB', 'RIG_MODE_FAX', 'RIG_MODE_FM', 'RIG_MODE_FMN', 'RIG_MODE_IQ', 'RIG_MODE_ISBLSB', 'RIG_MODE_ISBUSB', 'RIG_MODE_LSB', 'RIG_MODE_LSBD1', 'RIG_MODE_LSBD2', 'RIG_MODE_LSBD3', 'RIG_MODE_NONE', 'RIG_MODE_NXDNVN', 'RIG_MODE_NXDN_N', 'RIG_MODE_P25', 'RIG_MODE_PKTAM', 'RIG_MODE_PKTFM', 'RIG_MODE_PKTFMN', 'RIG_MODE_PKTLSB', 'RIG_MODE_PKTSSB', 'RIG_MODE_PKTUSB', 'RIG_MODE_PSK', 'RIG_MODE_PSKR', 'RIG_MODE_RTTY', 'RIG_MODE_RTTYR', 'RIG_MODE_SAH', 'RIG_MODE_SAL', 'RIG_MODE_SAM', 'RIG_MODE_SPEC', 'RIG_MODE_SSB', 'RIG_MODE_TESTS_MAX', 'RIG_MODE_USB', 'RIG_MODE_USBD1', 'RIG_MODE_USBD2', 'RIG_MODE_USBD3', 'RIG_MODE_WFM', 'RIG_MTYPE_BAND', 'RIG_MTYPE_CALL', 'RIG_MTYPE_EDGE', 'RIG_MTYPE_MEM', 'RIG_MTYPE_MEMOPAD', 'RIG_MTYPE_MORSE', 'RIG_MTYPE_NONE', 'RIG_MTYPE_PRIO', 'RIG_MTYPE_SAT', 'RIG_MTYPE_SPLIT', 'RIG_MTYPE_VOICE', 'RIG_MULTICAST_POLL', 'RIG_MULTICAST_SPECTRUM', 'RIG_MULTICAST_TRANSCEIVE', 'RIG_OK', 'RIG_OP_BAND_DOWN', 'RIG_OP_BAND_UP', 'RIG_OP_CPY', 'RIG_OP_DOWN', 'RIG_OP_FROM_VFO', 'RIG_OP_LEFT', 'RIG_OP_MCL', 'RIG_OP_NONE', 'RIG_OP_RIGHT', 'RIG_OP_TOGGLE', 'RIG_OP_TO_VFO', 'RIG_OP_TUNE', 'RIG_OP_UP', 'RIG_OP_XCHG', 'RIG_PARITY_EVEN', 'RIG_PARITY_MARK', 'RIG_PARITY_NONE', 'RIG_PARITY_ODD', 'RIG_PARITY_SPACE', 'RIG_PARM_AFIF', 'RIG_PARM_AFIF_ACC', 'RIG_PARM_AFIF_LAN', 'RIG_PARM_AFIF_WLAN', 'RIG_PARM_ANN', 'RIG_PARM_APO', 'RIG_PARM_BACKLIGHT', 'RIG_PARM_BANDSELECT', 'RIG_PARM_BAT', 'RIG_PARM_BEEP', 'RIG_PARM_KEYERTYPE', 'RIG_PARM_KEYLIGHT', 'RIG_PARM_NONE', 'RIG_PARM_SCREENSAVER', 'RIG_PARM_TIME', 'RIG_PORT_CM108', 'RIG_PORT_DEVICE', 'RIG_PORT_DTMF', 'RIG_PORT_GPIO', 'RIG_PORT_GPION', 'RIG_PORT_NETWORK', 'RIG_PORT_NONE', 'RIG_PORT_PACKET', 'RIG_PORT_PARALLEL', 'RIG_PORT_RPC', 'RIG_PORT_SERIAL', 'RIG_PORT_UDP_NETWORK', 'RIG_PORT_ULTRA', 'RIG_PORT_USB', 'RIG_POWER_OFF', 'RIG_POWER_ON', 'RIG_POWER_OPERATE', 'RIG_POWER_STANDBY', 'RIG_POWER_UNKNOWN', 'RIG_PTRX_AMPPORT', 'RIG_PTRX_AMPSTATE', 'RIG_PTRX_CACHE', 'RIG_PTRX_DCDPORT', 'RIG_PTRX_MAXIMUM', 'RIG_PTRX_NONE', 'RIG_PTRX_PTTPORT', 'RIG_PTRX_RIGPORT', 'RIG_PTRX_ROTPORT', 'RIG_PTRX_ROTPORT2', 'RIG_PTRX_ROTSTATE', 'RIG_PTRX_STATE', 'RIG_PTT_CM108', 'RIG_PTT_GPIO', 'RIG_PTT_GPION', 'RIG_PTT_NONE', 'RIG_PTT_OFF', 'RIG_PTT_ON', 'RIG_PTT_ON_DATA', 'RIG_PTT_ON_MIC', 'RIG_PTT_PARALLEL', 'RIG_PTT_RIG', 'RIG_PTT_RIG_MICDATA', 'RIG_PTT_SERIAL_DTR', 'RIG_PTT_SERIAL_RTS', 'RIG_RESET_MASTER', 'RIG_RESET_MCALL', 'RIG_RESET_NONE', 'RIG_RESET_SOFT', 'RIG_RESET_VFO', 'RIG_RPT_SHIFT_MINUS', 'RIG_RPT_SHIFT_NONE', 'RIG_RPT_SHIFT_PLUS', 'RIG_SCAN_DELTA', 'RIG_SCAN_MEM', 'RIG_SCAN_NONE', 'RIG_SCAN_PLT', 'RIG_SCAN_PRIO', 'RIG_SCAN_PROG', 'RIG_SCAN_SLCT', 'RIG_SCAN_STOP', 'RIG_SCAN_VFO', 'RIG_SETTING_MAX', 'RIG_SIGNAL_OFF', 'RIG_SIGNAL_ON', 'RIG_SIGNAL_UNSET', 'RIG_SPECTRUM_MODE_CENTER', 'RIG_SPECTRUM_MODE_CENTER_SCROLL', 'RIG_SPECTRUM_MODE_FIXED', 'RIG_SPECTRUM_MODE_FIXED_SCROLL', 'RIG_SPECTRUM_MODE_NONE', 'RIG_SPLIT_OFF', 'RIG_SPLIT_ON', 'RIG_STATUS_ALPHA', 'RIG_STATUS_BETA', 'RIG_STATUS_BUGGY', 'RIG_STATUS_STABLE', 'RIG_STATUS_UNTESTED', 'RIG_TARGETABLE_ALL', 'RIG_TARGETABLE_ANT', 'RIG_TARGETABLE_BAND', 'RIG_TARGETABLE_BANK', 'RIG_TARGETABLE_COMMON', 'RIG_TARGETABLE_FREQ', 'RIG_TARGETABLE_FUNC', 'RIG_TARGETABLE_LEVEL', 'RIG_TARGETABLE_MEM', 'RIG_TARGETABLE_MODE', 'RIG_TARGETABLE_NONE', 'RIG_TARGETABLE_PTT', 'RIG_TARGETABLE_PURE', 'RIG_TARGETABLE_RITXIT', 'RIG_TARGETABLE_ROOFING', 'RIG_TARGETABLE_SPECTRUM', 'RIG_TARGETABLE_TONE', 'RIG_TRN_OFF', 'RIG_TRN_POLL', 'RIG_TRN_RIG', 'RIG_TS_ANY', 'RIG_TYPE_OTHER', 'RIG_VFO_A', 'RIG_VFO_ALL', 'RIG_VFO_B', 'RIG_VFO_C', 'RIG_VFO_CURR', 'RIG_VFO_MAIN', 'RIG_VFO_MAIN_A', 'RIG_VFO_MAIN_B', 'RIG_VFO_MAIN_C', 'RIG_VFO_MEM', 'RIG_VFO_NONE', 'RIG_VFO_OTHER', 'RIG_VFO_RX', 'RIG_VFO_SUB', 'RIG_VFO_SUB_A', 'RIG_VFO_SUB_B', 'RIG_VFO_SUB_C', 'RIG_VFO_TX', 'RIG_VFO_TX_FLAG', 'RIG_VFO_VFO', 'ROT_FLAG_AZIMUTH', 'ROT_FLAG_ELEVATION', 'ROT_FUNC_BIT63', 'ROT_FUNC_NONE', 'ROT_LEVEL_63', 'ROT_LEVEL_FLOAT_LIST', 'ROT_LEVEL_NONE', 'ROT_LEVEL_READONLY_LIST', 'ROT_LEVEL_SPEED', 'ROT_MODEL_AF6SA_WRC', 'ROT_MODEL_ANDROIDSENSOR', 'ROT_MODEL_APEX_SHARED_LOOP', 'ROT_MODEL_ARRAYSOLUTIONS_SAL_12_20_30', 'ROT_MODEL_CNCTRK', 'ROT_MODEL_DCU', 'ROT_MODEL_DUMMY', 'ROT_MODEL_EASYCOMM1', 'ROT_MODEL_EASYCOMM2', 'ROT_MODEL_EASYCOMM3', 'ROT_MODEL_ERC', 'ROT_MODEL_ETHER6', 'ROT_MODEL_F1TETRACKER', 'ROT_MODEL_FLIR', 'ROT_MODEL_FODTRACK', 'ROT_MODEL_GRBLTRK_NET', 'ROT_MODEL_GRBLTRK_SER', 'ROT_MODEL_GS23', 'ROT_MODEL_GS232', 'ROT_MODEL_GS232A', 'ROT_MODEL_GS232A_AZ', 'ROT_MODEL_GS232A_EL', 'ROT_MODEL_GS232B', 'ROT_MODEL_GS232B_AZ', 'ROT_MODEL_GS232B_EL', 'ROT_MODEL_GS232_GENERIC', 'ROT_MODEL_GS23_AZ', 'ROT_MODEL_HD1780', 'ROT_MODEL_IF100', 'ROT_MODEL_INDI', 'ROT_MODEL_IOPTRON', 'ROT_MODEL_LVB', 'ROT_MODEL_MEADE', 'ROT_MODEL_NETROTCTL', 'ROT_MODEL_NEXSTAR', 'ROT_MODEL_NONE', 'ROT_MODEL_PCROTOR', 'ROT_MODEL_PROSISTEL_COMBI_TRACK_AZEL', 'ROT_MODEL_PROSISTEL_D_AZ', 'ROT_MODEL_PROSISTEL_D_EL', 'ROT_MODEL_PROSISTEL_D_EL_CBOXAZ', 'ROT_MODEL_PSTROTATOR', 'ROT_MODEL_RADANT', 'ROT_MODEL_RC2800', 'ROT_MODEL_RC2800_EARLY_AZ', 'ROT_MODEL_RC2800_EARLY_AZEL', 'ROT_MODEL_RCI_AZ', 'ROT_MODEL_RCI_AZEL', 'ROT_MODEL_ROTORCARD', 'ROT_MODEL_ROTOREZ', 'ROT_MODEL_RT21', 'ROT_MODEL_SAEBRTRACK', 'ROT_MODEL_SARTEK1', 'ROT_MODEL_SATEL', 'ROT_MODEL_SATROTCTL', 'ROT_MODEL_SKYWATCHER', 'ROT_MODEL_SPID_MD01_ROT2PROG', 'ROT_MODEL_SPID_ROT1PROG', 'ROT_MODEL_SPID_ROT2PROG', 'ROT_MODEL_ST2', 'ROT_MODEL_TS7400', 'ROT_MODEL_YRC1', 'ROT_MOVE_CCW', 'ROT_MOVE_CW', 'ROT_MOVE_DOWN', 'ROT_MOVE_DOWN_CCW', 'ROT_MOVE_DOWN_CW', 'ROT_MOVE_DOWN_LEFT', 'ROT_MOVE_DOWN_RIGHT', 'ROT_MOVE_LEFT', 'ROT_MOVE_RIGHT', 'ROT_MOVE_UP', 'ROT_MOVE_UP_CCW', 'ROT_MOVE_UP_CW', 'ROT_MOVE_UP_LEFT', 'ROT_MOVE_UP_RIGHT', 'ROT_PARM_FLOAT_LIST', 'ROT_PARM_NONE', 'ROT_PARM_READONLY_LIST', 'ROT_RESET_ALL', 'ROT_SPEED_NOCHANGE', 'ROT_STATUS_BUSY', 'ROT_STATUS_LIMIT_DOWN', 'ROT_STATUS_LIMIT_LEFT', 'ROT_STATUS_LIMIT_RIGHT', 'ROT_STATUS_LIMIT_UP', 'ROT_STATUS_MOVING', 'ROT_STATUS_MOVING_AZ', 'ROT_STATUS_MOVING_DOWN', 'ROT_STATUS_MOVING_EL', 'ROT_STATUS_MOVING_LEFT', 'ROT_STATUS_MOVING_RIGHT', 'ROT_STATUS_MOVING_UP', 'ROT_STATUS_NONE', 'ROT_STATUS_OVERLAP_DOWN', 'ROT_STATUS_OVERLAP_LEFT', 'ROT_STATUS_OVERLAP_RIGHT', 'ROT_STATUS_OVERLAP_UP', 'ROT_TYPE_OTHER', 'TWIDDLE_OFF', 'TWIDDLE_ON', 'VFO_DUAL', 'cvar', 'hamlib_copyright', 'hamlib_version'] assert expected_properties == self.actual_properties @classmethod diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 7c0d39424..03ecb2656 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -1417,7 +1417,7 @@ typedef uint64_t rmode_t; #define RIG_MODE_LSBD1 CONSTANT_64BIT_FLAG (43) /*!< \c LSB-D1 for some rigs */ #define RIG_MODE_LSBD2 CONSTANT_64BIT_FLAG (44) /*!< \c LSB-D1 for some rigs */ #define RIG_MODE_LSBD3 CONSTANT_64BIT_FLAG (45) /*!< \c LSB-D1 for some rigs */ -#define RIG_MODE_BIT46 CONSTANT_64BIT_FLAG (46) /*!< \c reserved for future expansion */ +#define RIG_MODE_WFMS CONSTANT_64BIT_FLAG (46) /*!< \c broadcast wide FM stereo for some rigs */ #define RIG_MODE_BIT47 CONSTANT_64BIT_FLAG (47) /*!< \c reserved for future expansion */ #define RIG_MODE_BIT48 CONSTANT_64BIT_FLAG (48) /*!< \c reserved for future expansion */ #define RIG_MODE_BIT49 CONSTANT_64BIT_FLAG (49) /*!< \c reserved for future expansion */ diff --git a/include/hamlib/riglist.h b/include/hamlib/riglist.h index 7bcb2b952..1bbc6a1e3 100644 --- a/include/hamlib/riglist.h +++ b/include/hamlib/riglist.h @@ -88,6 +88,7 @@ #define RIG_MODEL_ACLOG RIG_MAKE_MODEL(RIG_DUMMY, 8) #define RIG_MODEL_SDRSHARP RIG_MAKE_MODEL(RIG_DUMMY, 9) #define RIG_MODEL_QUISK RIG_MAKE_MODEL(RIG_DUMMY, 10) +#define RIG_MODEL_GQRX RIG_MAKE_MODEL(RIG_DUMMY, 11) /* * Yaesu diff --git a/rigs/dummy/Android.mk b/rigs/dummy/Android.mk index 4108a9db4..30ca4c323 100644 --- a/rigs/dummy/Android.mk +++ b/rigs/dummy/Android.mk @@ -2,7 +2,7 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) -LOCAL_SRC_FILES := dummy.c rot_dummy.c netrigctl.c netrotctl.c flrig.c trxmanager.c dummy_common.c sdrsharp.c +LOCAL_SRC_FILES := dummy.c rot_dummy.c netrigctl.c netrotctl.c flrig.c trxmanager.c dummy_common.c sdrsharp.c gqrx.c LOCAL_MODULE := dummy LOCAL_CFLAGS := diff --git a/rigs/dummy/Makefile.am b/rigs/dummy/Makefile.am index aaeb39601..ebf0cff0d 100644 --- a/rigs/dummy/Makefile.am +++ b/rigs/dummy/Makefile.am @@ -1,4 +1,4 @@ -DUMMYSRC = dummy_common.c dummy_common.h dummy.c dummy.h rot_dummy.c rot_dummy.h rot_pstrotator.c rot_pstrotator.h netrigctl.c netrotctl.c flrig.c flrig.h trxmanager.c trxmanager.h amp_dummy.c amp_dummy.h netampctl.c tci1x.c aclog.c sdrsharp.c quisk.c +DUMMYSRC = dummy_common.c dummy_common.h dummy.c dummy.h rot_dummy.c rot_dummy.h rot_pstrotator.c rot_pstrotator.h netrigctl.c netrotctl.c flrig.c flrig.h trxmanager.c trxmanager.h amp_dummy.c amp_dummy.h netampctl.c tci1x.c aclog.c sdrsharp.c quisk.c gqrx.c noinst_LTLIBRARIES = libhamlib-dummy.la libhamlib_dummy_la_SOURCES = $(DUMMYSRC) diff --git a/rigs/dummy/dummy.c b/rigs/dummy/dummy.c index ff6db275d..0d59308d9 100644 --- a/rigs/dummy/dummy.c +++ b/rigs/dummy/dummy.c @@ -2828,6 +2828,7 @@ DECLARE_INITRIG_BACKEND(dummy) rig_register(&aclog_caps); rig_register(&sdrsharp_caps); rig_register(&quisk_caps); + rig_register(&gqrx_caps); // rig_register(&tci1x_caps); return RIG_OK; } diff --git a/rigs/dummy/dummy.h b/rigs/dummy/dummy.h index bf269ea61..57d35bc5f 100644 --- a/rigs/dummy/dummy.h +++ b/rigs/dummy/dummy.h @@ -48,6 +48,7 @@ extern struct rig_caps tci1x_caps; extern struct rig_caps aclog_caps; extern struct rig_caps sdrsharp_caps; extern struct rig_caps quisk_caps; +extern struct rig_caps gqrx_caps; int netrigctl_get_vfo_mode(RIG *); From 26daf352b36eeca337b52ae830be1ded250c188c Mon Sep 17 00:00:00 2001 From: "Mark J. Fine" Date: Sat, 19 Jul 2025 09:45:43 -0400 Subject: [PATCH 2/9] Corrects meter level query. --- rigs/dummy/gqrx.c | 1026 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1026 insertions(+) create mode 100644 rigs/dummy/gqrx.c diff --git a/rigs/dummy/gqrx.c b/rigs/dummy/gqrx.c new file mode 100644 index 000000000..1036a6bf2 --- /dev/null +++ b/rigs/dummy/gqrx.c @@ -0,0 +1,1026 @@ +/* +* Hamlib rigctld backend - works with GQRX's remote control command set +* Based upon SDRSharp backend, Copyright (c) 2023 by Michael Black W9MDB +* Copyright (c) 2025 Mark J. Fine +* +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +* +*/ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include "idx_builtin.h" + +#define BACKEND_VER "20250718.0" + +#define TRUE 1 +#define FALSE 0 + + +#define MAXCMDLEN 128 +#define MAXXMLLEN 128 +#define MAXARGLEN 128 +#define MAXBANDWIDTHLEN 4096 + +#define DEFAULTPATH "127.0.0.1:7356" + +#define GQRX_MODES (RIG_MODE_AM | RIG_MODE_AMS | RIG_MODE_SSB | RIG_MODE_CW | RIG_MODE_CWR | RIG_MODE_FM | RIG_MODE_WFM | RIG_MODE_WFMS) +#define GQRX_LEVEL_ALL (RIG_LEVEL_AF | RIG_LEVEL_SQL | RIG_LEVEL_RAWSTR | RIG_LEVEL_STRENGTH ) +#define GQRX_ANTS (RIG_ANT_1) +#define GQRX_VFOS (RIG_VFO_A) + +#define GQRX_STR_CAL { 17, { \ + {-100, -60 }, \ + { -92, -54 }, \ + { -84, -48 }, \ + { -78, -42 }, \ + { -72, -36 }, \ + { -66, -30 }, \ + { -60, -24 }, \ + { -54, -18 }, \ + { -48, -12 }, \ + { -42, -6 }, \ + { -36, 0 }, \ + { -30, 10 }, \ + { -24, 20 }, \ + { -18, 30 }, \ + { -12, 40 }, \ + { -6, 50 }, \ + { 0, 60 }, \ + } } + +struct gqrx_priv_data +{ + freq_t curr_freq; + rmode_t curr_mode; + pbwidth_t curr_width; + int curr_power; + int curr_meter; + float curr_af; + float curr_sql; +}; + + +/* +* check_vfo +* No assumptions +*/ +static int check_vfo(vfo_t vfo) +{ + switch (vfo) + { + case RIG_VFO_A: + break; + + case RIG_VFO_TX: + case RIG_VFO_B: + break; + + case RIG_VFO_CURR: + break; // will default to A in which_vfo + + default: + return (FALSE); + } + + return (TRUE); +} + + +/* +* read_transaction +* Assumes rig!=NULL, xml!=NULL, xml_len>=MAXXMLLEN +*/ +static int read_transaction(RIG *rig, char *xml, int xml_len) +{ + int retval; + int retry; + char *delims; + char *terminator = "\n"; + + ENTERFUNC; + + retry = 2; + delims = "\n"; + xml[0] = 0; + + do + { + char tmp_buf[MAXXMLLEN]; // plenty big for expected responses hopefully + + if (retry < 2) + { + rig_debug(RIG_DEBUG_WARN, "%s: retry needed? retry=%d\n", __func__, retry); + } + + int len = read_string(RIGPORT(rig), (unsigned char *) tmp_buf, sizeof(tmp_buf), + delims, + strlen(delims), 0, 1); + + if (len > 0) { retry = 3; } + + if (len <= 0) + { + rig_debug(RIG_DEBUG_ERR, "%s: read_string error=%d\n", __func__, len); + continue; + } + + if (strlen(xml) + strlen(tmp_buf) < xml_len - 1) + { + strncat(xml, tmp_buf, xml_len - 1); + } + else + { + rig_debug(RIG_DEBUG_ERR, + "%s: xml buffer overflow!!\nTrying to add len=%d\nTo len=%d\n", __func__, + (int)strlen(tmp_buf), (int)strlen(xml)); + RETURNFUNC(-RIG_EPROTO); + } + } + while (retry-- > 0 && strstr(xml, terminator) == NULL); + + if (retry == 0) + { + rig_debug(RIG_DEBUG_WARN, "%s: retry timeout\n", __func__); + RETURNFUNC(-RIG_ETIMEOUT); + } + + if (strstr(xml, terminator)) + { + retval = RIG_OK; + } + else + { + rig_debug(RIG_DEBUG_VERBOSE, "%s: did not get %s\n", __func__, terminator); + retval = -(101 + RIG_EPROTO); + } + + RETURNFUNC(retval); +} + + +/* +* write_transaction +* Assumes rig!=NULL, xml!=NULL, xml_len=total size of xml for response +*/ +static int write_transaction(RIG *rig, char *xml, int xml_len) +{ + + int try = rig->caps->retry; + + int retval = -RIG_EPROTO; + + hamlib_port_t *rp = RIGPORT(rig); + + ENTERFUNC; + + // This shouldn't ever happen...but just in case + // We need to avoid an empty write as rigctld replies with blank line + if (xml_len == 0) + { + rig_debug(RIG_DEBUG_ERR, "%s: len==0??\n", __func__); + RETURNFUNC(retval); + } + + // appears we can lose sync if we don't clear things out + // shouldn't be anything for us now anyways + rig_flush(rp); + + while (try-- >= 0 && retval != RIG_OK) + { + retval = write_block(rp, (unsigned char *) xml, strlen(xml)); + + if (retval < 0) + { + RETURNFUNC(-RIG_EIO); + } + } + + RETURNFUNC(retval); +} + + +static int gqrx_transaction(RIG *rig, char *cmd, char *value, + int value_len) +{ + char xml[MAXXMLLEN]; + int retry = 3; + + ENTERFUNC; + ELAPSED1; + + set_transaction_active(rig); + + if (value) + { + value[0] = 0; + } + + do + { + int retval; + + if (retry != 3) + { + rig_debug(RIG_DEBUG_VERBOSE, "%s: cmd=%s, retry=%d\n", __func__, cmd, retry); + } + + retval = write_transaction(rig, cmd, strlen(cmd)); + + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: write_transaction error=%d\n", __func__, retval); + + // if we get RIG_EIO the socket has probably disappeared + // so bubble up the error so port can re re-opened + if (retval == -RIG_EIO) { set_transaction_inactive(rig); RETURNFUNC(retval); } + + hl_usleep(50 * 1000); // 50ms sleep if error + } + + if (value) + { + read_transaction(rig, xml, sizeof(xml)); // this might time out -- that's OK + strncpy(value, xml, value_len); + } + + } + while (((value && strlen(value) == 0)) + && retry--); // we'll do retries if needed + + if (value && strlen(value) == 0) + { + rig_debug(RIG_DEBUG_ERR, "%s: no value returned\n", __func__); + set_transaction_inactive(rig); RETURNFUNC(-RIG_EPROTO); + } + + ELAPSED2; + set_transaction_inactive(rig); + RETURNFUNC(RIG_OK); +} + + +/* +* gqrx_init +* Assumes rig!=NULL +*/ +static int gqrx_init(RIG *rig) +{ + struct gqrx_priv_data *priv; + hamlib_port_t *rp = RIGPORT(rig); + + ENTERFUNC; + rig_debug(RIG_DEBUG_TRACE, "%s version %s\n", __func__, rig->caps->version); + + STATE(rig)->priv = (struct gqrx_priv_data *)calloc(1, sizeof(struct gqrx_priv_data)); + + if (!STATE(rig)->priv) + { + RETURNFUNC(-RIG_ENOMEM); + } + + priv = STATE(rig)->priv; + + memset(priv, 0, sizeof(struct gqrx_priv_data)); + + /* + * set arbitrary initial status + */ + STATE(rig)->current_vfo = RIG_VFO_A; + priv->curr_freq = 0.0; + priv->curr_mode = RIG_MODE_NONE; + priv->curr_width = RIG_PASSBAND_NORMAL; + priv->curr_power = false; //assume off + priv->curr_meter = -100; //assume no signal + priv->curr_af = -10.0; //assume mid-way + priv->curr_sql = -150.0; //assume none + + if (!rig->caps) + { + RETURNFUNC(-RIG_EINVAL); + } + + strncpy(rp->pathname, DEFAULTPATH, sizeof(rp->pathname)); + + rig_debug(RIG_DEBUG_TRACE, "%s pathanme %s\n", __func__, rp->pathname); + + RETURNFUNC(RIG_OK); +} + + +/* +* gqrx_get_freq +* Assumes rig!=NULL, STATE(rig)->priv!=NULL, freq!=NULL +*/ +static int gqrx_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) +{ + char value[MAXARGLEN]; + struct gqrx_priv_data *priv = (struct gqrx_priv_data *) STATE(rig)->priv; + + ENTERFUNC; + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s\n", __func__, + rig_strvfo(vfo)); + + if (check_vfo(vfo) == FALSE) + { + rig_debug(RIG_DEBUG_ERR, "%s: unsupported VFO %s\n", + __func__, rig_strvfo(vfo)); + RETURNFUNC(-RIG_EINVAL); + } + + if (vfo == RIG_VFO_CURR) + { + vfo = STATE(rig)->current_vfo; + rig_debug(RIG_DEBUG_TRACE, "%s: get_freq2 vfo=%s\n", + __func__, rig_strvfo(vfo)); + } + + char *cmd = "f\n"; + int retval; + + retval = gqrx_transaction(rig, cmd, value, sizeof(value)); + + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: READBMF failed retval=%s\n", __func__, + rigerror(retval)); + RETURNFUNC(retval); + } + + *freq = 0; + + sscanf(value, "%lf", freq); + + if (*freq == 0) + { + rig_debug(RIG_DEBUG_ERR, "%s: freq==0??\nvalue=%s\n", __func__, + value); + RETURNFUNC(-RIG_EPROTO); + } + else + { + rig_debug(RIG_DEBUG_TRACE, "%s: freq=%.0f\n", __func__, *freq); + } + + if (vfo == RIG_VFO_A) + { + priv->curr_freq = *freq; + } + + RETURNFUNC(RIG_OK); +} + + +/* +* gqrx_open +* Assumes rig!=NULL +*/ +static int gqrx_open(RIG *rig) +{ + int retval; + char value[MAXARGLEN]; + + ENTERFUNC; + value[0] = '?'; + value[1] = 0; + + freq_t freq; + retval = gqrx_get_freq(rig, RIG_VFO_CURR, &freq); + + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: gqrx_get_freq not working!!\n", __func__); + RETURNFUNC(-RIG_EPROTO); + } + + STATE(rig)->current_vfo = RIG_VFO_A; + rig_debug(RIG_DEBUG_TRACE, "%s: currvfo=%s value=%s\n", __func__, + rig_strvfo(STATE(rig)->current_vfo), value); + + RETURNFUNC(retval); +} + + +/* +* gqrx_close +* Assumes rig!=NULL +*/ +static int gqrx_close(RIG *rig) +{ + ENTERFUNC; + + RETURNFUNC(RIG_OK); +} + + +/* +* gqrx_cleanup +* Assumes rig!=NULL, STATE(rig)->priv!=NULL +*/ +static int gqrx_cleanup(RIG *rig) +{ + rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); + + if (!rig) + { + RETURNFUNC2(-RIG_EINVAL); + } + + free(STATE(rig)->priv); + + STATE(rig)->priv = NULL; + + // we really don't need to free this up as it's only done once + // was causing problem when cleanup was followed by rig_open + // model_gqrx was not getting refilled + // if we can figure out that one we can re-enable this +#if 0 + int i; + + for (i = 0; modeMap[i].mode_hamlib != 0; ++i) + { + if (modeMap[i].mode_gqrx) + { + free(modeMap[i].mode_gqrx); + modeMap[i].mode_gqrx = NULL; + modeMap[i].mode_hamlib = 0; + } + + } + +#endif + + RETURNFUNC2(RIG_OK); +} + + +/* +* gqrx_get_vfo +* assumes rig!=NULL, vfo != NULL +*/ +static int gqrx_get_vfo(RIG *rig, vfo_t *vfo) +{ + ENTERFUNC; + + *vfo = RIG_VFO_A; + + RETURNFUNC(RIG_OK); +} + + +/* +* gqrx_set_freq +* assumes rig!=NULL, STATE(rig)->priv!=NULL +*/ +static int gqrx_set_freq(RIG *rig, vfo_t vfo, freq_t freq) +{ + int retval; + char cmd[MAXARGLEN]; + char value[1024]; + + rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s freq=%.0f\n", __func__, + rig_strvfo(vfo), freq); + + if (check_vfo(vfo) == FALSE) + { + rig_debug(RIG_DEBUG_ERR, "%s: unsupported VFO %s\n", + __func__, rig_strvfo(vfo)); + RETURNFUNC2(-RIG_EINVAL); + } + +#if 0 + + if (vfo == RIG_VFO_CURR) + { + vfo = STATE(rig)->current_vfo; + } + +#endif + + SNPRINTF(cmd, sizeof(cmd), "F %lf\n", freq); + + retval = gqrx_transaction(rig, cmd, value, sizeof(value)); + + if (retval != RIG_OK) + { + RETURNFUNC2(retval); + } + + sscanf(value, "RPRT %d", &retval); + + RETURNFUNC2(retval); +} + + +/* +* gqrx_set_mode +* assumes rig!=NULL, STATE(rig)->priv!=NULL +*/ +static int gqrx_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) +{ + int retval; + char cmd[MAXARGLEN]; + char value[1024]; + char* mode_sel; + struct gqrx_priv_data *priv = (struct gqrx_priv_data *) STATE(rig)->priv; + + rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s mode=%ld\n", __func__, + rig_strvfo(vfo), mode); + + if (check_vfo(vfo) == FALSE) + { + rig_debug(RIG_DEBUG_ERR, "%s: unsupported VFO %s\n", + __func__, rig_strvfo(vfo)); + RETURNFUNC2(-RIG_EINVAL); + } + +#if 0 + + if (vfo == RIG_VFO_CURR) + { + vfo = STATE(rig)->current_vfo; + } + +#endif + + switch (mode) + { + case RIG_MODE_AM: mode_sel = strdup("AM"); break; + + case RIG_MODE_AMS: mode_sel = strdup("AMS"); break; + + case RIG_MODE_LSB: mode_sel = strdup("LSB"); break; + + case RIG_MODE_USB: mode_sel = strdup("USB"); break; + + case RIG_MODE_CW: mode_sel = strdup("CWL"); break; + + case RIG_MODE_CWR: mode_sel = strdup("CWU"); break; + + case RIG_MODE_FM: mode_sel = strdup("FM"); break; + + case RIG_MODE_WFM: mode_sel = strdup("WFM"); break; + + case RIG_MODE_WFMS: mode_sel = strdup("WFM_ST"); break; + + default: + rig_debug(RIG_DEBUG_ERR, "gqrx_set_mode: " + "unsupported mode %s\n", rig_strrmode(mode)); + return -RIG_EINVAL; + } + + // Only change width if it's different + // Otherwise, just change the mode and + // let GQRX change the width on it's own + if (width != priv->curr_width) + { + SNPRINTF(cmd, sizeof(cmd), "M %s %ld\n", mode_sel, width); + } + else + { + SNPRINTF(cmd, sizeof(cmd), "M %s\n", mode_sel); + } + + retval = gqrx_transaction(rig, cmd, value, sizeof(value)); + + free(mode_sel); + + if (retval != RIG_OK) + { + RETURNFUNC2(retval); + } + + sscanf(value, "RPRT %d", &retval); + + RETURNFUNC2(retval); +} + + +/* + * gqrx_get_mode + * Assumes rig!=NULL + */ +static int gqrx_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) +{ + int retval; + char value[MAXARGLEN]; + char modeStr[MAXARGLEN]; + int pbwidth; + struct gqrx_priv_data *priv = (struct gqrx_priv_data *) STATE(rig)->priv; + + ENTERFUNC; + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s\n", __func__, + rig_strvfo(vfo)); + + if (check_vfo(vfo) == FALSE) + { + rig_debug(RIG_DEBUG_ERR, "%s: unsupported VFO %s\n", + __func__, rig_strvfo(vfo)); + RETURNFUNC(-RIG_EINVAL); + } + +#if 0 + + if (vfo == RIG_VFO_CURR) + { + vfo = STATE(rig)->current_vfo; + rig_debug(RIG_DEBUG_TRACE, "%s: get_mode vfo=%s\n", + __func__, rig_strvfo(vfo)); + } + +#endif + + char *cmd = "m\n"; + + retval = gqrx_transaction(rig, cmd, value, sizeof(value)); + + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: READBMF failed retval=%s\n", __func__, + rigerror(retval)); + RETURNFUNC(retval); + } + + sscanf(value, "%s\n%d", &modeStr[0], &pbwidth); + + if (strcmp(&modeStr[0], "AM") == 0) + { + *mode = RIG_MODE_AM; + } + else if (strcmp(&modeStr[0], "AMS") == 0) + { + *mode = RIG_MODE_AMS; + } + else if (strcmp(&modeStr[0], "LSB") == 0) + { + *mode = RIG_MODE_LSB; + } + else if (strcmp(&modeStr[0], "USB") == 0) + { + *mode = RIG_MODE_USB; + } + else if (strcmp(&modeStr[0], "CWL") == 0) + { + *mode = RIG_MODE_CW; + } + else if (strcmp(&modeStr[0], "CWR") == 0) + { + *mode = RIG_MODE_CWR; + } + else if (strcmp(&modeStr[0], "FM") == 0) + { + *mode = RIG_MODE_FM; + } + else if (strcmp(&modeStr[0], "WFM") == 0) + { + *mode = RIG_MODE_WFM; + } + else if (strcmp(&modeStr[0], "WFM_ST") == 0) + { + *mode = RIG_MODE_WFMS; + } + else + { + rig_debug(RIG_DEBUG_ERR, "%s: value=%s\n", __func__, + value); + RETURNFUNC(-RIG_EPROTO); + } + + rig_debug(RIG_DEBUG_TRACE, "%s: mode=%s\n", __func__, modeStr); + + if (vfo == RIG_VFO_A) + { + *width = pbwidth; + priv->curr_mode = *mode; + priv->curr_width = pbwidth; + } + + RETURNFUNC(RIG_OK); +} + + +/* +* gqrx_set_level +* assumes rig!=NULL, STATE(rig)->priv!=NULL +*/ +static int gqrx_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) +{ + int retval; + char cmd[MAXARGLEN]; + char value[1024]; + + rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s level=%ld\n", __func__, + rig_strvfo(vfo), level); + + if (check_vfo(vfo) == FALSE) + { + rig_debug(RIG_DEBUG_ERR, "%s: unsupported VFO %s\n", + __func__, rig_strvfo(vfo)); + RETURNFUNC2(-RIG_EINVAL); + } + +#if 0 + + if (vfo == RIG_VFO_CURR) + { + vfo = STATE(rig)->current_vfo; + } + +#endif + + switch (level) + { + case RIG_LEVEL_AF: + SNPRINTF(cmd, sizeof(cmd), "L AF %f\n", val.f); + break; + + case RIG_LEVEL_SQL: + SNPRINTF(cmd, sizeof(cmd), "L SQL %f\n", val.f); + break; + + default: + return -RIG_EINVAL; + } + + retval = gqrx_transaction(rig, cmd, value, sizeof(value)); + + if (retval != RIG_OK) + { + RETURNFUNC2(retval); + } + + sscanf(value, "RPRT %d", &retval); + + RETURNFUNC2(retval); +} + + +/* + * gqrx_get_level + * Assumes rig!=NULL + */ +static int gqrx_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) +{ + char* cmd; + char value[MAXARGLEN]; + int retval; + struct gqrx_priv_data *priv = (struct gqrx_priv_data *) STATE(rig)->priv; + + ENTERFUNC; + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s\n", __func__, + rig_strvfo(vfo)); + + if (check_vfo(vfo) == FALSE) + { + rig_debug(RIG_DEBUG_ERR, "%s: unsupported VFO %s\n", + __func__, rig_strvfo(vfo)); + RETURNFUNC(-RIG_EINVAL); + } + + if (vfo == RIG_VFO_CURR) + { + vfo = STATE(rig)->current_vfo; + rig_debug(RIG_DEBUG_TRACE, "%s: get_mode vfo=%s\n", + __func__, rig_strvfo(vfo)); + } + + switch(level) + { + case RIG_LEVEL_AF: + cmd = strdup("l AF\n"); + break; + + case RIG_LEVEL_SQL: + cmd = strdup("l SQL\n"); + break; + + case RIG_LEVEL_STRENGTH: + case RIG_LEVEL_RAWSTR: + cmd = strdup("l STRENGTH\n"); + break; + + default: + RETURNFUNC(-RIG_EPROTO); + } + + retval = gqrx_transaction(rig, cmd, value, sizeof(value)); + + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: READBMF failed retval=%s\n", __func__, + rigerror(retval)); + RETURNFUNC(retval); + } + + sscanf(value, "%f\n", &val->f); + + if (vfo == RIG_VFO_A) + { + switch(level) + { + case RIG_LEVEL_AF: + priv->curr_af = val->f; + break; + + case RIG_LEVEL_SQL: + priv->curr_sql = val->f; + break; + + case RIG_LEVEL_STRENGTH: + val->i = round(rig_raw2val(round(val->f), &rig->caps->str_cal)); + priv->curr_meter = val->i; + break; + + case RIG_LEVEL_RAWSTR: + val->i = round(val->f); + break; + + default : + break; + } + } + + RETURNFUNC(RIG_OK); +} + + +/* +* gqrx_set_powerstat +* assumes rig!=NULL, STATE(rig)->priv!=NULL +*/ +static int gqrx_set_powerstat(RIG *rig, powerstat_t status) +{ + int retval; + char cmd[MAXARGLEN]; + char value[1024]; + + rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); + + SNPRINTF(cmd, sizeof(cmd), "U DSP %d\n", status ? 1 : 0); + + retval = gqrx_transaction(rig, cmd, value, sizeof(value)); + + if (retval != RIG_OK) + { + RETURNFUNC2(retval); + } + + sscanf(value, "RPRT %d", &retval); + + RETURNFUNC2(retval); +} + + +/* +* gqrx_get_powerstat +* Assumes rig!=NULL, STATE(rig)->priv!=NULL, freq!=NULL +*/ +static int gqrx_get_powerstat(RIG *rig, powerstat_t *status) +{ + char value[MAXARGLEN]; + struct gqrx_priv_data *priv = (struct gqrx_priv_data *) STATE(rig)->priv; + + ENTERFUNC; + + char *cmd = "u DSP\n"; + int retval; + + retval = gqrx_transaction(rig, cmd, value, sizeof(value)); + + if (retval != RIG_OK) + { + *status = false; + } + else + { + *status = (value[0] == '1'); + } + + rig_debug(RIG_DEBUG_TRACE, "%s: status=%d\n", __func__, *status); + + priv->curr_power = *status; + + RETURNFUNC(RIG_OK); +} + + +struct rig_caps gqrx_caps = +{ + RIG_MODEL(RIG_MODEL_GQRX), + .model_name = "GQRX", + .mfg_name = "GQRX", + .version = BACKEND_VER, + .copyright = "LGPL", + .status = RIG_STATUS_NEW, + .rig_type = RIG_TYPE_RECEIVER, + .ptt_type = RIG_PTT_NONE, + .dcd_type = RIG_DCD_NONE, + .port_type = RIG_PORT_NETWORK, + .write_delay = 1, + .post_write_delay = 100, + .timeout = 1000, + .retry = 2, + + .has_get_func = false, + .has_set_func = false, + .has_get_level = GQRX_LEVEL_ALL, + .has_set_level = RIG_LEVEL_SET(RIG_LEVEL_AF | RIG_LEVEL_SQL), + .has_get_parm = false, + .has_set_parm = false, + .level_gran = { + [LVL_RAWSTR] = { .min = { .f = -100.0 }, .max = { .f = 1.0 } }, + [LVL_AF] = { .min = { .f = -80.0 }, .max = { .f = 50.0 } }, + [LVL_SQL] = { .min = { .f = -150.0 }, .max = { .f = 1.0 } }, + }, + .parm_gran = {}, + .ctcss_list = NULL, + .dcs_list = NULL, + .max_rit = Hz(0), + .max_xit = Hz(0), + .max_ifshift = Hz(0), + .targetable_vfo = 0, + .transceive = RIG_TRN_OFF, + .vfo_ops = 0, + .scan_ops = 0, + .bank_qty = 0, + .chan_desc_sz = 0, + .priv = NULL, + + .chan_list = {RIG_CHAN_END,}, + + .rx_range_list1 = { + { Hz(1), GHz(2), GQRX_MODES, -1, -1, GQRX_VFOS, GQRX_ANTS}, + RIG_FRNG_END, + }, + .tx_range_list1 = {RIG_FRNG_END,}, + .rx_range_list2 = { + { Hz(1), GHz(2), GQRX_MODES, -1, -1, GQRX_VFOS, GQRX_ANTS}, + RIG_FRNG_END, + }, + .tx_range_list2 = {RIG_FRNG_END,}, + .tuning_steps = { + {GQRX_MODES, 1}, + {GQRX_MODES, RIG_TS_ANY}, + RIG_TS_END, + }, + //note: wide, normal, narrow, user + .filters = { + {RIG_MODE_WFM | RIG_MODE_WFMS, kHz(160)}, //normal + {RIG_MODE_WFM | RIG_MODE_WFMS, kHz(200)}, //wide + {RIG_MODE_WFM | RIG_MODE_WFMS, kHz(120)}, //narrow + {RIG_MODE_FM, kHz(10)}, //normal + {RIG_MODE_FM, kHz(20)}, //wide + {RIG_MODE_FM, kHz(5)}, //narrow + {RIG_MODE_AM | RIG_MODE_AMS, kHz(10)}, //normal + {RIG_MODE_AM | RIG_MODE_AMS, kHz(20)}, //wide + {RIG_MODE_AM | RIG_MODE_AMS, kHz(5)}, //narrow + {RIG_MODE_SSB, kHz(2.7)}, //normal + {RIG_MODE_SSB, kHz(3.9)}, //wide + {RIG_MODE_SSB, kHz(2.4)}, //narrow + {RIG_MODE_CW | RIG_MODE_CWR, Hz(500)}, //normal + {RIG_MODE_CW | RIG_MODE_CWR, kHz(2.0)}, //wide + {RIG_MODE_CW | RIG_MODE_CWR, Hz(200)}, //narrow + {RIG_MODE_WFM | RIG_MODE_WFMS | RIG_MODE_FM | RIG_MODE_AM | RIG_MODE_AMS | RIG_MODE_SSB | RIG_MODE_CW | RIG_MODE_CWR, RIG_FLT_ANY}, //user + RIG_FLT_END, + }, + .str_cal = GQRX_STR_CAL, + + .rig_init = gqrx_init, + .rig_open = gqrx_open, + .rig_close = gqrx_close, + .rig_cleanup = gqrx_cleanup, + + .get_vfo = gqrx_get_vfo, //always RIG_VFO_A + .set_freq = gqrx_set_freq, //F \n + .get_freq = gqrx_get_freq, //f\n + .set_mode = gqrx_set_mode, //M [passband Hz]\n + .get_mode = gqrx_get_mode, //m\n + .set_level = gqrx_set_level, //AF:L AF , SQL:L SQL \n + .get_level = gqrx_get_level, //AF:l AF\n, SWL:l SQL\n, RAWSTR:l STRENGTH\n + .set_powerstat = gqrx_set_powerstat, //U DSP \n + .get_powerstat = gqrx_get_powerstat, //u DSP\n + .hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS +}; From 3722c643cc33f9aba0498b7e0a253a8c73d13b7f Mon Sep 17 00:00:00 2001 From: "Mark J. Fine" Date: Sat, 19 Jul 2025 10:09:30 -0400 Subject: [PATCH 3/9] CW modes were reversed... fixed. SSB narrow filter was in error.. fixed. --- rigs/dummy/gqrx.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rigs/dummy/gqrx.c b/rigs/dummy/gqrx.c index 1036a6bf2..acea67d74 100644 --- a/rigs/dummy/gqrx.c +++ b/rigs/dummy/gqrx.c @@ -575,9 +575,9 @@ static int gqrx_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) case RIG_MODE_USB: mode_sel = strdup("USB"); break; - case RIG_MODE_CW: mode_sel = strdup("CWL"); break; + case RIG_MODE_CW: mode_sel = strdup("CWU"); break; - case RIG_MODE_CWR: mode_sel = strdup("CWU"); break; + case RIG_MODE_CWR: mode_sel = strdup("CWL"); break; case RIG_MODE_FM: mode_sel = strdup("FM"); break; @@ -681,11 +681,11 @@ static int gqrx_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) { *mode = RIG_MODE_USB; } - else if (strcmp(&modeStr[0], "CWL") == 0) + else if (strcmp(&modeStr[0], "CWU") == 0) { *mode = RIG_MODE_CW; } - else if (strcmp(&modeStr[0], "CWR") == 0) + else if (strcmp(&modeStr[0], "CWL") == 0) { *mode = RIG_MODE_CWR; } @@ -999,7 +999,7 @@ struct rig_caps gqrx_caps = {RIG_MODE_AM | RIG_MODE_AMS, kHz(5)}, //narrow {RIG_MODE_SSB, kHz(2.7)}, //normal {RIG_MODE_SSB, kHz(3.9)}, //wide - {RIG_MODE_SSB, kHz(2.4)}, //narrow + {RIG_MODE_SSB, kHz(1.4)}, //narrow {RIG_MODE_CW | RIG_MODE_CWR, Hz(500)}, //normal {RIG_MODE_CW | RIG_MODE_CWR, kHz(2.0)}, //wide {RIG_MODE_CW | RIG_MODE_CWR, Hz(200)}, //narrow From f934b75688abcfc4937035cd8f8994d188963606 Mon Sep 17 00:00:00 2001 From: "Mark J. Fine" Date: Sat, 19 Jul 2025 10:24:09 -0400 Subject: [PATCH 4/9] Fixed c99 booleans. Fixed format in debug statements for mode and level. --- rigs/dummy/gqrx.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rigs/dummy/gqrx.c b/rigs/dummy/gqrx.c index acea67d74..f056fecf5 100644 --- a/rigs/dummy/gqrx.c +++ b/rigs/dummy/gqrx.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -546,7 +547,7 @@ static int gqrx_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) struct gqrx_priv_data *priv = (struct gqrx_priv_data *) STATE(rig)->priv; rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); - rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s mode=%ld\n", __func__, + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s mode=%llu\n", __func__, rig_strvfo(vfo), mode); if (check_vfo(vfo) == FALSE) @@ -732,7 +733,7 @@ static int gqrx_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) char value[1024]; rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); - rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s level=%ld\n", __func__, + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s level=%llu\n", __func__, rig_strvfo(vfo), level); if (check_vfo(vfo) == FALSE) From 50cb5b595eb5920fb3392279a9367a2d267a78eb Mon Sep 17 00:00:00 2001 From: "Mark J. Fine" Date: Sat, 19 Jul 2025 10:30:09 -0400 Subject: [PATCH 5/9] Changed %llu to just %lu to quiet a warning. --- rigs/dummy/gqrx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rigs/dummy/gqrx.c b/rigs/dummy/gqrx.c index f056fecf5..09fba8e15 100644 --- a/rigs/dummy/gqrx.c +++ b/rigs/dummy/gqrx.c @@ -547,7 +547,7 @@ static int gqrx_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) struct gqrx_priv_data *priv = (struct gqrx_priv_data *) STATE(rig)->priv; rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); - rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s mode=%llu\n", __func__, + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s mode=%lu\n", __func__, rig_strvfo(vfo), mode); if (check_vfo(vfo) == FALSE) @@ -733,7 +733,7 @@ static int gqrx_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) char value[1024]; rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); - rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s level=%llu\n", __func__, + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s level=%lu\n", __func__, rig_strvfo(vfo), level); if (check_vfo(vfo) == FALSE) From d32e5b3495317d4ced563773b4f025e0f11026ad Mon Sep 17 00:00:00 2001 From: "Mark J. Fine" Date: Sat, 19 Jul 2025 12:28:07 -0400 Subject: [PATCH 6/9] Addressed some formatting issues and made VFO_A/VFO_CURR checking more uniform across the code. --- rigs/dummy/gqrx.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/rigs/dummy/gqrx.c b/rigs/dummy/gqrx.c index 09fba8e15..5554c1a0a 100644 --- a/rigs/dummy/gqrx.c +++ b/rigs/dummy/gqrx.c @@ -254,7 +254,10 @@ static int gqrx_transaction(RIG *rig, char *cmd, char *value, // if we get RIG_EIO the socket has probably disappeared // so bubble up the error so port can re re-opened - if (retval == -RIG_EIO) { set_transaction_inactive(rig); RETURNFUNC(retval); } + if (retval == -RIG_EIO) + { + set_transaction_inactive(rig); RETURNFUNC(retval); + } hl_usleep(50 * 1000); // 50ms sleep if error } @@ -272,7 +275,10 @@ static int gqrx_transaction(RIG *rig, char *cmd, char *value, if (value && strlen(value) == 0) { rig_debug(RIG_DEBUG_ERR, "%s: no value returned\n", __func__); - set_transaction_inactive(rig); RETURNFUNC(-RIG_EPROTO); + + set_transaction_inactive(rig); + + RETURNFUNC(-RIG_EPROTO); } ELAPSED2; @@ -352,7 +358,7 @@ static int gqrx_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) if (vfo == RIG_VFO_CURR) { vfo = STATE(rig)->current_vfo; - rig_debug(RIG_DEBUG_TRACE, "%s: get_freq2 vfo=%s\n", + rig_debug(RIG_DEBUG_TRACE, "%s: get_freq vfo=%s\n", __func__, rig_strvfo(vfo)); } @@ -440,6 +446,7 @@ static int gqrx_close(RIG *rig) */ static int gqrx_cleanup(RIG *rig) { + ENTERFUNC; rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); if (!rig) @@ -499,6 +506,7 @@ static int gqrx_set_freq(RIG *rig, vfo_t vfo, freq_t freq) char cmd[MAXARGLEN]; char value[1024]; + ENTERFUNC; rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s freq=%.0f\n", __func__, rig_strvfo(vfo), freq); @@ -510,15 +518,13 @@ static int gqrx_set_freq(RIG *rig, vfo_t vfo, freq_t freq) RETURNFUNC2(-RIG_EINVAL); } -#if 0 - if (vfo == RIG_VFO_CURR) { vfo = STATE(rig)->current_vfo; + rig_debug(RIG_DEBUG_TRACE, "%s: set_freq vfo=%s\n", + __func__, rig_strvfo(vfo)); } -#endif - SNPRINTF(cmd, sizeof(cmd), "F %lf\n", freq); retval = gqrx_transaction(rig, cmd, value, sizeof(value)); @@ -546,6 +552,7 @@ static int gqrx_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) char* mode_sel; struct gqrx_priv_data *priv = (struct gqrx_priv_data *) STATE(rig)->priv; + ENTERFUNC; rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s mode=%lu\n", __func__, rig_strvfo(vfo), mode); @@ -557,15 +564,13 @@ static int gqrx_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) RETURNFUNC2(-RIG_EINVAL); } -#if 0 - if (vfo == RIG_VFO_CURR) { vfo = STATE(rig)->current_vfo; + rig_debug(RIG_DEBUG_TRACE, "%s: set_mode vfo=%s\n", + __func__, rig_strvfo(vfo)); } -#endif - switch (mode) { case RIG_MODE_AM: mode_sel = strdup("AM"); break; @@ -642,8 +647,6 @@ static int gqrx_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) RETURNFUNC(-RIG_EINVAL); } -#if 0 - if (vfo == RIG_VFO_CURR) { vfo = STATE(rig)->current_vfo; @@ -651,8 +654,6 @@ static int gqrx_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) __func__, rig_strvfo(vfo)); } -#endif - char *cmd = "m\n"; retval = gqrx_transaction(rig, cmd, value, sizeof(value)); @@ -732,6 +733,7 @@ static int gqrx_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) char cmd[MAXARGLEN]; char value[1024]; + ENTERFUNC; rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s level=%lu\n", __func__, rig_strvfo(vfo), level); @@ -743,15 +745,13 @@ static int gqrx_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) RETURNFUNC2(-RIG_EINVAL); } -#if 0 - if (vfo == RIG_VFO_CURR) { vfo = STATE(rig)->current_vfo; + rig_debug(RIG_DEBUG_TRACE, "%s: set_level vfo=%s\n", + __func__, rig_strvfo(vfo)); } -#endif - switch (level) { case RIG_LEVEL_AF: From 482c0f1111a0faa11c7d974da5db76d963cd20c4 Mon Sep 17 00:00:00 2001 From: "Mark J. Fine" Date: Sat, 19 Jul 2025 13:40:18 -0400 Subject: [PATCH 7/9] Temporarily back out RIG_MODEL_GQRX from test_Hamlib_class.py to avoid a conflict. --- bindings/python/test_Hamlib_class.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/python/test_Hamlib_class.py b/bindings/python/test_Hamlib_class.py index 044208911..76a2623db 100755 --- a/bindings/python/test_Hamlib_class.py +++ b/bindings/python/test_Hamlib_class.py @@ -21,7 +21,7 @@ class TestClass: def test_properties(self): """Check that nothing was added or removed""" - expected_properties = ['AMP_FLAG_1', 'AMP_FLAG_2', 'AMP_LEVEL_FAULT', 'AMP_LEVEL_NH', 'AMP_LEVEL_NONE', 'AMP_LEVEL_PF', 'AMP_LEVEL_PWR', 'AMP_LEVEL_PWR_FWD', 'AMP_LEVEL_PWR_INPUT', 'AMP_LEVEL_PWR_PEAK', 'AMP_LEVEL_PWR_REFLECTED', 'AMP_LEVEL_SWR', 'AMP_MODEL_DUMMY', 'AMP_MODEL_ELECRAFT_KPA1500', 'AMP_MODEL_EXPERT_FA', 'AMP_MODEL_GEMINI_DX1200', 'AMP_MODEL_NETAMPCTL', 'AMP_MODEL_NONE', 'AMP_RESET_AMP', 'AMP_RESET_FAULT', 'AMP_RESET_MEM', 'AMP_TYPE_OTHER', 'BUILTINFUNC', 'CTCSS_LIST_SIZE', 'DCS_LIST_SIZE', 'DEBUGMSGSAVE_SIZE', 'GPIO1', 'GPIO2', 'GPIO3', 'GPIO4', 'HAMLIB_CACHE_ALL', 'HAMLIB_CACHE_ALWAYS', 'HAMLIB_CACHE_FREQ', 'HAMLIB_CACHE_MODE', 'HAMLIB_CACHE_PTT', 'HAMLIB_CACHE_SPLIT', 'HAMLIB_CACHE_VFO', 'HAMLIB_CACHE_WIDTH', 'HAMLIB_CHANLSTSIZ', 'HAMLIB_CHECK_RIG_CAPS', 'HAMLIB_COOKIE_SIZE', 'HAMLIB_ELAPSED_GET', 'HAMLIB_ELAPSED_INVALIDATE', 'HAMLIB_ELAPSED_SET', 'HAMLIB_FIFO_SIZE', 'HAMLIB_FILPATHLEN', 'HAMLIB_FLTLSTSIZ', 'HAMLIB_FRQRANGESIZ', 'HAMLIB_MAXCHANDESC', 'HAMLIB_MAXDBLSTSIZ', 'HAMLIB_MAX_AGC_LEVELS', 'HAMLIB_MAX_CAL_LENGTH', 'HAMLIB_MAX_MODES', 'HAMLIB_MAX_ROTORS', 'HAMLIB_MAX_RSCANS', 'HAMLIB_MAX_SNAPSHOT_PACKET_SIZE', 'HAMLIB_MAX_SPECTRUM_AVG_MODES', 'HAMLIB_MAX_SPECTRUM_DATA', 'HAMLIB_MAX_SPECTRUM_MODES', 'HAMLIB_MAX_SPECTRUM_SCOPES', 'HAMLIB_MAX_SPECTRUM_SPANS', 'HAMLIB_MAX_VFOS', 'HAMLIB_MAX_VFO_OPS', 'HAMLIB_RIGNAMSIZ', 'HAMLIB_RIGVERSIZ', 'HAMLIB_SECRET_LENGTH', 'HAMLIB_SETTINGS_FILE', 'HAMLIB_TSLSTSIZ', 'MAX_MODELS_PER_BACKEND', 'NETAMPCTL_RET', 'NETRIGCTL_RET', 'NETROTCTL_RET', 'RIG_AGC_AUTO', 'RIG_AGC_FAST', 'RIG_AGC_LAST', 'RIG_AGC_LONG', 'RIG_AGC_MEDIUM', 'RIG_AGC_NONE', 'RIG_AGC_OFF', 'RIG_AGC_ON', 'RIG_AGC_SLOW', 'RIG_AGC_SUPERFAST', 'RIG_AGC_USER', 'RIG_ANN_CW', 'RIG_ANN_ENG', 'RIG_ANN_FREQ', 'RIG_ANN_JAP', 'RIG_ANN_NONE', 'RIG_ANN_OFF', 'RIG_ANN_RXMODE', 'RIG_ANT_MAX', 'RIG_ANT_NONE', 'RIG_BANDSELECT_10M', 'RIG_BANDSELECT_12M', 'RIG_BANDSELECT_13CM', 'RIG_BANDSELECT_15M', 'RIG_BANDSELECT_160M', 'RIG_BANDSELECT_17M', 'RIG_BANDSELECT_1_25M', 'RIG_BANDSELECT_20M', 'RIG_BANDSELECT_2200M', 'RIG_BANDSELECT_23CM', 'RIG_BANDSELECT_2M', 'RIG_BANDSELECT_30M', 'RIG_BANDSELECT_33CM', 'RIG_BANDSELECT_3CM', 'RIG_BANDSELECT_40M', 'RIG_BANDSELECT_4M', 'RIG_BANDSELECT_5CM', 'RIG_BANDSELECT_600M', 'RIG_BANDSELECT_60M', 'RIG_BANDSELECT_6M', 'RIG_BANDSELECT_70CM', 'RIG_BANDSELECT_80M', 'RIG_BANDSELECT_9CM', 'RIG_BANDSELECT_AIR', 'RIG_BANDSELECT_GEN', 'RIG_BANDSELECT_MW', 'RIG_BANDSELECT_UNUSED', 'RIG_BANDSELECT_WFM', 'RIG_BAND_10M', 'RIG_BAND_12M', 'RIG_BAND_144MHZ', 'RIG_BAND_15M', 'RIG_BAND_160M', 'RIG_BAND_17M', 'RIG_BAND_20M', 'RIG_BAND_30M', 'RIG_BAND_40M', 'RIG_BAND_430MHZ', 'RIG_BAND_60M', 'RIG_BAND_6M', 'RIG_BAND_80M', 'RIG_BAND_AIR', 'RIG_BAND_GEN', 'RIG_BAND_MW', 'RIG_BAND_UNUSED', 'RIG_BUSBUSY', 'RIG_BUSERROR', 'RIG_CAPS_HAS_GET_LEVEL', 'RIG_CAPS_HAS_SET_LEVEL', 'RIG_CAPS_MFG_NAME_CPTR', 'RIG_CAPS_MODEL_NAME_CPTR', 'RIG_CAPS_PORT_TYPE', 'RIG_CAPS_PTT_TYPE', 'RIG_CAPS_RIG_MODEL', 'RIG_CAPS_STATUS_CPTR', 'RIG_CAPS_TARGETABLE_VFO', 'RIG_CAPS_VERSION_CPTR', 'RIG_CHFLAG_DATA', 'RIG_CHFLAG_NONE', 'RIG_CHFLAG_PSKIP', 'RIG_CHFLAG_SKIP', 'RIG_CLIENT_GPREDICT', 'RIG_CLIENT_UNKNOWN', 'RIG_CLIENT_WSJTX', 'RIG_COMM_STATUS_CONNECTING', 'RIG_COMM_STATUS_DISCONNECTED', 'RIG_COMM_STATUS_ERROR', 'RIG_COMM_STATUS_OK', 'RIG_COMM_STATUS_TERMINATED', 'RIG_COMM_STATUS_WARNING', 'RIG_CONF_BINARY', 'RIG_CONF_BUTTON', 'RIG_CONF_CHECKBUTTON', 'RIG_CONF_COMBO', 'RIG_CONF_END', 'RIG_CONF_INT', 'RIG_CONF_NUMERIC', 'RIG_CONF_STRING', 'RIG_COOKIE_GET', 'RIG_COOKIE_RELEASE', 'RIG_COOKIE_RENEW', 'RIG_DCD_CM108', 'RIG_DCD_GPIO', 'RIG_DCD_GPION', 'RIG_DCD_NONE', 'RIG_DCD_OFF', 'RIG_DCD_ON', 'RIG_DCD_PARALLEL', 'RIG_DCD_RIG', 'RIG_DCD_SERIAL_CAR', 'RIG_DCD_SERIAL_CTS', 'RIG_DCD_SERIAL_DSR', 'RIG_DEBUG_BUG', 'RIG_DEBUG_CACHE', 'RIG_DEBUG_ERR', 'RIG_DEBUG_NONE', 'RIG_DEBUG_TRACE', 'RIG_DEBUG_VERBOSE', 'RIG_DEBUG_WARN', 'RIG_EACCESS', 'RIG_EARG', 'RIG_ECONF', 'RIG_EDEPRECATED', 'RIG_EDOM', 'RIG_EEND', 'RIG_EINTERNAL', 'RIG_EINVAL', 'RIG_EIO', 'RIG_ELIMIT', 'RIG_ENAVAIL', 'RIG_ENIMPL', 'RIG_ENOMEM', 'RIG_ENTARGET', 'RIG_EPOWER', 'RIG_EPROTO', 'RIG_ERJCTED', 'RIG_ESECURITY', 'RIG_ETIMEOUT', 'RIG_ETRUNC', 'RIG_EVFO', 'RIG_FLAG_APRS', 'RIG_FLAG_COMPUTER', 'RIG_FLAG_DXCLUSTER', 'RIG_FLAG_HANDHELD', 'RIG_FLAG_MOBILE', 'RIG_FLAG_RECEIVER', 'RIG_FLAG_SCANNER', 'RIG_FLAG_TNC', 'RIG_FLAG_TRANSMITTER', 'RIG_FLAG_TRUNKING', 'RIG_FLAG_TUNER', 'RIG_FLT_ANY', 'RIG_FUNCTION_CLEANUP', 'RIG_FUNCTION_CLOSE', 'RIG_FUNCTION_DECODE_EVENT', 'RIG_FUNCTION_GET_ANT', 'RIG_FUNCTION_GET_CHANNEL', 'RIG_FUNCTION_GET_CHAN_ALL_CB', 'RIG_FUNCTION_GET_CONF', 'RIG_FUNCTION_GET_CONF2', 'RIG_FUNCTION_GET_CTCSS_SQL', 'RIG_FUNCTION_GET_CTCSS_TONE', 'RIG_FUNCTION_GET_DCD', 'RIG_FUNCTION_GET_DCS_CODE', 'RIG_FUNCTION_GET_DCS_SQL', 'RIG_FUNCTION_GET_EXT_FUNC', 'RIG_FUNCTION_GET_EXT_LEVEL', 'RIG_FUNCTION_GET_EXT_PARM', 'RIG_FUNCTION_GET_FREQ', 'RIG_FUNCTION_GET_FUNC', 'RIG_FUNCTION_GET_INFO', 'RIG_FUNCTION_GET_LEVEL', 'RIG_FUNCTION_GET_MEM', 'RIG_FUNCTION_GET_MEM_ALL_CB', 'RIG_FUNCTION_GET_MODE', 'RIG_FUNCTION_GET_PARM', 'RIG_FUNCTION_GET_POWERSTAT', 'RIG_FUNCTION_GET_PTT', 'RIG_FUNCTION_GET_RIT', 'RIG_FUNCTION_GET_RPTR_OFFS', 'RIG_FUNCTION_GET_RPTR_SHIFT', 'RIG_FUNCTION_GET_SPLIT_FREQ', 'RIG_FUNCTION_GET_SPLIT_FREQ_MODE', 'RIG_FUNCTION_GET_SPLIT_VFO', 'RIG_FUNCTION_GET_TONE', 'RIG_FUNCTION_GET_TONE_SQL', 'RIG_FUNCTION_GET_TRN', 'RIG_FUNCTION_GET_TS', 'RIG_FUNCTION_GET_VFO', 'RIG_FUNCTION_GET_XIT', 'RIG_FUNCTION_INIT', 'RIG_FUNCTION_IS_ASYNC_FRAME', 'RIG_FUNCTION_MW2POWER', 'RIG_FUNCTION_OPEN', 'RIG_FUNCTION_POWER2MW', 'RIG_FUNCTION_PROCESS_ASYNC_FRAME', 'RIG_FUNCTION_READ_FRAME_DIRECT', 'RIG_FUNCTION_RESET', 'RIG_FUNCTION_SCAN', 'RIG_FUNCTION_SEND_DTMF', 'RIG_FUNCTION_SEND_MORSE', 'RIG_FUNCTION_SEND_VOICE_MEM', 'RIG_FUNCTION_SET_ANT', 'RIG_FUNCTION_SET_BANK', 'RIG_FUNCTION_SET_CHANNEL', 'RIG_FUNCTION_SET_CHAN_ALL_CB', 'RIG_FUNCTION_SET_CONF', 'RIG_FUNCTION_SET_CTCSS_SQL', 'RIG_FUNCTION_SET_CTCSS_TONE', 'RIG_FUNCTION_SET_DCS_CODE', 'RIG_FUNCTION_SET_DCS_SQL', 'RIG_FUNCTION_SET_EXT_FUNC', 'RIG_FUNCTION_SET_EXT_LEVEL', 'RIG_FUNCTION_SET_EXT_PARM', 'RIG_FUNCTION_SET_FREQ', 'RIG_FUNCTION_SET_FUNC', 'RIG_FUNCTION_SET_LEVEL', 'RIG_FUNCTION_SET_MEM', 'RIG_FUNCTION_SET_MEM_ALL_CB', 'RIG_FUNCTION_SET_MODE', 'RIG_FUNCTION_SET_PARM', 'RIG_FUNCTION_SET_POWERSTAT', 'RIG_FUNCTION_SET_PTT', 'RIG_FUNCTION_SET_RIT', 'RIG_FUNCTION_SET_RPTR_OFFS', 'RIG_FUNCTION_SET_RPTR_SHIFT', 'RIG_FUNCTION_SET_SPLIT_FREQ', 'RIG_FUNCTION_SET_SPLIT_FREQ_MODE', 'RIG_FUNCTION_SET_SPLIT_MODE', 'RIG_FUNCTION_SET_SPLIT_VFO', 'RIG_FUNCTION_SET_TONE', 'RIG_FUNCTION_SET_TONE_SQL', 'RIG_FUNCTION_SET_TRN', 'RIG_FUNCTION_SET_TS', 'RIG_FUNCTION_SET_VFO', 'RIG_FUNCTION_SET_VFO_OPT', 'RIG_FUNCTION_SET_XIT', 'RIG_FUNCTION_STOP_MORSE', 'RIG_FUNCTION_STOP_VOICE_MEM', 'RIG_FUNCTION_VFO_OP', 'RIG_FUNCTION_WAIT_MORSE', 'RIG_FUNC_ABM', 'RIG_FUNC_AFC', 'RIG_FUNC_AFLT', 'RIG_FUNC_AIP', 'RIG_FUNC_ANF', 'RIG_FUNC_ANL', 'RIG_FUNC_APF', 'RIG_FUNC_ARO', 'RIG_FUNC_BC', 'RIG_FUNC_BC2', 'RIG_FUNC_BIT49', 'RIG_FUNC_BIT50', 'RIG_FUNC_BIT51', 'RIG_FUNC_BIT52', 'RIG_FUNC_BIT53', 'RIG_FUNC_BIT54', 'RIG_FUNC_BIT55', 'RIG_FUNC_BIT56', 'RIG_FUNC_BIT57', 'RIG_FUNC_BIT58', 'RIG_FUNC_BIT59', 'RIG_FUNC_BIT60', 'RIG_FUNC_BIT61', 'RIG_FUNC_BIT62', 'RIG_FUNC_BIT63', 'RIG_FUNC_COMP', 'RIG_FUNC_CSQL', 'RIG_FUNC_DIVERSITY', 'RIG_FUNC_DSQL', 'RIG_FUNC_DUAL_WATCH', 'RIG_FUNC_FAGC', 'RIG_FUNC_FBKIN', 'RIG_FUNC_LOCK', 'RIG_FUNC_MBC', 'RIG_FUNC_MN', 'RIG_FUNC_MON', 'RIG_FUNC_MUTE', 'RIG_FUNC_NB', 'RIG_FUNC_NB2', 'RIG_FUNC_NONE', 'RIG_FUNC_NR', 'RIG_FUNC_OVF_STATUS', 'RIG_FUNC_RESUME', 'RIG_FUNC_REV', 'RIG_FUNC_RF', 'RIG_FUNC_RIT', 'RIG_FUNC_SATMODE', 'RIG_FUNC_SBKIN', 'RIG_FUNC_SCEN', 'RIG_FUNC_SCOPE', 'RIG_FUNC_SEND_MORSE', 'RIG_FUNC_SEND_VOICE_MEM', 'RIG_FUNC_SLICE', 'RIG_FUNC_SPECTRUM', 'RIG_FUNC_SPECTRUM_HOLD', 'RIG_FUNC_SQL', 'RIG_FUNC_SYNC', 'RIG_FUNC_TBURST', 'RIG_FUNC_TONE', 'RIG_FUNC_TRANSCEIVE', 'RIG_FUNC_TSQL', 'RIG_FUNC_TUNER', 'RIG_FUNC_VOX', 'RIG_FUNC_VSC', 'RIG_FUNC_XIT', 'RIG_HANDSHAKE_HARDWARE', 'RIG_HANDSHAKE_NONE', 'RIG_HANDSHAKE_XONXOFF', 'RIG_KEYERTYPE_BUG', 'RIG_KEYERTYPE_PADDLE', 'RIG_KEYERTYPE_STRAIGHT', 'RIG_KEYERTYPE_UNKNOWN', 'RIG_LEVEL_53', 'RIG_LEVEL_54', 'RIG_LEVEL_55', 'RIG_LEVEL_56', 'RIG_LEVEL_57', 'RIG_LEVEL_58', 'RIG_LEVEL_59', 'RIG_LEVEL_60', 'RIG_LEVEL_61', 'RIG_LEVEL_62', 'RIG_LEVEL_63', 'RIG_LEVEL_AF', 'RIG_LEVEL_AGC', 'RIG_LEVEL_AGC_TIME', 'RIG_LEVEL_ALC', 'RIG_LEVEL_ANTIVOX', 'RIG_LEVEL_APF', 'RIG_LEVEL_ATT', 'RIG_LEVEL_BALANCE', 'RIG_LEVEL_BAND_SELECT', 'RIG_LEVEL_BKINDL', 'RIG_LEVEL_BKIN_DLYMS', 'RIG_LEVEL_COMP', 'RIG_LEVEL_COMP_METER', 'RIG_LEVEL_CWPITCH', 'RIG_LEVEL_FLOAT_LIST', 'RIG_LEVEL_ID_METER', 'RIG_LEVEL_IF', 'RIG_LEVEL_KEYSPD', 'RIG_LEVEL_METER', 'RIG_LEVEL_MICGAIN', 'RIG_LEVEL_MONITOR_GAIN', 'RIG_LEVEL_NB', 'RIG_LEVEL_NONE', 'RIG_LEVEL_NOTCHF', 'RIG_LEVEL_NOTCHF_RAW', 'RIG_LEVEL_NR', 'RIG_LEVEL_PBT_IN', 'RIG_LEVEL_PBT_OUT', 'RIG_LEVEL_PREAMP', 'RIG_LEVEL_RAWSTR', 'RIG_LEVEL_READONLY_LIST', 'RIG_LEVEL_RF', 'RIG_LEVEL_RFPOWER', 'RIG_LEVEL_RFPOWER_METER', 'RIG_LEVEL_RFPOWER_METER_WATTS', 'RIG_LEVEL_SLOPE_HIGH', 'RIG_LEVEL_SLOPE_LOW', 'RIG_LEVEL_SPECTRUM_ATT', 'RIG_LEVEL_SPECTRUM_AVG', 'RIG_LEVEL_SPECTRUM_EDGE_HIGH', 'RIG_LEVEL_SPECTRUM_EDGE_LOW', 'RIG_LEVEL_SPECTRUM_MODE', 'RIG_LEVEL_SPECTRUM_REF', 'RIG_LEVEL_SPECTRUM_SPAN', 'RIG_LEVEL_SPECTRUM_SPEED', 'RIG_LEVEL_SQL', 'RIG_LEVEL_STRENGTH', 'RIG_LEVEL_SWR', 'RIG_LEVEL_TEMP_METER', 'RIG_LEVEL_USB_AF', 'RIG_LEVEL_USB_AF_INPUT', 'RIG_LEVEL_VD_METER', 'RIG_LEVEL_VOXDELAY', 'RIG_LEVEL_VOXGAIN', 'RIG_MEM_CAPS_ALL', 'RIG_METER_ALC', 'RIG_METER_COMP', 'RIG_METER_DB', 'RIG_METER_IC', 'RIG_METER_NONE', 'RIG_METER_PO', 'RIG_METER_SWR', 'RIG_METER_TEMP', 'RIG_METER_VDD', 'RIG_MODEL_505DSP', 'RIG_MODEL_ACLOG', 'RIG_MODEL_ADT_200A', 'RIG_MODEL_AR16', 'RIG_MODEL_AR2500', 'RIG_MODEL_AR2700', 'RIG_MODEL_AR3000', 'RIG_MODEL_AR3000A', 'RIG_MODEL_AR3030', 'RIG_MODEL_AR5000', 'RIG_MODEL_AR5000A', 'RIG_MODEL_AR7030', 'RIG_MODEL_AR7030P', 'RIG_MODEL_AR8000', 'RIG_MODEL_AR8200', 'RIG_MODEL_AR8600', 'RIG_MODEL_ARMSTRONG', 'RIG_MODEL_ATD578UVIII', 'RIG_MODEL_BARRETT_2050', 'RIG_MODEL_BARRETT_4050', 'RIG_MODEL_BARRETT_4100', 'RIG_MODEL_BARRETT_950', 'RIG_MODEL_BC235', 'RIG_MODEL_BC245', 'RIG_MODEL_BC250', 'RIG_MODEL_BC780', 'RIG_MODEL_BC785', 'RIG_MODEL_BC786', 'RIG_MODEL_BC895', 'RIG_MODEL_BC898', 'RIG_MODEL_BCD396T', 'RIG_MODEL_BCD996T', 'RIG_MODEL_BCT8', 'RIG_MODEL_CMH530', 'RIG_MODEL_CODAN_2110', 'RIG_MODEL_CODAN_ENVOY', 'RIG_MODEL_CODAN_NGT', 'RIG_MODEL_CTX10', 'RIG_MODEL_DDS60', 'RIG_MODEL_DELTAII', 'RIG_MODEL_DKR8', 'RIG_MODEL_DKR8A', 'RIG_MODEL_DKR8B', 'RIG_MODEL_DORJI_DRA818U', 'RIG_MODEL_DORJI_DRA818V', 'RIG_MODEL_DRT1', 'RIG_MODEL_DSP10', 'RIG_MODEL_DTTSP', 'RIG_MODEL_DTTSP_UDP', 'RIG_MODEL_DUMMY', 'RIG_MODEL_DUMMY_NOVFO', 'RIG_MODEL_DWT', 'RIG_MODEL_DX77', 'RIG_MODEL_DXSR8', 'RIG_MODEL_EB200', 'RIG_MODEL_EK070', 'RIG_MODEL_EK890', 'RIG_MODEL_EK891', 'RIG_MODEL_EK895', 'RIG_MODEL_EK89X', 'RIG_MODEL_EKD500', 'RIG_MODEL_ELAD_FDM_DUO', 'RIG_MODEL_ELEKTOR304', 'RIG_MODEL_ELEKTOR507', 'RIG_MODEL_ESM500', 'RIG_MODEL_ESMC', 'RIG_MODEL_F6K', 'RIG_MODEL_FASDR', 'RIG_MODEL_FIFISDR', 'RIG_MODEL_FLRIG', 'RIG_MODEL_FRG100', 'RIG_MODEL_FRG8800', 'RIG_MODEL_FRG9600', 'RIG_MODEL_FT100', 'RIG_MODEL_FT1000', 'RIG_MODEL_FT1000D', 'RIG_MODEL_FT1000MP', 'RIG_MODEL_FT1000MPMKV', 'RIG_MODEL_FT1000MPMKVFLD', 'RIG_MODEL_FT2000', 'RIG_MODEL_FT450', 'RIG_MODEL_FT450D', 'RIG_MODEL_FT575', 'RIG_MODEL_FT600', 'RIG_MODEL_FT650', 'RIG_MODEL_FT710', 'RIG_MODEL_FT736R', 'RIG_MODEL_FT747', 'RIG_MODEL_FT757', 'RIG_MODEL_FT757GXII', 'RIG_MODEL_FT767', 'RIG_MODEL_FT817', 'RIG_MODEL_FT818', 'RIG_MODEL_FT820', 'RIG_MODEL_FT840', 'RIG_MODEL_FT847', 'RIG_MODEL_FT847UNI', 'RIG_MODEL_FT857', 'RIG_MODEL_FT890', 'RIG_MODEL_FT891', 'RIG_MODEL_FT897', 'RIG_MODEL_FT897D', 'RIG_MODEL_FT900', 'RIG_MODEL_FT9000', 'RIG_MODEL_FT9000OLD', 'RIG_MODEL_FT920', 'RIG_MODEL_FT950', 'RIG_MODEL_FT980', 'RIG_MODEL_FT990', 'RIG_MODEL_FT990UNI', 'RIG_MODEL_FT991', 'RIG_MODEL_FTDX10', 'RIG_MODEL_FTDX101D', 'RIG_MODEL_FTDX101MP', 'RIG_MODEL_FTDX1200', 'RIG_MODEL_FTDX3000', 'RIG_MODEL_FTDX5000', 'RIG_MODEL_FUNCUBEDONGLE', 'RIG_MODEL_FUNCUBEDONGLEPLUS', 'RIG_MODEL_FX4', 'RIG_MODEL_G303', 'RIG_MODEL_G305', 'RIG_MODEL_G313', 'RIG_MODEL_G315', 'RIG_MODEL_G90', 'RIG_MODEL_GNURADIO', 'RIG_MODEL_GQRX', 'RIG_MODEL_GRAUDIO', 'RIG_MODEL_GRAUDIOIQ', 'RIG_MODEL_GS100', 'RIG_MODEL_HF1000', 'RIG_MODEL_HF1000A', 'RIG_MODEL_HF150', 'RIG_MODEL_HF225', 'RIG_MODEL_HF235', 'RIG_MODEL_HF250', 'RIG_MODEL_HIQSDR', 'RIG_MODEL_HPSDR', 'RIG_MODEL_IC1271', 'RIG_MODEL_IC1275', 'RIG_MODEL_IC271', 'RIG_MODEL_IC2730', 'RIG_MODEL_IC275', 'RIG_MODEL_IC375', 'RIG_MODEL_IC471', 'RIG_MODEL_IC475', 'RIG_MODEL_IC575', 'RIG_MODEL_IC7000', 'RIG_MODEL_IC703', 'RIG_MODEL_IC705', 'RIG_MODEL_IC706', 'RIG_MODEL_IC706MKII', 'RIG_MODEL_IC706MKIIG', 'RIG_MODEL_IC707', 'RIG_MODEL_IC7100', 'RIG_MODEL_IC718', 'RIG_MODEL_IC7200', 'RIG_MODEL_IC725', 'RIG_MODEL_IC726', 'RIG_MODEL_IC728', 'RIG_MODEL_IC729', 'RIG_MODEL_IC7300', 'RIG_MODEL_IC731', 'RIG_MODEL_IC735', 'RIG_MODEL_IC736', 'RIG_MODEL_IC737', 'RIG_MODEL_IC738', 'RIG_MODEL_IC7410', 'RIG_MODEL_IC746', 'RIG_MODEL_IC746PRO', 'RIG_MODEL_IC751', 'RIG_MODEL_IC751A', 'RIG_MODEL_IC756', 'RIG_MODEL_IC756PRO', 'RIG_MODEL_IC756PROII', 'RIG_MODEL_IC756PROIII', 'RIG_MODEL_IC7600', 'RIG_MODEL_IC761', 'RIG_MODEL_IC7610', 'RIG_MODEL_IC765', 'RIG_MODEL_IC7700', 'RIG_MODEL_IC775', 'RIG_MODEL_IC7760', 'RIG_MODEL_IC78', 'RIG_MODEL_IC7800', 'RIG_MODEL_IC781', 'RIG_MODEL_IC785x', 'RIG_MODEL_IC820', 'RIG_MODEL_IC821H', 'RIG_MODEL_IC905', 'RIG_MODEL_IC910', 'RIG_MODEL_IC9100', 'RIG_MODEL_IC92D', 'RIG_MODEL_IC970', 'RIG_MODEL_IC9700', 'RIG_MODEL_ICF8101', 'RIG_MODEL_ICID1', 'RIG_MODEL_ICR10', 'RIG_MODEL_ICR20', 'RIG_MODEL_ICR30', 'RIG_MODEL_ICR6', 'RIG_MODEL_ICR7000', 'RIG_MODEL_ICR71', 'RIG_MODEL_ICR7100', 'RIG_MODEL_ICR72', 'RIG_MODEL_ICR75', 'RIG_MODEL_ICR8500', 'RIG_MODEL_ICR8600', 'RIG_MODEL_ICR9000', 'RIG_MODEL_ICR9500', 'RIG_MODEL_ICRX7', 'RIG_MODEL_IC_M700PRO', 'RIG_MODEL_IC_M710', 'RIG_MODEL_IC_M802', 'RIG_MODEL_IC_M803', 'RIG_MODEL_ID31', 'RIG_MODEL_ID4100', 'RIG_MODEL_ID51', 'RIG_MODEL_ID5100', 'RIG_MODEL_JST145', 'RIG_MODEL_JST245', 'RIG_MODEL_K2', 'RIG_MODEL_K3', 'RIG_MODEL_K3S', 'RIG_MODEL_K4', 'RIG_MODEL_KX2', 'RIG_MODEL_KX3', 'RIG_MODEL_LAB599_TX500', 'RIG_MODEL_MALACHITE', 'RIG_MODEL_MC4020', 'RIG_MODEL_MCHFQRP', 'RIG_MODEL_MDS4710', 'RIG_MODEL_MDS9710', 'RIG_MODEL_MICOM2', 'RIG_MODEL_MICROTUNE_4702', 'RIG_MODEL_MICROTUNE_4707', 'RIG_MODEL_MICROTUNE_4937', 'RIG_MODEL_MINISCOUT', 'RIG_MODEL_MINIVNA', 'RIG_MODEL_NETRIGCTL', 'RIG_MODEL_NONE', 'RIG_MODEL_NRD345', 'RIG_MODEL_NRD525', 'RIG_MODEL_NRD535', 'RIG_MODEL_NRD545', 'RIG_MODEL_OMNIVI', 'RIG_MODEL_OMNIVIP', 'RIG_MODEL_OS456', 'RIG_MODEL_OS535', 'RIG_MODEL_PARAGON2', 'RIG_MODEL_PCR100', 'RIG_MODEL_PCR1000', 'RIG_MODEL_PCR1500', 'RIG_MODEL_PCR2500', 'RIG_MODEL_PERSEUS', 'RIG_MODEL_PMR171', 'RIG_MODEL_PMSDR', 'RIG_MODEL_POWERSDR', 'RIG_MODEL_PRM8060', 'RIG_MODEL_PRM8070', 'RIG_MODEL_PRO2052', 'RIG_MODEL_PT8000A', 'RIG_MODEL_Q900', 'RIG_MODEL_QRPLABS', 'RIG_MODEL_QRPLABS_QMX', 'RIG_MODEL_QUISK', 'RIG_MODEL_R5000', 'RIG_MODEL_RA3702', 'RIG_MODEL_RA3710', 'RIG_MODEL_RA3720', 'RIG_MODEL_RA3790', 'RIG_MODEL_RA6790', 'RIG_MODEL_RS2005', 'RIG_MODEL_RS2006', 'RIG_MODEL_RS2035', 'RIG_MODEL_RS2041', 'RIG_MODEL_RS2042', 'RIG_MODEL_RS64', 'RIG_MODEL_RSHFIQ', 'RIG_MODEL_RX320', 'RIG_MODEL_RX331', 'RIG_MODEL_RX340', 'RIG_MODEL_RX350', 'RIG_MODEL_SDR1000', 'RIG_MODEL_SDR1000RFE', 'RIG_MODEL_SDRCONSOLE', 'RIG_MODEL_SDRSHARP', 'RIG_MODEL_SDRUNO', 'RIG_MODEL_SDU5000', 'RIG_MODEL_SDU5500', 'RIG_MODEL_SI570AVRUSB', 'RIG_MODEL_SI570PEABERRY1', 'RIG_MODEL_SI570PEABERRY2', 'RIG_MODEL_SI570PICUSB', 'RIG_MODEL_SMARTSDR_A', 'RIG_MODEL_SMARTSDR_B', 'RIG_MODEL_SMARTSDR_C', 'RIG_MODEL_SMARTSDR_D', 'RIG_MODEL_SMARTSDR_E', 'RIG_MODEL_SMARTSDR_F', 'RIG_MODEL_SMARTSDR_G', 'RIG_MODEL_SMARTSDR_H', 'RIG_MODEL_SR2200', 'RIG_MODEL_TCI1X', 'RIG_MODEL_THD72A', 'RIG_MODEL_THD74', 'RIG_MODEL_THD7A', 'RIG_MODEL_THD7AG', 'RIG_MODEL_THETIS', 'RIG_MODEL_THF6A', 'RIG_MODEL_THF7E', 'RIG_MODEL_THG71', 'RIG_MODEL_TMD700', 'RIG_MODEL_TMD710', 'RIG_MODEL_TMV7', 'RIG_MODEL_TMV71', 'RIG_MODEL_TRANSFOX', 'RIG_MODEL_TRC80', 'RIG_MODEL_TRP7000', 'RIG_MODEL_TRP8000', 'RIG_MODEL_TRP8255', 'RIG_MODEL_TRP9000', 'RIG_MODEL_TRUSDX', 'RIG_MODEL_TRXMANAGER_RIG', 'RIG_MODEL_TS140S', 'RIG_MODEL_TS2000', 'RIG_MODEL_TS440', 'RIG_MODEL_TS450S', 'RIG_MODEL_TS480', 'RIG_MODEL_TS50', 'RIG_MODEL_TS570D', 'RIG_MODEL_TS570S', 'RIG_MODEL_TS590S', 'RIG_MODEL_TS590SG', 'RIG_MODEL_TS680S', 'RIG_MODEL_TS690S', 'RIG_MODEL_TS711', 'RIG_MODEL_TS790', 'RIG_MODEL_TS811', 'RIG_MODEL_TS850', 'RIG_MODEL_TS870S', 'RIG_MODEL_TS890S', 'RIG_MODEL_TS930', 'RIG_MODEL_TS940', 'RIG_MODEL_TS950S', 'RIG_MODEL_TS950SDX', 'RIG_MODEL_TS990S', 'RIG_MODEL_TT516', 'RIG_MODEL_TT526', 'RIG_MODEL_TT538', 'RIG_MODEL_TT550', 'RIG_MODEL_TT565', 'RIG_MODEL_TT585', 'RIG_MODEL_TT588', 'RIG_MODEL_TT599', 'RIG_MODEL_USRP', 'RIG_MODEL_USRP0', 'RIG_MODEL_USRP_G', 'RIG_MODEL_V4L', 'RIG_MODEL_V4L2', 'RIG_MODEL_VR5000', 'RIG_MODEL_VX1700', 'RIG_MODEL_WJ8711', 'RIG_MODEL_WJ8888', 'RIG_MODEL_WR1000', 'RIG_MODEL_WR1500', 'RIG_MODEL_WR1550', 'RIG_MODEL_WR3100', 'RIG_MODEL_WR3150', 'RIG_MODEL_WR3500', 'RIG_MODEL_WR3700', 'RIG_MODEL_X108G', 'RIG_MODEL_X5105', 'RIG_MODEL_X6100', 'RIG_MODEL_X6200', 'RIG_MODEL_XG3', 'RIG_MODEL_XK2100', 'RIG_MODEL_XK852', 'RIG_MODEL_XPLORER', 'RIG_MODE_ALL', 'RIG_MODE_AM', 'RIG_MODE_AMN', 'RIG_MODE_AMS', 'RIG_MODE_BIT46', 'RIG_MODE_BIT47', 'RIG_MODE_BIT48', 'RIG_MODE_BIT49', 'RIG_MODE_BIT50', 'RIG_MODE_BIT51', 'RIG_MODE_BIT52', 'RIG_MODE_BIT53', 'RIG_MODE_BIT54', 'RIG_MODE_BIT55', 'RIG_MODE_BIT56', 'RIG_MODE_BIT57', 'RIG_MODE_BIT58', 'RIG_MODE_BIT59', 'RIG_MODE_BIT60', 'RIG_MODE_BIT61', 'RIG_MODE_BIT62', 'RIG_MODE_C4FM', 'RIG_MODE_CW', 'RIG_MODE_CWN', 'RIG_MODE_CWR', 'RIG_MODE_DCR', 'RIG_MODE_DD', 'RIG_MODE_DPMR', 'RIG_MODE_DSB', 'RIG_MODE_DSTAR', 'RIG_MODE_ECSS', 'RIG_MODE_ECSSLSB', 'RIG_MODE_ECSSUSB', 'RIG_MODE_FAX', 'RIG_MODE_FM', 'RIG_MODE_FMN', 'RIG_MODE_IQ', 'RIG_MODE_ISBLSB', 'RIG_MODE_ISBUSB', 'RIG_MODE_LSB', 'RIG_MODE_LSBD1', 'RIG_MODE_LSBD2', 'RIG_MODE_LSBD3', 'RIG_MODE_NONE', 'RIG_MODE_NXDNVN', 'RIG_MODE_NXDN_N', 'RIG_MODE_P25', 'RIG_MODE_PKTAM', 'RIG_MODE_PKTFM', 'RIG_MODE_PKTFMN', 'RIG_MODE_PKTLSB', 'RIG_MODE_PKTSSB', 'RIG_MODE_PKTUSB', 'RIG_MODE_PSK', 'RIG_MODE_PSKR', 'RIG_MODE_RTTY', 'RIG_MODE_RTTYR', 'RIG_MODE_SAH', 'RIG_MODE_SAL', 'RIG_MODE_SAM', 'RIG_MODE_SPEC', 'RIG_MODE_SSB', 'RIG_MODE_TESTS_MAX', 'RIG_MODE_USB', 'RIG_MODE_USBD1', 'RIG_MODE_USBD2', 'RIG_MODE_USBD3', 'RIG_MODE_WFM', 'RIG_MTYPE_BAND', 'RIG_MTYPE_CALL', 'RIG_MTYPE_EDGE', 'RIG_MTYPE_MEM', 'RIG_MTYPE_MEMOPAD', 'RIG_MTYPE_MORSE', 'RIG_MTYPE_NONE', 'RIG_MTYPE_PRIO', 'RIG_MTYPE_SAT', 'RIG_MTYPE_SPLIT', 'RIG_MTYPE_VOICE', 'RIG_MULTICAST_POLL', 'RIG_MULTICAST_SPECTRUM', 'RIG_MULTICAST_TRANSCEIVE', 'RIG_OK', 'RIG_OP_BAND_DOWN', 'RIG_OP_BAND_UP', 'RIG_OP_CPY', 'RIG_OP_DOWN', 'RIG_OP_FROM_VFO', 'RIG_OP_LEFT', 'RIG_OP_MCL', 'RIG_OP_NONE', 'RIG_OP_RIGHT', 'RIG_OP_TOGGLE', 'RIG_OP_TO_VFO', 'RIG_OP_TUNE', 'RIG_OP_UP', 'RIG_OP_XCHG', 'RIG_PARITY_EVEN', 'RIG_PARITY_MARK', 'RIG_PARITY_NONE', 'RIG_PARITY_ODD', 'RIG_PARITY_SPACE', 'RIG_PARM_AFIF', 'RIG_PARM_AFIF_ACC', 'RIG_PARM_AFIF_LAN', 'RIG_PARM_AFIF_WLAN', 'RIG_PARM_ANN', 'RIG_PARM_APO', 'RIG_PARM_BACKLIGHT', 'RIG_PARM_BANDSELECT', 'RIG_PARM_BAT', 'RIG_PARM_BEEP', 'RIG_PARM_KEYERTYPE', 'RIG_PARM_KEYLIGHT', 'RIG_PARM_NONE', 'RIG_PARM_SCREENSAVER', 'RIG_PARM_TIME', 'RIG_PORT_CM108', 'RIG_PORT_DEVICE', 'RIG_PORT_DTMF', 'RIG_PORT_GPIO', 'RIG_PORT_GPION', 'RIG_PORT_NETWORK', 'RIG_PORT_NONE', 'RIG_PORT_PACKET', 'RIG_PORT_PARALLEL', 'RIG_PORT_RPC', 'RIG_PORT_SERIAL', 'RIG_PORT_UDP_NETWORK', 'RIG_PORT_ULTRA', 'RIG_PORT_USB', 'RIG_POWER_OFF', 'RIG_POWER_ON', 'RIG_POWER_OPERATE', 'RIG_POWER_STANDBY', 'RIG_POWER_UNKNOWN', 'RIG_PTRX_AMPPORT', 'RIG_PTRX_AMPSTATE', 'RIG_PTRX_CACHE', 'RIG_PTRX_DCDPORT', 'RIG_PTRX_MAXIMUM', 'RIG_PTRX_NONE', 'RIG_PTRX_PTTPORT', 'RIG_PTRX_RIGPORT', 'RIG_PTRX_ROTPORT', 'RIG_PTRX_ROTPORT2', 'RIG_PTRX_ROTSTATE', 'RIG_PTRX_STATE', 'RIG_PTT_CM108', 'RIG_PTT_GPIO', 'RIG_PTT_GPION', 'RIG_PTT_NONE', 'RIG_PTT_OFF', 'RIG_PTT_ON', 'RIG_PTT_ON_DATA', 'RIG_PTT_ON_MIC', 'RIG_PTT_PARALLEL', 'RIG_PTT_RIG', 'RIG_PTT_RIG_MICDATA', 'RIG_PTT_SERIAL_DTR', 'RIG_PTT_SERIAL_RTS', 'RIG_RESET_MASTER', 'RIG_RESET_MCALL', 'RIG_RESET_NONE', 'RIG_RESET_SOFT', 'RIG_RESET_VFO', 'RIG_RPT_SHIFT_MINUS', 'RIG_RPT_SHIFT_NONE', 'RIG_RPT_SHIFT_PLUS', 'RIG_SCAN_DELTA', 'RIG_SCAN_MEM', 'RIG_SCAN_NONE', 'RIG_SCAN_PLT', 'RIG_SCAN_PRIO', 'RIG_SCAN_PROG', 'RIG_SCAN_SLCT', 'RIG_SCAN_STOP', 'RIG_SCAN_VFO', 'RIG_SETTING_MAX', 'RIG_SIGNAL_OFF', 'RIG_SIGNAL_ON', 'RIG_SIGNAL_UNSET', 'RIG_SPECTRUM_MODE_CENTER', 'RIG_SPECTRUM_MODE_CENTER_SCROLL', 'RIG_SPECTRUM_MODE_FIXED', 'RIG_SPECTRUM_MODE_FIXED_SCROLL', 'RIG_SPECTRUM_MODE_NONE', 'RIG_SPLIT_OFF', 'RIG_SPLIT_ON', 'RIG_STATUS_ALPHA', 'RIG_STATUS_BETA', 'RIG_STATUS_BUGGY', 'RIG_STATUS_STABLE', 'RIG_STATUS_UNTESTED', 'RIG_TARGETABLE_ALL', 'RIG_TARGETABLE_ANT', 'RIG_TARGETABLE_BAND', 'RIG_TARGETABLE_BANK', 'RIG_TARGETABLE_COMMON', 'RIG_TARGETABLE_FREQ', 'RIG_TARGETABLE_FUNC', 'RIG_TARGETABLE_LEVEL', 'RIG_TARGETABLE_MEM', 'RIG_TARGETABLE_MODE', 'RIG_TARGETABLE_NONE', 'RIG_TARGETABLE_PTT', 'RIG_TARGETABLE_PURE', 'RIG_TARGETABLE_RITXIT', 'RIG_TARGETABLE_ROOFING', 'RIG_TARGETABLE_SPECTRUM', 'RIG_TARGETABLE_TONE', 'RIG_TRN_OFF', 'RIG_TRN_POLL', 'RIG_TRN_RIG', 'RIG_TS_ANY', 'RIG_TYPE_OTHER', 'RIG_VFO_A', 'RIG_VFO_ALL', 'RIG_VFO_B', 'RIG_VFO_C', 'RIG_VFO_CURR', 'RIG_VFO_MAIN', 'RIG_VFO_MAIN_A', 'RIG_VFO_MAIN_B', 'RIG_VFO_MAIN_C', 'RIG_VFO_MEM', 'RIG_VFO_NONE', 'RIG_VFO_OTHER', 'RIG_VFO_RX', 'RIG_VFO_SUB', 'RIG_VFO_SUB_A', 'RIG_VFO_SUB_B', 'RIG_VFO_SUB_C', 'RIG_VFO_TX', 'RIG_VFO_TX_FLAG', 'RIG_VFO_VFO', 'ROT_FLAG_AZIMUTH', 'ROT_FLAG_ELEVATION', 'ROT_FUNC_BIT63', 'ROT_FUNC_NONE', 'ROT_LEVEL_63', 'ROT_LEVEL_FLOAT_LIST', 'ROT_LEVEL_NONE', 'ROT_LEVEL_READONLY_LIST', 'ROT_LEVEL_SPEED', 'ROT_MODEL_AF6SA_WRC', 'ROT_MODEL_ANDROIDSENSOR', 'ROT_MODEL_APEX_SHARED_LOOP', 'ROT_MODEL_ARRAYSOLUTIONS_SAL_12_20_30', 'ROT_MODEL_CNCTRK', 'ROT_MODEL_DCU', 'ROT_MODEL_DUMMY', 'ROT_MODEL_EASYCOMM1', 'ROT_MODEL_EASYCOMM2', 'ROT_MODEL_EASYCOMM3', 'ROT_MODEL_ERC', 'ROT_MODEL_ETHER6', 'ROT_MODEL_F1TETRACKER', 'ROT_MODEL_FLIR', 'ROT_MODEL_FODTRACK', 'ROT_MODEL_GRBLTRK_NET', 'ROT_MODEL_GRBLTRK_SER', 'ROT_MODEL_GS23', 'ROT_MODEL_GS232', 'ROT_MODEL_GS232A', 'ROT_MODEL_GS232A_AZ', 'ROT_MODEL_GS232A_EL', 'ROT_MODEL_GS232B', 'ROT_MODEL_GS232B_AZ', 'ROT_MODEL_GS232B_EL', 'ROT_MODEL_GS232_GENERIC', 'ROT_MODEL_GS23_AZ', 'ROT_MODEL_HD1780', 'ROT_MODEL_IF100', 'ROT_MODEL_INDI', 'ROT_MODEL_IOPTRON', 'ROT_MODEL_LVB', 'ROT_MODEL_MEADE', 'ROT_MODEL_NETROTCTL', 'ROT_MODEL_NEXSTAR', 'ROT_MODEL_NONE', 'ROT_MODEL_PCROTOR', 'ROT_MODEL_PROSISTEL_COMBI_TRACK_AZEL', 'ROT_MODEL_PROSISTEL_D_AZ', 'ROT_MODEL_PROSISTEL_D_EL', 'ROT_MODEL_PROSISTEL_D_EL_CBOXAZ', 'ROT_MODEL_PSTROTATOR', 'ROT_MODEL_RADANT', 'ROT_MODEL_RC2800', 'ROT_MODEL_RC2800_EARLY_AZ', 'ROT_MODEL_RC2800_EARLY_AZEL', 'ROT_MODEL_RCI_AZ', 'ROT_MODEL_RCI_AZEL', 'ROT_MODEL_ROTORCARD', 'ROT_MODEL_ROTOREZ', 'ROT_MODEL_RT21', 'ROT_MODEL_SAEBRTRACK', 'ROT_MODEL_SARTEK1', 'ROT_MODEL_SATEL', 'ROT_MODEL_SATROTCTL', 'ROT_MODEL_SKYWATCHER', 'ROT_MODEL_SPID_MD01_ROT2PROG', 'ROT_MODEL_SPID_ROT1PROG', 'ROT_MODEL_SPID_ROT2PROG', 'ROT_MODEL_ST2', 'ROT_MODEL_TS7400', 'ROT_MODEL_YRC1', 'ROT_MOVE_CCW', 'ROT_MOVE_CW', 'ROT_MOVE_DOWN', 'ROT_MOVE_DOWN_CCW', 'ROT_MOVE_DOWN_CW', 'ROT_MOVE_DOWN_LEFT', 'ROT_MOVE_DOWN_RIGHT', 'ROT_MOVE_LEFT', 'ROT_MOVE_RIGHT', 'ROT_MOVE_UP', 'ROT_MOVE_UP_CCW', 'ROT_MOVE_UP_CW', 'ROT_MOVE_UP_LEFT', 'ROT_MOVE_UP_RIGHT', 'ROT_PARM_FLOAT_LIST', 'ROT_PARM_NONE', 'ROT_PARM_READONLY_LIST', 'ROT_RESET_ALL', 'ROT_SPEED_NOCHANGE', 'ROT_STATUS_BUSY', 'ROT_STATUS_LIMIT_DOWN', 'ROT_STATUS_LIMIT_LEFT', 'ROT_STATUS_LIMIT_RIGHT', 'ROT_STATUS_LIMIT_UP', 'ROT_STATUS_MOVING', 'ROT_STATUS_MOVING_AZ', 'ROT_STATUS_MOVING_DOWN', 'ROT_STATUS_MOVING_EL', 'ROT_STATUS_MOVING_LEFT', 'ROT_STATUS_MOVING_RIGHT', 'ROT_STATUS_MOVING_UP', 'ROT_STATUS_NONE', 'ROT_STATUS_OVERLAP_DOWN', 'ROT_STATUS_OVERLAP_LEFT', 'ROT_STATUS_OVERLAP_RIGHT', 'ROT_STATUS_OVERLAP_UP', 'ROT_TYPE_OTHER', 'TWIDDLE_OFF', 'TWIDDLE_ON', 'VFO_DUAL', 'cvar', 'hamlib_copyright', 'hamlib_version'] + expected_properties = ['AMP_FLAG_1', 'AMP_FLAG_2', 'AMP_LEVEL_FAULT', 'AMP_LEVEL_NH', 'AMP_LEVEL_NONE', 'AMP_LEVEL_PF', 'AMP_LEVEL_PWR', 'AMP_LEVEL_PWR_FWD', 'AMP_LEVEL_PWR_INPUT', 'AMP_LEVEL_PWR_PEAK', 'AMP_LEVEL_PWR_REFLECTED', 'AMP_LEVEL_SWR', 'AMP_MODEL_DUMMY', 'AMP_MODEL_ELECRAFT_KPA1500', 'AMP_MODEL_EXPERT_FA', 'AMP_MODEL_GEMINI_DX1200', 'AMP_MODEL_NETAMPCTL', 'AMP_MODEL_NONE', 'AMP_RESET_AMP', 'AMP_RESET_FAULT', 'AMP_RESET_MEM', 'AMP_TYPE_OTHER', 'BUILTINFUNC', 'CTCSS_LIST_SIZE', 'DCS_LIST_SIZE', 'DEBUGMSGSAVE_SIZE', 'GPIO1', 'GPIO2', 'GPIO3', 'GPIO4', 'HAMLIB_CACHE_ALL', 'HAMLIB_CACHE_ALWAYS', 'HAMLIB_CACHE_FREQ', 'HAMLIB_CACHE_MODE', 'HAMLIB_CACHE_PTT', 'HAMLIB_CACHE_SPLIT', 'HAMLIB_CACHE_VFO', 'HAMLIB_CACHE_WIDTH', 'HAMLIB_CHANLSTSIZ', 'HAMLIB_CHECK_RIG_CAPS', 'HAMLIB_COOKIE_SIZE', 'HAMLIB_ELAPSED_GET', 'HAMLIB_ELAPSED_INVALIDATE', 'HAMLIB_ELAPSED_SET', 'HAMLIB_FIFO_SIZE', 'HAMLIB_FILPATHLEN', 'HAMLIB_FLTLSTSIZ', 'HAMLIB_FRQRANGESIZ', 'HAMLIB_MAXCHANDESC', 'HAMLIB_MAXDBLSTSIZ', 'HAMLIB_MAX_AGC_LEVELS', 'HAMLIB_MAX_CAL_LENGTH', 'HAMLIB_MAX_MODES', 'HAMLIB_MAX_ROTORS', 'HAMLIB_MAX_RSCANS', 'HAMLIB_MAX_SNAPSHOT_PACKET_SIZE', 'HAMLIB_MAX_SPECTRUM_AVG_MODES', 'HAMLIB_MAX_SPECTRUM_DATA', 'HAMLIB_MAX_SPECTRUM_MODES', 'HAMLIB_MAX_SPECTRUM_SCOPES', 'HAMLIB_MAX_SPECTRUM_SPANS', 'HAMLIB_MAX_VFOS', 'HAMLIB_MAX_VFO_OPS', 'HAMLIB_RIGNAMSIZ', 'HAMLIB_RIGVERSIZ', 'HAMLIB_SECRET_LENGTH', 'HAMLIB_SETTINGS_FILE', 'HAMLIB_TSLSTSIZ', 'MAX_MODELS_PER_BACKEND', 'NETAMPCTL_RET', 'NETRIGCTL_RET', 'NETROTCTL_RET', 'RIG_AGC_AUTO', 'RIG_AGC_FAST', 'RIG_AGC_LAST', 'RIG_AGC_LONG', 'RIG_AGC_MEDIUM', 'RIG_AGC_NONE', 'RIG_AGC_OFF', 'RIG_AGC_ON', 'RIG_AGC_SLOW', 'RIG_AGC_SUPERFAST', 'RIG_AGC_USER', 'RIG_ANN_CW', 'RIG_ANN_ENG', 'RIG_ANN_FREQ', 'RIG_ANN_JAP', 'RIG_ANN_NONE', 'RIG_ANN_OFF', 'RIG_ANN_RXMODE', 'RIG_ANT_MAX', 'RIG_ANT_NONE', 'RIG_BANDSELECT_10M', 'RIG_BANDSELECT_12M', 'RIG_BANDSELECT_13CM', 'RIG_BANDSELECT_15M', 'RIG_BANDSELECT_160M', 'RIG_BANDSELECT_17M', 'RIG_BANDSELECT_1_25M', 'RIG_BANDSELECT_20M', 'RIG_BANDSELECT_2200M', 'RIG_BANDSELECT_23CM', 'RIG_BANDSELECT_2M', 'RIG_BANDSELECT_30M', 'RIG_BANDSELECT_33CM', 'RIG_BANDSELECT_3CM', 'RIG_BANDSELECT_40M', 'RIG_BANDSELECT_4M', 'RIG_BANDSELECT_5CM', 'RIG_BANDSELECT_600M', 'RIG_BANDSELECT_60M', 'RIG_BANDSELECT_6M', 'RIG_BANDSELECT_70CM', 'RIG_BANDSELECT_80M', 'RIG_BANDSELECT_9CM', 'RIG_BANDSELECT_AIR', 'RIG_BANDSELECT_GEN', 'RIG_BANDSELECT_MW', 'RIG_BANDSELECT_UNUSED', 'RIG_BANDSELECT_WFM', 'RIG_BAND_10M', 'RIG_BAND_12M', 'RIG_BAND_144MHZ', 'RIG_BAND_15M', 'RIG_BAND_160M', 'RIG_BAND_17M', 'RIG_BAND_20M', 'RIG_BAND_30M', 'RIG_BAND_40M', 'RIG_BAND_430MHZ', 'RIG_BAND_60M', 'RIG_BAND_6M', 'RIG_BAND_80M', 'RIG_BAND_AIR', 'RIG_BAND_GEN', 'RIG_BAND_MW', 'RIG_BAND_UNUSED', 'RIG_BUSBUSY', 'RIG_BUSERROR', 'RIG_CAPS_HAS_GET_LEVEL', 'RIG_CAPS_HAS_SET_LEVEL', 'RIG_CAPS_MFG_NAME_CPTR', 'RIG_CAPS_MODEL_NAME_CPTR', 'RIG_CAPS_PORT_TYPE', 'RIG_CAPS_PTT_TYPE', 'RIG_CAPS_RIG_MODEL', 'RIG_CAPS_STATUS_CPTR', 'RIG_CAPS_TARGETABLE_VFO', 'RIG_CAPS_VERSION_CPTR', 'RIG_CHFLAG_DATA', 'RIG_CHFLAG_NONE', 'RIG_CHFLAG_PSKIP', 'RIG_CHFLAG_SKIP', 'RIG_CLIENT_GPREDICT', 'RIG_CLIENT_UNKNOWN', 'RIG_CLIENT_WSJTX', 'RIG_COMM_STATUS_CONNECTING', 'RIG_COMM_STATUS_DISCONNECTED', 'RIG_COMM_STATUS_ERROR', 'RIG_COMM_STATUS_OK', 'RIG_COMM_STATUS_TERMINATED', 'RIG_COMM_STATUS_WARNING', 'RIG_CONF_BINARY', 'RIG_CONF_BUTTON', 'RIG_CONF_CHECKBUTTON', 'RIG_CONF_COMBO', 'RIG_CONF_END', 'RIG_CONF_INT', 'RIG_CONF_NUMERIC', 'RIG_CONF_STRING', 'RIG_COOKIE_GET', 'RIG_COOKIE_RELEASE', 'RIG_COOKIE_RENEW', 'RIG_DCD_CM108', 'RIG_DCD_GPIO', 'RIG_DCD_GPION', 'RIG_DCD_NONE', 'RIG_DCD_OFF', 'RIG_DCD_ON', 'RIG_DCD_PARALLEL', 'RIG_DCD_RIG', 'RIG_DCD_SERIAL_CAR', 'RIG_DCD_SERIAL_CTS', 'RIG_DCD_SERIAL_DSR', 'RIG_DEBUG_BUG', 'RIG_DEBUG_CACHE', 'RIG_DEBUG_ERR', 'RIG_DEBUG_NONE', 'RIG_DEBUG_TRACE', 'RIG_DEBUG_VERBOSE', 'RIG_DEBUG_WARN', 'RIG_EACCESS', 'RIG_EARG', 'RIG_ECONF', 'RIG_EDEPRECATED', 'RIG_EDOM', 'RIG_EEND', 'RIG_EINTERNAL', 'RIG_EINVAL', 'RIG_EIO', 'RIG_ELIMIT', 'RIG_ENAVAIL', 'RIG_ENIMPL', 'RIG_ENOMEM', 'RIG_ENTARGET', 'RIG_EPOWER', 'RIG_EPROTO', 'RIG_ERJCTED', 'RIG_ESECURITY', 'RIG_ETIMEOUT', 'RIG_ETRUNC', 'RIG_EVFO', 'RIG_FLAG_APRS', 'RIG_FLAG_COMPUTER', 'RIG_FLAG_DXCLUSTER', 'RIG_FLAG_HANDHELD', 'RIG_FLAG_MOBILE', 'RIG_FLAG_RECEIVER', 'RIG_FLAG_SCANNER', 'RIG_FLAG_TNC', 'RIG_FLAG_TRANSMITTER', 'RIG_FLAG_TRUNKING', 'RIG_FLAG_TUNER', 'RIG_FLT_ANY', 'RIG_FUNCTION_CLEANUP', 'RIG_FUNCTION_CLOSE', 'RIG_FUNCTION_DECODE_EVENT', 'RIG_FUNCTION_GET_ANT', 'RIG_FUNCTION_GET_CHANNEL', 'RIG_FUNCTION_GET_CHAN_ALL_CB', 'RIG_FUNCTION_GET_CONF', 'RIG_FUNCTION_GET_CONF2', 'RIG_FUNCTION_GET_CTCSS_SQL', 'RIG_FUNCTION_GET_CTCSS_TONE', 'RIG_FUNCTION_GET_DCD', 'RIG_FUNCTION_GET_DCS_CODE', 'RIG_FUNCTION_GET_DCS_SQL', 'RIG_FUNCTION_GET_EXT_FUNC', 'RIG_FUNCTION_GET_EXT_LEVEL', 'RIG_FUNCTION_GET_EXT_PARM', 'RIG_FUNCTION_GET_FREQ', 'RIG_FUNCTION_GET_FUNC', 'RIG_FUNCTION_GET_INFO', 'RIG_FUNCTION_GET_LEVEL', 'RIG_FUNCTION_GET_MEM', 'RIG_FUNCTION_GET_MEM_ALL_CB', 'RIG_FUNCTION_GET_MODE', 'RIG_FUNCTION_GET_PARM', 'RIG_FUNCTION_GET_POWERSTAT', 'RIG_FUNCTION_GET_PTT', 'RIG_FUNCTION_GET_RIT', 'RIG_FUNCTION_GET_RPTR_OFFS', 'RIG_FUNCTION_GET_RPTR_SHIFT', 'RIG_FUNCTION_GET_SPLIT_FREQ', 'RIG_FUNCTION_GET_SPLIT_FREQ_MODE', 'RIG_FUNCTION_GET_SPLIT_VFO', 'RIG_FUNCTION_GET_TONE', 'RIG_FUNCTION_GET_TONE_SQL', 'RIG_FUNCTION_GET_TRN', 'RIG_FUNCTION_GET_TS', 'RIG_FUNCTION_GET_VFO', 'RIG_FUNCTION_GET_XIT', 'RIG_FUNCTION_INIT', 'RIG_FUNCTION_IS_ASYNC_FRAME', 'RIG_FUNCTION_MW2POWER', 'RIG_FUNCTION_OPEN', 'RIG_FUNCTION_POWER2MW', 'RIG_FUNCTION_PROCESS_ASYNC_FRAME', 'RIG_FUNCTION_READ_FRAME_DIRECT', 'RIG_FUNCTION_RESET', 'RIG_FUNCTION_SCAN', 'RIG_FUNCTION_SEND_DTMF', 'RIG_FUNCTION_SEND_MORSE', 'RIG_FUNCTION_SEND_VOICE_MEM', 'RIG_FUNCTION_SET_ANT', 'RIG_FUNCTION_SET_BANK', 'RIG_FUNCTION_SET_CHANNEL', 'RIG_FUNCTION_SET_CHAN_ALL_CB', 'RIG_FUNCTION_SET_CONF', 'RIG_FUNCTION_SET_CTCSS_SQL', 'RIG_FUNCTION_SET_CTCSS_TONE', 'RIG_FUNCTION_SET_DCS_CODE', 'RIG_FUNCTION_SET_DCS_SQL', 'RIG_FUNCTION_SET_EXT_FUNC', 'RIG_FUNCTION_SET_EXT_LEVEL', 'RIG_FUNCTION_SET_EXT_PARM', 'RIG_FUNCTION_SET_FREQ', 'RIG_FUNCTION_SET_FUNC', 'RIG_FUNCTION_SET_LEVEL', 'RIG_FUNCTION_SET_MEM', 'RIG_FUNCTION_SET_MEM_ALL_CB', 'RIG_FUNCTION_SET_MODE', 'RIG_FUNCTION_SET_PARM', 'RIG_FUNCTION_SET_POWERSTAT', 'RIG_FUNCTION_SET_PTT', 'RIG_FUNCTION_SET_RIT', 'RIG_FUNCTION_SET_RPTR_OFFS', 'RIG_FUNCTION_SET_RPTR_SHIFT', 'RIG_FUNCTION_SET_SPLIT_FREQ', 'RIG_FUNCTION_SET_SPLIT_FREQ_MODE', 'RIG_FUNCTION_SET_SPLIT_MODE', 'RIG_FUNCTION_SET_SPLIT_VFO', 'RIG_FUNCTION_SET_TONE', 'RIG_FUNCTION_SET_TONE_SQL', 'RIG_FUNCTION_SET_TRN', 'RIG_FUNCTION_SET_TS', 'RIG_FUNCTION_SET_VFO', 'RIG_FUNCTION_SET_VFO_OPT', 'RIG_FUNCTION_SET_XIT', 'RIG_FUNCTION_STOP_MORSE', 'RIG_FUNCTION_STOP_VOICE_MEM', 'RIG_FUNCTION_VFO_OP', 'RIG_FUNCTION_WAIT_MORSE', 'RIG_FUNC_ABM', 'RIG_FUNC_AFC', 'RIG_FUNC_AFLT', 'RIG_FUNC_AIP', 'RIG_FUNC_ANF', 'RIG_FUNC_ANL', 'RIG_FUNC_APF', 'RIG_FUNC_ARO', 'RIG_FUNC_BC', 'RIG_FUNC_BC2', 'RIG_FUNC_BIT49', 'RIG_FUNC_BIT50', 'RIG_FUNC_BIT51', 'RIG_FUNC_BIT52', 'RIG_FUNC_BIT53', 'RIG_FUNC_BIT54', 'RIG_FUNC_BIT55', 'RIG_FUNC_BIT56', 'RIG_FUNC_BIT57', 'RIG_FUNC_BIT58', 'RIG_FUNC_BIT59', 'RIG_FUNC_BIT60', 'RIG_FUNC_BIT61', 'RIG_FUNC_BIT62', 'RIG_FUNC_BIT63', 'RIG_FUNC_COMP', 'RIG_FUNC_CSQL', 'RIG_FUNC_DIVERSITY', 'RIG_FUNC_DSQL', 'RIG_FUNC_DUAL_WATCH', 'RIG_FUNC_FAGC', 'RIG_FUNC_FBKIN', 'RIG_FUNC_LOCK', 'RIG_FUNC_MBC', 'RIG_FUNC_MN', 'RIG_FUNC_MON', 'RIG_FUNC_MUTE', 'RIG_FUNC_NB', 'RIG_FUNC_NB2', 'RIG_FUNC_NONE', 'RIG_FUNC_NR', 'RIG_FUNC_OVF_STATUS', 'RIG_FUNC_RESUME', 'RIG_FUNC_REV', 'RIG_FUNC_RF', 'RIG_FUNC_RIT', 'RIG_FUNC_SATMODE', 'RIG_FUNC_SBKIN', 'RIG_FUNC_SCEN', 'RIG_FUNC_SCOPE', 'RIG_FUNC_SEND_MORSE', 'RIG_FUNC_SEND_VOICE_MEM', 'RIG_FUNC_SLICE', 'RIG_FUNC_SPECTRUM', 'RIG_FUNC_SPECTRUM_HOLD', 'RIG_FUNC_SQL', 'RIG_FUNC_SYNC', 'RIG_FUNC_TBURST', 'RIG_FUNC_TONE', 'RIG_FUNC_TRANSCEIVE', 'RIG_FUNC_TSQL', 'RIG_FUNC_TUNER', 'RIG_FUNC_VOX', 'RIG_FUNC_VSC', 'RIG_FUNC_XIT', 'RIG_HANDSHAKE_HARDWARE', 'RIG_HANDSHAKE_NONE', 'RIG_HANDSHAKE_XONXOFF', 'RIG_KEYERTYPE_BUG', 'RIG_KEYERTYPE_PADDLE', 'RIG_KEYERTYPE_STRAIGHT', 'RIG_KEYERTYPE_UNKNOWN', 'RIG_LEVEL_53', 'RIG_LEVEL_54', 'RIG_LEVEL_55', 'RIG_LEVEL_56', 'RIG_LEVEL_57', 'RIG_LEVEL_58', 'RIG_LEVEL_59', 'RIG_LEVEL_60', 'RIG_LEVEL_61', 'RIG_LEVEL_62', 'RIG_LEVEL_63', 'RIG_LEVEL_AF', 'RIG_LEVEL_AGC', 'RIG_LEVEL_AGC_TIME', 'RIG_LEVEL_ALC', 'RIG_LEVEL_ANTIVOX', 'RIG_LEVEL_APF', 'RIG_LEVEL_ATT', 'RIG_LEVEL_BALANCE', 'RIG_LEVEL_BAND_SELECT', 'RIG_LEVEL_BKINDL', 'RIG_LEVEL_BKIN_DLYMS', 'RIG_LEVEL_COMP', 'RIG_LEVEL_COMP_METER', 'RIG_LEVEL_CWPITCH', 'RIG_LEVEL_FLOAT_LIST', 'RIG_LEVEL_ID_METER', 'RIG_LEVEL_IF', 'RIG_LEVEL_KEYSPD', 'RIG_LEVEL_METER', 'RIG_LEVEL_MICGAIN', 'RIG_LEVEL_MONITOR_GAIN', 'RIG_LEVEL_NB', 'RIG_LEVEL_NONE', 'RIG_LEVEL_NOTCHF', 'RIG_LEVEL_NOTCHF_RAW', 'RIG_LEVEL_NR', 'RIG_LEVEL_PBT_IN', 'RIG_LEVEL_PBT_OUT', 'RIG_LEVEL_PREAMP', 'RIG_LEVEL_RAWSTR', 'RIG_LEVEL_READONLY_LIST', 'RIG_LEVEL_RF', 'RIG_LEVEL_RFPOWER', 'RIG_LEVEL_RFPOWER_METER', 'RIG_LEVEL_RFPOWER_METER_WATTS', 'RIG_LEVEL_SLOPE_HIGH', 'RIG_LEVEL_SLOPE_LOW', 'RIG_LEVEL_SPECTRUM_ATT', 'RIG_LEVEL_SPECTRUM_AVG', 'RIG_LEVEL_SPECTRUM_EDGE_HIGH', 'RIG_LEVEL_SPECTRUM_EDGE_LOW', 'RIG_LEVEL_SPECTRUM_MODE', 'RIG_LEVEL_SPECTRUM_REF', 'RIG_LEVEL_SPECTRUM_SPAN', 'RIG_LEVEL_SPECTRUM_SPEED', 'RIG_LEVEL_SQL', 'RIG_LEVEL_STRENGTH', 'RIG_LEVEL_SWR', 'RIG_LEVEL_TEMP_METER', 'RIG_LEVEL_USB_AF', 'RIG_LEVEL_USB_AF_INPUT', 'RIG_LEVEL_VD_METER', 'RIG_LEVEL_VOXDELAY', 'RIG_LEVEL_VOXGAIN', 'RIG_MEM_CAPS_ALL', 'RIG_METER_ALC', 'RIG_METER_COMP', 'RIG_METER_DB', 'RIG_METER_IC', 'RIG_METER_NONE', 'RIG_METER_PO', 'RIG_METER_SWR', 'RIG_METER_TEMP', 'RIG_METER_VDD', 'RIG_MODEL_505DSP', 'RIG_MODEL_ACLOG', 'RIG_MODEL_ADT_200A', 'RIG_MODEL_AR16', 'RIG_MODEL_AR2500', 'RIG_MODEL_AR2700', 'RIG_MODEL_AR3000', 'RIG_MODEL_AR3000A', 'RIG_MODEL_AR3030', 'RIG_MODEL_AR5000', 'RIG_MODEL_AR5000A', 'RIG_MODEL_AR7030', 'RIG_MODEL_AR7030P', 'RIG_MODEL_AR8000', 'RIG_MODEL_AR8200', 'RIG_MODEL_AR8600', 'RIG_MODEL_ARMSTRONG', 'RIG_MODEL_ATD578UVIII', 'RIG_MODEL_BARRETT_2050', 'RIG_MODEL_BARRETT_4050', 'RIG_MODEL_BARRETT_4100', 'RIG_MODEL_BARRETT_950', 'RIG_MODEL_BC235', 'RIG_MODEL_BC245', 'RIG_MODEL_BC250', 'RIG_MODEL_BC780', 'RIG_MODEL_BC785', 'RIG_MODEL_BC786', 'RIG_MODEL_BC895', 'RIG_MODEL_BC898', 'RIG_MODEL_BCD396T', 'RIG_MODEL_BCD996T', 'RIG_MODEL_BCT8', 'RIG_MODEL_CMH530', 'RIG_MODEL_CODAN_2110', 'RIG_MODEL_CODAN_ENVOY', 'RIG_MODEL_CODAN_NGT', 'RIG_MODEL_CTX10', 'RIG_MODEL_DDS60', 'RIG_MODEL_DELTAII', 'RIG_MODEL_DKR8', 'RIG_MODEL_DKR8A', 'RIG_MODEL_DKR8B', 'RIG_MODEL_DORJI_DRA818U', 'RIG_MODEL_DORJI_DRA818V', 'RIG_MODEL_DRT1', 'RIG_MODEL_DSP10', 'RIG_MODEL_DTTSP', 'RIG_MODEL_DTTSP_UDP', 'RIG_MODEL_DUMMY', 'RIG_MODEL_DUMMY_NOVFO', 'RIG_MODEL_DWT', 'RIG_MODEL_DX77', 'RIG_MODEL_DXSR8', 'RIG_MODEL_EB200', 'RIG_MODEL_EK070', 'RIG_MODEL_EK890', 'RIG_MODEL_EK891', 'RIG_MODEL_EK895', 'RIG_MODEL_EK89X', 'RIG_MODEL_EKD500', 'RIG_MODEL_ELAD_FDM_DUO', 'RIG_MODEL_ELEKTOR304', 'RIG_MODEL_ELEKTOR507', 'RIG_MODEL_ESM500', 'RIG_MODEL_ESMC', 'RIG_MODEL_F6K', 'RIG_MODEL_FASDR', 'RIG_MODEL_FIFISDR', 'RIG_MODEL_FLRIG', 'RIG_MODEL_FRG100', 'RIG_MODEL_FRG8800', 'RIG_MODEL_FRG9600', 'RIG_MODEL_FT100', 'RIG_MODEL_FT1000', 'RIG_MODEL_FT1000D', 'RIG_MODEL_FT1000MP', 'RIG_MODEL_FT1000MPMKV', 'RIG_MODEL_FT1000MPMKVFLD', 'RIG_MODEL_FT2000', 'RIG_MODEL_FT450', 'RIG_MODEL_FT450D', 'RIG_MODEL_FT575', 'RIG_MODEL_FT600', 'RIG_MODEL_FT650', 'RIG_MODEL_FT710', 'RIG_MODEL_FT736R', 'RIG_MODEL_FT747', 'RIG_MODEL_FT757', 'RIG_MODEL_FT757GXII', 'RIG_MODEL_FT767', 'RIG_MODEL_FT817', 'RIG_MODEL_FT818', 'RIG_MODEL_FT820', 'RIG_MODEL_FT840', 'RIG_MODEL_FT847', 'RIG_MODEL_FT847UNI', 'RIG_MODEL_FT857', 'RIG_MODEL_FT890', 'RIG_MODEL_FT891', 'RIG_MODEL_FT897', 'RIG_MODEL_FT897D', 'RIG_MODEL_FT900', 'RIG_MODEL_FT9000', 'RIG_MODEL_FT9000OLD', 'RIG_MODEL_FT920', 'RIG_MODEL_FT950', 'RIG_MODEL_FT980', 'RIG_MODEL_FT990', 'RIG_MODEL_FT990UNI', 'RIG_MODEL_FT991', 'RIG_MODEL_FTDX10', 'RIG_MODEL_FTDX101D', 'RIG_MODEL_FTDX101MP', 'RIG_MODEL_FTDX1200', 'RIG_MODEL_FTDX3000', 'RIG_MODEL_FTDX5000', 'RIG_MODEL_FUNCUBEDONGLE', 'RIG_MODEL_FUNCUBEDONGLEPLUS', 'RIG_MODEL_FX4', 'RIG_MODEL_G303', 'RIG_MODEL_G305', 'RIG_MODEL_G313', 'RIG_MODEL_G315', 'RIG_MODEL_G90', 'RIG_MODEL_GNURADIO', 'RIG_MODEL_GRAUDIO', 'RIG_MODEL_GRAUDIOIQ', 'RIG_MODEL_GS100', 'RIG_MODEL_HF1000', 'RIG_MODEL_HF1000A', 'RIG_MODEL_HF150', 'RIG_MODEL_HF225', 'RIG_MODEL_HF235', 'RIG_MODEL_HF250', 'RIG_MODEL_HIQSDR', 'RIG_MODEL_HPSDR', 'RIG_MODEL_IC1271', 'RIG_MODEL_IC1275', 'RIG_MODEL_IC271', 'RIG_MODEL_IC2730', 'RIG_MODEL_IC275', 'RIG_MODEL_IC375', 'RIG_MODEL_IC471', 'RIG_MODEL_IC475', 'RIG_MODEL_IC575', 'RIG_MODEL_IC7000', 'RIG_MODEL_IC703', 'RIG_MODEL_IC705', 'RIG_MODEL_IC706', 'RIG_MODEL_IC706MKII', 'RIG_MODEL_IC706MKIIG', 'RIG_MODEL_IC707', 'RIG_MODEL_IC7100', 'RIG_MODEL_IC718', 'RIG_MODEL_IC7200', 'RIG_MODEL_IC725', 'RIG_MODEL_IC726', 'RIG_MODEL_IC728', 'RIG_MODEL_IC729', 'RIG_MODEL_IC7300', 'RIG_MODEL_IC731', 'RIG_MODEL_IC735', 'RIG_MODEL_IC736', 'RIG_MODEL_IC737', 'RIG_MODEL_IC738', 'RIG_MODEL_IC7410', 'RIG_MODEL_IC746', 'RIG_MODEL_IC746PRO', 'RIG_MODEL_IC751', 'RIG_MODEL_IC751A', 'RIG_MODEL_IC756', 'RIG_MODEL_IC756PRO', 'RIG_MODEL_IC756PROII', 'RIG_MODEL_IC756PROIII', 'RIG_MODEL_IC7600', 'RIG_MODEL_IC761', 'RIG_MODEL_IC7610', 'RIG_MODEL_IC765', 'RIG_MODEL_IC7700', 'RIG_MODEL_IC775', 'RIG_MODEL_IC7760', 'RIG_MODEL_IC78', 'RIG_MODEL_IC7800', 'RIG_MODEL_IC781', 'RIG_MODEL_IC785x', 'RIG_MODEL_IC820', 'RIG_MODEL_IC821H', 'RIG_MODEL_IC905', 'RIG_MODEL_IC910', 'RIG_MODEL_IC9100', 'RIG_MODEL_IC92D', 'RIG_MODEL_IC970', 'RIG_MODEL_IC9700', 'RIG_MODEL_ICF8101', 'RIG_MODEL_ICID1', 'RIG_MODEL_ICR10', 'RIG_MODEL_ICR20', 'RIG_MODEL_ICR30', 'RIG_MODEL_ICR6', 'RIG_MODEL_ICR7000', 'RIG_MODEL_ICR71', 'RIG_MODEL_ICR7100', 'RIG_MODEL_ICR72', 'RIG_MODEL_ICR75', 'RIG_MODEL_ICR8500', 'RIG_MODEL_ICR8600', 'RIG_MODEL_ICR9000', 'RIG_MODEL_ICR9500', 'RIG_MODEL_ICRX7', 'RIG_MODEL_IC_M700PRO', 'RIG_MODEL_IC_M710', 'RIG_MODEL_IC_M802', 'RIG_MODEL_IC_M803', 'RIG_MODEL_ID31', 'RIG_MODEL_ID4100', 'RIG_MODEL_ID51', 'RIG_MODEL_ID5100', 'RIG_MODEL_JST145', 'RIG_MODEL_JST245', 'RIG_MODEL_K2', 'RIG_MODEL_K3', 'RIG_MODEL_K3S', 'RIG_MODEL_K4', 'RIG_MODEL_KX2', 'RIG_MODEL_KX3', 'RIG_MODEL_LAB599_TX500', 'RIG_MODEL_MALACHITE', 'RIG_MODEL_MC4020', 'RIG_MODEL_MCHFQRP', 'RIG_MODEL_MDS4710', 'RIG_MODEL_MDS9710', 'RIG_MODEL_MICOM2', 'RIG_MODEL_MICROTUNE_4702', 'RIG_MODEL_MICROTUNE_4707', 'RIG_MODEL_MICROTUNE_4937', 'RIG_MODEL_MINISCOUT', 'RIG_MODEL_MINIVNA', 'RIG_MODEL_NETRIGCTL', 'RIG_MODEL_NONE', 'RIG_MODEL_NRD345', 'RIG_MODEL_NRD525', 'RIG_MODEL_NRD535', 'RIG_MODEL_NRD545', 'RIG_MODEL_OMNIVI', 'RIG_MODEL_OMNIVIP', 'RIG_MODEL_OS456', 'RIG_MODEL_OS535', 'RIG_MODEL_PARAGON2', 'RIG_MODEL_PCR100', 'RIG_MODEL_PCR1000', 'RIG_MODEL_PCR1500', 'RIG_MODEL_PCR2500', 'RIG_MODEL_PERSEUS', 'RIG_MODEL_PMR171', 'RIG_MODEL_PMSDR', 'RIG_MODEL_POWERSDR', 'RIG_MODEL_PRM8060', 'RIG_MODEL_PRM8070', 'RIG_MODEL_PRO2052', 'RIG_MODEL_PT8000A', 'RIG_MODEL_Q900', 'RIG_MODEL_QRPLABS', 'RIG_MODEL_QRPLABS_QMX', 'RIG_MODEL_QUISK', 'RIG_MODEL_R5000', 'RIG_MODEL_RA3702', 'RIG_MODEL_RA3710', 'RIG_MODEL_RA3720', 'RIG_MODEL_RA3790', 'RIG_MODEL_RA6790', 'RIG_MODEL_RS2005', 'RIG_MODEL_RS2006', 'RIG_MODEL_RS2035', 'RIG_MODEL_RS2041', 'RIG_MODEL_RS2042', 'RIG_MODEL_RS64', 'RIG_MODEL_RSHFIQ', 'RIG_MODEL_RX320', 'RIG_MODEL_RX331', 'RIG_MODEL_RX340', 'RIG_MODEL_RX350', 'RIG_MODEL_SDR1000', 'RIG_MODEL_SDR1000RFE', 'RIG_MODEL_SDRCONSOLE', 'RIG_MODEL_SDRSHARP', 'RIG_MODEL_SDRUNO', 'RIG_MODEL_SDU5000', 'RIG_MODEL_SDU5500', 'RIG_MODEL_SI570AVRUSB', 'RIG_MODEL_SI570PEABERRY1', 'RIG_MODEL_SI570PEABERRY2', 'RIG_MODEL_SI570PICUSB', 'RIG_MODEL_SMARTSDR_A', 'RIG_MODEL_SMARTSDR_B', 'RIG_MODEL_SMARTSDR_C', 'RIG_MODEL_SMARTSDR_D', 'RIG_MODEL_SMARTSDR_E', 'RIG_MODEL_SMARTSDR_F', 'RIG_MODEL_SMARTSDR_G', 'RIG_MODEL_SMARTSDR_H', 'RIG_MODEL_SR2200', 'RIG_MODEL_TCI1X', 'RIG_MODEL_THD72A', 'RIG_MODEL_THD74', 'RIG_MODEL_THD7A', 'RIG_MODEL_THD7AG', 'RIG_MODEL_THETIS', 'RIG_MODEL_THF6A', 'RIG_MODEL_THF7E', 'RIG_MODEL_THG71', 'RIG_MODEL_TMD700', 'RIG_MODEL_TMD710', 'RIG_MODEL_TMV7', 'RIG_MODEL_TMV71', 'RIG_MODEL_TRANSFOX', 'RIG_MODEL_TRC80', 'RIG_MODEL_TRP7000', 'RIG_MODEL_TRP8000', 'RIG_MODEL_TRP8255', 'RIG_MODEL_TRP9000', 'RIG_MODEL_TRUSDX', 'RIG_MODEL_TRXMANAGER_RIG', 'RIG_MODEL_TS140S', 'RIG_MODEL_TS2000', 'RIG_MODEL_TS440', 'RIG_MODEL_TS450S', 'RIG_MODEL_TS480', 'RIG_MODEL_TS50', 'RIG_MODEL_TS570D', 'RIG_MODEL_TS570S', 'RIG_MODEL_TS590S', 'RIG_MODEL_TS590SG', 'RIG_MODEL_TS680S', 'RIG_MODEL_TS690S', 'RIG_MODEL_TS711', 'RIG_MODEL_TS790', 'RIG_MODEL_TS811', 'RIG_MODEL_TS850', 'RIG_MODEL_TS870S', 'RIG_MODEL_TS890S', 'RIG_MODEL_TS930', 'RIG_MODEL_TS940', 'RIG_MODEL_TS950S', 'RIG_MODEL_TS950SDX', 'RIG_MODEL_TS990S', 'RIG_MODEL_TT516', 'RIG_MODEL_TT526', 'RIG_MODEL_TT538', 'RIG_MODEL_TT550', 'RIG_MODEL_TT565', 'RIG_MODEL_TT585', 'RIG_MODEL_TT588', 'RIG_MODEL_TT599', 'RIG_MODEL_USRP', 'RIG_MODEL_USRP0', 'RIG_MODEL_USRP_G', 'RIG_MODEL_V4L', 'RIG_MODEL_V4L2', 'RIG_MODEL_VR5000', 'RIG_MODEL_VX1700', 'RIG_MODEL_WJ8711', 'RIG_MODEL_WJ8888', 'RIG_MODEL_WR1000', 'RIG_MODEL_WR1500', 'RIG_MODEL_WR1550', 'RIG_MODEL_WR3100', 'RIG_MODEL_WR3150', 'RIG_MODEL_WR3500', 'RIG_MODEL_WR3700', 'RIG_MODEL_X108G', 'RIG_MODEL_X5105', 'RIG_MODEL_X6100', 'RIG_MODEL_X6200', 'RIG_MODEL_XG3', 'RIG_MODEL_XK2100', 'RIG_MODEL_XK852', 'RIG_MODEL_XPLORER', 'RIG_MODE_ALL', 'RIG_MODE_AM', 'RIG_MODE_AMN', 'RIG_MODE_AMS', 'RIG_MODE_BIT46', 'RIG_MODE_BIT47', 'RIG_MODE_BIT48', 'RIG_MODE_BIT49', 'RIG_MODE_BIT50', 'RIG_MODE_BIT51', 'RIG_MODE_BIT52', 'RIG_MODE_BIT53', 'RIG_MODE_BIT54', 'RIG_MODE_BIT55', 'RIG_MODE_BIT56', 'RIG_MODE_BIT57', 'RIG_MODE_BIT58', 'RIG_MODE_BIT59', 'RIG_MODE_BIT60', 'RIG_MODE_BIT61', 'RIG_MODE_BIT62', 'RIG_MODE_C4FM', 'RIG_MODE_CW', 'RIG_MODE_CWN', 'RIG_MODE_CWR', 'RIG_MODE_DCR', 'RIG_MODE_DD', 'RIG_MODE_DPMR', 'RIG_MODE_DSB', 'RIG_MODE_DSTAR', 'RIG_MODE_ECSS', 'RIG_MODE_ECSSLSB', 'RIG_MODE_ECSSUSB', 'RIG_MODE_FAX', 'RIG_MODE_FM', 'RIG_MODE_FMN', 'RIG_MODE_IQ', 'RIG_MODE_ISBLSB', 'RIG_MODE_ISBUSB', 'RIG_MODE_LSB', 'RIG_MODE_LSBD1', 'RIG_MODE_LSBD2', 'RIG_MODE_LSBD3', 'RIG_MODE_NONE', 'RIG_MODE_NXDNVN', 'RIG_MODE_NXDN_N', 'RIG_MODE_P25', 'RIG_MODE_PKTAM', 'RIG_MODE_PKTFM', 'RIG_MODE_PKTFMN', 'RIG_MODE_PKTLSB', 'RIG_MODE_PKTSSB', 'RIG_MODE_PKTUSB', 'RIG_MODE_PSK', 'RIG_MODE_PSKR', 'RIG_MODE_RTTY', 'RIG_MODE_RTTYR', 'RIG_MODE_SAH', 'RIG_MODE_SAL', 'RIG_MODE_SAM', 'RIG_MODE_SPEC', 'RIG_MODE_SSB', 'RIG_MODE_TESTS_MAX', 'RIG_MODE_USB', 'RIG_MODE_USBD1', 'RIG_MODE_USBD2', 'RIG_MODE_USBD3', 'RIG_MODE_WFM', 'RIG_MTYPE_BAND', 'RIG_MTYPE_CALL', 'RIG_MTYPE_EDGE', 'RIG_MTYPE_MEM', 'RIG_MTYPE_MEMOPAD', 'RIG_MTYPE_MORSE', 'RIG_MTYPE_NONE', 'RIG_MTYPE_PRIO', 'RIG_MTYPE_SAT', 'RIG_MTYPE_SPLIT', 'RIG_MTYPE_VOICE', 'RIG_MULTICAST_POLL', 'RIG_MULTICAST_SPECTRUM', 'RIG_MULTICAST_TRANSCEIVE', 'RIG_OK', 'RIG_OP_BAND_DOWN', 'RIG_OP_BAND_UP', 'RIG_OP_CPY', 'RIG_OP_DOWN', 'RIG_OP_FROM_VFO', 'RIG_OP_LEFT', 'RIG_OP_MCL', 'RIG_OP_NONE', 'RIG_OP_RIGHT', 'RIG_OP_TOGGLE', 'RIG_OP_TO_VFO', 'RIG_OP_TUNE', 'RIG_OP_UP', 'RIG_OP_XCHG', 'RIG_PARITY_EVEN', 'RIG_PARITY_MARK', 'RIG_PARITY_NONE', 'RIG_PARITY_ODD', 'RIG_PARITY_SPACE', 'RIG_PARM_AFIF', 'RIG_PARM_AFIF_ACC', 'RIG_PARM_AFIF_LAN', 'RIG_PARM_AFIF_WLAN', 'RIG_PARM_ANN', 'RIG_PARM_APO', 'RIG_PARM_BACKLIGHT', 'RIG_PARM_BANDSELECT', 'RIG_PARM_BAT', 'RIG_PARM_BEEP', 'RIG_PARM_KEYERTYPE', 'RIG_PARM_KEYLIGHT', 'RIG_PARM_NONE', 'RIG_PARM_SCREENSAVER', 'RIG_PARM_TIME', 'RIG_PORT_CM108', 'RIG_PORT_DEVICE', 'RIG_PORT_DTMF', 'RIG_PORT_GPIO', 'RIG_PORT_GPION', 'RIG_PORT_NETWORK', 'RIG_PORT_NONE', 'RIG_PORT_PACKET', 'RIG_PORT_PARALLEL', 'RIG_PORT_RPC', 'RIG_PORT_SERIAL', 'RIG_PORT_UDP_NETWORK', 'RIG_PORT_ULTRA', 'RIG_PORT_USB', 'RIG_POWER_OFF', 'RIG_POWER_ON', 'RIG_POWER_OPERATE', 'RIG_POWER_STANDBY', 'RIG_POWER_UNKNOWN', 'RIG_PTRX_AMPPORT', 'RIG_PTRX_AMPSTATE', 'RIG_PTRX_CACHE', 'RIG_PTRX_DCDPORT', 'RIG_PTRX_MAXIMUM', 'RIG_PTRX_NONE', 'RIG_PTRX_PTTPORT', 'RIG_PTRX_RIGPORT', 'RIG_PTRX_ROTPORT', 'RIG_PTRX_ROTPORT2', 'RIG_PTRX_ROTSTATE', 'RIG_PTRX_STATE', 'RIG_PTT_CM108', 'RIG_PTT_GPIO', 'RIG_PTT_GPION', 'RIG_PTT_NONE', 'RIG_PTT_OFF', 'RIG_PTT_ON', 'RIG_PTT_ON_DATA', 'RIG_PTT_ON_MIC', 'RIG_PTT_PARALLEL', 'RIG_PTT_RIG', 'RIG_PTT_RIG_MICDATA', 'RIG_PTT_SERIAL_DTR', 'RIG_PTT_SERIAL_RTS', 'RIG_RESET_MASTER', 'RIG_RESET_MCALL', 'RIG_RESET_NONE', 'RIG_RESET_SOFT', 'RIG_RESET_VFO', 'RIG_RPT_SHIFT_MINUS', 'RIG_RPT_SHIFT_NONE', 'RIG_RPT_SHIFT_PLUS', 'RIG_SCAN_DELTA', 'RIG_SCAN_MEM', 'RIG_SCAN_NONE', 'RIG_SCAN_PLT', 'RIG_SCAN_PRIO', 'RIG_SCAN_PROG', 'RIG_SCAN_SLCT', 'RIG_SCAN_STOP', 'RIG_SCAN_VFO', 'RIG_SETTING_MAX', 'RIG_SIGNAL_OFF', 'RIG_SIGNAL_ON', 'RIG_SIGNAL_UNSET', 'RIG_SPECTRUM_MODE_CENTER', 'RIG_SPECTRUM_MODE_CENTER_SCROLL', 'RIG_SPECTRUM_MODE_FIXED', 'RIG_SPECTRUM_MODE_FIXED_SCROLL', 'RIG_SPECTRUM_MODE_NONE', 'RIG_SPLIT_OFF', 'RIG_SPLIT_ON', 'RIG_STATUS_ALPHA', 'RIG_STATUS_BETA', 'RIG_STATUS_BUGGY', 'RIG_STATUS_STABLE', 'RIG_STATUS_UNTESTED', 'RIG_TARGETABLE_ALL', 'RIG_TARGETABLE_ANT', 'RIG_TARGETABLE_BAND', 'RIG_TARGETABLE_BANK', 'RIG_TARGETABLE_COMMON', 'RIG_TARGETABLE_FREQ', 'RIG_TARGETABLE_FUNC', 'RIG_TARGETABLE_LEVEL', 'RIG_TARGETABLE_MEM', 'RIG_TARGETABLE_MODE', 'RIG_TARGETABLE_NONE', 'RIG_TARGETABLE_PTT', 'RIG_TARGETABLE_PURE', 'RIG_TARGETABLE_RITXIT', 'RIG_TARGETABLE_ROOFING', 'RIG_TARGETABLE_SPECTRUM', 'RIG_TARGETABLE_TONE', 'RIG_TRN_OFF', 'RIG_TRN_POLL', 'RIG_TRN_RIG', 'RIG_TS_ANY', 'RIG_TYPE_OTHER', 'RIG_VFO_A', 'RIG_VFO_ALL', 'RIG_VFO_B', 'RIG_VFO_C', 'RIG_VFO_CURR', 'RIG_VFO_MAIN', 'RIG_VFO_MAIN_A', 'RIG_VFO_MAIN_B', 'RIG_VFO_MAIN_C', 'RIG_VFO_MEM', 'RIG_VFO_NONE', 'RIG_VFO_OTHER', 'RIG_VFO_RX', 'RIG_VFO_SUB', 'RIG_VFO_SUB_A', 'RIG_VFO_SUB_B', 'RIG_VFO_SUB_C', 'RIG_VFO_TX', 'RIG_VFO_TX_FLAG', 'RIG_VFO_VFO', 'ROT_FLAG_AZIMUTH', 'ROT_FLAG_ELEVATION', 'ROT_FUNC_BIT63', 'ROT_FUNC_NONE', 'ROT_LEVEL_63', 'ROT_LEVEL_FLOAT_LIST', 'ROT_LEVEL_NONE', 'ROT_LEVEL_READONLY_LIST', 'ROT_LEVEL_SPEED', 'ROT_MODEL_AF6SA_WRC', 'ROT_MODEL_ANDROIDSENSOR', 'ROT_MODEL_APEX_SHARED_LOOP', 'ROT_MODEL_ARRAYSOLUTIONS_SAL_12_20_30', 'ROT_MODEL_CNCTRK', 'ROT_MODEL_DCU', 'ROT_MODEL_DUMMY', 'ROT_MODEL_EASYCOMM1', 'ROT_MODEL_EASYCOMM2', 'ROT_MODEL_EASYCOMM3', 'ROT_MODEL_ERC', 'ROT_MODEL_ETHER6', 'ROT_MODEL_F1TETRACKER', 'ROT_MODEL_FLIR', 'ROT_MODEL_FODTRACK', 'ROT_MODEL_GRBLTRK_NET', 'ROT_MODEL_GRBLTRK_SER', 'ROT_MODEL_GS23', 'ROT_MODEL_GS232', 'ROT_MODEL_GS232A', 'ROT_MODEL_GS232A_AZ', 'ROT_MODEL_GS232A_EL', 'ROT_MODEL_GS232B', 'ROT_MODEL_GS232B_AZ', 'ROT_MODEL_GS232B_EL', 'ROT_MODEL_GS232_GENERIC', 'ROT_MODEL_GS23_AZ', 'ROT_MODEL_HD1780', 'ROT_MODEL_IF100', 'ROT_MODEL_INDI', 'ROT_MODEL_IOPTRON', 'ROT_MODEL_LVB', 'ROT_MODEL_MEADE', 'ROT_MODEL_NETROTCTL', 'ROT_MODEL_NEXSTAR', 'ROT_MODEL_NONE', 'ROT_MODEL_PCROTOR', 'ROT_MODEL_PROSISTEL_COMBI_TRACK_AZEL', 'ROT_MODEL_PROSISTEL_D_AZ', 'ROT_MODEL_PROSISTEL_D_EL', 'ROT_MODEL_PROSISTEL_D_EL_CBOXAZ', 'ROT_MODEL_PSTROTATOR', 'ROT_MODEL_RADANT', 'ROT_MODEL_RC2800', 'ROT_MODEL_RC2800_EARLY_AZ', 'ROT_MODEL_RC2800_EARLY_AZEL', 'ROT_MODEL_RCI_AZ', 'ROT_MODEL_RCI_AZEL', 'ROT_MODEL_ROTORCARD', 'ROT_MODEL_ROTOREZ', 'ROT_MODEL_RT21', 'ROT_MODEL_SAEBRTRACK', 'ROT_MODEL_SARTEK1', 'ROT_MODEL_SATEL', 'ROT_MODEL_SATROTCTL', 'ROT_MODEL_SKYWATCHER', 'ROT_MODEL_SPID_MD01_ROT2PROG', 'ROT_MODEL_SPID_ROT1PROG', 'ROT_MODEL_SPID_ROT2PROG', 'ROT_MODEL_ST2', 'ROT_MODEL_TS7400', 'ROT_MODEL_YRC1', 'ROT_MOVE_CCW', 'ROT_MOVE_CW', 'ROT_MOVE_DOWN', 'ROT_MOVE_DOWN_CCW', 'ROT_MOVE_DOWN_CW', 'ROT_MOVE_DOWN_LEFT', 'ROT_MOVE_DOWN_RIGHT', 'ROT_MOVE_LEFT', 'ROT_MOVE_RIGHT', 'ROT_MOVE_UP', 'ROT_MOVE_UP_CCW', 'ROT_MOVE_UP_CW', 'ROT_MOVE_UP_LEFT', 'ROT_MOVE_UP_RIGHT', 'ROT_PARM_FLOAT_LIST', 'ROT_PARM_NONE', 'ROT_PARM_READONLY_LIST', 'ROT_RESET_ALL', 'ROT_SPEED_NOCHANGE', 'ROT_STATUS_BUSY', 'ROT_STATUS_LIMIT_DOWN', 'ROT_STATUS_LIMIT_LEFT', 'ROT_STATUS_LIMIT_RIGHT', 'ROT_STATUS_LIMIT_UP', 'ROT_STATUS_MOVING', 'ROT_STATUS_MOVING_AZ', 'ROT_STATUS_MOVING_DOWN', 'ROT_STATUS_MOVING_EL', 'ROT_STATUS_MOVING_LEFT', 'ROT_STATUS_MOVING_RIGHT', 'ROT_STATUS_MOVING_UP', 'ROT_STATUS_NONE', 'ROT_STATUS_OVERLAP_DOWN', 'ROT_STATUS_OVERLAP_LEFT', 'ROT_STATUS_OVERLAP_RIGHT', 'ROT_STATUS_OVERLAP_UP', 'ROT_TYPE_OTHER', 'TWIDDLE_OFF', 'TWIDDLE_ON', 'VFO_DUAL', 'cvar', 'hamlib_copyright', 'hamlib_version'] assert expected_properties == self.actual_properties @classmethod From bf63febf08f28b29fdf4efa6eebe8acb23d1dd8b Mon Sep 17 00:00:00 2001 From: "Mark J. Fine" Date: Sun, 20 Jul 2025 14:57:27 -0400 Subject: [PATCH 8/9] Fix old_vfo could be uninitialized warnings that are generated in minGW by initializing to RIG_VFO_A in get/set_chan(). Adding here to keep in synch with latent changes to the add_drake_r8 branch. --- rigs/drake/drake.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rigs/drake/drake.c b/rigs/drake/drake.c index 3d00eb8cf..db1c30a66 100644 --- a/rigs/drake/drake.c +++ b/rigs/drake/drake.c @@ -1045,7 +1045,7 @@ int drake_set_chan(RIG *rig, vfo_t vfo, const channel_t *chan) char mdbuf[16]; char ackbuf[BUFSZ]; int ack_len; - vfo_t old_vfo; + vfo_t old_vfo = RIG_VFO_A; int old_chan; int retval; value_t dummy; @@ -1122,7 +1122,7 @@ int drake_set_chan(RIG *rig, vfo_t vfo, const channel_t *chan) */ int drake_get_chan(RIG *rig, vfo_t vfo, channel_t *chan, int read_only) { - vfo_t old_vfo; + vfo_t old_vfo = RIG_VFO_A; int old_chan; int retval; const struct drake_priv_data *priv = STATE(rig)->priv; From 528d87c496db2cfb35c85375c405c3f6f3ad4a3a Mon Sep 17 00:00:00 2001 From: "Mark J. Fine" Date: Sun, 20 Jul 2025 20:08:25 -0400 Subject: [PATCH 9/9] Apparently uint64_t is handled differently on CISC and RISC systems. CISC requires the %lu format while RISC requires %llu. Solved the cross-platform ping-pong game by using %llu and type casting rmode_t and setting_t values as (long long unsigned int). --- rigs/dummy/gqrx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rigs/dummy/gqrx.c b/rigs/dummy/gqrx.c index 5554c1a0a..5a9365278 100644 --- a/rigs/dummy/gqrx.c +++ b/rigs/dummy/gqrx.c @@ -554,8 +554,8 @@ static int gqrx_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) ENTERFUNC; rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); - rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s mode=%lu\n", __func__, - rig_strvfo(vfo), mode); + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s mode=%llu\n", __func__, + rig_strvfo(vfo), (long long unsigned int)mode); if (check_vfo(vfo) == FALSE) { @@ -735,8 +735,8 @@ static int gqrx_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) ENTERFUNC; rig_debug(RIG_DEBUG_TRACE, "%s\n", __func__); - rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s level=%lu\n", __func__, - rig_strvfo(vfo), level); + rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s level=%llu\n", __func__, + rig_strvfo(vfo), (long long unsigned int)level); if (check_vfo(vfo) == FALSE) {