Merge branch 'master' of https://github.com/mdblack98/Hamlib into mdblack98-master

pull/145/head
Nate Bargmann 2019-11-20 11:35:59 -06:00
commit 38afd10425
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: F72625E2EDBED598
3 zmienionych plików z 601 dodań i 514 usunięć

Wyświetl plik

@ -119,8 +119,8 @@
/* /*
* IC9700 items that differ from IC7300 * IC9700 items that differ from IC7300
*/ */
#define IC9700_VFOS (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MEM|RIG_VFO_MAIN|RIG_VFO_SUB) #define IC9700_VFOS (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MAIN|RIG_VFO_SUB|RIG_VFO_MEM)
#define IC9700_FUNCS (RIG_FUNC_NB|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_SBKIN|RIG_FUNC_FBKIN|RIG_FUNC_NR|RIG_FUNC_MON|RIG_FUNC_MN|RIG_FUNC_ANF|RIG_FUNC_LOCK|RIG_FUNC_RIT|RIG_FUNC_SCOPE) #define IC9700_FUNCS (RIG_FUNC_NB|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_SBKIN|RIG_FUNC_FBKIN|RIG_FUNC_NR|RIG_FUNC_MON|RIG_FUNC_MN|RIG_FUNC_ANF|RIG_FUNC_LOCK|RIG_FUNC_RIT|RIG_FUNC_SCOPE|RIG_FUNC_SATMODE|RIG_FUNC_AFC)
#define IC9700_VFO_OPS (RIG_OP_CPY|RIG_OP_XCHG|RIG_OP_FROM_VFO|RIG_OP_TO_VFO|RIG_OP_MCL) #define IC9700_VFO_OPS (RIG_OP_CPY|RIG_OP_XCHG|RIG_OP_FROM_VFO|RIG_OP_TO_VFO|RIG_OP_MCL)
#define IC9700_ALL_TX_MODES (RIG_MODE_FM|RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_DSTAR|RIG_MODE_DD) #define IC9700_ALL_TX_MODES (RIG_MODE_FM|RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_DSTAR|RIG_MODE_DD)
@ -186,7 +186,7 @@
static const struct icom_priv_caps IC7300_priv_caps = { static const struct icom_priv_caps IC7300_priv_caps = {
0x94, /* default address */ 0x94, /* default address */
0, /* 731 mode */ 0, /* 731 mode */
0, /* no XCHG */ 1, /* no XCHG to avoid display flickering */
ic7300_ts_sc_list, ic7300_ts_sc_list,
.agc_levels_present = 1, .agc_levels_present = 1,
.agc_levels = { .agc_levels = {
@ -200,7 +200,7 @@ static const struct icom_priv_caps IC7300_priv_caps = {
static const struct icom_priv_caps IC9700_priv_caps = { static const struct icom_priv_caps IC9700_priv_caps = {
0xA2, /* default address */ 0xA2, /* default address */
0, /* 731 mode */ 0, /* 731 mode */
0, /* no XCHG */ 1, /* no XCHG to avoid display flickering */
ic7300_ts_sc_list, ic7300_ts_sc_list,
.serial_USB_echo_check = 1, /* USB CI-V may not echo */ .serial_USB_echo_check = 1, /* USB CI-V may not echo */
.agc_levels_present = 1, .agc_levels_present = 1,
@ -223,7 +223,7 @@ const struct rig_caps ic7300_caps = {
.rig_model = RIG_MODEL_IC7300, .rig_model = RIG_MODEL_IC7300,
.model_name = "IC-7300", .model_name = "IC-7300",
.mfg_name = "Icom", .mfg_name = "Icom",
.version = BACKEND_VER ".3", .version = BACKEND_VER ".4",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_STABLE, .status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER, .rig_type = RIG_TYPE_TRANSCEIVER,
@ -274,26 +274,26 @@ const struct rig_caps ic7300_caps = {
RIG_CHAN_END, RIG_CHAN_END,
}, },
.rx_range_list1 = { {kHz(30),MHz(74.8),IC7300_ALL_RX_MODES,-1,-1,IC7300_VFOS}, RIG_FRNG_END, }, .rx_range_list1 = { {kHz(30),MHz(74.8),IC7300_ALL_RX_MODES,-1,-1,IC9700_VFOS}, RIG_FRNG_END, },
.tx_range_list1 = { .tx_range_list1 = {
FRQ_RNG_HF(1,IC7300_OTHER_TX_MODES, W(2),W(100),IC7300_VFOS,RIG_ANT_1), FRQ_RNG_HF(1,IC7300_OTHER_TX_MODES, W(2),W(100),IC9700_VFOS,RIG_ANT_1),
FRQ_RNG_60m(1,IC7300_OTHER_TX_MODES, W(2),W(100),IC7300_VFOS,RIG_ANT_1), FRQ_RNG_60m(1,IC7300_OTHER_TX_MODES, W(2),W(100),IC9700_VFOS,RIG_ANT_1),
FRQ_RNG_6m(1,IC7300_OTHER_TX_MODES, W(2),W(100),IC7300_VFOS,RIG_ANT_1), FRQ_RNG_6m(1,IC7300_OTHER_TX_MODES, W(2),W(100),IC9700_VFOS,RIG_ANT_1),
FRQ_RNG_4m(1,IC7300_OTHER_TX_MODES, W(2),W(100),IC7300_VFOS,RIG_ANT_1), FRQ_RNG_4m(1,IC7300_OTHER_TX_MODES, W(2),W(100),IC9700_VFOS,RIG_ANT_1),
FRQ_RNG_HF(1,IC7300_AM_TX_MODES, W(1),W(40),IC7300_VFOS,RIG_ANT_1), /* AM class */ FRQ_RNG_HF(1,IC7300_AM_TX_MODES, W(1),W(40),IC9700_VFOS,RIG_ANT_1), /* AM class */
FRQ_RNG_60m(1,IC7300_AM_TX_MODES, W(1),W(40),IC7300_VFOS,RIG_ANT_1), /* AM class */ FRQ_RNG_60m(1,IC7300_AM_TX_MODES, W(1),W(40),IC9700_VFOS,RIG_ANT_1), /* AM class */
FRQ_RNG_6m(1,IC7300_AM_TX_MODES, W(1),W(40),IC7300_VFOS,RIG_ANT_1), /* AM class */ FRQ_RNG_6m(1,IC7300_AM_TX_MODES, W(1),W(40),IC9700_VFOS,RIG_ANT_1), /* AM class */
FRQ_RNG_4m(1,IC7300_AM_TX_MODES, W(1),W(40),IC7300_VFOS,RIG_ANT_1), /* AM class */ FRQ_RNG_4m(1,IC7300_AM_TX_MODES, W(1),W(40),IC9700_VFOS,RIG_ANT_1), /* AM class */
RIG_FRNG_END, }, RIG_FRNG_END, },
.rx_range_list2 = { {kHz(30),MHz(74.8),IC7300_ALL_RX_MODES,-1,-1,IC7300_VFOS}, RIG_FRNG_END, }, .rx_range_list2 = { {kHz(30),MHz(74.8),IC7300_ALL_RX_MODES,-1,-1,IC9700_VFOS}, RIG_FRNG_END, },
.tx_range_list2 = { .tx_range_list2 = {
FRQ_RNG_HF(2,IC7300_OTHER_TX_MODES, W(2),W(100),IC7300_VFOS,RIG_ANT_1), FRQ_RNG_HF(2,IC7300_OTHER_TX_MODES, W(2),W(100),IC9700_VFOS,RIG_ANT_1),
FRQ_RNG_60m(2,IC7300_OTHER_TX_MODES, W(2),W(100),IC7300_VFOS,RIG_ANT_1), FRQ_RNG_60m(2,IC7300_OTHER_TX_MODES, W(2),W(100),IC9700_VFOS,RIG_ANT_1),
FRQ_RNG_6m(2,IC7300_OTHER_TX_MODES, W(2),W(100),IC7300_VFOS,RIG_ANT_1), FRQ_RNG_6m(2,IC7300_OTHER_TX_MODES, W(2),W(100),IC9700_VFOS,RIG_ANT_1),
FRQ_RNG_HF(2,IC7300_AM_TX_MODES, W(1),W(40),IC7300_VFOS,RIG_ANT_1), /* AM class */ FRQ_RNG_HF(2,IC7300_AM_TX_MODES, W(1),W(40),IC9700_VFOS,RIG_ANT_1), /* AM class */
FRQ_RNG_60m(2,IC7300_AM_TX_MODES, W(1),W(40),IC7300_VFOS,RIG_ANT_1), /* AM class */ FRQ_RNG_60m(2,IC7300_AM_TX_MODES, W(1),W(40),IC9700_VFOS,RIG_ANT_1), /* AM class */
FRQ_RNG_6m(2,IC7300_AM_TX_MODES, W(1),W(40),IC7300_VFOS,RIG_ANT_1), /* AM class */ FRQ_RNG_6m(2,IC7300_AM_TX_MODES, W(1),W(40),IC9700_VFOS,RIG_ANT_1), /* AM class */
RIG_FRNG_END, }, RIG_FRNG_END, },
.tuning_steps = { .tuning_steps = {
@ -375,10 +375,10 @@ const struct rig_caps ic7300_caps = {
.get_dcd = icom_get_dcd, .get_dcd = icom_get_dcd,
.set_ts = icom_set_ts, .set_ts = icom_set_ts,
.get_ts = icom_get_ts, .get_ts = icom_get_ts,
.set_rptr_shift = NULL, .set_rptr_shift = icom_set_rptr_shift,
.get_rptr_shift = NULL, .get_rptr_shift = icom_get_rptr_shift,
.set_rptr_offs = NULL, .set_rptr_offs = icom_set_rptr_offs,
.get_rptr_offs = NULL, .get_rptr_offs = icom_get_rptr_offs,
.set_ctcss_tone = icom_set_ctcss_tone, .set_ctcss_tone = icom_set_ctcss_tone,
.get_ctcss_tone = icom_get_ctcss_tone, .get_ctcss_tone = icom_get_ctcss_tone,
.set_ctcss_sql = icom_set_ctcss_sql, .set_ctcss_sql = icom_set_ctcss_sql,
@ -403,7 +403,7 @@ const struct rig_caps ic9700_caps = {
.mfg_name = "Icom", .mfg_name = "Icom",
.version = BACKEND_VER ".2", .version = BACKEND_VER ".2",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_BETA, .status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER, .rig_type = RIG_TYPE_TRANSCEIVER,
.ptt_type = RIG_PTT_RIG, .ptt_type = RIG_PTT_RIG,
.dcd_type = RIG_DCD_RIG, .dcd_type = RIG_DCD_RIG,
@ -548,10 +548,10 @@ const struct rig_caps ic9700_caps = {
.get_dcd = icom_get_dcd, .get_dcd = icom_get_dcd,
.set_ts = icom_set_ts, .set_ts = icom_set_ts,
.get_ts = icom_get_ts, .get_ts = icom_get_ts,
.set_rptr_shift = NULL, .set_rptr_shift = icom_set_rptr_shift,
.get_rptr_shift = NULL, .get_rptr_shift = icom_get_rptr_shift,
.set_rptr_offs = NULL, .set_rptr_offs = icom_set_rptr_offs,
.get_rptr_offs = NULL, .get_rptr_offs = icom_get_rptr_offs,
.set_ctcss_tone = icom_set_ctcss_tone, .set_ctcss_tone = icom_set_ctcss_tone,
.get_ctcss_tone = icom_get_ctcss_tone, .get_ctcss_tone = icom_get_ctcss_tone,
.set_ctcss_sql = icom_set_ctcss_sql, .set_ctcss_sql = icom_set_ctcss_sql,

Wyświetl plik

@ -43,7 +43,8 @@
static int ic910_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) static int ic910_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
{ {
/* FIX: The IC-910 has "Set FM" = 4, which is RTTY in for other radios */ /* FIX: The IC-910 has "Set FM" = 4, which is RTTY in for other radios */
if (mode == RIG_MODE_FM) { if (mode == RIG_MODE_FM)
{
mode = RIG_MODE_RTTY; mode = RIG_MODE_RTTY;
} }
@ -55,7 +56,8 @@ static int ic910_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
/* FIX: The IC-910 has "Set FM" = 4, which is RTTY in for other radios */ /* FIX: The IC-910 has "Set FM" = 4, which is RTTY in for other radios */
int retval = icom_get_mode(rig, vfo, mode, width); int retval = icom_get_mode(rig, vfo, mode, width);
if (*mode == RIG_MODE_RTTY) { if (*mode == RIG_MODE_RTTY)
{
*mode = RIG_MODE_FM; *mode = RIG_MODE_FM;
} }
@ -73,25 +75,31 @@ static int compareFrequencies(RIG *rig, freq_t freq1, freq_t freq2)
int freq1band = 0, freq2band = 0; int freq1band = 0, freq2band = 0;
freq_range_t noband = RIG_FRNG_END; freq_range_t noband = RIG_FRNG_END;
while (rig->caps->rx_range_list1[freq1band].startf != noband.startf) { while (rig->caps->rx_range_list1[freq1band].startf != noband.startf)
{
if (freq1 >= rig->caps->rx_range_list1[freq1band].startf && if (freq1 >= rig->caps->rx_range_list1[freq1band].startf &&
freq1 <= rig->caps->rx_range_list1[freq1band].endf) freq1 <= rig->caps->rx_range_list1[freq1band].endf)
{
break; break;
}
++freq1band; ++freq1band;
//fprintf(stderr, "%i\n", freq1band); //fprintf(stderr, "%i\n", freq1band);
} }
while (rig->caps->rx_range_list1[freq2band].startf != noband.startf) { while (rig->caps->rx_range_list1[freq2band].startf != noband.startf)
{
if (freq2 >= rig->caps->rx_range_list1[freq2band].startf && if (freq2 >= rig->caps->rx_range_list1[freq2band].startf &&
freq2 <= rig->caps->rx_range_list1[freq2band].endf) freq2 <= rig->caps->rx_range_list1[freq2band].endf)
{
break; break;
}
++freq2band; ++freq2band;
} }
if (freq2band == freq1band) return 1; if (freq2band == freq1band) { return 1; }
else return 0; else { return 0; }
} }
static int ic910_set_freq(RIG *rig, vfo_t vfo, freq_t freq) static int ic910_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
@ -100,46 +108,53 @@ static int ic910_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
freq_t otherfreq; freq_t otherfreq;
freq_t origfreq; freq_t origfreq;
if ((retval = icom_get_freq(rig, RIG_VFO_CURR, &origfreq)) != RIG_OK) return retval; if ((retval = icom_get_freq(rig, RIG_VFO_CURR, &origfreq)) != RIG_OK) { return retval; }
if (compareFrequencies (rig, freq, origfreq))
if (compareFrequencies(rig, freq, origfreq))
{ {
/* correct band already */ /* correct band already */
if (RIG_VFO_A == vfo || RIG_VFO_B == vfo) if (RIG_VFO_A == vfo || RIG_VFO_B == vfo)
{ {
/* switch to desired VFO and read its frequency */ /* switch to desired VFO and read its frequency */
if ((retval = icom_set_vfo (rig, vfo)) != RIG_OK) return retval; if ((retval = icom_set_vfo(rig, vfo)) != RIG_OK) { return retval; }
if ((retval = icom_get_freq(rig, vfo, &otherfreq)) != RIG_OK) return retval;
retval = icom_set_freq (rig, RIG_VFO_CURR, freq); if ((retval = icom_get_freq(rig, vfo, &otherfreq)) != RIG_OK) { return retval; }
retval = icom_set_freq(rig, RIG_VFO_CURR, freq);
if (otherfreq != origfreq) if (otherfreq != origfreq)
{ {
/* swap VFOs back as original was the other one */ /* swap VFOs back as original was the other one */
icom_set_vfo (rig, RIG_VFO_A == vfo ? RIG_VFO_B : RIG_VFO_A); icom_set_vfo(rig, RIG_VFO_A == vfo ? RIG_VFO_B : RIG_VFO_A);
} }
} }
else if (RIG_VFO_MAIN == vfo || RIG_VFO_SUB == vfo) else if (RIG_VFO_MAIN == vfo || RIG_VFO_SUB == vfo)
{ {
/* switch to the desired of MAIN and SUB and read its frequency */ /* switch to the desired of MAIN and SUB and read its frequency */
if ((retval = icom_set_vfo (rig, vfo)) != RIG_OK) return retval; if ((retval = icom_set_vfo(rig, vfo)) != RIG_OK) { return retval; }
if ((retval = icom_get_freq(rig, vfo, &otherfreq)) != RIG_OK) return retval;
if ((retval = icom_get_freq(rig, vfo, &otherfreq)) != RIG_OK) { return retval; }
if (otherfreq != origfreq) if (otherfreq != origfreq)
{ {
/* started on a different so band exchange MAIN and SUB */ /* started on a different so band exchange MAIN and SUB */
if ((retval = icom_vfo_op(rig, RIG_VFO_CURR, RIG_OP_XCHG)) != RIG_OK) return retval; if ((retval = icom_vfo_op(rig, RIG_VFO_CURR, RIG_OP_XCHG)) != RIG_OK) { return retval; }
retval = icom_set_freq (rig, RIG_VFO_CURR, freq);
retval = icom_set_freq(rig, RIG_VFO_CURR, freq);
/* swap MAIN/SUB back as original was the other one */ /* swap MAIN/SUB back as original was the other one */
icom_set_vfo (rig, RIG_VFO_MAIN == vfo ? RIG_VFO_SUB : RIG_VFO_MAIN); icom_set_vfo(rig, RIG_VFO_MAIN == vfo ? RIG_VFO_SUB : RIG_VFO_MAIN);
} }
else else
{ {
/* already correct one of MAIN and SUB */ /* already correct one of MAIN and SUB */
retval = icom_set_freq (rig, RIG_VFO_CURR, freq); retval = icom_set_freq(rig, RIG_VFO_CURR, freq);
} }
} }
else if (RIG_VFO_CURR == vfo) else if (RIG_VFO_CURR == vfo)
{ {
retval = icom_set_freq (rig, RIG_VFO_CURR, freq); retval = icom_set_freq(rig, RIG_VFO_CURR, freq);
} }
else retval = -RIG_EVFO; else { retval = -RIG_EVFO; }
} }
else else
{ {
@ -147,27 +162,35 @@ static int ic910_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
if (RIG_VFO_A == vfo || RIG_VFO_B == vfo) if (RIG_VFO_A == vfo || RIG_VFO_B == vfo)
{ {
/* try and set frequency, may fail if band is already on other of MAIN/SUB */ /* try and set frequency, may fail if band is already on other of MAIN/SUB */
retval = icom_set_freq (rig, RIG_VFO_CURR, freq); retval = icom_set_freq(rig, RIG_VFO_CURR, freq);
if (-RIG_ERJCTED == retval) if (-RIG_ERJCTED == retval)
{ {
/* exchange MAIN & SUB */ /* exchange MAIN & SUB */
if ((retval = icom_vfo_op(rig, RIG_VFO_CURR, RIG_OP_XCHG)) != RIG_OK) return retval; if ((retval = icom_vfo_op(rig, RIG_VFO_CURR, RIG_OP_XCHG)) != RIG_OK) { return retval; }
if ((retval = icom_get_freq(rig, vfo, &origfreq)) != RIG_OK) return retval;
if ((retval = icom_set_vfo (rig, vfo)) != RIG_OK) return retval; if ((retval = icom_get_freq(rig, vfo, &origfreq)) != RIG_OK) { return retval; }
if ((retval = icom_get_freq(rig, vfo, &otherfreq)) != RIG_OK) return retval;
retval = icom_set_freq (rig, RIG_VFO_CURR, freq); if ((retval = icom_set_vfo(rig, vfo)) != RIG_OK) { return retval; }
if ((retval = icom_get_freq(rig, vfo, &otherfreq)) != RIG_OK) { return retval; }
retval = icom_set_freq(rig, RIG_VFO_CURR, freq);
if (-RIG_ERJCTED == retval) if (-RIG_ERJCTED == retval)
{ {
/* band not fitted so swap MAIN & SUB back and give up */ /* band not fitted so swap MAIN & SUB back and give up */
icom_vfo_op(rig, RIG_VFO_CURR, RIG_OP_XCHG); icom_vfo_op(rig, RIG_VFO_CURR, RIG_OP_XCHG);
return retval; return retval;
} }
else if (retval != RIG_OK) return retval; else if (retval != RIG_OK) { return retval; }
if (otherfreq != origfreq) if (otherfreq != origfreq)
{ {
/* swap VFOs back as original was the other one */ /* swap VFOs back as original was the other one */
icom_set_vfo (rig, RIG_VFO_A == vfo ? RIG_VFO_B : RIG_VFO_A); icom_set_vfo(rig, RIG_VFO_A == vfo ? RIG_VFO_B : RIG_VFO_A);
} }
/* we do not exchange bands back as this is taken to /* we do not exchange bands back as this is taken to
mean set VFOA/B on MAIN to the specified frequency mean set VFOA/B on MAIN to the specified frequency
as Hamlib does not recognize A on MAIN or B on SUB as Hamlib does not recognize A on MAIN or B on SUB
@ -175,45 +198,56 @@ static int ic910_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
on SUB */ on SUB */
return retval; return retval;
} }
/* we changed band to the "third band" which always makes /* we changed band to the "third band" which always makes
VFO A current so just make the requested one the VFO A current so just make the requested one the
specified frequency as well if it is VFO B. There is no specified frequency as well if it is VFO B. There is no
way of going to the "third band" without changing VFO way of going to the "third band" without changing VFO
A */ A */
if (RIG_VFO_B == vfo) { if (RIG_VFO_B == vfo)
if ((retval = icom_set_vfo (rig, vfo)) != RIG_OK) return retval; {
retval = icom_set_freq (rig, RIG_VFO_CURR, freq); if ((retval = icom_set_vfo(rig, vfo)) != RIG_OK) { return retval; }
icom_set_vfo (rig, RIG_VFO_A);
retval = icom_set_freq(rig, RIG_VFO_CURR, freq);
icom_set_vfo(rig, RIG_VFO_A);
} }
} }
else if (RIG_VFO_MAIN == vfo || RIG_VFO_SUB == vfo) else if (RIG_VFO_MAIN == vfo || RIG_VFO_SUB == vfo)
{ {
if ((retval = icom_set_vfo (rig, vfo)) != RIG_OK) return retval; if ((retval = icom_set_vfo(rig, vfo)) != RIG_OK) { return retval; }
if ((retval = icom_get_freq(rig, vfo, &otherfreq)) != RIG_OK) return retval;
retval = icom_set_freq (rig, RIG_VFO_CURR, freq); if ((retval = icom_get_freq(rig, vfo, &otherfreq)) != RIG_OK) { return retval; }
retval = icom_set_freq(rig, RIG_VFO_CURR, freq);
if (-RIG_ERJCTED == retval) if (-RIG_ERJCTED == retval)
{ {
/* required band is on other of MAIN or SUB */ /* required band is on other of MAIN or SUB */
if ((retval = icom_vfo_op(rig, RIG_VFO_CURR, RIG_OP_XCHG)) != RIG_OK) return retval; if ((retval = icom_vfo_op(rig, RIG_VFO_CURR, RIG_OP_XCHG)) != RIG_OK) { return retval; }
retval = icom_set_freq (rig, RIG_VFO_CURR, freq);
retval = icom_set_freq(rig, RIG_VFO_CURR, freq);
} }
else if (retval != RIG_OK) return retval; else if (retval != RIG_OK) { return retval; }
if (otherfreq != origfreq) if (otherfreq != origfreq)
{ {
/* started on other of MAIN & SUB so switch back */ /* started on other of MAIN & SUB so switch back */
icom_set_vfo (rig, icom_set_vfo(rig,
RIG_VFO_MAIN == vfo ? RIG_VFO_MAIN == vfo ?
RIG_VFO_SUB : RIG_VFO_MAIN); RIG_VFO_SUB : RIG_VFO_MAIN);
} }
} }
else if (RIG_VFO_CURR == vfo) else if (RIG_VFO_CURR == vfo)
{ {
retval = icom_set_freq (rig, RIG_VFO_CURR, freq); retval = icom_set_freq(rig, RIG_VFO_CURR, freq);
if (-RIG_ERJCTED == retval) if (-RIG_ERJCTED == retval)
{ {
/* exchange MAIN & SUB */ /* exchange MAIN & SUB */
if ((retval = icom_vfo_op(rig, RIG_VFO_CURR, RIG_OP_XCHG)) != RIG_OK) return retval; if ((retval = icom_vfo_op(rig, RIG_VFO_CURR, RIG_OP_XCHG)) != RIG_OK) { return retval; }
retval = icom_set_freq (rig, RIG_VFO_CURR, freq);
retval = icom_set_freq(rig, RIG_VFO_CURR, freq);
if (-RIG_ERJCTED == retval) if (-RIG_ERJCTED == retval)
{ {
/* band not fitted so swap MAIN & SUB back and give up */ /* band not fitted so swap MAIN & SUB back and give up */
@ -222,40 +256,52 @@ static int ic910_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
} }
} }
} }
else retval = -RIG_EVFO; else { retval = -RIG_EVFO; }
} }
return retval; return retval;
} }
static int ic910_get_freq(RIG *rig, vfo_t vfo, freq_t * freq) static int ic910_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
{ {
int retval; int retval;
freq_t origfreq; freq_t origfreq;
/* start off by reading the current VFO frequency */ /* start off by reading the current VFO frequency */
if ((retval = icom_get_freq(rig, RIG_VFO_CURR, &origfreq)) != RIG_OK) return retval; if ((retval = icom_get_freq(rig, RIG_VFO_CURR, &origfreq)) != RIG_OK) { return retval; }
if (RIG_VFO_A == vfo || RIG_VFO_B == vfo) {
if (RIG_VFO_A == vfo || RIG_VFO_B == vfo)
{
/* switch to desired VFO and read its frequency */ /* switch to desired VFO and read its frequency */
if ((retval = icom_set_vfo (rig, vfo)) != RIG_OK) return retval; if ((retval = icom_set_vfo(rig, vfo)) != RIG_OK) { return retval; }
if ((retval = icom_get_freq(rig, vfo, freq)) != RIG_OK) return retval;
if (*freq != origfreq) { if ((retval = icom_get_freq(rig, vfo, freq)) != RIG_OK) { return retval; }
if (*freq != origfreq)
{
/* swap VFOs back as original was the other one */ /* swap VFOs back as original was the other one */
icom_set_vfo (rig, RIG_VFO_A == vfo ? RIG_VFO_B : RIG_VFO_A); icom_set_vfo(rig, RIG_VFO_A == vfo ? RIG_VFO_B : RIG_VFO_A);
} }
} }
else if (RIG_VFO_MAIN == vfo || RIG_VFO_SUB == vfo) { else if (RIG_VFO_MAIN == vfo || RIG_VFO_SUB == vfo)
{
/* switch to the desired of MAIN and SUB and read its frequency */ /* switch to the desired of MAIN and SUB and read its frequency */
if ((retval = icom_set_vfo (rig, vfo)) != RIG_OK) return retval; if ((retval = icom_set_vfo(rig, vfo)) != RIG_OK) { return retval; }
if ((retval = icom_get_freq(rig, vfo, freq)) != RIG_OK) return retval;
if (*freq != origfreq) { if ((retval = icom_get_freq(rig, vfo, freq)) != RIG_OK) { return retval; }
if (*freq != origfreq)
{
/* started on a different so switch back MAIN or SUB */ /* started on a different so switch back MAIN or SUB */
icom_set_vfo (rig, RIG_VFO_MAIN == vfo ? RIG_VFO_SUB : RIG_VFO_MAIN); icom_set_vfo(rig, RIG_VFO_MAIN == vfo ? RIG_VFO_SUB : RIG_VFO_MAIN);
} }
} }
else if (RIG_VFO_CURR == vfo) { else if (RIG_VFO_CURR == vfo)
{
*freq = origfreq; *freq = origfreq;
} }
else retval = -RIG_EVFO; else { retval = -RIG_EVFO; }
return retval; return retval;
} }
@ -271,7 +317,9 @@ static int ic910_r2i_mode(RIG *rig, rmode_t mode, pbwidth_t width,
err = rig2icom_mode(rig, mode, width, md, pd); err = rig2icom_mode(rig, mode, width, md, pd);
if (*pd == PD_NARROW_3) if (*pd == PD_NARROW_3)
{
*pd = PD_NARROW_2; *pd = PD_NARROW_2;
}
return err; return err;
} }
@ -321,21 +369,27 @@ static int ic910_r2i_mode(RIG *rig, rmode_t mode, pbwidth_t width,
#define IC910_STR_CAL UNKNOWN_IC_STR_CAL /* FIXME */ #define IC910_STR_CAL UNKNOWN_IC_STR_CAL /* FIXME */
static const struct icom_priv_caps ic910_priv_caps = { static const struct icom_priv_caps ic910_priv_caps =
{
0x60, /* default address */ 0x60, /* default address */
0, /* 731 mode */ 0, /* 731 mode */
0, /* no XCHG */ 1, /* no XCHG to avoid display flicker */
ic910_ts_sc_list, ic910_ts_sc_list,
.r2i_mode = ic910_r2i_mode .r2i_mode = ic910_r2i_mode
}; };
int ic910_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) int ic910_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
{ {
switch (func) { switch (func)
{
case RIG_FUNC_SCOPE: case RIG_FUNC_SCOPE:
return icom_set_raw(rig, C_CTL_MEM, S_MEM_BANDSCOPE, 0, NULL, 1, status ? 1 : 0); return icom_set_raw(rig, C_CTL_MEM, S_MEM_BANDSCOPE, 0, NULL, 1,
status ? 1 : 0);
case RIG_FUNC_SATMODE: case RIG_FUNC_SATMODE:
return icom_set_raw(rig, C_CTL_MEM, S_MEM_SATMODE, 0, NULL, 1, status ? 1 : 0); return icom_set_raw(rig, C_CTL_MEM, S_MEM_SATMODE910, 0, NULL, 1,
status ? 1 : 0);
default: default:
return icom_set_func(rig, vfo, func, status); return icom_set_func(rig, vfo, func, status);
} }
@ -343,11 +397,14 @@ int ic910_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
int ic910_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) int ic910_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
{ {
switch (func) { switch (func)
{
case RIG_FUNC_SCOPE: case RIG_FUNC_SCOPE:
return icom_get_raw(rig, C_CTL_MEM, S_MEM_BANDSCOPE, 0, NULL, status); return icom_get_raw(rig, C_CTL_MEM, S_MEM_BANDSCOPE, 0, NULL, status);
case RIG_FUNC_SATMODE: case RIG_FUNC_SATMODE:
return icom_get_raw(rig, C_CTL_MEM, S_MEM_SATMODE, 0, NULL, status); return icom_get_raw(rig, C_CTL_MEM, S_MEM_SATMODE910, 0, NULL, status);
default: default:
return icom_get_func(rig, vfo, func, status); return icom_get_func(rig, vfo, func, status);
} }
@ -357,9 +414,12 @@ int ic910_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{ {
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
switch (level) { switch (level)
{
case RIG_LEVEL_VOXDELAY: case RIG_LEVEL_VOXDELAY:
return icom_set_level_raw(rig, level, C_CTL_MEM, S_MEM_VOXDELAY, 0, NULL, 1, val); return icom_set_level_raw(rig, level, C_CTL_MEM, S_MEM_VOXDELAY, 0, NULL, 1,
val);
default: default:
return icom_set_level(rig, vfo, level, val); return icom_set_level(rig, vfo, level, val);
} }
@ -369,23 +429,26 @@ int ic910_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
{ {
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
switch (level) { switch (level)
{
case RIG_LEVEL_VOXDELAY: case RIG_LEVEL_VOXDELAY:
return icom_get_level_raw(rig, level, C_CTL_MEM, S_MEM_VOXDELAY, 0, NULL, val); return icom_get_level_raw(rig, level, C_CTL_MEM, S_MEM_VOXDELAY, 0, NULL, val);
default: default:
return icom_get_level(rig, vfo, level, val); return icom_get_level(rig, vfo, level, val);
} }
} }
const struct rig_caps ic910_caps = { const struct rig_caps ic910_caps =
{
.rig_model = RIG_MODEL_IC910, .rig_model = RIG_MODEL_IC910,
.model_name = "IC-910", .model_name = "IC-910",
.mfg_name = "Icom", .mfg_name = "Icom",
.version = BACKEND_VER ".1", .version = BACKEND_VER ".2",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_BETA, .status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER, .rig_type = RIG_TYPE_TRANSCEIVER,
.ptt_type = RIG_PTT_NONE, .ptt_type = RIG_PTT_RIG,
.dcd_type = RIG_DCD_RIG, .dcd_type = RIG_DCD_RIG,
.port_type = RIG_PORT_SERIAL, .port_type = RIG_PORT_SERIAL,
.serial_rate_min = 300, .serial_rate_min = 300,
@ -409,7 +472,8 @@ const struct rig_caps ic910_caps = {
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } }, [LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },
}, },
.parm_gran = {}, .parm_gran = {},
.ctcss_list = NULL, .ctcss_list = common_ctcss_list,
.dcs_list = NULL, .dcs_list = NULL,
.preamp = { 20, RIG_DBLST_END, }, .preamp = { 20, RIG_DBLST_END, },
.attenuator = { 20, RIG_DBLST_END, }, .attenuator = { 20, RIG_DBLST_END, },
@ -500,24 +564,34 @@ const struct rig_caps ic910_caps = {
.set_mode = icom_set_mode, .set_mode = icom_set_mode,
#endif #endif
.set_vfo = icom_set_vfo, .set_ptt = icom_set_ptt,
.get_ts = icom_get_ts, .get_ptt = icom_get_ptt,
.set_ts = icom_set_ts, .set_vfo = icom_set_vfo,
.get_func = ic910_get_func, .get_ts = icom_get_ts,
.set_func = ic910_set_func, .set_ts = icom_set_ts,
.get_level = ic910_get_level, .get_func = ic910_get_func,
.set_level = ic910_set_level, .set_func = ic910_set_func,
.get_level = ic910_get_level,
.set_level = ic910_set_level,
.set_mem = icom_set_mem,
.vfo_op = icom_vfo_op,
.scan = icom_scan,
.get_dcd = icom_get_dcd,
.decode_event = icom_decode_event,
.set_split_vfo = icom_set_split_vfo,
.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_freq_mode = icom_set_split_freq_mode,
.get_split_freq_mode = icom_get_split_freq_mode,
.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_rptr_shift = icom_set_rptr_shift,
.set_rptr_offs = icom_set_rptr_offs,
.get_rptr_offs = icom_get_rptr_offs,
.set_mem = icom_set_mem,
.vfo_op = icom_vfo_op,
.scan = icom_scan,
.get_dcd = icom_get_dcd,
.decode_event = icom_decode_event,
.set_split_vfo = icom_set_split_vfo,
.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_freq_mode = icom_set_split_freq_mode,
.get_split_freq_mode = icom_get_split_freq_mode,
}; };

Wyświetl plik

@ -94,180 +94,189 @@
/* /*
*/ */
static const struct icom_priv_caps ic9100_priv_caps = { static const struct icom_priv_caps ic9100_priv_caps =
{
0x7c, /* default address */ 0x7c, /* default address */
0, /* 731 mode */ 0, /* 731 mode */
0, /* no XCHG */ 1, /* no XCHG to avoid display flicker */
ic910_ts_sc_list, /* FIXME */ ic910_ts_sc_list, /* FIXME */
}; };
const struct rig_caps ic9100_caps = { const struct rig_caps ic9100_caps =
.rig_model = RIG_MODEL_IC9100, {
.model_name = "IC-9100", .rig_model = RIG_MODEL_IC9100,
.mfg_name = "Icom", .model_name = "IC-9100",
.version = BACKEND_VER, .mfg_name = "Icom",
.copyright = "LGPL", .version = BACKEND_VER".2",
.status = RIG_STATUS_UNTESTED, .copyright = "LGPL",
.rig_type = RIG_TYPE_TRANSCEIVER, .status = RIG_STATUS_STABLE,
.ptt_type = RIG_PTT_RIG, .rig_type = RIG_TYPE_TRANSCEIVER,
.dcd_type = RIG_DCD_RIG, .ptt_type = RIG_PTT_RIG,
.port_type = RIG_PORT_SERIAL, .dcd_type = RIG_DCD_RIG,
.serial_rate_min = 300, .port_type = RIG_PORT_SERIAL,
.serial_rate_max = 19200, .serial_rate_min = 300,
.serial_data_bits = 8, .serial_rate_max = 19200,
.serial_stop_bits = 1, .serial_data_bits = 8,
.serial_parity = RIG_PARITY_NONE, .serial_stop_bits = 1,
.serial_handshake = RIG_HANDSHAKE_NONE, .serial_parity = RIG_PARITY_NONE,
.write_delay = 0, .serial_handshake = RIG_HANDSHAKE_NONE,
.post_write_delay = 0, .write_delay = 0,
.timeout = 1000, .post_write_delay = 0,
.retry = 3, .timeout = 1000,
.has_get_func = IC9100_FUNC_ALL, .retry = 3,
.has_set_func = IC9100_FUNC_ALL | RIG_FUNC_RESUME, .has_get_func = IC9100_FUNC_ALL,
.has_get_level = IC9100_LEVEL_ALL | RIG_LEVEL_RAWSTR| RIG_LEVEL_SWR, .has_set_func = IC9100_FUNC_ALL | RIG_FUNC_RESUME,
.has_set_level = IC9100_LEVEL_ALL, .has_get_level = IC9100_LEVEL_ALL | RIG_LEVEL_RAWSTR | RIG_LEVEL_SWR,
.has_get_parm = IC9100_PARM_ALL, .has_set_level = IC9100_LEVEL_ALL,
.has_set_parm = IC9100_PARM_ALL, .has_get_parm = IC9100_PARM_ALL,
.level_gran = { .has_set_parm = IC9100_PARM_ALL,
.level_gran = {
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } }, [LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } }, [LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },
}, },
.parm_gran = {}, .parm_gran = {},
.ctcss_list = common_ctcss_list, .ctcss_list = common_ctcss_list,
.dcs_list = common_dcs_list, .dcs_list = common_dcs_list,
.preamp = {20, RIG_DBLST_END, }, .preamp = {20, RIG_DBLST_END, },
.attenuator = {20, RIG_DBLST_END, }, .attenuator = {20, RIG_DBLST_END, },
.max_rit = kHz(9.999), .max_rit = kHz(9.999),
.max_xit = kHz(9.999), .max_xit = kHz(9.999),
.max_ifshift = Hz(0), .max_ifshift = Hz(0),
.targetable_vfo = 0, .targetable_vfo = 0,
.vfo_ops = IC9100_VFO_OPS, .vfo_ops = IC9100_VFO_OPS,
.scan_ops = IC9100_SCAN_OPS, .scan_ops = IC9100_SCAN_OPS,
.transceive = RIG_TRN_RIG, .transceive = RIG_TRN_RIG,
.bank_qty = 0, .bank_qty = 0,
.chan_desc_sz = 9, /* TODO */ .chan_desc_sz = 9, /* TODO */
.chan_list = { /* TBC */ .chan_list = { /* TBC */
{ 1, 396, RIG_MTYPE_MEM }, { 1, 396, RIG_MTYPE_MEM },
{ 397, 400, RIG_MTYPE_CALL }, { 397, 400, RIG_MTYPE_CALL },
{ 401, 424, RIG_MTYPE_EDGE }, { 401, 424, RIG_MTYPE_EDGE },
RIG_CHAN_END, }, RIG_CHAN_END,
},
.rx_range_list1 = { /* Europe */ .rx_range_list1 = { /* Europe */
{kHz(30),MHz(60),IC9100_MODES,-1,-1,IC9100_VFO_ALL,IC9100_HF_ANTS}, {kHz(30), MHz(60), IC9100_MODES, -1, -1, IC9100_VFO_ALL, IC9100_HF_ANTS},
{kHz(136),MHz(174),IC9100_MODES,-1,-1,IC9100_VFO_ALL,RIG_ANT_3}, {kHz(136), MHz(174), IC9100_MODES, -1, -1, IC9100_VFO_ALL, RIG_ANT_3},
{MHz(420),MHz(480),IC9100_MODES,-1,-1,IC9100_VFO_ALL,RIG_ANT_4}, {MHz(420), MHz(480), IC9100_MODES, -1, -1, IC9100_VFO_ALL, RIG_ANT_4},
{MHz(1240),MHz(1320),IC9100_MODES,-1,-1,IC9100_VFO_ALL,RIG_ANT_5}, {MHz(1240), MHz(1320), IC9100_MODES, -1, -1, IC9100_VFO_ALL, RIG_ANT_5},
RIG_FRNG_END, }, RIG_FRNG_END,
.tx_range_list1 = { },
FRQ_RNG_HF(1,IC9100_OTHER_TX_MODES, W(2),W(100),IC9100_VFO_ALL,IC9100_HF_ANTS), .tx_range_list1 = {
FRQ_RNG_HF(1,RIG_MODE_AM, W(2),W(25),IC9100_VFO_ALL,IC9100_HF_ANTS), /* only HF */ FRQ_RNG_HF(1, IC9100_OTHER_TX_MODES, W(2), W(100), IC9100_VFO_ALL, IC9100_HF_ANTS),
FRQ_RNG_6m(1,IC9100_OTHER_TX_MODES, W(2),W(100),IC9100_VFO_ALL,IC9100_HF_ANTS), FRQ_RNG_HF(1, RIG_MODE_AM, W(2), W(25), IC9100_VFO_ALL, IC9100_HF_ANTS), /* only HF */
FRQ_RNG_2m(1,IC9100_OTHER_TX_MODES, W(2),W(100),IC9100_VFO_ALL,RIG_ANT_3), FRQ_RNG_6m(1, IC9100_OTHER_TX_MODES, W(2), W(100), IC9100_VFO_ALL, IC9100_HF_ANTS),
FRQ_RNG_70cm(1,IC9100_OTHER_TX_MODES, W(2),W(75),IC9100_VFO_ALL,RIG_ANT_4), FRQ_RNG_2m(1, IC9100_OTHER_TX_MODES, W(2), W(100), IC9100_VFO_ALL, RIG_ANT_3),
FRQ_RNG_70cm(1, IC9100_OTHER_TX_MODES, W(2), W(75), IC9100_VFO_ALL, RIG_ANT_4),
/* option */ /* option */
FRQ_RNG_23cm_REGION1(IC9100_OTHER_TX_MODES, W(1),W(10),IC9100_VFO_ALL,RIG_ANT_5), FRQ_RNG_23cm_REGION1(IC9100_OTHER_TX_MODES, W(1), W(10), IC9100_VFO_ALL, RIG_ANT_5),
RIG_FRNG_END, }, RIG_FRNG_END,
},
.rx_range_list2 = { /* USA */ .rx_range_list2 = { /* USA */
{kHz(30),MHz(60),IC9100_MODES,-1,-1,IC9100_VFO_ALL,IC9100_HF_ANTS}, {kHz(30), MHz(60), IC9100_MODES, -1, -1, IC9100_VFO_ALL, IC9100_HF_ANTS},
{kHz(136),MHz(174),IC9100_MODES,-1,-1,IC9100_VFO_ALL,RIG_ANT_3}, {kHz(136), MHz(174), IC9100_MODES, -1, -1, IC9100_VFO_ALL, RIG_ANT_3},
{MHz(420),MHz(480),IC9100_MODES,-1,-1,IC9100_VFO_ALL,RIG_ANT_4}, {MHz(420), MHz(480), IC9100_MODES, -1, -1, IC9100_VFO_ALL, RIG_ANT_4},
{MHz(1240),MHz(1320),IC9100_MODES,-1,-1,IC9100_VFO_ALL,RIG_ANT_5}, {MHz(1240), MHz(1320), IC9100_MODES, -1, -1, IC9100_VFO_ALL, RIG_ANT_5},
RIG_FRNG_END, }, RIG_FRNG_END,
.tx_range_list2 = { },
FRQ_RNG_HF(2,IC9100_OTHER_TX_MODES, W(2),W(100),IC9100_VFO_ALL,IC9100_HF_ANTS), .tx_range_list2 = {
FRQ_RNG_HF(2,RIG_MODE_AM, W(2),W(25),IC9100_VFO_ALL,IC9100_HF_ANTS), /* only HF */ FRQ_RNG_HF(2, IC9100_OTHER_TX_MODES, W(2), W(100), IC9100_VFO_ALL, IC9100_HF_ANTS),
FRQ_RNG_HF(2, RIG_MODE_AM, W(2), W(25), IC9100_VFO_ALL, IC9100_HF_ANTS), /* only HF */
/* USA only, TBC: end of range and modes */ /* USA only, TBC: end of range and modes */
{MHz(5.255),MHz(5.405),IC9100_OTHER_TX_MODES,W(2),W(100),IC9100_VFO_ALL,IC9100_HF_ANTS}, /* USA only */ {MHz(5.255), MHz(5.405), IC9100_OTHER_TX_MODES, W(2), W(100), IC9100_VFO_ALL, IC9100_HF_ANTS}, /* USA only */
{MHz(5.255),MHz(5.405),RIG_MODE_AM,W(2),W(100),IC9100_VFO_ALL,IC9100_HF_ANTS}, /* USA only */ {MHz(5.255), MHz(5.405), RIG_MODE_AM, W(2), W(100), IC9100_VFO_ALL, IC9100_HF_ANTS}, /* USA only */
FRQ_RNG_6m(2,IC9100_OTHER_TX_MODES, W(2),W(100),IC9100_VFO_ALL,IC9100_HF_ANTS), FRQ_RNG_6m(2, IC9100_OTHER_TX_MODES, W(2), W(100), IC9100_VFO_ALL, IC9100_HF_ANTS),
FRQ_RNG_2m(2,IC9100_OTHER_TX_MODES, W(2),W(100),IC9100_VFO_ALL,RIG_ANT_3), FRQ_RNG_2m(2, IC9100_OTHER_TX_MODES, W(2), W(100), IC9100_VFO_ALL, RIG_ANT_3),
FRQ_RNG_70cm(2,IC9100_OTHER_TX_MODES, W(2),W(75),IC9100_VFO_ALL,RIG_ANT_4), FRQ_RNG_70cm(2, IC9100_OTHER_TX_MODES, W(2), W(75), IC9100_VFO_ALL, RIG_ANT_4),
/* option */ /* option */
FRQ_RNG_23cm_REGION2(IC9100_OTHER_TX_MODES, W(1),W(10),IC9100_VFO_ALL,RIG_ANT_5), FRQ_RNG_23cm_REGION2(IC9100_OTHER_TX_MODES, W(1), W(10), IC9100_VFO_ALL, RIG_ANT_5),
RIG_FRNG_END, }, RIG_FRNG_END,
},
.tuning_steps = { .tuning_steps = {
{RIG_MODE_SSB|RIG_MODE_CW,1}, {RIG_MODE_SSB | RIG_MODE_CW, 1},
{RIG_MODE_SSB|RIG_MODE_CW,10}, {RIG_MODE_SSB | RIG_MODE_CW, 10},
{RIG_MODE_SSB|RIG_MODE_CW,50}, {RIG_MODE_SSB | RIG_MODE_CW, 50},
{RIG_MODE_SSB|RIG_MODE_CW,100}, {RIG_MODE_SSB | RIG_MODE_CW, 100},
{RIG_MODE_FM,kHz(0.1)}, {RIG_MODE_FM, kHz(0.1)},
{RIG_MODE_FM,kHz(5)}, {RIG_MODE_FM, kHz(5)},
{RIG_MODE_FM,kHz(6.25)}, {RIG_MODE_FM, kHz(6.25)},
{RIG_MODE_FM,kHz(10)}, {RIG_MODE_FM, kHz(10)},
{RIG_MODE_FM,kHz(12.5)}, {RIG_MODE_FM, kHz(12.5)},
{RIG_MODE_FM,kHz(20)}, {RIG_MODE_FM, kHz(20)},
{RIG_MODE_FM,kHz(25)}, {RIG_MODE_FM, kHz(25)},
{RIG_MODE_FM,kHz(100)}, {RIG_MODE_FM, kHz(100)},
RIG_TS_END, }, RIG_TS_END,
},
/* mode/filter list, remember: order matters! */ /* mode/filter list, remember: order matters! */
.filters = { .filters = {
{RIG_MODE_CW | RIG_MODE_SSB | RIG_MODE_RTTY, kHz(2.4)}, /* builtin */ {RIG_MODE_CW | RIG_MODE_SSB | RIG_MODE_RTTY, kHz(2.4)}, /* builtin */
{RIG_MODE_CW | RIG_MODE_RTTY, Hz(500)}, {RIG_MODE_CW | RIG_MODE_RTTY, Hz(500)},
{RIG_MODE_FM, kHz(15)}, /* builtin */ {RIG_MODE_FM, kHz(15)}, /* builtin */
{RIG_MODE_FM|RIG_MODE_AM, kHz(6)}, /* builtin */ {RIG_MODE_FM | RIG_MODE_AM, kHz(6)}, /* builtin */
RIG_FLT_END, }, RIG_FLT_END,
.str_cal = IC9100_STR_CAL, },
.str_cal = IC9100_STR_CAL,
.priv = (void*)&ic9100_priv_caps, .priv = (void *)& ic9100_priv_caps,
.rig_init = icom_init, .rig_init = icom_init,
.rig_cleanup = icom_cleanup, .rig_cleanup = icom_cleanup,
.rig_open = NULL, .rig_open = NULL,
.rig_close = NULL, .rig_close = NULL,
.cfgparams = icom_cfg_params, .cfgparams = icom_cfg_params,
.set_conf = icom_set_conf, .set_conf = icom_set_conf,
.get_conf = icom_get_conf, .get_conf = icom_get_conf,
.get_freq = icom_get_freq, .get_freq = icom_get_freq,
.set_freq = icom_set_freq, .set_freq = icom_set_freq,
.get_mode = icom_get_mode_with_data, .get_mode = icom_get_mode_with_data,
.set_mode = icom_set_mode_with_data, .set_mode = icom_set_mode_with_data,
.get_vfo = NULL, .get_vfo = NULL,
.set_vfo = icom_set_vfo, .set_vfo = icom_set_vfo,
.set_ant = icom_set_ant, .set_ant = icom_set_ant,
.get_ant = icom_get_ant, .get_ant = icom_get_ant,
.get_ts = icom_get_ts, .get_ts = icom_get_ts,
.set_ts = icom_set_ts, .set_ts = icom_set_ts,
.get_func = icom_get_func, .get_func = icom_get_func,
.set_func = icom_set_func, .set_func = icom_set_func,
.get_level = icom_get_level, .get_level = icom_get_level,
.set_level = icom_set_level, .set_level = icom_set_level,
.set_ptt = icom_set_ptt, .set_ptt = icom_set_ptt,
.get_ptt = icom_get_ptt, .get_ptt = icom_get_ptt,
.set_rit = icom_set_rit, .set_rit = icom_set_rit,
.set_rptr_shift = icom_set_rptr_shift, .set_rptr_shift = icom_set_rptr_shift,
.get_rptr_shift = icom_get_rptr_shift, .get_rptr_shift = icom_get_rptr_shift,
.set_rptr_offs = icom_set_rptr_offs, .set_rptr_offs = icom_set_rptr_offs,
.get_rptr_offs = icom_get_rptr_offs, .get_rptr_offs = icom_get_rptr_offs,
.set_ctcss_tone = icom_set_ctcss_tone, .set_ctcss_tone = icom_set_ctcss_tone,
.get_ctcss_tone = icom_get_ctcss_tone, .get_ctcss_tone = icom_get_ctcss_tone,
.set_ctcss_sql = icom_set_ctcss_sql, .set_ctcss_sql = icom_set_ctcss_sql,
.get_ctcss_sql = icom_get_ctcss_sql, .get_ctcss_sql = icom_get_ctcss_sql,
.set_dcs_sql = icom_set_dcs_code, .set_dcs_sql = icom_set_dcs_code,
.get_dcs_sql = icom_get_dcs_code, .get_dcs_sql = icom_get_dcs_code,
.set_parm = icom_set_parm, .set_parm = icom_set_parm,
.get_parm = icom_get_parm, .get_parm = icom_get_parm,
.set_mem = icom_set_mem, .set_mem = icom_set_mem,
.vfo_op = icom_vfo_op, .vfo_op = icom_vfo_op,
.scan = icom_scan, .scan = icom_scan,
.get_dcd = icom_get_dcd, .get_dcd = icom_get_dcd,
.decode_event = icom_decode_event, .decode_event = icom_decode_event,
.set_split_vfo = icom_set_split_vfo, .set_split_vfo = icom_set_split_vfo,
.get_split_vfo = icom_get_split_vfo, .get_split_vfo = icom_get_split_vfo,
.set_split_freq = icom_set_split_freq, .set_split_freq = icom_set_split_freq,
.get_split_freq = icom_get_split_freq, .get_split_freq = icom_get_split_freq,
.set_split_mode = icom_set_split_mode, .set_split_mode = icom_set_split_mode,
.get_split_mode = icom_get_split_mode, .get_split_mode = icom_get_split_mode,
}; };
@ -277,11 +286,13 @@ int ic9100_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
switch (level) { switch (level)
{
case RIG_LEVEL_VOXDELAY: case RIG_LEVEL_VOXDELAY:
cmdbuf[0] = 0x01; cmdbuf[0] = 0x01;
cmdbuf[1] = 0x27; cmdbuf[1] = 0x27;
return icom_set_level_raw(rig, level, C_CTL_MEM, 0x05, 2, cmdbuf, 1, val); return icom_set_level_raw(rig, level, C_CTL_MEM, 0x05, 2, cmdbuf, 1, val);
default: default:
return icom_set_level(rig, vfo, level, val); return icom_set_level(rig, vfo, level, val);
} }
@ -293,11 +304,13 @@ int ic9100_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
switch (level) { switch (level)
{
case RIG_LEVEL_VOXDELAY: case RIG_LEVEL_VOXDELAY:
cmdbuf[0] = 0x01; cmdbuf[0] = 0x01;
cmdbuf[1] = 0x27; cmdbuf[1] = 0x27;
return icom_get_level_raw(rig, level, C_CTL_MEM, 0x05, 2, cmdbuf, val); return icom_get_level_raw(rig, level, C_CTL_MEM, 0x05, 2, cmdbuf, val);
default: default:
return icom_get_level(rig, vfo, level, val); return icom_get_level(rig, vfo, level, val);
} }