kopia lustrzana https://github.com/Hamlib/Hamlib
daily
rodzic
31cc85bf57
commit
f79722c333
15
icom/frame.c
15
icom/frame.c
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
53
icom/icr30.c
53
icom/icr30.c
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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"},
|
||||
|
|
Ładowanie…
Reference in New Issue