Add Barrett 4050

pull/928/head
Mike Black W9MDB 2022-01-07 06:55:13 -06:00
rodzic f634cd3050
commit f3e0178f6b
6 zmienionych plików z 181 dodań i 166 usunięć

Wyświetl plik

@ -627,6 +627,7 @@
#define RIG_BACKEND_BARRETT "barrett"
#define RIG_MODEL_BARRETT_2050 RIG_MAKE_MODEL(RIG_BARRETT, 1)
#define RIG_MODEL_BARRETT_950 RIG_MAKE_MODEL(RIG_BARRETT, 2)
#define RIG_MODEL_BARRETT_4050 RIG_MAKE_MODEL(RIG_BARRETT, 3)
/*
* Elad

Wyświetl plik

@ -63,7 +63,7 @@ struct chan_map_s
};
// Our 10 bands
struct chan_map_s chan_map[] =
static struct chan_map_s chan_map[] =
{
{ 1.8, 2.0, 0},
{ 3.5, 4.0, 1},

Wyświetl plik

@ -1,4 +1,4 @@
BARRETTSRC = barrett.c barrett.h 950.c
BARRETTSRC = barrett.c barrett.h 950.c 4050.c
noinst_LTLIBRARIES = libhamlib-barrett.la
libhamlib_barrett_la_SOURCES = $(BARRETTSRC)

Wyświetl plik

@ -1,3 +0,0 @@
Initial version done for Barrett 250
May need to break out to separate rigs
Mike Black W9MDB

Wyświetl plik

@ -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,
};

Wyświetl plik

@ -28,7 +28,7 @@
#include <sys/time.h>
#endif
#define BACKEND_VER "20181111"
#define BACKEND_VER "20220107"
#define EOM "\x0d"
#define TRUE 1
@ -40,6 +40,7 @@
extern const struct rig_caps barrett_caps;
extern const struct rig_caps barrett950_caps;
extern const struct rig_caps barrett4050_caps;
struct barrett_priv_data {
char cmd_str[BARRETT_DATA_LEN]; /* command string buffer */