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) {
|
switch (mode) {
|
||||||
case RIG_MODE_AM: icmode = S_AM; break;
|
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_AMS: icmode = S_AMS; break;
|
||||||
case RIG_MODE_CW: icmode = S_CW; break;
|
case RIG_MODE_CW: icmode = S_CW; break;
|
||||||
case RIG_MODE_CWR: icmode = S_CWR; 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_RTTY: icmode = S_RTTY; break;
|
||||||
case RIG_MODE_RTTYR: icmode = S_RTTYR; break;
|
case RIG_MODE_RTTYR: icmode = S_RTTYR; break;
|
||||||
case RIG_MODE_FM: icmode = S_FM; 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_WFM: icmode = S_WFM; break;
|
||||||
case RIG_MODE_P25: icmode = S_P25; break;
|
case RIG_MODE_P25: icmode = S_P25; break;
|
||||||
case RIG_MODE_DSTAR: icmode = S_DSTAR; 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;
|
*width = RIG_PASSBAND_NORMAL;
|
||||||
|
|
||||||
switch (md) {
|
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_AMS: *mode = RIG_MODE_AMS; break;
|
||||||
case S_CW: *mode = RIG_MODE_CW; break;
|
case S_CW: *mode = RIG_MODE_CW; break;
|
||||||
case S_CWR: *mode = RIG_MODE_CWR; 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;
|
*mode = RIG_MODE_USB;
|
||||||
*width = rig_passband_normal(rig, RIG_MODE_USB);
|
*width = rig_passband_normal(rig, RIG_MODE_USB);
|
||||||
return;
|
return;
|
||||||
} else
|
} else if (rig->caps->rig_model == RIG_MODEL_ICR30 && pd == 0x02) {
|
||||||
|
*mode = RIG_MODE_FM_N;
|
||||||
|
} else {
|
||||||
*mode = RIG_MODE_FM;
|
*mode = RIG_MODE_FM;
|
||||||
break;
|
} break;
|
||||||
case S_WFM: *mode = RIG_MODE_WFM; break;
|
case S_WFM: *mode = RIG_MODE_WFM; break;
|
||||||
case S_USB: *mode = RIG_MODE_USB; break;
|
case S_USB: *mode = RIG_MODE_USB; break;
|
||||||
case S_LSB: *mode = RIG_MODE_LSB; 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
|
/* IC910H has different meaning of command 1A, subcommand 03. So do
|
||||||
* not ask for DSP filter settings */
|
* 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 Omni VI Plus */
|
||||||
|
/* Likewise, don't ask if we happen to be an IC-R30 */
|
||||||
if ( (rig->caps->rig_model == RIG_MODEL_IC910) ||
|
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;
|
return RIG_OK;
|
||||||
|
|
||||||
/* Most rigs return 1-wide, 2-normal,3-narrow
|
/* Most rigs return 1-wide, 2-normal,3-narrow
|
||||||
|
|
|
@ -106,10 +106,11 @@
|
||||||
#define S_LSB 0x00 /* Set to LSB */
|
#define S_LSB 0x00 /* Set to LSB */
|
||||||
#define S_USB 0x01 /* Set to USB */
|
#define S_USB 0x01 /* Set to USB */
|
||||||
#define S_AM 0x02 /* Set to AM */
|
#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_CW 0x03 /* Set to CW */
|
||||||
#define S_RTTY 0x04 /* Set to RTTY */
|
#define S_RTTY 0x04 /* Set to RTTY */
|
||||||
#define S_FM 0x05 /* Set to FM */
|
#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_WFM 0x06 /* Set to Wide FM */
|
||||||
#define S_CWR 0x07 /* Set to CW Reverse */
|
#define S_CWR 0x07 /* Set to CW Reverse */
|
||||||
#define S_RTTYR 0x08 /* Set to RTTY 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 "hamlib/rig.h"
|
||||||
#include "icom.h"
|
#include "icom.h"
|
||||||
#include "idx_builtin.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)
|
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_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)
|
#define ICR30_VFO_ALL (RIG_VFO_A)
|
||||||
|
|
||||||
|
@ -47,11 +49,42 @@
|
||||||
{ 255, 60 } /* +60 */ \
|
{ 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 = {
|
static const struct icom_priv_caps icr30_priv_caps = {
|
||||||
0x9c, /* default address */
|
0x9c, /* default address */
|
||||||
0, /* 731 mode */
|
0, /* 731 mode */
|
||||||
0, /* no XCHG */
|
0, /* no XCHG */
|
||||||
r8500_ts_sc_list /* wrong, but don't have set_ts anyway */
|
r8500_ts_sc_list, /* wrong, but don't have set_ts anyway */
|
||||||
|
.r2i_mode = icr30_r2i_mode
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct rig_caps icr30_caps = {
|
const struct rig_caps icr30_caps = {
|
||||||
|
@ -137,7 +170,9 @@ const struct rig_caps icr30_caps = {
|
||||||
},
|
},
|
||||||
/* mode/filter list, remember: order matters! */
|
/* mode/filter list, remember: order matters! */
|
||||||
.filters = {
|
.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_MODE_WFM, kHz(150)},
|
||||||
RIG_FLT_END,
|
RIG_FLT_END,
|
||||||
},
|
},
|
||||||
|
@ -155,10 +190,12 @@ const struct rig_caps icr30_caps = {
|
||||||
|
|
||||||
.set_freq = icom_set_freq,
|
.set_freq = icom_set_freq,
|
||||||
.get_freq = icom_get_freq,
|
.get_freq = icom_get_freq,
|
||||||
.set_mode = icom_set_mode,
|
.set_mode = icr30_set_mode,
|
||||||
.get_mode = icom_get_mode,
|
.get_mode = icom_get_mode,
|
||||||
.set_ant = icom_set_ant,
|
.set_ant = icom_set_ant,
|
||||||
.get_ant = icom_get_ant,
|
.get_ant = icom_get_ant,
|
||||||
|
.set_bank = icom_set_bank,
|
||||||
|
.set_mem = icom_set_mem,
|
||||||
.decode_event = icom_decode_event,
|
.decode_event = icom_decode_event,
|
||||||
.set_level = icom_set_level,
|
.set_level = icom_set_level,
|
||||||
.get_level = icom_get_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_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_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_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 */
|
RIG_MODE_TESTS_MAX /*!< \c MUST ALWAYS BE LAST, Max Count for dumpcaps.c */
|
||||||
} rmode_t;
|
} rmode_t;
|
||||||
|
|
||||||
|
|
|
@ -320,6 +320,7 @@ static struct
|
||||||
{ RIG_MODE_RTTY, "RTTY" },
|
{ RIG_MODE_RTTY, "RTTY" },
|
||||||
{ RIG_MODE_FM, "FM" },
|
{ RIG_MODE_FM, "FM" },
|
||||||
{ RIG_MODE_FMN, "FMN" },
|
{ RIG_MODE_FMN, "FMN" },
|
||||||
|
{ RIG_MODE_FM_N, "FM-N" },
|
||||||
{ RIG_MODE_WFM, "WFM" },
|
{ RIG_MODE_WFM, "WFM" },
|
||||||
{ RIG_MODE_CWR, "CWR" },
|
{ RIG_MODE_CWR, "CWR" },
|
||||||
{ RIG_MODE_RTTYR, "RTTYR" },
|
{ RIG_MODE_RTTYR, "RTTYR" },
|
||||||
|
@ -334,7 +335,7 @@ static struct
|
||||||
{ RIG_MODE_SAL, "SAL" },
|
{ RIG_MODE_SAL, "SAL" },
|
||||||
{ RIG_MODE_SAH, "SAH" },
|
{ RIG_MODE_SAH, "SAH" },
|
||||||
{ RIG_MODE_DSB, "DSB"},
|
{ RIG_MODE_DSB, "DSB"},
|
||||||
{ RIG_MODE_AMN, "AM-N"},
|
{ RIG_MODE_AM_N, "AM-N"},
|
||||||
{ RIG_MODE_P25, "P25"},
|
{ RIG_MODE_P25, "P25"},
|
||||||
{ RIG_MODE_DSTAR, "D-STAR"},
|
{ RIG_MODE_DSTAR, "D-STAR"},
|
||||||
{ RIG_MODE_DPMR, "dPMR"},
|
{ RIG_MODE_DPMR, "dPMR"},
|
||||||
|
|
Ładowanie…
Reference in New Issue