pull/75/head
Malcolm Herring 2018-12-21 20:16:26 +00:00
rodzic 31cc85bf57
commit f79722c333
6 zmienionych plików z 65 dodań i 16 usunięć

Wyświetl plik

@ -326,7 +326,7 @@ int rig2icom_mode(RIG *rig, rmode_t mode, pbwidth_t width,
switch (mode) {
case RIG_MODE_AM: icmode = S_AM; break;
case RIG_MODE_AMN: icmode = S_AMN; break;
case RIG_MODE_AM_N: icmode = S_AM_N; break;
case RIG_MODE_AMS: icmode = S_AMS; break;
case RIG_MODE_CW: icmode = S_CW; break;
case RIG_MODE_CWR: icmode = S_CWR; break;
@ -335,6 +335,7 @@ int rig2icom_mode(RIG *rig, rmode_t mode, pbwidth_t width,
case RIG_MODE_RTTY: icmode = S_RTTY; break;
case RIG_MODE_RTTYR: icmode = S_RTTYR; break;
case RIG_MODE_FM: icmode = S_FM; break;
case RIG_MODE_FM_N: icmode = S_FM_N; break;
case RIG_MODE_WFM: icmode = S_WFM; break;
case RIG_MODE_P25: icmode = S_P25; break;
case RIG_MODE_DSTAR: icmode = S_DSTAR; break;
@ -379,7 +380,11 @@ void icom2rig_mode(RIG *rig, unsigned char md, int pd, rmode_t *mode, pbwidth_t
*width = RIG_PASSBAND_NORMAL;
switch (md) {
case S_AM: *mode = RIG_MODE_AM; break;
case S_AM: if (rig->caps->rig_model == RIG_MODEL_ICR30 && pd == 0x02) {
*mode = RIG_MODE_AM_N;
} else {
*mode = RIG_MODE_AM;
} break;
case S_AMS: *mode = RIG_MODE_AMS; break;
case S_CW: *mode = RIG_MODE_CW; break;
case S_CWR: *mode = RIG_MODE_CWR; break;
@ -388,9 +393,11 @@ void icom2rig_mode(RIG *rig, unsigned char md, int pd, rmode_t *mode, pbwidth_t
*mode = RIG_MODE_USB;
*width = rig_passband_normal(rig, RIG_MODE_USB);
return;
} else
} else if (rig->caps->rig_model == RIG_MODEL_ICR30 && pd == 0x02) {
*mode = RIG_MODE_FM_N;
} else {
*mode = RIG_MODE_FM;
break;
} break;
case S_WFM: *mode = RIG_MODE_WFM; break;
case S_USB: *mode = RIG_MODE_USB; break;
case S_LSB: *mode = RIG_MODE_LSB; break;

Wyświetl plik

@ -897,8 +897,10 @@ int icom_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
/* IC910H has different meaning of command 1A, subcommand 03. So do
* not ask for DSP filter settings */
/* Likewise, don't ask if we happen to be an Omni VI Plus */
/* Likewise, don't ask if we happen to be an IC-R30 */
if ( (rig->caps->rig_model == RIG_MODEL_IC910) ||
(rig->caps->rig_model == RIG_MODEL_OMNIVIP) )
(rig->caps->rig_model == RIG_MODEL_OMNIVIP) ||
(rig->caps->rig_model == RIG_MODEL_ICR30) )
return RIG_OK;
/* Most rigs return 1-wide, 2-normal,3-narrow

Wyświetl plik

@ -106,10 +106,11 @@
#define S_LSB 0x00 /* Set to LSB */
#define S_USB 0x01 /* Set to USB */
#define S_AM 0x02 /* Set to AM */
#define S_AMN 0x02 /* Set to AM-N */
#define S_AM_N 0x02 /* Set to AM-N */
#define S_CW 0x03 /* Set to CW */
#define S_RTTY 0x04 /* Set to RTTY */
#define S_FM 0x05 /* Set to FM */
#define S_FM_N 0x05 /* Set to FM-N */
#define S_WFM 0x06 /* Set to Wide FM */
#define S_CWR 0x07 /* Set to CW Reverse */
#define S_RTTYR 0x08 /* Set to RTTY Reverse */

Wyświetl plik

@ -28,13 +28,15 @@
#include "hamlib/rig.h"
#include "icom.h"
#include "idx_builtin.h"
#include "icom_defs.h"
#include "frame.h"
#define ICR30_MODES (RIG_MODE_LSB|RIG_MODE_USB|RIG_MODE_AM|RIG_MODE_AMN|RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_RTTY|RIG_MODE_FM|RIG_MODE_WFM|RIG_MODE_CWR|\
#define ICR30_MODES (RIG_MODE_LSB|RIG_MODE_USB|RIG_MODE_AM|RIG_MODE_AM_N|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_RTTY|RIG_MODE_FM|RIG_MODE_FM_N|RIG_MODE_WFM|\
RIG_MODE_RTTYR|RIG_MODE_SAM|RIG_MODE_SAL|RIG_MODE_SAH|RIG_MODE_P25|RIG_MODE_DSTAR|RIG_MODE_DPMR|RIG_MODE_NXDNVN|RIG_MODE_NXDN_N|RIG_MODE_DCR)
#define ICR30_FUNC_ALL (RIG_FUNC_TSQL|RIG_FUNC_VSC)
#define ICR30_LEVEL_ALL (RIG_LEVEL_ATT|RIG_LEVEL_AF|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH)
#define ICR30_LEVEL_ALL (RIG_LEVEL_ATT|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH)
#define ICR30_VFO_ALL (RIG_VFO_A)
@ -47,11 +49,42 @@
{ 255, 60 } /* +60 */ \
} }
/*
* This function does the special bandwidth coding for IC-R30
* (1 - normal, 2 - narrow)
*/
static int icr30_r2i_mode(RIG *rig, rmode_t mode, pbwidth_t width,
unsigned char *md, signed char *pd)
{
int err;
err = rig2icom_mode(rig, mode, width, md, pd);
if (*pd == PD_NARROW_3)
*pd = PD_NARROW_2;
return err;
}
/*
* This function handles the -N modes for IC-R30
*/
int icr30_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) {
if (mode & (RIG_MODE_AM_N | RIG_MODE_FM_N)) {
return icom_set_mode(rig, vfo, mode, (pbwidth_t)1);
} else {
return icom_set_mode(rig, vfo, mode, width);
}
}
static const struct icom_priv_caps icr30_priv_caps = {
0x9c, /* default address */
0, /* 731 mode */
0, /* no XCHG */
r8500_ts_sc_list /* wrong, but don't have set_ts anyway */
0x9c, /* default address */
0, /* 731 mode */
0, /* no XCHG */
r8500_ts_sc_list, /* wrong, but don't have set_ts anyway */
.r2i_mode = icr30_r2i_mode
};
const struct rig_caps icr30_caps = {
@ -137,7 +170,9 @@ const struct rig_caps icr30_caps = {
},
/* mode/filter list, remember: order matters! */
.filters = {
{RIG_MODE_AM|RIG_MODE_FM, kHz(12)},
{RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_USB|RIG_MODE_LSB, kHz(1.8)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_AM_N|RIG_MODE_FM_N, kHz(12)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_AM_N|RIG_MODE_FM_N, kHz(6)},
{RIG_MODE_WFM, kHz(150)},
RIG_FLT_END,
},
@ -155,10 +190,12 @@ const struct rig_caps icr30_caps = {
.set_freq = icom_set_freq,
.get_freq = icom_get_freq,
.set_mode = icom_set_mode,
.set_mode = icr30_set_mode,
.get_mode = icom_get_mode,
.set_ant = icom_set_ant,
.get_ant = icom_get_ant,
.set_bank = icom_set_bank,
.set_mem = icom_set_mem,
.decode_event = icom_decode_event,
.set_level = icom_set_level,
.get_level = icom_get_level,

Wyświetl plik

@ -875,7 +875,8 @@ typedef enum {
RIG_MODE_NXDNVN = (1 << 26), /*!< \c NXDN-VN -- VHF,UHF digital mode IC-R8600 */
RIG_MODE_NXDN_N = (1 << 27), /*!< \c NXDN-N -- VHF,UHF digital mode IC-R8600 */
RIG_MODE_DCR = (1 << 28), /*!< \c DCR -- VHF,UHF digital mode IC-R8600 */
RIG_MODE_AMN = (1 << 29), /*!< \c AM-N -- Narrow band AM mode IC-R30 */
RIG_MODE_AM_N = (1 << 29), /*!< \c AM-N -- Narrow band AM mode IC-R30 */
RIG_MODE_FM_N = (1 << 30), /*!< \c FM-N -- Narrow band FM mode IC-R30 */
RIG_MODE_TESTS_MAX /*!< \c MUST ALWAYS BE LAST, Max Count for dumpcaps.c */
} rmode_t;

Wyświetl plik

@ -320,6 +320,7 @@ static struct
{ RIG_MODE_RTTY, "RTTY" },
{ RIG_MODE_FM, "FM" },
{ RIG_MODE_FMN, "FMN" },
{ RIG_MODE_FM_N, "FM-N" },
{ RIG_MODE_WFM, "WFM" },
{ RIG_MODE_CWR, "CWR" },
{ RIG_MODE_RTTYR, "RTTYR" },
@ -334,7 +335,7 @@ static struct
{ RIG_MODE_SAL, "SAL" },
{ RIG_MODE_SAH, "SAH" },
{ RIG_MODE_DSB, "DSB"},
{ RIG_MODE_AMN, "AM-N"},
{ RIG_MODE_AM_N, "AM-N"},
{ RIG_MODE_P25, "P25"},
{ RIG_MODE_DSTAR, "D-STAR"},
{ RIG_MODE_DPMR, "dPMR"},