|
|
|
@ -46,165 +46,6 @@
|
|
|
|
|
#define BARRETT_LEVELS (RIG_LEVEL_STRENGTH)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int barrett_init(RIG *rig);
|
|
|
|
|
int barrett_cleanup(RIG *rig);
|
|
|
|
|
static int barrett_set_freq(RIG *rig, vfo_t vfo, freq_t freq);
|
|
|
|
|
int barrett_get_freq(RIG *rig, vfo_t vfo, freq_t *freq);
|
|
|
|
|
int barrett_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt);
|
|
|
|
|
static int barrett_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt);
|
|
|
|
|
int barrett_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
|
|
|
|
|
int barrett_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode,
|
|
|
|
|
pbwidth_t *width);
|
|
|
|
|
|
|
|
|
|
int barrett_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq);
|
|
|
|
|
int barrett_set_split_vfo(RIG *rig, vfo_t rxvfo, split_t split,
|
|
|
|
|
vfo_t txvfo);
|
|
|
|
|
|
|
|
|
|
int barrett_get_split_vfo(RIG *rig, vfo_t rxvfo, split_t *split,
|
|
|
|
|
vfo_t *txvfo);
|
|
|
|
|
|
|
|
|
|
static int barrett_get_level(RIG *rig, vfo_t vfo, setting_t level,
|
|
|
|
|
value_t *val);
|
|
|
|
|
|
|
|
|
|
static const char *barrett_get_info(RIG *rig);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const struct rig_caps barrett_caps =
|
|
|
|
|
{
|
|
|
|
|
RIG_MODEL(RIG_MODEL_BARRETT_2050),
|
|
|
|
|
.model_name = "2050",
|
|
|
|
|
.mfg_name = "Barrett",
|
|
|
|
|
.version = BACKEND_VER ".0",
|
|
|
|
|
.copyright = "LGPL",
|
|
|
|
|
.status = RIG_STATUS_STABLE,
|
|
|
|
|
.rig_type = RIG_TYPE_TRANSCEIVER,
|
|
|
|
|
.targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE,
|
|
|
|
|
.ptt_type = RIG_PTT_RIG,
|
|
|
|
|
.dcd_type = RIG_DCD_NONE,
|
|
|
|
|
.port_type = RIG_PORT_SERIAL,
|
|
|
|
|
.serial_rate_min = 9600,
|
|
|
|
|
.serial_rate_max = 9600,
|
|
|
|
|
.serial_data_bits = 8,
|
|
|
|
|
.serial_stop_bits = 1,
|
|
|
|
|
.serial_parity = RIG_PARITY_NONE,
|
|
|
|
|
.serial_handshake = RIG_HANDSHAKE_XONXOFF,
|
|
|
|
|
.write_delay = 0,
|
|
|
|
|
.post_write_delay = 50,
|
|
|
|
|
.timeout = 1000,
|
|
|
|
|
.retry = 3,
|
|
|
|
|
|
|
|
|
|
.has_get_func = RIG_FUNC_NONE,
|
|
|
|
|
.has_set_func = RIG_FUNC_NONE,
|
|
|
|
|
.has_get_level = BARRETT_LEVELS,
|
|
|
|
|
.has_set_level = RIG_LEVEL_NONE,
|
|
|
|
|
.has_get_parm = RIG_PARM_NONE,
|
|
|
|
|
.has_set_parm = RIG_PARM_NONE,
|
|
|
|
|
// .level_gran = { [LVL_CWPITCH] = { .step = { .i = 10 } } },
|
|
|
|
|
// .ctcss_list = common_ctcss_list,
|
|
|
|
|
// .dcs_list = full_dcs_list,
|
|
|
|
|
// 2050 does have channels...not implemented yet as no need yet
|
|
|
|
|
// .chan_list = {
|
|
|
|
|
// { 0, 18, RIG_MTYPE_MEM, DUMMY_MEM_CAP },
|
|
|
|
|
// { 19, 19, RIG_MTYPE_CALL },
|
|
|
|
|
// { 20, NB_CHAN-1, RIG_MTYPE_EDGE },
|
|
|
|
|
// RIG_CHAN_END,
|
|
|
|
|
// },
|
|
|
|
|
// .scan_ops = DUMMY_SCAN,
|
|
|
|
|
// .vfo_ops = DUMMY_VFO_OP,
|
|
|
|
|
.transceive = RIG_TRN_RIG,
|
|
|
|
|
.rx_range_list1 = {{
|
|
|
|
|
.startf = kHz(1600), .endf = MHz(30), .modes = BARRETT_MODES,
|
|
|
|
|
.low_power = -1, .high_power = -1, BARRETT_VFOS, RIG_ANT_1
|
|
|
|
|
},
|
|
|
|
|
RIG_FRNG_END,
|
|
|
|
|
},
|
|
|
|
|
.rx_range_list2 = {RIG_FRNG_END,},
|
|
|
|
|
.tx_range_list1 = {RIG_FRNG_END,},
|
|
|
|
|
.tx_range_list2 = {RIG_FRNG_END,},
|
|
|
|
|
.tuning_steps = { {BARRETT_MODES, 1}, {BARRETT_MODES, RIG_TS_ANY}, RIG_TS_END, },
|
|
|
|
|
.filters = {
|
|
|
|
|
{RIG_MODE_SSB | RIG_MODE_CW | RIG_MODE_RTTY, kHz(2.4)},
|
|
|
|
|
{RIG_MODE_CW, Hz(500)},
|
|
|
|
|
{RIG_MODE_AM, kHz(8)},
|
|
|
|
|
{RIG_MODE_AM, kHz(2.4)},
|
|
|
|
|
RIG_FLT_END,
|
|
|
|
|
},
|
|
|
|
|
.priv = NULL,
|
|
|
|
|
|
|
|
|
|
// .extlevels = dummy_ext_levels,
|
|
|
|
|
// .extparms = dummy_ext_parms,
|
|
|
|
|
// .cfgparams = dummy_cfg_params,
|
|
|
|
|
|
|
|
|
|
.rig_init = barrett_init,
|
|
|
|
|
.rig_cleanup = barrett_cleanup,
|
|
|
|
|
|
|
|
|
|
// .set_conf = dummy_set_conf,
|
|
|
|
|
// .get_conf = dummy_get_conf,
|
|
|
|
|
|
|
|
|
|
.set_freq = barrett_set_freq,
|
|
|
|
|
.get_freq = barrett_get_freq,
|
|
|
|
|
.set_mode = barrett_set_mode,
|
|
|
|
|
.get_mode = barrett_get_mode,
|
|
|
|
|
|
|
|
|
|
// .set_powerstat = dummy_set_powerstat,
|
|
|
|
|
// .get_powerstat = dummy_get_powerstat,
|
|
|
|
|
// .set_level = dummy_set_level,
|
|
|
|
|
.get_level = barrett_get_level,
|
|
|
|
|
// .set_func = dummy_set_func,
|
|
|
|
|
// .get_func = dummy_get_func,
|
|
|
|
|
// .set_parm = dummy_set_parm,
|
|
|
|
|
// .get_parm = dummy_get_parm,
|
|
|
|
|
// .set_ext_level = dummy_set_ext_level,
|
|
|
|
|
// .get_ext_level = dummy_get_ext_level,
|
|
|
|
|
// .set_ext_parm = dummy_set_ext_parm,
|
|
|
|
|
// .get_ext_parm = dummy_get_ext_parm,
|
|
|
|
|
|
|
|
|
|
.get_info = barrett_get_info,
|
|
|
|
|
.set_ptt = barrett_set_ptt,
|
|
|
|
|
.get_ptt = barrett_get_ptt,
|
|
|
|
|
// .get_dcd = dummy_get_dcd,
|
|
|
|
|
// .set_rptr_shift = dummy_set_rptr_shift,
|
|
|
|
|
// .get_rptr_shift = dummy_get_rptr_shift,
|
|
|
|
|
// .set_rptr_offs = dummy_set_rptr_offs,
|
|
|
|
|
// .get_rptr_offs = dummy_get_rptr_offs,
|
|
|
|
|
// .set_ctcss_tone = dummy_set_ctcss_tone,
|
|
|
|
|
// .get_ctcss_tone = dummy_get_ctcss_tone,
|
|
|
|
|
// .set_dcs_code = dummy_set_dcs_code,
|
|
|
|
|
// .get_dcs_code = dummy_get_dcs_code,
|
|
|
|
|
// .set_ctcss_sql = dummy_set_ctcss_sql,
|
|
|
|
|
// .get_ctcss_sql = dummy_get_ctcss_sql,
|
|
|
|
|
// .set_dcs_sql = dummy_set_dcs_sql,
|
|
|
|
|
// .get_dcs_sql = dummy_get_dcs_sql,
|
|
|
|
|
.set_split_freq = barrett_set_split_freq,
|
|
|
|
|
// .get_split_freq = dummy_get_split_freq,
|
|
|
|
|
// .set_split_mode = dummy_set_split_mode,
|
|
|
|
|
// .get_split_mode = dummy_get_split_mode,
|
|
|
|
|
.set_split_vfo = barrett_set_split_vfo,
|
|
|
|
|
.get_split_vfo = barrett_get_split_vfo,
|
|
|
|
|
// .set_rit = dummy_set_rit,
|
|
|
|
|
// .get_rit = dummy_get_rit,
|
|
|
|
|
// .set_xit = dummy_set_xit,
|
|
|
|
|
// .get_xit = dummy_get_xit,
|
|
|
|
|
// .set_ts = dummy_set_ts,
|
|
|
|
|
// .get_ts = dummy_get_ts,
|
|
|
|
|
// .set_ant = dummy_set_ant,
|
|
|
|
|
// .get_ant = dummy_get_ant,
|
|
|
|
|
// .set_bank = dummy_set_bank,
|
|
|
|
|
// .set_mem = dummy_set_mem,
|
|
|
|
|
// .get_mem = dummy_get_mem,
|
|
|
|
|
// .vfo_op = dummy_vfo_op,
|
|
|
|
|
// .scan = dummy_scan,
|
|
|
|
|
// .send_dtmf = dummy_send_dtmf,
|
|
|
|
|
// .recv_dtmf = dummy_recv_dtmf,
|
|
|
|
|
// .send_morse = dummy_send_morse,
|
|
|
|
|
// .set_channel = dummy_set_channel,
|
|
|
|
|
// .get_channel = dummy_get_channel,
|
|
|
|
|
// .set_trn = dummy_set_trn,
|
|
|
|
|
// .get_trn = dummy_get_trn,
|
|
|
|
|
// .power2mW = dummy_power2mW,
|
|
|
|
|
// .mW2power = dummy_mW2power,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DECLARE_INITRIG_BACKEND(barrett)
|
|
|
|
|
{
|
|
|
|
@ -212,6 +53,7 @@ DECLARE_INITRIG_BACKEND(barrett)
|
|
|
|
|
|
|
|
|
|
rig_register(&barrett_caps);
|
|
|
|
|
rig_register(&barrett950_caps);
|
|
|
|
|
rig_register(&barrett4050_caps);
|
|
|
|
|
rig_debug(RIG_DEBUG_VERBOSE, "%s: _init back from rig_register\n", __func__);
|
|
|
|
|
|
|
|
|
|
return RIG_OK;
|
|
|
|
@ -243,7 +85,8 @@ int barrett_transaction(RIG *rig, char *cmd, int expected, char **result)
|
|
|
|
|
if (expected == 0)
|
|
|
|
|
{
|
|
|
|
|
// response format is 0x11,data...,0x0d,0x0a,0x13
|
|
|
|
|
retval = read_string(&rs->rigport, (unsigned char *) priv->ret_data, sizeof(priv->ret_data),
|
|
|
|
|
retval = read_string(&rs->rigport, (unsigned char *) priv->ret_data,
|
|
|
|
|
sizeof(priv->ret_data),
|
|
|
|
|
"\x11", 1, 0, 1);
|
|
|
|
|
rig_debug(RIG_DEBUG_VERBOSE, "%s: resultlen=%d\n", __func__,
|
|
|
|
|
(int)strlen(priv->ret_data));
|
|
|
|
@ -792,10 +635,38 @@ int barrett_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|
|
|
|
const char *barrett_get_info(RIG *rig)
|
|
|
|
|
{
|
|
|
|
|
char *response = NULL;
|
|
|
|
|
char *series;
|
|
|
|
|
int retval;
|
|
|
|
|
|
|
|
|
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
|
|
|
|
|
|
|
|
|
retval = barrett_transaction(rig, "IDR", 0, &response);
|
|
|
|
|
|
|
|
|
|
if (retval != RIG_OK)
|
|
|
|
|
{
|
|
|
|
|
rig_debug(RIG_DEBUG_WARN, "%s: IDR command failed: %s\n", __func__,
|
|
|
|
|
strerror(retval));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
series = "unknown";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
series = strdup(response);
|
|
|
|
|
retval = barrett_transaction(rig, "IDS", 0, &response);
|
|
|
|
|
|
|
|
|
|
if (retval != RIG_OK)
|
|
|
|
|
{
|
|
|
|
|
rig_debug(RIG_DEBUG_WARN, "%s: IDS command failed: %s\n", __func__,
|
|
|
|
|
strerror(retval));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
response = "unknown";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rig_debug(RIG_DEBUG_VERBOSE, "%s: Barrett series %s, serial# %s\n", __func__,
|
|
|
|
|
series, response);
|
|
|
|
|
retval = barrett_transaction(rig, "IVF", 0, &response);
|
|
|
|
|
|
|
|
|
|
if (retval == RIG_OK)
|
|
|
|
@ -809,3 +680,148 @@ const char *barrett_get_info(RIG *rig)
|
|
|
|
|
|
|
|
|
|
return response;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int barrett_open(RIG *rig)
|
|
|
|
|
{
|
|
|
|
|
ENTERFUNC;
|
|
|
|
|
barrett_get_info(rig);
|
|
|
|
|
RETURNFUNC(RIG_OK);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const struct rig_caps barrett_caps =
|
|
|
|
|
{
|
|
|
|
|
RIG_MODEL(RIG_MODEL_BARRETT_2050),
|
|
|
|
|
.model_name = "2050",
|
|
|
|
|
.mfg_name = "Barrett",
|
|
|
|
|
.version = BACKEND_VER ".0",
|
|
|
|
|
.copyright = "LGPL",
|
|
|
|
|
.status = RIG_STATUS_STABLE,
|
|
|
|
|
.rig_type = RIG_TYPE_TRANSCEIVER,
|
|
|
|
|
.targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE,
|
|
|
|
|
.ptt_type = RIG_PTT_RIG,
|
|
|
|
|
.dcd_type = RIG_DCD_NONE,
|
|
|
|
|
.port_type = RIG_PORT_SERIAL,
|
|
|
|
|
.serial_rate_min = 9600,
|
|
|
|
|
.serial_rate_max = 9600,
|
|
|
|
|
.serial_data_bits = 8,
|
|
|
|
|
.serial_stop_bits = 1,
|
|
|
|
|
.serial_parity = RIG_PARITY_NONE,
|
|
|
|
|
.serial_handshake = RIG_HANDSHAKE_XONXOFF,
|
|
|
|
|
.write_delay = 0,
|
|
|
|
|
.post_write_delay = 50,
|
|
|
|
|
.timeout = 1000,
|
|
|
|
|
.retry = 3,
|
|
|
|
|
|
|
|
|
|
.has_get_func = RIG_FUNC_NONE,
|
|
|
|
|
.has_set_func = RIG_FUNC_NONE,
|
|
|
|
|
.has_get_level = BARRETT_LEVELS,
|
|
|
|
|
.has_set_level = RIG_LEVEL_NONE,
|
|
|
|
|
.has_get_parm = RIG_PARM_NONE,
|
|
|
|
|
.has_set_parm = RIG_PARM_NONE,
|
|
|
|
|
// .level_gran = { [LVL_CWPITCH] = { .step = { .i = 10 } } },
|
|
|
|
|
// .ctcss_list = common_ctcss_list,
|
|
|
|
|
// .dcs_list = full_dcs_list,
|
|
|
|
|
// 2050 does have channels...not implemented yet as no need yet
|
|
|
|
|
// .chan_list = {
|
|
|
|
|
// { 0, 18, RIG_MTYPE_MEM, DUMMY_MEM_CAP },
|
|
|
|
|
// { 19, 19, RIG_MTYPE_CALL },
|
|
|
|
|
// { 20, NB_CHAN-1, RIG_MTYPE_EDGE },
|
|
|
|
|
// RIG_CHAN_END,
|
|
|
|
|
// },
|
|
|
|
|
// .scan_ops = DUMMY_SCAN,
|
|
|
|
|
// .vfo_ops = DUMMY_VFO_OP,
|
|
|
|
|
.transceive = RIG_TRN_RIG,
|
|
|
|
|
.rx_range_list1 = {{
|
|
|
|
|
.startf = kHz(1600), .endf = MHz(30), .modes = BARRETT_MODES,
|
|
|
|
|
.low_power = -1, .high_power = -1, BARRETT_VFOS, RIG_ANT_1
|
|
|
|
|
},
|
|
|
|
|
RIG_FRNG_END,
|
|
|
|
|
},
|
|
|
|
|
.rx_range_list2 = {RIG_FRNG_END,},
|
|
|
|
|
.tx_range_list1 = {RIG_FRNG_END,},
|
|
|
|
|
.tx_range_list2 = {RIG_FRNG_END,},
|
|
|
|
|
.tuning_steps = { {BARRETT_MODES, 1}, {BARRETT_MODES, RIG_TS_ANY}, RIG_TS_END, },
|
|
|
|
|
.filters = {
|
|
|
|
|
{RIG_MODE_SSB | RIG_MODE_CW | RIG_MODE_RTTY, kHz(2.4)},
|
|
|
|
|
{RIG_MODE_CW, Hz(500)},
|
|
|
|
|
{RIG_MODE_AM, kHz(8)},
|
|
|
|
|
{RIG_MODE_AM, kHz(2.4)},
|
|
|
|
|
RIG_FLT_END,
|
|
|
|
|
},
|
|
|
|
|
.priv = NULL,
|
|
|
|
|
|
|
|
|
|
// .extlevels = dummy_ext_levels,
|
|
|
|
|
// .extparms = dummy_ext_parms,
|
|
|
|
|
// .cfgparams = dummy_cfg_params,
|
|
|
|
|
|
|
|
|
|
.rig_init = barrett_init,
|
|
|
|
|
.rig_open = barrett_open,
|
|
|
|
|
.rig_cleanup = barrett_cleanup,
|
|
|
|
|
|
|
|
|
|
// .set_conf = dummy_set_conf,
|
|
|
|
|
// .get_conf = dummy_get_conf,
|
|
|
|
|
|
|
|
|
|
.set_freq = barrett_set_freq,
|
|
|
|
|
.get_freq = barrett_get_freq,
|
|
|
|
|
.set_mode = barrett_set_mode,
|
|
|
|
|
.get_mode = barrett_get_mode,
|
|
|
|
|
|
|
|
|
|
// .set_powerstat = dummy_set_powerstat,
|
|
|
|
|
// .get_powerstat = dummy_get_powerstat,
|
|
|
|
|
// .set_level = dummy_set_level,
|
|
|
|
|
.get_level = barrett_get_level,
|
|
|
|
|
// .set_func = dummy_set_func,
|
|
|
|
|
// .get_func = dummy_get_func,
|
|
|
|
|
// .set_parm = dummy_set_parm,
|
|
|
|
|
// .get_parm = dummy_get_parm,
|
|
|
|
|
// .set_ext_level = dummy_set_ext_level,
|
|
|
|
|
// .get_ext_level = dummy_get_ext_level,
|
|
|
|
|
// .set_ext_parm = dummy_set_ext_parm,
|
|
|
|
|
// .get_ext_parm = dummy_get_ext_parm,
|
|
|
|
|
|
|
|
|
|
.get_info = barrett_get_info,
|
|
|
|
|
.set_ptt = barrett_set_ptt,
|
|
|
|
|
.get_ptt = barrett_get_ptt,
|
|
|
|
|
// .get_dcd = dummy_get_dcd,
|
|
|
|
|
// .set_rptr_shift = dummy_set_rptr_shift,
|
|
|
|
|
// .get_rptr_shift = dummy_get_rptr_shift,
|
|
|
|
|
// .set_rptr_offs = dummy_set_rptr_offs,
|
|
|
|
|
// .get_rptr_offs = dummy_get_rptr_offs,
|
|
|
|
|
// .set_ctcss_tone = dummy_set_ctcss_tone,
|
|
|
|
|
// .get_ctcss_tone = dummy_get_ctcss_tone,
|
|
|
|
|
// .set_dcs_code = dummy_set_dcs_code,
|
|
|
|
|
// .get_dcs_code = dummy_get_dcs_code,
|
|
|
|
|
// .set_ctcss_sql = dummy_set_ctcss_sql,
|
|
|
|
|
// .get_ctcss_sql = dummy_get_ctcss_sql,
|
|
|
|
|
// .set_dcs_sql = dummy_set_dcs_sql,
|
|
|
|
|
// .get_dcs_sql = dummy_get_dcs_sql,
|
|
|
|
|
.set_split_freq = barrett_set_split_freq,
|
|
|
|
|
// .get_split_freq = dummy_get_split_freq,
|
|
|
|
|
// .set_split_mode = dummy_set_split_mode,
|
|
|
|
|
// .get_split_mode = dummy_get_split_mode,
|
|
|
|
|
.set_split_vfo = barrett_set_split_vfo,
|
|
|
|
|
.get_split_vfo = barrett_get_split_vfo,
|
|
|
|
|
// .set_rit = dummy_set_rit,
|
|
|
|
|
// .get_rit = dummy_get_rit,
|
|
|
|
|
// .set_xit = dummy_set_xit,
|
|
|
|
|
// .get_xit = dummy_get_xit,
|
|
|
|
|
// .set_ts = dummy_set_ts,
|
|
|
|
|
// .get_ts = dummy_get_ts,
|
|
|
|
|
// .set_ant = dummy_set_ant,
|
|
|
|
|
// .get_ant = dummy_get_ant,
|
|
|
|
|
// .set_bank = dummy_set_bank,
|
|
|
|
|
// .set_mem = dummy_set_mem,
|
|
|
|
|
// .get_mem = dummy_get_mem,
|
|
|
|
|
// .vfo_op = dummy_vfo_op,
|
|
|
|
|
// .scan = dummy_scan,
|
|
|
|
|
// .send_dtmf = dummy_send_dtmf,
|
|
|
|
|
// .recv_dtmf = dummy_recv_dtmf,
|
|
|
|
|
// .send_morse = dummy_send_morse,
|
|
|
|
|
// .set_channel = dummy_set_channel,
|
|
|
|
|
// .get_channel = dummy_get_channel,
|
|
|
|
|
// .set_trn = dummy_set_trn,
|
|
|
|
|
// .get_trn = dummy_get_trn,
|
|
|
|
|
// .power2mW = dummy_power2mW,
|
|
|
|
|
// .mW2power = dummy_mW2power,
|
|
|
|
|
};
|
|
|
|
|