More fixes to many Icom HF rig backends: tuner function, VFO tune op, rig-specific AGC levels, basic set of filters where missing, get/set split, get/set powerstat, make get/set RIT/XIT commands shared functions, add new level for Noise Blanker level, fix RIG_MODE_PKTAM and add missing PKT modes for many rigs, add dual-watch function. Add RIT/XIT functions for TS-480 and TS-890.

pull/112/head
Mikael Nousiainen 2019-06-01 09:51:17 +03:00
rodzic 3dbbe02b78
commit 45a8c5c575
18 zmienionych plików z 1014 dodań i 878 usunięć

Wyświetl plik

@ -46,7 +46,7 @@
#define IC7000_FUNCS (RIG_FUNC_FAGC|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_VSC|RIG_FUNC_LOCK|RIG_FUNC_ARO)
#define IC7000_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_MONITOR_GAIN)
#define IC7000_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB)
#define IC7000_VFOS (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MEM)
#define IC7000_PARMS (RIG_PARM_ANN|RIG_PARM_BACKLIGHT|RIG_PARM_APO|RIG_PARM_TIME|RIG_PARM_BEEP)
@ -129,23 +129,26 @@
.levels = RIG_LEVEL_SET(IC7000_LEVELS), \
}
int ic7000_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op);
int ic7000_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val);
int ic7000_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
/*
* IC-7000 rig capabilities.
*
* TODO: complete command set (esp. the $1A bunch!) and testing..
*/
static const struct icom_priv_caps IC7000_priv_caps = {
0x70, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic7000_ts_sc_list
0x70, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic7000_ts_sc_list,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
const struct rig_caps ic7000_caps = {
.rig_model = RIG_MODEL_IC7000,
.model_name = "IC-7000",
@ -293,7 +296,7 @@ const struct rig_caps ic7000_caps = {
.get_parm = NULL,
.set_mem = icom_set_mem,
.set_bank = icom_set_bank,
.vfo_op = ic7000_vfo_op,
.vfo_op = icom_vfo_op,
.scan = icom_scan,
.set_ptt = icom_set_ptt,
.get_ptt = icom_get_ptt,
@ -319,39 +322,6 @@ const struct rig_caps ic7000_caps = {
};
int ic7000_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op)
{
unsigned char mvbuf[MAXFRAMELEN];
unsigned char ackbuf[MAXFRAMELEN];
int mv_len=0, ack_len=sizeof(ackbuf), retval;
int mv_cn, mv_sc;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
switch(op) {
case RIG_OP_TUNE:
mv_cn = C_CTL_PTT;
mv_sc = S_ANT_TUN;
mvbuf[0] = 2;
mv_len = 1;
break;
default:
return icom_vfo_op(rig, vfo, op);
}
retval = icom_transaction (rig, mv_cn, mv_sc, mvbuf, mv_len, ackbuf, &ack_len);
if (retval != RIG_OK)
return retval;
if (ack_len != 1 || ackbuf[0] != ACK) {
if (op != RIG_OP_XCHG)
rig_debug(RIG_DEBUG_ERR,"icom_vfo_op: ack NG (%#.2x), len=%d\n", ackbuf[0], ack_len);
return -RIG_ERJCTED;
}
return RIG_OK;
}
int ic7000_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{
unsigned char cmdbuf[MAXFRAMELEN];

Wyświetl plik

@ -34,9 +34,10 @@
#define IC7100_MODES (RIG_MODE_SSB|RIG_MODE_CW|RIG_MODE_CWR|\
RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_RTTY|RIG_MODE_RTTYR)
RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_RTTY|RIG_MODE_RTTYR|\
RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTAM|RIG_MODE_PKTFM)
#define IC7100_OTHER_TX_MODES ((IC7100_MODES) & ~RIG_MODE_AM)
#define IC7100_OTHER_TX_MODES ((IC7100_MODES) & ~(RIG_MODE_AM|RIG_MODE_PKTAM))
#define IC7100_VFO_ALL (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MAIN|RIG_VFO_SUB|RIG_VFO_MEM)
@ -63,7 +64,8 @@
RIG_FUNC_VSC| \
RIG_FUNC_MN| \
RIG_FUNC_LOCK| \
RIG_FUNC_SCOPE)
RIG_FUNC_SCOPE| \
RIG_FUNC_TUNER)
#define IC7100_LEVEL_ALL (RIG_LEVEL_AF| \
RIG_LEVEL_RF| \
@ -93,7 +95,8 @@
RIG_LEVEL_COMP_METER| \
RIG_LEVEL_VD_METER| \
RIG_LEVEL_ID_METER| \
RIG_LEVEL_MONITOR_GAIN)
RIG_LEVEL_MONITOR_GAIN| \
RIG_LEVEL_NB)
#define IC7100_PARM_ALL (RIG_PARM_ANN|RIG_PARM_BACKLIGHT)
@ -155,13 +158,21 @@ int ic7100_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val);
int ic7100_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
/*
* IC-7100 rig capabilities.
*/
static const struct icom_priv_caps ic7100_priv_caps = {
0x88, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic7100_ts_sc_list, /* FIXME */
.civ_version = 1
.civ_version = 1,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
const struct rig_caps ic7100_caps = {
@ -267,10 +278,19 @@ const struct rig_caps ic7100_caps = {
RIG_TS_END, },
/* mode/filter list, remember: order matters! */
.filters = {
{RIG_MODE_CW | RIG_MODE_SSB | RIG_MODE_RTTY, kHz(2.4)}, /* builtin */
{RIG_MODE_CW | RIG_MODE_RTTY, Hz(500)},
{RIG_MODE_FM, kHz(15)}, /* builtin */
{RIG_MODE_FM|RIG_MODE_AM, kHz(6)}, /* builtin */
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(2.4)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(1.8)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(3)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(10)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(15)},
{RIG_MODE_FM|RIG_MODE_PKTFM, 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|RIG_MODE_PKTAM, kHz(6)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(3)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(9)},
RIG_FLT_END, },
.str_cal = IC7100_STR_CAL,
.swr_cal = IC7100_SWR_CAL,
@ -332,11 +352,13 @@ const struct rig_caps ic7100_caps = {
.get_dcd = icom_get_dcd,
.decode_event = icom_decode_event,
.set_split_vfo = icom_set_split_vfo,
.get_split_vfo = icom_get_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_powerstat = icom_set_powerstat,
.get_powerstat = icom_get_powerstat,
.send_morse = icom_send_morse
};

Wyświetl plik

@ -50,9 +50,9 @@
#define IC7200_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR)
#define IC7200_AM_TX_MODES (RIG_MODE_AM)
#define IC7200_FUNCS (RIG_FUNC_FAGC|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_VSC|RIG_FUNC_LOCK|RIG_FUNC_ARO)
#define IC7200_FUNCS (RIG_FUNC_FAGC|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_ARO|RIG_FUNC_TUNER)
#define IC7200_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER)
#define IC7200_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_NB)
#define IC7200_VFOS (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MEM)
#define IC7200_PARMS (RIG_PARM_ANN|RIG_PARM_BACKLIGHT|RIG_PARM_APO|RIG_PARM_TIME|RIG_PARM_BEEP)
@ -100,15 +100,20 @@ int ic7200_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
* TODO: complete command set (esp. the $1A bunch!) and testing..
*/
static const struct icom_priv_caps IC7200_priv_caps = {
0x76, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic7200_ts_sc_list,
.civ_version = 1 /* new version of some commands, e.g. ic7200/7300 */
0x76, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic7200_ts_sc_list,
.civ_version = 1, /* new version of some commands, e.g. ic7200/7300 */
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_OFF, .icom_level = 0 },
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_SLOW, .icom_level = 2 },
{ .level = -1, .icom_level = 0 },
},
};
const struct rig_caps ic7200_caps = {
.rig_model = RIG_MODEL_IC7200,
.model_name = "IC-7200",

Wyświetl plik

@ -47,7 +47,7 @@
#define IC7300_FUNCS (RIG_FUNC_FAGC|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_XIT|RIG_FUNC_SCOPE|RIG_FUNC_TUNER)
#define IC7300_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN)
#define IC7300_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB)
#define IC7300_VFOS (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MEM)
#define IC7300_PARMS (RIG_PARM_BACKLIGHT|RIG_PARM_TIME|RIG_PARM_BEEP)
@ -115,14 +115,12 @@
{ 241, 25.0f } \
} }
#define IC7300_AGC_OFF 0x00
#define IC7300_AGC_FAST 0x01
#define IC7300_AGC_MID 0x02
#define IC7300_AGC_SLOW 0x03
/*
* IC9700 items that differ from IC7300
*/
#define IC9700_FUNCS (RIG_FUNC_FAGC|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_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_RX_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)
@ -183,31 +181,38 @@
/*
* IC-7300 rig capabilities.
*
* TODO: complete command set (esp. the $1A bunch!) and testing..
*/
static const struct icom_priv_caps IC7300_priv_caps = {
0x94, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic7300_ts_sc_list,
.civ_version = 1 /* new version of some commands, e.g. ic7200/7300 */
0x94, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic7300_ts_sc_list,
.civ_version = 1, /* new version of some commands, e.g. ic7200/7300 */
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
static const struct icom_priv_caps IC9700_priv_caps = {
0xA2, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic7300_ts_sc_list,
.civ_version = 1, /* new version of some commands, e.g. ic7200/7300 */
.serial_USB_echo_check = 1 /* USB CI-V may not echo */
0xA2, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic7300_ts_sc_list,
.civ_version = 1, /* new version of some commands, e.g. ic7200/7300 */
.serial_USB_echo_check = 1, /* USB CI-V may not echo */
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
int ic7300_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *ts);
int ic7300_set_rit(RIG *rig, vfo_t vfo, shortfreq_t ts);
int ic7300_set_xit(RIG *rig, vfo_t vfo, shortfreq_t ts);
int ic7300_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status);
int ic7300_set_func(RIG *rig, vfo_t vfo, setting_t func, int status);
int ic7300_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val);
int ic7300_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
int ic9700_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val);
@ -302,9 +307,9 @@ const struct rig_caps ic7300_caps = {
/* 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_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(2.4)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(1.8)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(3)},
{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)},
@ -312,9 +317,9 @@ const struct rig_caps ic7300_caps = {
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(6)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(3)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(9)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(15)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(10)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(7)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(15)},
RIG_FLT_END,
},
@ -345,21 +350,18 @@ const struct rig_caps ic7300_caps = {
.set_ant = NULL,
.get_ant = NULL,
.set_rit = ic7300_set_rit,
.get_rit = ic7300_get_rit,
// the 7300 has only one register for both RIT and Delta TX
// you can turn one or both on -- but both end up just being in sync
// so we'll just reuse the rit settings
.get_xit = ic7300_get_rit,
.set_xit = ic7300_set_xit,
.set_rit = icom_set_rit_new,
.get_rit = icom_get_rit_new,
.get_xit = icom_get_rit_new,
.set_xit = icom_set_xit_new,
.decode_event = icom_decode_event,
.set_level = ic7300_set_level,
.get_level = ic7300_get_level,
.set_ext_level = icom_set_ext_level,
.get_ext_level = icom_get_ext_level,
.set_func = ic7300_set_func,
.get_func = ic7300_get_func,
.set_func = icom_set_func,
.get_func = icom_get_func,
.set_parm = icom_set_parm,
.get_parm = icom_get_parm,
.set_mem = icom_set_mem,
@ -385,6 +387,7 @@ const struct rig_caps ic7300_caps = {
.set_split_vfo = icom_set_split_vfo,
.get_split_vfo = icom_get_split_vfo,
.set_powerstat = icom_set_powerstat,
.get_powerstat = icom_get_powerstat,
.power2mW = icom_power2mW,
.mW2power = icom_mW2power,
.send_morse = icom_send_morse
@ -412,8 +415,8 @@ const struct rig_caps ic9700_caps = {
.post_write_delay = 0,
.timeout = 1000,
.retry = 3,
.has_get_func = IC7300_FUNCS,
.has_set_func = IC7300_FUNCS,
.has_get_func = IC9700_FUNCS,
.has_set_func = IC9700_FUNCS,
.has_get_level = IC7300_LEVELS,
.has_set_level = RIG_LEVEL_SET(IC7300_LEVELS),
.has_get_parm = IC7300_PARMS,
@ -488,8 +491,8 @@ const struct rig_caps ic9700_caps = {
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(3)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(9)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(15)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(7)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(10)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(7)},
RIG_FLT_END,
},
@ -520,21 +523,16 @@ const struct rig_caps ic9700_caps = {
.set_ant = NULL,
.get_ant = NULL,
.set_rit = ic7300_set_rit,
.get_rit = ic7300_get_rit,
// the 7300 has only one register for both RIT and Delta TX
// you can turn one or both on -- but both end up just being in sync
// so we'll just reuse the rit settings
.get_xit = ic7300_get_rit,
.set_xit = ic7300_set_xit,
.set_rit = icom_set_rit_new,
.get_rit = icom_get_rit_new,
.decode_event = icom_decode_event,
.set_level = ic9700_set_level,
.get_level = ic9700_get_level,
.set_ext_level = icom_set_ext_level,
.get_ext_level = icom_get_ext_level,
.set_func = ic7300_set_func,
.get_func = ic7300_get_func,
.set_func = icom_set_func,
.get_func = icom_get_func,
.set_parm = icom_set_parm,
.get_parm = icom_get_parm,
.set_mem = icom_set_mem,
@ -560,155 +558,13 @@ const struct rig_caps ic9700_caps = {
.set_split_vfo = icom_set_split_vfo,
.get_split_vfo = icom_get_split_vfo,
.set_powerstat = icom_set_powerstat,
.get_powerstat = icom_get_powerstat,
.power2mW = icom_power2mW,
.mW2power = icom_mW2power,
.send_morse = icom_send_morse
};
int ic7300_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *ts)
{
unsigned char tsbuf[MAXFRAMELEN];
int ts_len, retval;
retval = icom_transaction (rig, 0x21, 0x00, NULL, 0, tsbuf, &ts_len);
if (retval != RIG_OK) {
return retval;
}
/*
* tsbuf nibbles should contain 10,1,1000,100 hz digits and 00=+, 01=- bit
*/
rig_debug(RIG_DEBUG_VERBOSE, "ts_len=%d\n", ts_len);
if (ts_len != 5) {
rig_debug(RIG_DEBUG_ERR, "%s: wrong frame len=%d\n", __func__, ts_len);
return -RIG_ERJCTED;
}
*ts = (shortfreq_t) from_bcd(tsbuf + 2, 4);
if (tsbuf[4] != 0) {
*ts *= -1;
}
return RIG_OK;
}
static int ic7300_set_it(RIG *rig, vfo_t vfo, shortfreq_t ts, int set_xit) {
unsigned char tsbuf[8];
unsigned char ackbuf[16];
int ack_len;
int retval;
rig_debug(RIG_DEBUG_VERBOSE, "%s: ts=%d\n", __func__, ts);
to_bcd(tsbuf, abs((int) ts), 4);
// set sign bit
tsbuf[2] = (ts < 0) ? 1 : 0;
retval = icom_transaction(rig, 0x21, 0x00, tsbuf, 3, ackbuf, &ack_len);
if (retval != RIG_OK) {
return retval;
}
if (ts == 0) { // turn off both rit/xit
retval = ic7300_set_func(rig, vfo, RIG_FUNC_XIT, 0);
if (retval != RIG_OK) {
return retval;
}
retval = ic7300_set_func(rig, vfo, RIG_FUNC_RIT, 0);
} else {
retval = ic7300_set_func(rig, vfo, set_xit ? RIG_FUNC_XIT : RIG_FUNC_RIT, 1);
}
return retval;
}
int ic7300_set_rit(RIG *rig, vfo_t vfo, shortfreq_t ts)
{
return ic7300_set_it(rig, vfo, ts, 0);
}
int ic7300_set_xit(RIG *rig, vfo_t vfo, shortfreq_t ts)
{
return ic7300_set_it(rig, vfo, ts, 1);
}
int ic7300_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
{
unsigned char ackbuf[16];
int ack_len;
int retval;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
if (!rig || !status)
return -RIG_EINVAL;
switch (func) {
case RIG_FUNC_RIT:
retval = icom_transaction(rig, 0x21, 0x01, NULL, 0, ackbuf, &ack_len);
if (retval != RIG_OK) return retval;
if (ack_len != 3) {
return RIG_BUSERROR;
}
*status = ackbuf[2];
break;
case RIG_FUNC_XIT:
retval = icom_transaction(rig, 0x21, 0x02, NULL, 0, ackbuf, &ack_len);
if (ack_len != 3) {
return RIG_BUSERROR;
}
*status = ackbuf[2];
break;
case RIG_FUNC_TUNER:
retval = icom_transaction(rig, 0x1C, 0x01, NULL, 0, ackbuf, &ack_len);
if (ack_len == 3) {
*status = ackbuf[2]; // 0x01 = enabled, 0x00 = disabled, 0x02 = tuning in progress
} else {
return RIG_BUSERROR;
}
break;
default:
return icom_get_func(rig, vfo, func, status);
}
return retval;
}
int ic7300_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
{
unsigned char ts_buf[4];
unsigned char ackbuf[8];
int ack_len;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
if (!rig)
return -RIG_EINVAL;
switch (func) {
case RIG_FUNC_RIT:
ts_buf[0] = status;
return icom_transaction(rig, 0x21, 0x01, ts_buf, 1, ackbuf, &ack_len);
case RIG_FUNC_XIT:
ts_buf[0] = status;
return icom_transaction(rig, 0x21, 0x02, ts_buf, 1, ackbuf, &ack_len);
case RIG_FUNC_TUNER:
if (status == 0 || status == 1 || status == 2) { // 0=off, 1 = on, 2 = begin tuning
ts_buf[0] = status;
return icom_transaction(rig, 0x1C, 0x01, ts_buf, 1, ackbuf, &ack_len);
} else {
return -1; // perhaps some other reply would be more informative
}
default:
return icom_set_func(rig, vfo, func, status);
}
}
int ic7300_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{
unsigned char cmdbuf[MAXFRAMELEN];
@ -716,29 +572,10 @@ int ic7300_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
switch (level) {
case RIG_LEVEL_AGC:
switch (val.i) {
case RIG_AGC_OFF:
val.i = IC7300_AGC_OFF;
break;
case RIG_AGC_SLOW:
val.i = IC7300_AGC_SLOW;
break;
case RIG_AGC_MEDIUM:
val.i = IC7300_AGC_MID;
break;
case RIG_AGC_FAST:
val.i = IC7300_AGC_FAST;
break;
default:
rig_debug(RIG_DEBUG_ERR, "Unsupported LEVEL_AGC %d", val.i);
return -RIG_EINVAL;
}
return icom_set_level_raw(rig, level, C_CTL_FUNC, S_FUNC_AGC, 0, NULL, 1, val);
case RIG_LEVEL_VOXDELAY:
cmdbuf[0] = 0x01;
cmdbuf[1] = 0x91;
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, S_MEM_PARM, 2, cmdbuf, 1, val);
default:
return icom_set_level(rig, vfo, level, val);
}
@ -747,40 +584,14 @@ int ic7300_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
int ic7300_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
{
unsigned char cmdbuf[MAXFRAMELEN];
value_t temp_val;
int retval;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
switch (level) {
case RIG_LEVEL_AGC:
retval = icom_get_level_raw(rig, level, C_CTL_FUNC, S_FUNC_AGC, 0, NULL, &temp_val);
if (retval != RIG_OK) {
return retval;
}
switch (temp_val.i) {
case IC7300_AGC_OFF:
val->i = RIG_AGC_OFF;
break;
case IC7300_AGC_SLOW:
val->i = RIG_AGC_SLOW;
break;
case IC7300_AGC_MID:
val->i = RIG_AGC_MEDIUM;
break;
case IC7300_AGC_FAST:
val->i = RIG_AGC_FAST;
break;
default:
rig_debug(RIG_DEBUG_ERR, "Unexpected Icom AGC value 0x%02x", temp_val.i);
return -RIG_EPROTO;
}
break;
case RIG_LEVEL_VOXDELAY:
cmdbuf[0] = 0x01;
cmdbuf[1] = 0x91;
return icom_get_level_raw(rig, level, C_CTL_MEM, 0x05, 2, cmdbuf, val);
return icom_get_level_raw(rig, level, C_CTL_MEM, S_MEM_PARM, 2, cmdbuf, val);
default:
return icom_get_level(rig, vfo, level, val);
}

Wyświetl plik

@ -41,7 +41,7 @@
#define IC7410_ALL_RX_MODES IC7410_OTHER_TX_MODES | IC7410_AM_TX_MODES
#define IC7410_1HZ_TS_MODES IC7410_ALL_RX_MODES
#define IC7410_FUNCS (RIG_FUNC_FAGC|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_VSC|RIG_FUNC_LOCK)
#define IC7410_FUNCS (RIG_FUNC_FAGC|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_VSC|RIG_FUNC_LOCK|RIG_FUNC_TUNER)
#define IC7410_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER)
@ -90,14 +90,20 @@ int ic7410_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
/*
* IC-7410 rig capabilities.
*
* TODO: complete command set (esp. the $1A bunch!) and testing..
*/
static const struct icom_priv_caps ic7410_priv_caps = {
0x80, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list
0x80, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_OFF, .icom_level = 0 },
{ .level = RIG_AGC_SLOW, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_FAST, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};

Wyświetl plik

@ -58,9 +58,9 @@
#define IC746_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_FM)
#define IC746_AM_TX_MODES (RIG_MODE_AM)
#define IC746_FUNC_ALL (RIG_FUNC_FAGC|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_RF|RIG_FUNC_ANF|RIG_FUNC_APF|RIG_FUNC_VSC|RIG_FUNC_RESUME|RIG_FUNC_ARO)
#define IC746_FUNC_ALL (RIG_FUNC_FAGC|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_RF|RIG_FUNC_ANF|RIG_FUNC_APF|RIG_FUNC_RESUME|RIG_FUNC_ARO)
#define IC746_LEVEL_ALL (RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR)
#define IC746_LEVEL_ALL (RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_APF)
#define IC746_GET_PARM (RIG_PARM_BACKLIGHT|RIG_PARM_BEEP)
#define IC746_SET_PARM (RIG_PARM_BACKLIGHT|RIG_PARM_BEEP|RIG_PARM_ANN)
@ -68,7 +68,7 @@
#define IC746_VFO_ALL (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MEM)
#define IC746_ANTS (RIG_ANT_1|RIG_ANT_2)
#define IC746_VFO_OPS (RIG_OP_CPY|RIG_OP_XCHG|RIG_OP_FROM_VFO|RIG_OP_TO_VFO|RIG_OP_MCL|RIG_OP_TUNE)
#define IC746_VFO_OPS (RIG_OP_CPY|RIG_OP_XCHG|RIG_OP_FROM_VFO|RIG_OP_TO_VFO|RIG_OP_MCL)
#define IC746_SCAN_OPS (RIG_SCAN_VFO|RIG_SCAN_MEM|RIG_SCAN_SLCT|RIG_SCAN_PROG|RIG_SCAN_DELTA)
@ -158,13 +158,20 @@ static int ic746pro_get_ext_parm(RIG *rig, token_t token, value_t *val);
/*
* ic746 rig capabilities.
* IC-746 rig capabilities.
*/
static const struct icom_priv_caps ic746_priv_caps = {
0x56, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list
0x56, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_OFF, .icom_level = 0 },
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_SLOW, .icom_level = 2 },
{ .level = -1, .icom_level = 0 },
},
};
const struct rig_caps ic746_caps = {
@ -365,13 +372,21 @@ static const struct confparams ic746pro_ext_parms[] = {
/*
* ic746pro rig capabilities.
* IC-746pro rig capabilities.
*/
static const struct icom_priv_caps ic746pro_priv_caps = {
0x66, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list
0x66, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_OFF, .icom_level = 0 },
{ .level = RIG_AGC_SLOW, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_FAST, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
const struct rig_caps ic746pro_caps = {
@ -395,8 +410,8 @@ const struct rig_caps ic746pro_caps = {
.post_write_delay = 0,
.timeout = 1000,
.retry = 3,
.has_get_func = IC746_FUNC_ALL,
.has_set_func = IC746_FUNC_ALL,
.has_get_func = IC746_FUNC_ALL|RIG_FUNC_TUNER|RIG_FUNC_VSC,
.has_set_func = IC746_FUNC_ALL|RIG_FUNC_TUNER|RIG_FUNC_VSC,
.has_get_level = IC746_LEVEL_ALL,
.has_set_level = RIG_LEVEL_SET(IC746_LEVEL_ALL),
.has_get_parm = IC746_GET_PARM,
@ -414,7 +429,7 @@ const struct rig_caps ic746pro_caps = {
.max_xit = Hz(0),
.max_ifshift = Hz(0),
.targetable_vfo = 0,
.vfo_ops = IC746_VFO_OPS,
.vfo_ops = IC746_VFO_OPS|RIG_OP_TUNE,
.scan_ops = IC746_SCAN_OPS,
.transceive = RIG_TRN_RIG,
.bank_qty = 0,

Wyświetl plik

@ -47,8 +47,9 @@
#define IC756_AM_TX_MODES (RIG_MODE_AM)
#define IC756PRO_FUNC_ALL (RIG_FUNC_FAGC|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_RF|RIG_FUNC_ANF)
#define IC756PRO_FUNC_SET (IC756PRO_FUNC_ALL|RIG_FUNC_DUAL_WATCH)
#define IC756PRO_LEVEL_ALL (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_COMP|RIG_LEVEL_BALANCE)
#define IC756PRO_LEVEL_ALL (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_COMP)
/* Note that RIG_LEVEL_VOXGAIN and RIG_LEVEL_ANTIVOX are incorrectly handled in icom.c for
* this model.
@ -81,6 +82,7 @@
{ 247 ,60 } \
} }
int ic756_set_func(RIG *rig, vfo_t vfo, setting_t func, int status);
int ic756pro2_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val);
int ic756pro2_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
@ -111,14 +113,21 @@ static int r2i_mode(RIG *rig, rmode_t mode, pbwidth_t width,
}
/*
* ic756 rig capabilities.
* IC-756 rig capabilities.
*/
static const struct icom_priv_caps ic756_priv_caps = {
0x50, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756_ts_sc_list,
.r2i_mode = r2i_mode
0x50, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756_ts_sc_list,
.r2i_mode = r2i_mode,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
const struct rig_caps ic756_caps = {
@ -232,7 +241,7 @@ const struct rig_caps ic756_caps = {
.decode_event = icom_decode_event,
.set_level = icom_set_level,
.get_level = icom_get_level,
.set_func = icom_set_func,
.set_func = ic756_set_func,
.get_func = icom_get_func,
.set_mem = icom_set_mem,
.vfo_op = icom_vfo_op,
@ -253,15 +262,22 @@ const struct rig_caps ic756_caps = {
/*
* ic756pro rig capabilities.
* TODO: check every parameter,
* add antenna capabilities
* IC-756pro rig capabilities.
*
* TODO: check every parameter, add antenna capabilities
*/
static const struct icom_priv_caps ic756pro_priv_caps = {
0x5c, /* default address */
0, /* 731 mode */
0x5c, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list
ic756pro_ts_sc_list,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
const struct rig_caps ic756pro_caps = {
@ -286,7 +302,7 @@ const struct rig_caps ic756pro_caps = {
.timeout = 1000,
.retry = 3,
.has_get_func = IC756PRO_FUNC_ALL,
.has_set_func = IC756PRO_FUNC_ALL,
.has_set_func = IC756PRO_FUNC_SET,
.has_get_level = IC756PRO_LEVEL_ALL,
.has_set_level = RIG_LEVEL_SET(IC756PRO_LEVEL_ALL),
.has_get_parm = RIG_PARM_NONE,
@ -374,7 +390,7 @@ const struct rig_caps ic756pro_caps = {
.decode_event = icom_decode_event,
.set_level = icom_set_level,
.get_level = icom_get_level,
.set_func = icom_set_func,
.set_func = ic756_set_func,
.get_func = icom_get_func,
.set_mem = icom_set_mem,
.vfo_op = icom_vfo_op,
@ -403,15 +419,22 @@ const struct rig_caps ic756pro_caps = {
};
/*
* ic756proII rig capabilities.
* TODO: check every parameter,
* add antenna capabilities
* IC-756proII rig capabilities.
*
* TODO: check every parameter, add antenna capabilities
*/
static const struct icom_priv_caps ic756pro2_priv_caps = {
0x64, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list
0x64, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
/*
@ -494,7 +517,7 @@ const struct rig_caps ic756pro2_caps = {
.timeout = 1000,
.retry = 3,
.has_get_func = IC756PRO_FUNC_ALL,
.has_set_func = IC756PRO_FUNC_ALL,
.has_set_func = IC756PRO_FUNC_SET,
.has_get_level = IC756PROII_LEVEL_ALL,
.has_set_level = RIG_LEVEL_SET(IC756PROII_LEVEL_ALL),
.has_get_parm = RIG_PARM_NONE,
@ -584,7 +607,7 @@ const struct rig_caps ic756pro2_caps = {
.decode_event = icom_decode_event,
.set_level = ic756pro2_set_level,
.get_level = ic756pro2_get_level,
.set_func = icom_set_func,
.set_func = ic756_set_func,
.get_func = icom_get_func,
.set_mem = icom_set_mem,
.vfo_op = icom_vfo_op,
@ -765,16 +788,22 @@ static int ic756pro2_get_ext_parm(RIG *rig, token_t token, value_t *val)
/*
* ic756proIII rig capabilities.
* IC-756proIII rig capabilities.
*
* TODO: check every parameter,
* add antenna capabilities
* TODO: check every parameter, add antenna capabilities
*/
static const struct icom_priv_caps ic756pro3_priv_caps = {
0x6e, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list
0x6e, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
@ -783,7 +812,7 @@ static const struct icom_priv_caps ic756pro3_priv_caps = {
#define IC756PROIII_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM)
#define IC756PROIII_AM_TX_MODES (RIG_MODE_AM)
#define IC756PROIII_LEVEL_ALL (IC756PROII_LEVEL_ALL|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_MONITOR_GAIN)
#define IC756PROIII_LEVEL_ALL (IC756PROII_LEVEL_ALL|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_NB)
#define IC756PROIII_PARMS (RIG_PARM_ANN|RIG_PARM_BACKLIGHT|RIG_PARM_APO|RIG_PARM_TIME)
@ -858,8 +887,8 @@ const struct rig_caps ic756pro3_caps = {
.post_write_delay = 0,
.timeout = 1000,
.retry = 3,
.has_get_func = IC756PRO_FUNC_ALL,
.has_set_func = IC756PRO_FUNC_ALL,
.has_get_func = IC756PRO_FUNC_ALL|RIG_FUNC_TUNER,
.has_set_func = IC756PRO_FUNC_SET|RIG_FUNC_TUNER,
.has_get_level = IC756PROIII_LEVEL_ALL,
.has_set_level = RIG_LEVEL_SET(IC756PROIII_LEVEL_ALL),
.has_get_parm = IC756PROIII_PARMS,
@ -962,7 +991,7 @@ const struct rig_caps ic756pro3_caps = {
.get_parm = icom_get_parm,
.set_level = ic756pro2_set_level,
.get_level = ic756pro2_get_level,
.set_func = icom_set_func,
.set_func = ic756_set_func,
.get_func = icom_get_func,
.set_mem = icom_set_mem,
.vfo_op = icom_vfo_op,
@ -988,6 +1017,34 @@ const struct rig_caps ic756pro3_caps = {
.get_ext_parm = ic756pro2_get_ext_parm,
};
int ic756_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
{
unsigned char fctbuf[MAXFRAMELEN], ackbuf[MAXFRAMELEN];
int fct_len = 0, acklen, retval;
int fct_cn, fct_sc; /* Command Number, Subcommand */
switch (func) {
case RIG_FUNC_DUAL_WATCH:
fct_cn = C_SET_VFO;
fct_sc = status ? S_DUAL_ON : S_DUAL_OFF;
break;
default:
return icom_set_func(rig, vfo, func, status);
}
retval = icom_transaction(rig, fct_cn, fct_sc, fctbuf, fct_len, ackbuf, &acklen);
if (retval != RIG_OK) {
return retval;
}
if (acklen != 1) {
rig_debug(RIG_DEBUG_ERR, "%s: wrong frame len=%d\n", __func__, acklen);
return -RIG_EPROTO;
}
return RIG_OK;
}
int ic756pro2_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{
unsigned char cmdbuf[MAXFRAMELEN];

Wyświetl plik

@ -36,14 +36,14 @@
#include "misc.h"
#include "bandplan.h"
#define IC7600_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR)
#define IC7600_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTAM|RIG_MODE_PKTFM)
#define IC7600_1HZ_TS_MODES IC7600_ALL_RX_MODES
#define IC7600_OTHER_TX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR)
#define IC7600_AM_TX_MODES (RIG_MODE_AM)
#define IC7600_OTHER_TX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM)
#define IC7600_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_PKTAM)
#define IC7600_FUNCS (RIG_FUNC_FAGC|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_VSC|RIG_FUNC_LOCK)
#define IC7600_FUNCS (RIG_FUNC_FAGC|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_XIT|RIG_FUNC_TUNER|RIG_FUNC_APF|RIG_FUNC_DUAL_WATCH)
#define IC7600_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN)
#define IC7600_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB)
#define IC7600_VFOS (RIG_VFO_MAIN|RIG_VFO_SUB|RIG_VFO_MEM)
#define IC7600_PARMS (RIG_PARM_ANN|RIG_PARM_BACKLIGHT)
@ -129,11 +129,18 @@ int ic7600_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
* TODO: complete command set (esp. the $1A bunch!) and testing..
*/
static const struct icom_priv_caps ic7600_priv_caps = {
0x7a, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list,
.civ_version = 1
0x7a, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list,
.civ_version = 1,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
@ -225,17 +232,23 @@ const struct rig_caps ic7600_caps = {
{IC7600_ALL_RX_MODES,kHz(25)},
RIG_TS_END,
},
/* mode/filter list, remember: order matters! */
/* 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|RIG_MODE_RTTY|RIG_MODE_RTTYR, kHz(2.4)},
{RIG_MODE_CW|RIG_MODE_CWR, Hz(500)},
{RIG_MODE_CW|RIG_MODE_CWR, Hz(350)},
{RIG_MODE_AM, kHz(6)},
{RIG_MODE_AM, kHz(2.4)},
{RIG_MODE_FM, kHz(12)},
{RIG_MODE_FM, kHz(8)}, /* TBC */
RIG_FLT_END,
},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(2.4)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(1.8)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(3)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PSK|RIG_MODE_PSKR, Hz(500)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PSK|RIG_MODE_PSKR, Hz(250)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_PSK|RIG_MODE_PSKR, kHz(1.2)},
{RIG_MODE_RTTY|RIG_MODE_RTTYR, kHz(2.4)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(6)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(3)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(9)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(10)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(7)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(15)},
RIG_FLT_END,
},
.str_cal = IC7600_STR_CAL,
.swr_cal = IC7600_SWR_CAL,
.alc_cal = IC7600_ALC_CAL,
@ -262,7 +275,10 @@ const struct rig_caps ic7600_caps = {
.set_ant = icom_set_ant,
.get_ant = icom_get_ant,
.set_rit = icom_set_rit,
.set_rit = icom_set_rit_new,
.get_rit = icom_get_rit_new,
.get_xit = icom_get_rit_new,
.set_xit = icom_set_xit_new,
.decode_event = icom_decode_event,
.set_level = ic7600_set_level,
@ -279,10 +295,6 @@ const struct rig_caps ic7600_caps = {
.get_dcd = icom_get_dcd,
.set_ts = icom_set_ts,
.get_ts = icom_get_ts,
.set_rptr_shift = icom_set_rptr_shift,
.get_rptr_shift = icom_get_rptr_shift,
.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,
@ -292,7 +304,9 @@ const struct rig_caps ic7600_caps = {
.set_split_mode = icom_set_split_mode,
.get_split_mode = icom_get_split_mode,
.set_split_vfo = icom_set_split_vfo,
.get_split_vfo = icom_mem_get_split_vfo,
.get_split_vfo = icom_get_split_vfo,
.set_powerstat = icom_set_powerstat,
.get_powerstat = icom_get_powerstat,
.send_morse = icom_send_morse
};

Wyświetl plik

@ -37,14 +37,14 @@
#include "misc.h"
#include "bandplan.h"
#define IC7610_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR)
#define IC7610_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTAM|RIG_MODE_PKTFM)
#define IC7610_1HZ_TS_MODES IC7610_ALL_RX_MODES
#define IC7610_OTHER_TX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR)
#define IC7610_AM_TX_MODES (RIG_MODE_AM)
#define IC7610_OTHER_TX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM)
#define IC7610_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_PKTAM)
#define IC7610_FUNCS (RIG_FUNC_FAGC|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_VSC|RIG_FUNC_LOCK)
#define IC7610_FUNCS (RIG_FUNC_FAGC|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_XIT|RIG_FUNC_TUNER|RIG_FUNC_APF|RIG_FUNC_DUAL_WATCH)
#define IC7610_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN)
#define IC7610_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB)
#define IC7610_VFOS (RIG_VFO_MAIN|RIG_VFO_SUB|RIG_VFO_MEM)
#define IC7610_PARMS (RIG_PARM_ANN|RIG_PARM_BACKLIGHT)
@ -130,11 +130,18 @@ int ic7610_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
* TODO: complete command set (esp. the $1A bunch!) and testing..
*/
static const struct icom_priv_caps ic7610_priv_caps = {
0x98, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list,
.civ_version = 1
0x98, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list,
.civ_version = 1,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
@ -226,17 +233,23 @@ const struct rig_caps ic7610_caps = {
{IC7610_ALL_RX_MODES,kHz(25)},
RIG_TS_END,
},
/* mode/filter list, remember: order matters! */
/* 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|RIG_MODE_RTTY|RIG_MODE_RTTYR, kHz(2.4)},
{RIG_MODE_CW|RIG_MODE_CWR, Hz(500)},
{RIG_MODE_CW|RIG_MODE_CWR, Hz(350)},
{RIG_MODE_AM, kHz(6)},
{RIG_MODE_AM, kHz(2.4)},
{RIG_MODE_FM, kHz(12)},
{RIG_MODE_FM, kHz(8)}, /* TBC */
RIG_FLT_END,
},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(2.4)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(1.8)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(3)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PSK|RIG_MODE_PSKR, Hz(500)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PSK|RIG_MODE_PSKR, Hz(250)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_PSK|RIG_MODE_PSKR, kHz(1.2)},
{RIG_MODE_RTTY|RIG_MODE_RTTYR, kHz(2.4)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(6)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(3)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(9)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(10)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(7)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(15)},
RIG_FLT_END,
},
.str_cal = IC7610_STR_CAL,
.swr_cal = IC7610_SWR_CAL,
.alc_cal = IC7610_ALC_CAL,
@ -263,7 +276,10 @@ const struct rig_caps ic7610_caps = {
.set_ant = icom_set_ant,
.get_ant = icom_get_ant,
.set_rit = icom_set_rit,
.set_rit = icom_set_rit_new,
.get_rit = icom_get_rit_new,
.get_xit = icom_get_rit_new,
.set_xit = icom_set_xit_new,
.decode_event = icom_decode_event,
.set_level = ic7610_set_level,
@ -280,10 +296,6 @@ const struct rig_caps ic7610_caps = {
.get_dcd = icom_get_dcd,
.set_ts = icom_set_ts,
.get_ts = icom_get_ts,
.set_rptr_shift = icom_set_rptr_shift,
.get_rptr_shift = icom_get_rptr_shift,
.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,
@ -293,7 +305,9 @@ const struct rig_caps ic7610_caps = {
.set_split_mode = icom_set_split_mode,
.get_split_mode = icom_get_split_mode,
.set_split_vfo = icom_set_split_vfo,
.get_split_vfo = icom_mem_get_split_vfo,
.get_split_vfo = icom_get_split_vfo,
.set_powerstat = icom_set_powerstat,
.get_powerstat = icom_get_powerstat,
.send_morse = icom_send_morse
};

Wyświetl plik

@ -37,13 +37,13 @@
#include "bandplan.h"
#define IC7700_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|RIG_MODE_PSK|RIG_MODE_PSKR)
#define IC7700_AM_TX_MODES (RIG_MODE_AM)
#define IC7700_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_PKTAM)
#define IC7700_ALL_RX_MODES IC7700_OTHER_TX_MODES | IC7700_AM_TX_MODES
#define IC7700_1HZ_TS_MODES IC7700_ALL_RX_MODES
#define IC7700_FUNCS (RIG_FUNC_FAGC|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_VSC|RIG_FUNC_LOCK)
#define IC7700_FUNCS (RIG_FUNC_FAGC|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_VSC|RIG_FUNC_LOCK|RIG_FUNC_RIT|RIG_FUNC_XIT|RIG_FUNC_TUNER|RIG_FUNC_APF)
#define IC7700_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_APF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN)
#define IC7700_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_APF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB)
#define IC7700_VFOS (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MEM)
#define IC7700_PARMS (RIG_PARM_ANN|RIG_PARM_BACKLIGHT)
@ -114,10 +114,18 @@ int ic7700_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
* TODO: complete command set (esp. the $1A bunch!) and testing..
*/
static const struct icom_priv_caps ic7700_priv_caps = {
0x74, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list
0x74, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_OFF, .icom_level = 0 },
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
@ -211,16 +219,21 @@ const struct rig_caps ic7700_caps = {
},
/* mode/filter list, remember: order matters! */
.filters = {
{RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR, kHz(2.4)},
{RIG_MODE_CW|RIG_MODE_CWR, Hz(400)},
{RIG_MODE_CW|RIG_MODE_CWR, Hz(1000)},
{RIG_MODE_CW|RIG_MODE_CWR, Hz(50)},
{RIG_MODE_AM, kHz(6)},
{RIG_MODE_AM, kHz(2.4)},
{RIG_MODE_FM, kHz(12)},
{RIG_MODE_FM, kHz(8)}, /* TBC */
RIG_FLT_END,
},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(2.4)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(1.8)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(3)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PSK|RIG_MODE_PSKR, Hz(400)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PSK|RIG_MODE_PSKR, Hz(50)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_PSK|RIG_MODE_PSKR, kHz(1.0)},
{RIG_MODE_RTTY|RIG_MODE_RTTYR, kHz(2.4)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(6)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(3)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(9)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(12)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(8)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(15)},
RIG_FLT_END,
},
.str_cal = IC7700_STR_CAL,
.swr_cal = IC7700_SWR_CAL,
.alc_cal = IC7700_ALC_CAL,
@ -247,7 +260,10 @@ const struct rig_caps ic7700_caps = {
.set_ant = icom_set_ant,
.get_ant = icom_get_ant,
.set_rit = icom_set_rit,
.set_rit = icom_set_rit_new,
.get_rit = icom_get_rit_new,
.get_xit = icom_get_rit_new,
.set_xit = icom_set_xit_new,
.decode_event = icom_decode_event,
.set_level = ic7700_set_level,
@ -264,10 +280,6 @@ const struct rig_caps ic7700_caps = {
.get_dcd = icom_get_dcd,
.set_ts = icom_set_ts,
.get_ts = icom_get_ts,
.set_rptr_shift = icom_set_rptr_shift,
.get_rptr_shift = icom_get_rptr_shift,
.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,
@ -277,8 +289,10 @@ const struct rig_caps ic7700_caps = {
.set_split_mode = icom_set_split_mode,
.get_split_mode = icom_get_split_mode,
.set_split_vfo = icom_set_split_vfo,
.get_split_vfo = icom_mem_get_split_vfo,
.get_split_vfo = icom_get_split_vfo,
.set_powerstat = icom_set_powerstat,
.get_powerstat = icom_get_powerstat,
.send_morse = icom_send_morse
};
int ic7700_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)

Wyświetl plik

@ -36,14 +36,14 @@
#include "misc.h"
#include "bandplan.h"
#define IC7800_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR)
#define IC7800_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTAM|RIG_MODE_PKTFM)
#define IC7800_1HZ_TS_MODES IC7800_ALL_RX_MODES
#define IC7800_OTHER_TX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR)
#define IC7800_AM_TX_MODES (RIG_MODE_AM)
#define IC7800_OTHER_TX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM)
#define IC7800_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_PKTAM)
#define IC7800_FUNCS (RIG_FUNC_FAGC|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_VSC|RIG_FUNC_LOCK)
#define IC7800_FUNCS (RIG_FUNC_FAGC|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_VSC|RIG_FUNC_LOCK|RIG_FUNC_RIT|RIG_FUNC_XIT|RIG_FUNC_TUNER|RIG_FUNC_APF|RIG_FUNC_DUAL_WATCH)
#define IC7800_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_APF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN)
#define IC7800_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_APF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB)
#define IC7800_VFOS (RIG_VFO_MAIN|RIG_VFO_SUB|RIG_VFO_MEM)
#define IC7800_PARMS (RIG_PARM_ANN|RIG_PARM_BACKLIGHT)
@ -114,10 +114,18 @@ int ic7800_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
* TODO: complete command set (esp. the $1A bunch!) and testing..
*/
static const struct icom_priv_caps ic7800_priv_caps = {
0x6a, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list
0x6a, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_OFF, .icom_level = 0 },
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
@ -211,14 +219,21 @@ const struct rig_caps ic7800_caps = {
},
/* mode/filter list, remember: order matters! */
.filters = {
{RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR, kHz(2.4)},
{RIG_MODE_CW|RIG_MODE_CWR, Hz(500)},
{RIG_MODE_AM, kHz(6)},
{RIG_MODE_AM, kHz(2.4)},
{RIG_MODE_FM, kHz(15)},
{RIG_MODE_FM, kHz(8)},
RIG_FLT_END,
},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(2.4)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(1.8)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(3)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PSK|RIG_MODE_PSKR, Hz(400)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PSK|RIG_MODE_PSKR, Hz(50)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_PSK|RIG_MODE_PSKR, kHz(1.0)},
{RIG_MODE_RTTY|RIG_MODE_RTTYR, kHz(2.4)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(6)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(3)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(9)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(12)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(8)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(15)},
RIG_FLT_END,
},
.str_cal = IC7800_STR_CAL,
.swr_cal = IC7800_SWR_CAL,
.alc_cal = IC7800_ALC_CAL,
@ -245,7 +260,10 @@ const struct rig_caps ic7800_caps = {
.set_ant = icom_set_ant,
.get_ant = icom_get_ant,
.set_rit = icom_set_rit,
.set_rit = icom_set_rit_new,
.get_rit = icom_get_rit_new,
.get_xit = icom_get_rit_new,
.set_xit = icom_set_xit_new,
.decode_event = icom_decode_event,
.set_level = ic7800_set_level,
@ -262,10 +280,6 @@ const struct rig_caps ic7800_caps = {
.get_dcd = icom_get_dcd,
.set_ts = icom_set_ts,
.get_ts = icom_get_ts,
.set_rptr_shift = icom_set_rptr_shift,
.get_rptr_shift = icom_get_rptr_shift,
.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,
@ -275,8 +289,10 @@ const struct rig_caps ic7800_caps = {
.set_split_mode = icom_set_split_mode,
.get_split_mode = icom_get_split_mode,
.set_split_vfo = icom_set_split_vfo,
.get_split_vfo = icom_mem_get_split_vfo,
.get_split_vfo = icom_get_split_vfo,
.set_powerstat = icom_set_powerstat,
.get_powerstat = icom_get_powerstat,
.send_morse = icom_send_morse
};
/*

Wyświetl plik

@ -37,14 +37,14 @@
#include "misc.h"
#include "bandplan.h"
#define IC785x_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR)
#define IC785x_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTAM|RIG_MODE_PKTFM)
#define IC785x_1HZ_TS_MODES IC785x_ALL_RX_MODES
#define IC785x_OTHER_TX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR)
#define IC785x_AM_TX_MODES (RIG_MODE_AM)
#define IC785x_OTHER_TX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM)
#define IC785x_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_PKTAM)
#define IC785x_FUNCS (RIG_FUNC_FAGC|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_VSC|RIG_FUNC_LOCK)
#define IC785x_FUNCS (RIG_FUNC_FAGC|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_VSC|RIG_FUNC_LOCK|RIG_FUNC_RIT|RIG_FUNC_XIT|RIG_FUNC_TUNER|RIG_FUNC_APF|RIG_FUNC_DUAL_WATCH)
#define IC785x_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_APF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN)
#define IC785x_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_APF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB)
#define IC785x_VFOS (RIG_VFO_MAIN|RIG_VFO_SUB|RIG_VFO_MEM)
#define IC785x_PARMS (RIG_PARM_ANN|RIG_PARM_BACKLIGHT)
@ -119,10 +119,18 @@ int ic785x_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
* TODO: complete command set (esp. the $1A bunch!) and testing..
*/
static const struct icom_priv_caps ic785x_priv_caps = {
0x8e, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list
0x8e, /* default address */
0, /* 731 mode */
0, /* no XCHG */
ic756pro_ts_sc_list,
.agc_levels_present = 1,
.agc_levels = {
{ .level = RIG_AGC_OFF, .icom_level = 0 },
{ .level = RIG_AGC_FAST, .icom_level = 1 },
{ .level = RIG_AGC_MEDIUM, .icom_level = 2 },
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
{ .level = -1, .icom_level = 0 },
},
};
@ -216,14 +224,21 @@ const struct rig_caps ic785x_caps = {
},
/* mode/filter list, remember: order matters! */
.filters = {
{RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR, kHz(2.4)},
{RIG_MODE_CW|RIG_MODE_CWR, Hz(500)},
{RIG_MODE_AM, kHz(6)},
{RIG_MODE_AM, kHz(2.4)},
{RIG_MODE_FM, kHz(15)},
{RIG_MODE_FM, kHz(8)},
RIG_FLT_END,
},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(2.4)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(1.8)},
{RIG_MODE_SSB|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB, kHz(3)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PSK|RIG_MODE_PSKR, Hz(400)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PSK|RIG_MODE_PSKR, Hz(50)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_PSK|RIG_MODE_PSKR, kHz(1.0)},
{RIG_MODE_RTTY|RIG_MODE_RTTYR, kHz(2.4)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(6)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(3)},
{RIG_MODE_AM|RIG_MODE_PKTAM, kHz(9)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(12)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(8)},
{RIG_MODE_FM|RIG_MODE_PKTFM, kHz(15)},
RIG_FLT_END,
},
.str_cal = IC785x_STR_CAL,
.swr_cal = IC785x_SWR_CAL,
.alc_cal = IC785x_ALC_CAL,
@ -250,7 +265,10 @@ const struct rig_caps ic785x_caps = {
.set_ant = icom_set_ant,
.get_ant = icom_get_ant,
.set_rit = icom_set_rit,
.set_rit = icom_set_rit_new,
.get_rit = icom_get_rit_new,
.get_xit = icom_get_rit_new,
.set_xit = icom_set_xit_new,
.decode_event = icom_decode_event,
.set_level = ic785x_set_level,
@ -267,10 +285,6 @@ const struct rig_caps ic785x_caps = {
.get_dcd = icom_get_dcd,
.set_ts = icom_set_ts,
.get_ts = icom_get_ts,
.set_rptr_shift = icom_set_rptr_shift,
.get_rptr_shift = icom_get_rptr_shift,
.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,
@ -280,9 +294,10 @@ const struct rig_caps ic785x_caps = {
.set_split_mode = icom_set_split_mode,
.get_split_mode = icom_get_split_mode,
.set_split_vfo = icom_set_split_vfo,
.get_split_vfo = icom_mem_get_split_vfo,
.get_split_vfo = icom_get_split_vfo,
.set_powerstat = icom_set_powerstat,
.get_powerstat = icom_get_powerstat,
.send_morse = icom_send_morse
};

Plik diff jest za duży Load Diff

Wyświetl plik

@ -95,6 +95,11 @@ typedef struct rig_pltstate {
int usleep_time; /* dependent on radio module & serial data rate */
} pltstate_t;
struct icom_agc_level {
enum agc_level_e level; /* Hamlib AGC level from agc_level_e enum, the last entry should have level -1 */
unsigned char icom_level; /* Icom AGC level for C_CTL_FUNC (0x16), S_FUNC_AGC (0x12) command */
};
struct icom_priv_caps {
unsigned char re_civ_addr; /* the remote dlft equipment's CI-V address*/
int civ_731_mode; /* Off: freqs on 10 digits, On: freqs on 8 digits */
@ -114,6 +119,8 @@ struct icom_priv_caps {
unsigned char civ_version; // default to 0, 1=IC7200,IC7300,etc differences
int offs_len; /* Number of bytes in offset frequency field. 0 defaults to 3 */
int serial_USB_echo_check; /* Flag to test USB echo state */
int agc_levels_present; /* Flag to indicate that agc_levels array is populated */
struct icom_agc_level agc_levels[RIG_AGC_LAST + 1]; /* Icom rig-specific AGC levels, the last entry should have level -1 */
};
@ -156,6 +163,9 @@ int icom_cleanup(RIG *rig);
int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq);
int icom_get_freq(RIG *rig, vfo_t vfo, freq_t *freq);
int icom_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit);
int icom_get_rit_new(RIG *rig, vfo_t vfo, shortfreq_t *ts);
int icom_set_rit_new(RIG *rig, vfo_t vfo, shortfreq_t ts);
int icom_set_xit_new(RIG *rig, vfo_t vfo, shortfreq_t ts);
int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
int icom_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
int icom_get_mode_with_data(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width);

Wyświetl plik

@ -93,6 +93,7 @@
#define C_SET_TONE 0x1b /* Set tone frequency */
#define C_CTL_PTT 0x1c /* Control Transmit On/Off, Sc */
#define C_CTL_DIG 0x20 /* Digital modes settings & status */
#define C_CTL_RIT 0x21 /* RIT/XIT control */
#define C_SEND_SEL_FREQ 0x25 /* Send/Recv sel/unsel VFO frequency */
#define C_CTL_MTEXT 0x70 /* Microtelecom Extension */
#define C_CTL_MISC 0x7f /* Miscellaneous control, Sc */
@ -151,6 +152,7 @@
#define S_SUBTOMAIN 0xb1 /* MAIN = SUB */
#define S_DUAL_OFF 0xc0 /* Dual watch off */
#define S_DUAL_ON 0xc1 /* Dual watch on */
#define S_DUAL 0xc2 /* Dual watch (0 = off, 1 = on) */
#define S_MAIN 0xd0 /* Select MAIN band */
#define S_SUB 0xd1 /* Select SUB band */
#define S_SUB_SEL 0xd2 /* Read/Set Main/Sub selection */
@ -354,6 +356,13 @@
#define S_PTT 0x00
#define S_ANT_TUN 0x01 /* Auto tuner 0=OFF, 1 = ON, 2=Start Tuning */
/*
* RIT/XIT control (C_CTL_RIT) subcommands
*/
#define S_RIT_FREQ 0x00
#define S_RIT 0x01 /* RIT 0 = OFF, 1 = ON */
#define S_XIT 0x02 /* XIT (delta TX) 0 = OFF, 1 = ON */
/*
* Misc contents (C_CTL_MEM) subcommands applies to newer rigs.
*

Wyświetl plik

@ -654,6 +654,7 @@ enum agc_level_e {
RIG_AGC_AUTO
};
#define RIG_AGC_LAST RIG_AGC_AUTO
/**
* \brief Level display meters
@ -733,11 +734,12 @@ enum rig_level_e {
RIG_LEVEL_VD_METER = CONSTANT_64BIT_FLAG(34), /*!< \c VD_METER -- Input voltage level meter, arg float (V, volts) */
RIG_LEVEL_ID_METER = CONSTANT_64BIT_FLAG(35), /*!< \c ID_METER -- Current draw meter, arg float (A, amperes) */
RIG_LEVEL_NOTCHF_RAW = CONSTANT_64BIT_FLAG(36), /*!< \c NOTCHF_RAW -- Notch Freq., arg float [0.0 ... 1.0] */
RIG_LEVEL_MONITOR_GAIN = CONSTANT_64BIT_FLAG(37) /*!< \c MONITOR_GAIN -- Monitor gain (level for monitoring of transmitted audio), arg float [0.0 ... 1.0] */
RIG_LEVEL_NOTCHF_RAW = CONSTANT_64BIT_FLAG(36), /*!< \c NOTCHF_RAW -- Notch Freq., arg float [0.0 ... 1.0] */
RIG_LEVEL_MONITOR_GAIN = CONSTANT_64BIT_FLAG(37), /*!< \c MONITOR_GAIN -- Monitor gain (level for monitoring of transmitted audio), arg float [0.0 ... 1.0] */
RIG_LEVEL_NB = CONSTANT_64BIT_FLAG(38), /*!< \c NB -- Noise Blanker level, arg float [0.0 ... 1.0] */
};
#define RIG_LEVEL_FLOAT_LIST (RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_APF|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_COMP|RIG_LEVEL_BALANCE|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_MONITOR_GAIN)
#define RIG_LEVEL_FLOAT_LIST (RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_APF|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_COMP|RIG_LEVEL_BALANCE|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB)
#define RIG_LEVEL_READONLY_LIST (RIG_LEVEL_SQLSTAT|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_STRENGTH|RIG_LEVEL_RAWSTR|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER)

Wyświetl plik

@ -39,8 +39,8 @@
#define TS480_VFO (RIG_VFO_A|RIG_VFO_B)
#define TS480_LEVEL_ALL (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC)
#define TS480_FUNC_ALL (RIG_FUNC_NB|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_NR|RIG_FUNC_NR|RIG_FUNC_BC|RIG_FUNC_BC2)
#define TS890_FUNC_ALL (RIG_FUNC_NB|RIG_FUNC_NB2|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_NR|RIG_FUNC_NR|RIG_FUNC_BC|RIG_FUNC_BC2)
#define TS480_FUNC_ALL (RIG_FUNC_NB|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_NR|RIG_FUNC_NR|RIG_FUNC_BC|RIG_FUNC_BC2|RIG_FUNC_RIT|RIG_FUNC_XIT)
#define TS890_FUNC_ALL (RIG_FUNC_NB|RIG_FUNC_NB2|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_NR|RIG_FUNC_NR|RIG_FUNC_BC|RIG_FUNC_BC2|RIG_FUNC_RIT|RIG_FUNC_XIT)
/*

Wyświetl plik

@ -633,6 +633,7 @@ static struct
{ RIG_LEVEL_ID_METER, "ID_METER" },
{ RIG_LEVEL_NOTCHF_RAW, "NOTCHF_RAW" },
{ RIG_LEVEL_MONITOR_GAIN, "MONITOR_GAIN" },
{ RIG_LEVEL_NB, "NB" },
{ RIG_LEVEL_NONE, "" },
};