kopia lustrzana https://github.com/Hamlib/Hamlib
Add Xiegu X6200
rodzic
56d55f59b3
commit
2e96b91b04
1
NEWS
1
NEWS
|
@ -13,6 +13,7 @@ Version 5.x -- future
|
|||
* Change FT1000MP Mark V model names to align with FT1000MP
|
||||
|
||||
Version 4.6
|
||||
* Added Xeigu X6200
|
||||
* Added Commradio CTX-10
|
||||
* Added Guoehe PMR-171
|
||||
* Added csntechnoligies.net S.A.T Satellite rotor control
|
||||
|
|
|
@ -296,6 +296,7 @@
|
|||
#define RIG_MODEL_G90 RIG_MAKE_MODEL(RIG_ICOM, 88) /* Xiegu G90 */
|
||||
#define RIG_MODEL_X5105 RIG_MAKE_MODEL(RIG_ICOM, 89) /* Xiegu X5105 -- G90 compatible */
|
||||
#define RIG_MODEL_IC905 RIG_MAKE_MODEL(RIG_ICOM, 90)
|
||||
#define RIG_MODEL_X6200 RIG_MAKE_MODEL(RIG_ICOM, 91) /* Xiegu X6200 */
|
||||
|
||||
/*
|
||||
* Optoelectronics (CI-V)
|
||||
|
|
|
@ -9924,6 +9924,7 @@ DECLARE_INITRIG_BACKEND(icom)
|
|||
rig_register(&x6100_caps);
|
||||
rig_register(&g90_caps);
|
||||
rig_register(&x5105_caps);
|
||||
rig_register(&x6200_caps);
|
||||
|
||||
return (RIG_OK);
|
||||
}
|
||||
|
|
|
@ -517,6 +517,7 @@ extern struct rig_caps x108g_caps;
|
|||
extern struct rig_caps x6100_caps;
|
||||
extern struct rig_caps g90_caps;
|
||||
extern struct rig_caps x5105_caps;
|
||||
extern struct rig_caps x6200_caps;
|
||||
|
||||
extern struct rig_caps icr8600_caps;
|
||||
extern struct rig_caps icr30_caps;
|
||||
|
|
|
@ -160,7 +160,7 @@ int xiegu_rig_open(RIG *rig)
|
|||
case 0x0090: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "G90S");break;
|
||||
case 0x0106: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "G106/G106C");break;
|
||||
case 0x6100:
|
||||
case 0x00a4: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "X6100");break;
|
||||
case 0x00a4: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "X6100/X6200");break;
|
||||
default: rig_debug(RIG_DEBUG_VERBOSE, "%s: Xiegu model %s\n", __func__, "Unknown");break;
|
||||
}
|
||||
}
|
||||
|
@ -549,6 +549,182 @@ struct rig_caps x6100_caps =
|
|||
.hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS
|
||||
};
|
||||
|
||||
struct rig_caps x6200_caps =
|
||||
{
|
||||
RIG_MODEL(RIG_MODEL_X6200),
|
||||
.model_name = "X6200",
|
||||
.mfg_name = "Xiegu",
|
||||
.version = BACKEND_VER ".1",
|
||||
.copyright = "LGPL",
|
||||
.status = RIG_STATUS_STABLE,
|
||||
.rig_type = RIG_TYPE_TRANSCEIVER,
|
||||
.ptt_type = RIG_PTT_RIG,
|
||||
.dcd_type = RIG_DCD_RIG,
|
||||
.port_type = RIG_PORT_SERIAL,
|
||||
.serial_rate_min = 300,
|
||||
.serial_rate_max = 19200,
|
||||
.serial_data_bits = 8,
|
||||
.serial_stop_bits = 1,
|
||||
.serial_parity = RIG_PARITY_NONE,
|
||||
.serial_handshake = RIG_HANDSHAKE_NONE,
|
||||
.write_delay = 3,
|
||||
.post_write_delay = 0,
|
||||
.timeout = 1000,
|
||||
.retry = 3,
|
||||
.has_get_func = X108G_FUNCS,
|
||||
.has_set_func = X108G_FUNCS,
|
||||
.has_get_level = X108G_LEVELS,
|
||||
.has_set_level = RIG_LEVEL_SET(X108G_LEVELS),
|
||||
.has_get_parm = X108G_PARMS,
|
||||
.has_set_parm = RIG_PARM_SET(X108G_PARMS),
|
||||
.level_gran = {
|
||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||
},
|
||||
.parm_gran = {},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = common_dcs_list,
|
||||
.preamp = { 10, RIG_DBLST_END, }, /* FIXME: TBC it's a guess*/
|
||||
.attenuator = { 12, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(0), /* TODO */
|
||||
.vfo_ops = X108G_VFO_OPS,
|
||||
.targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE,
|
||||
.scan_ops = X108G_SCAN_OPS,
|
||||
.transceive = RIG_TRN_RIG,
|
||||
.bank_qty = 5,
|
||||
.chan_desc_sz = 0, /* TODO */
|
||||
|
||||
.chan_list = {
|
||||
{ 1, 99, RIG_MTYPE_MEM, X108G_MEM_CAP },
|
||||
{ 100, 105, RIG_MTYPE_EDGE, X108G_MEM_CAP }, /* two by two */
|
||||
{ 106, 107, RIG_MTYPE_CALL, X108G_MEM_CAP },
|
||||
RIG_CHAN_END,
|
||||
},
|
||||
|
||||
.rx_range_list1 = { {kHz(30), MHz(199.999999), X108G_ALL_RX_MODES, -1, -1, X108G_VFOS},
|
||||
{MHz(400), MHz(470), X108G_ALL_RX_MODES, -1, -1, X108G_VFOS}, RIG_FRNG_END,
|
||||
},
|
||||
.tx_range_list1 = {
|
||||
FRQ_RNG_HF(1, X108G_OTHER_TX_MODES, W(2), W(100), X108G_VFOS, RIG_ANT_1),
|
||||
FRQ_RNG_6m(1, X108G_OTHER_TX_MODES, W(2), W(100), X108G_VFOS, RIG_ANT_1),
|
||||
FRQ_RNG_2m(1, X108G_OTHER_TX_MODES, W(2), W(50), X108G_VFOS, RIG_ANT_2),
|
||||
FRQ_RNG_70cm(1, X108G_OTHER_TX_MODES, W(2), W(35), X108G_VFOS, RIG_ANT_2),
|
||||
FRQ_RNG_HF(1, X108G_AM_TX_MODES, W(1), W(40), X108G_VFOS, RIG_ANT_1), /* AM class */
|
||||
FRQ_RNG_6m(1, X108G_AM_TX_MODES, W(1), W(40), X108G_VFOS, RIG_ANT_1), /* AM class */
|
||||
FRQ_RNG_2m(1, X108G_AM_TX_MODES, W(2), W(20), X108G_VFOS, RIG_ANT_2),
|
||||
FRQ_RNG_70cm(1, X108G_OTHER_TX_MODES, W(2), W(14), X108G_VFOS, RIG_ANT_2),
|
||||
RIG_FRNG_END,
|
||||
},
|
||||
|
||||
.rx_range_list2 = { {kHz(30), MHz(199.999999), X108G_ALL_RX_MODES, -1, -1, X108G_VFOS},
|
||||
{MHz(400), MHz(470), X108G_ALL_RX_MODES, -1, -1, X108G_VFOS}, RIG_FRNG_END,
|
||||
},
|
||||
.tx_range_list2 = { /* needs the 5 mhz channels added */
|
||||
FRQ_RNG_HF(2, X108G_OTHER_TX_MODES, W(2), W(100), X108G_VFOS, RIG_ANT_1),
|
||||
FRQ_RNG_6m(2, X108G_OTHER_TX_MODES, W(2), W(100), X108G_VFOS, RIG_ANT_1),
|
||||
FRQ_RNG_2m(2, X108G_OTHER_TX_MODES, W(2), W(50), X108G_VFOS, RIG_ANT_2),
|
||||
FRQ_RNG_70cm(2, X108G_OTHER_TX_MODES, W(2), W(35), X108G_VFOS, RIG_ANT_2),
|
||||
FRQ_RNG_HF(2, X108G_AM_TX_MODES, W(1), W(40), X108G_VFOS, RIG_ANT_1), /* AM class */
|
||||
FRQ_RNG_6m(2, X108G_AM_TX_MODES, W(1), W(40), X108G_VFOS, RIG_ANT_1), /* AM class */
|
||||
FRQ_RNG_2m(2, X108G_AM_TX_MODES, W(2), W(20), X108G_VFOS, RIG_ANT_2),
|
||||
FRQ_RNG_70cm(2, X108G_OTHER_TX_MODES, W(2), W(14), X108G_VFOS, RIG_ANT_2),
|
||||
RIG_FRNG_END,
|
||||
},
|
||||
|
||||
.tuning_steps = {
|
||||
{X108G_1HZ_TS_MODES, 1},
|
||||
{X108G_NOT_TS_MODES, 10},
|
||||
{X108G_ALL_RX_MODES, Hz(100)},
|
||||
{X108G_ALL_RX_MODES, kHz(1)},
|
||||
{X108G_ALL_RX_MODES, kHz(5)},
|
||||
{X108G_ALL_RX_MODES, kHz(9)},
|
||||
{X108G_ALL_RX_MODES, kHz(10)},
|
||||
{X108G_ALL_RX_MODES, kHz(12.5)},
|
||||
{X108G_ALL_RX_MODES, kHz(20)},
|
||||
{X108G_ALL_RX_MODES, kHz(25)},
|
||||
{X108G_ALL_RX_MODES, kHz(100)},
|
||||
{X108G_NOT_TS_MODES, MHz(1)},
|
||||
RIG_TS_END,
|
||||
},
|
||||
|
||||
/* mode/filter list, remember: order matters! But duplication may speed up search. Put the most commonly used modes first! Remember these are defaults, with dsp rigs you can change them to anything you want except FM and WFM which are fixed */
|
||||
.filters = {
|
||||
{RIG_MODE_SSB, kHz(2.4)},
|
||||
{RIG_MODE_SSB, kHz(1.8)},
|
||||
{RIG_MODE_SSB, kHz(3)},
|
||||
{RIG_MODE_FM, kHz(10)},
|
||||
{RIG_MODE_FM, kHz(15)},
|
||||
{RIG_MODE_FM, kHz(7)},
|
||||
{RIG_MODE_CW | RIG_MODE_CWR | RIG_MODE_RTTY | RIG_MODE_RTTYR, Hz(500)},
|
||||
{RIG_MODE_CW | RIG_MODE_CWR | RIG_MODE_RTTY | RIG_MODE_RTTYR, Hz(250)},
|
||||
{RIG_MODE_CW | RIG_MODE_CWR, kHz(1.2)},
|
||||
{RIG_MODE_RTTY | RIG_MODE_RTTYR, kHz(2.4)},
|
||||
{RIG_MODE_AM, kHz(6)},
|
||||
{RIG_MODE_AM, kHz(3)},
|
||||
{RIG_MODE_AM, kHz(9)},
|
||||
{RIG_MODE_WFM, kHz(280)},
|
||||
RIG_FLT_END,
|
||||
},
|
||||
|
||||
.str_cal = X108G_STR_CAL,
|
||||
|
||||
.cfgparams = icom_cfg_params,
|
||||
.set_conf = icom_set_conf,
|
||||
.get_conf = icom_get_conf,
|
||||
|
||||
.priv = (void *) &x6100_priv_caps,
|
||||
.rig_init = icom_init,
|
||||
.rig_cleanup = icom_cleanup,
|
||||
.rig_open = xiegu_rig_open,
|
||||
.rig_close = icom_rig_close,
|
||||
|
||||
.set_freq = icom_set_freq,
|
||||
.get_freq = icom_get_freq,
|
||||
.set_mode = icom_set_mode,
|
||||
.get_mode = icom_get_mode,
|
||||
.set_vfo = icom_set_vfo,
|
||||
.set_ant = NULL, /*automatically set by rig depending band */
|
||||
.get_ant = NULL,
|
||||
|
||||
.decode_event = icom_decode_event,
|
||||
.set_level = icom_set_level,
|
||||
.get_level = icom_get_level,
|
||||
.set_func = icom_set_func,
|
||||
.get_func = icom_get_func,
|
||||
.set_parm = NULL,
|
||||
.get_parm = NULL,
|
||||
.set_mem = icom_set_mem,
|
||||
.set_bank = icom_set_bank,
|
||||
.vfo_op = icom_vfo_op,
|
||||
.scan = icom_scan,
|
||||
.set_ptt = x108g_set_ptt,
|
||||
.get_ptt = icom_get_ptt,
|
||||
.get_dcd = icom_get_dcd,
|
||||
.set_ts = icom_set_ts,
|
||||
.get_ts = NULL,
|
||||
.set_rptr_shift = icom_set_rptr_shift,
|
||||
.get_rptr_shift = NULL,
|
||||
.set_rptr_offs = icom_set_rptr_offs,
|
||||
.get_rptr_offs = icom_get_rptr_offs,
|
||||
.set_ctcss_tone = icom_set_ctcss_tone,
|
||||
.get_ctcss_tone = icom_get_ctcss_tone,
|
||||
.set_ctcss_sql = icom_set_ctcss_sql,
|
||||
.get_ctcss_sql = icom_get_ctcss_sql,
|
||||
.set_dcs_code = icom_set_dcs_code,
|
||||
.get_dcs_code = icom_get_dcs_code,
|
||||
// testing with X6100 showed it rejected the 0x0f 0x01 command
|
||||
.set_split_freq = icom_set_split_freq,
|
||||
.get_split_freq = icom_get_split_freq,
|
||||
.set_split_mode = icom_set_split_mode,
|
||||
.get_split_mode = icom_get_split_mode,
|
||||
.set_split_vfo = icom_set_split_vfo,
|
||||
.get_split_vfo = NULL,
|
||||
//.set_powerstat = icom_set_powerstat,
|
||||
//.get_powerstat = icom_get_powerstat,
|
||||
.hamlib_check_rig_caps = HAMLIB_CHECK_RIG_CAPS
|
||||
};
|
||||
|
||||
static struct icom_priv_caps g90_priv_caps =
|
||||
{
|
||||
0xa4, /* default address */
|
||||
|
|
Ładowanie…
Reference in New Issue