* fixed RIG_PASSBAND_OLDTIME

git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@462 7ae35d74-ebe9-4afe-98af-79ac388436b8
Hamlib-1.1.1
Stéphane Fillod, F8CFE 2001-04-26 21:32:54 +00:00
rodzic 9aabe8cd29
commit f3ef65626e
6 zmienionych plików z 111 dodań i 211 usunięć

Wyświetl plik

@ -1,12 +1,12 @@
/*
* hamlib - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com)
*
* aor.c - Copyright (C) 2000 Stephane Fillod
* aor.c - Copyright (C) 2000,2001 Stephane Fillod
* This shared library provides an API for communicating
* via serial interface to an AOR scanner.
*
*
* $Id: aor.c,v 1.6 2001-04-22 13:57:39 f4cfe Exp $
* $Id: aor.c,v 1.7 2001-04-26 21:28:59 f4cfe Exp $
*
*
*
@ -167,13 +167,11 @@ int aor_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
switch (mode) {
case RIG_MODE_AM:
switch(width) {
case RIG_PASSBAND_NORMAL: aormode = MD_AM; break;
#ifdef RIG_PASSBAND_OLDTIME
case RIG_PASSBAND_WIDE: aormode = MD_WAM; break;
case RIG_PASSBAND_NARROW: aormode = MD_NAM; break;
#else
/* TODO */
#endif
case RIG_PASSBAND_NORMAL:
case kHz(9): aormode = MD_AM; break;
case kHz(12): aormode = MD_WAM; break;
case kHz(3): aormode = MD_NAM; break;
default:
rig_debug(RIG_DEBUG_ERR,
"aor_set_mode: unsupported passband %d %d\n",
@ -184,15 +182,13 @@ int aor_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
case RIG_MODE_CW: aormode = MD_CW; break;
case RIG_MODE_USB: aormode = MD_USB; break;
case RIG_MODE_LSB: aormode = MD_LSB; break;
case RIG_MODE_WFM: aormode = MD_WFM; break;
case RIG_MODE_FM:
switch(width) {
case RIG_PASSBAND_NORMAL: aormode = MD_NFM; break;
#ifdef RIG_PASSBAND_OLDTIME
case RIG_PASSBAND_WIDE: aormode = MD_WFM; break;
case RIG_PASSBAND_NARROW: aormode = MD_SFM; break;
#else
/* TODO */
#endif
case RIG_PASSBAND_NORMAL:
case kHz(12): aormode = MD_NFM; break;
case kHz(9): aormode = MD_SFM; break;
default:
rig_debug(RIG_DEBUG_ERR,
"aor_set_mode: unsupported passband %d %d\n",
@ -200,8 +196,6 @@ int aor_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
return -RIG_EINVAL;
}
break;
case RIG_MODE_WFM: aormode = MD_WFM; break;
case RIG_MODE_RTTY:
default:
rig_debug(RIG_DEBUG_ERR,"aor_set_mode: unsupported mode %d\n",
mode);
@ -243,39 +237,28 @@ int aor_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
case MD_AM: *mode = RIG_MODE_AM; break;
case MD_NAM:
*mode = RIG_MODE_AM;
#ifdef RIG_PASSBAND_OLDTIME
*width = RIG_PASSBAND_NARROW;
#else
/* FIXME! */
#endif
*width = rig_passband_narrow(rig, *mode);
break;
case MD_WAM:
*mode = RIG_MODE_AM;
#ifdef RIG_PASSBAND_OLDTIME
*width = RIG_PASSBAND_WIDE;
#else
/* FIXME! */
#endif
*width = rig_passband_wide(rig, *mode);
break;
case MD_CW: *mode = RIG_MODE_CW; break;
case MD_USB: *mode = RIG_MODE_USB; break;
case MD_LSB: *mode = RIG_MODE_LSB; break;
case MD_WFM: *mode = RIG_MODE_WFM; break;
case MD_NFM: *mode = RIG_MODE_FM; break;
case MD_SFM:
*mode = RIG_MODE_FM;
#ifdef RIG_PASSBAND_OLDTIME
*width = RIG_PASSBAND_NARROW;
#else
/* FIXME! */
#endif
break;
case MD_WFM: *mode = RIG_MODE_WFM;
*width = rig_passband_narrow(rig, *mode);
break;
default:
rig_debug(RIG_DEBUG_ERR,"aor_get_mode: unsupported mode %d\n",
ackbuf[0]);
return -RIG_EINVAL;
}
if (*width != RIG_PASSBAND_NORMAL)
*width = rig_passband_normal(rig, *mode);
return RIG_OK;
}

Wyświetl plik

@ -6,7 +6,7 @@
* CI-V interface, used in serial communication to ICOM radios.
*
*
* $Id: frame.c,v 1.9 2001-04-22 13:57:39 f4cfe Exp $
* $Id: frame.c,v 1.10 2001-04-26 21:31:01 f4cfe Exp $
*
*
*
@ -196,10 +196,12 @@ int read_icom_frame(FILE *stream, unsigned char rxbuffer[], int timeout)
/*
* TODO: be more exhaustive
* assumes rig!=NULL
*/
unsigned short hamlib2icom_mode(rmode_t mode, pbwidth_t width)
unsigned short rig2icom_mode(RIG *rig, rmode_t mode, pbwidth_t width)
{
int icmode, icmode_ext;
pbwidth_t norm_width;
icmode_ext = 0;
@ -209,25 +211,28 @@ unsigned short hamlib2icom_mode(rmode_t mode, pbwidth_t width)
case RIG_MODE_USB: icmode = S_USB; break;
case RIG_MODE_LSB: icmode = S_LSB; break;
case RIG_MODE_RTTY: icmode = S_RTTY; break;
case RIG_MODE_FM:
#ifdef RIG_PASSBAND_OLDTIME
icmode = width==RIG_PASSBAND_WIDE?S_WFM:S_FM;
icmode_ext = width==RIG_PASSBAND_NARROW?0x02:0x00;
#else
icmode = S_FM;
/* FIXME: */
icmode_ext = width!=RIG_PASSBAND_NORMAL?0x00:0x02;
#endif
break;
case RIG_MODE_FM: icmode = S_FM; break;
case RIG_MODE_WFM: icmode = S_WFM; break;
default:
rig_debug(RIG_DEBUG_ERR,"icom: Unsupported Hamlib mode %d\n",mode);
icmode = 0xff;
}
norm_width = rig_passband_normal(rig, mode);
if (width == norm_width || width == RIG_PASSBAND_NORMAL)
icmode_ext = 0x00;
else if (width < norm_width)
icmode_ext = 0x02;
else
icmode_ext = 0x01;
return (icmode_ext<<8 | icmode);
}
void icom2hamlib_mode(unsigned short icmode, rmode_t *mode, pbwidth_t *width)
/*
* assumes rig!=NULL, mode!=NULL, width!=NULL
*/
void icom2rig_mode(RIG *rig, unsigned short icmode, rmode_t *mode, pbwidth_t *width)
{
*width = RIG_PASSBAND_NORMAL;
@ -235,18 +240,25 @@ void icom2hamlib_mode(unsigned short icmode, rmode_t *mode, pbwidth_t *width)
case S_AM: *mode = RIG_MODE_AM; break;
case S_CW: *mode = RIG_MODE_CW; break;
case S_FM: *mode = RIG_MODE_FM; 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_LSB: *mode = RIG_MODE_LSB; break;
case S_RTTY: *mode = RIG_MODE_RTTY; break;
case 0xff: mode = 0; break; /* blank mem channel */
case 0xff: *mode = RIG_MODE_NONE; break; /* blank mem channel */
default:
rig_debug(RIG_DEBUG_ERR,"icom: Unsupported Icom mode %#.2x\n",
icmode);
*mode = 0;
*mode = RIG_MODE_NONE;
}
switch ((icmode>>8) & 0xff00) {
case 0x00: *width = rig_passband_narrow(rig, *mode); break;
case 0x01: *width = rig_passband_normal(rig, *mode); break;
case 0x02: *width = rig_passband_wide(rig, *mode); break;
default:
rig_debug(RIG_DEBUG_ERR,"icom: Unsupported Icom mode width %#.2x\n",
icmode);
*width = RIG_PASSBAND_NORMAL;
}
}

Wyświetl plik

@ -1,12 +1,12 @@
/*
* hamlib - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com)
*
* frame.h - Copyright (C) 2000 Stephane Fillod
* frame.h - Copyright (C) 2000,2001 Stephane Fillod
* This shared library provides an API for communicating
* via serial interface to an ICOM using the "CI-V" interface.
*
*
* $Id: frame.h,v 1.4 2000-12-04 23:39:17 f4cfe Exp $
* $Id: frame.h,v 1.5 2001-04-26 21:31:01 f4cfe Exp $
*
*
* This program is free software; you can redistribute it and/or
@ -38,8 +38,8 @@ int make_cmd_frame(char frame[], char re_id, char cmd, int subcmd, const char *d
int icom_transaction (RIG *rig, int cmd, int subcmd, const char *payload, int payload_len, char *data, int *data_len);
int read_icom_frame(FILE *stream, unsigned char rxbuffer[], int timeout);
unsigned short hamlib2icom_mode(rmode_t mode, pbwidth_t width);
void icom2hamlib_mode(unsigned short icmode, rmode_t *mode, pbwidth_t *width);
unsigned short rig2icom_mode(RIG *rig, rmode_t mode, pbwidth_t width);
void icom2rig_mode(RIG *rig, unsigned short icmode, rmode_t *mode, pbwidth_t *width);
#endif /* _FRAME_H */

Wyświetl plik

@ -6,7 +6,7 @@
* via serial interface to an ICOM using the "CI-V" interface.
*
*
* $Id: icom.c,v 1.22 2001-03-04 23:05:18 f4cfe Exp $
* $Id: icom.c,v 1.23 2001-04-26 21:31:01 f4cfe Exp $
*
*
*
@ -214,7 +214,6 @@ int icom_init(RIG *rig)
struct icom_priv_data *priv;
const struct icom_priv_caps *priv_caps;
const struct rig_caps *caps;
int i;
if (!rig || !rig->caps)
return -RIG_EINVAL;
@ -243,48 +242,6 @@ int icom_init(RIG *rig)
priv->re_civ_addr = 0x00;
/* to be removed soon */
#if 0
for (i=0; icom_addr_list[i].model >= 0; i++) {
if (icom_addr_list[i].model == caps->rig_model) {
priv->re_civ_addr = icom_addr_list[i].re_civ_addr;
break;
}
}
if (caps->rig_model == RIG_MODEL_IC731 ||
caps->rig_model == RIG_MODEL_IC735)
priv->civ_731_mode = 1;
else
priv->civ_731_mode = 0;
switch (caps->rig_model) {
case RIG_MODEL_IC737:
priv->ts_sc_list = ic737_ts_sc_list;
break;
case RIG_MODEL_ICR7100:
case RIG_MODEL_ICR72:
priv->ts_sc_list = r7100_ts_sc_list;
break;
case RIG_MODEL_IC756:
priv->ts_sc_list = ic756_ts_sc_list;
break;
case RIG_MODEL_ICR75:
priv->ts_sc_list = r75_ts_sc_list;
break;
case RIG_MODEL_ICR8500:
priv->ts_sc_list = r8500_ts_sc_list;
break;
case RIG_MODEL_IC706MKIIG:
ic706mkiig_str_cal_init(rig);
case RIG_MODEL_IC706MKII:
case RIG_MODEL_ICR9000:
default:
priv->ts_sc_list = ic706_ts_sc_list;
}
#endif
priv->re_civ_addr = priv_caps->re_civ_addr;
priv->civ_731_mode = priv_caps->civ_731_mode;
memcpy(&priv->str_cal, &priv_caps->str_cal, sizeof(cal_table_t));
@ -404,7 +361,7 @@ int icom_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
rs = &rig->state;
priv = (struct icom_priv_data*)rs->priv;
icmode = hamlib2icom_mode(mode,width);
icmode = rig2icom_mode(rig, mode,width);
icmode_ext[0] = (icmode>>8) & 0xff;
icom_transaction (rig, C_SET_MODE, icmode & 0xff, icmode_ext,
@ -449,7 +406,7 @@ int icom_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
return -RIG_ERJCTED;
}
icom2hamlib_mode(modebuf[1]| modebuf[2]<<8, mode, width);
icom2rig_mode(rig, modebuf[1]| modebuf[2]<<8, mode, width);
return RIG_OK;
}
@ -635,37 +592,6 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
return RIG_OK;
}
/* will be removed soon */
#if 0
/*
* compensate strength using calibration
* assume STR_CAL_LENGTH!=0
*/
static int comp_cal_str(int str_cal_raw[], int str_cal_db[], int icom_val)
{
int i;
int interpolation;
for (i=0; i<STR_CAL_LENGTH; i++)
if (icom_val < str_cal_raw[i])
break;
if (i==0)
return STR_CAL_S0;
if (i>=STR_CAL_LENGTH)
return str_cal_db[i-1];
if (str_cal_raw[i] == str_cal_raw[i-1])
return str_cal_db[i];
/* cheap, less accurate, but no fp involved */
interpolation = ((str_cal_raw[i]-icom_val)*(str_cal_db[i]-str_cal_db[i-1]))/(str_cal_raw[i]-str_cal_raw[i-1]);
return str_cal_db[i] - interpolation;
}
#endif
/*
* icom_get_level
* Assumes rig!=NULL, rig->state.priv!=NULL, val!=NULL
@ -802,9 +728,6 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
switch (level) {
case RIG_LEVEL_STRENGTH:
#if 0
val->i = comp_cal_str(priv->str_cal_raw,priv->str_cal_db,icom_val);
#endif
val->i = rig_raw2val(icom_val, &priv->str_cal);
break;
case RIG_LEVEL_SQLSTAT:
@ -1657,7 +1580,7 @@ int icom_set_channel(RIG *rig, const channel_t *chan)
chan_len = 3+freq_len+1;
icmode = hamlib2icom_mode(chan->mode, RIG_PASSBAND_NORMAL); /* FIXME */
icmode = rig2icom_mode(rig, chan->mode, RIG_PASSBAND_NORMAL);/* FIXME */
chanbuf[chan_len++] = icmode&0xff;
chanbuf[chan_len++] = icmode>>8;
to_bcd_be(chanbuf+chan_len++,chan->att,2);
@ -1718,7 +1641,7 @@ int icom_get_channel(RIG *rig, channel_t *chan)
chan_len = 4+freq_len+1;
icom2hamlib_mode(chanbuf[chan_len] | chanbuf[chan_len+1],
icom2rig_mode(rig, chanbuf[chan_len] | chanbuf[chan_len+1],
&chan->mode, &width);
chan_len += 2;
chan->att = from_bcd_be(chanbuf+chan_len++,2);
@ -1943,7 +1866,7 @@ int icom_decode_event(RIG *rig)
break;
case C_SND_MODE:
if (rig->callbacks.mode_event) {
icom2hamlib_mode(buf[5]| buf[6]<<8, &mode, &width);
icom2rig_mode(rig, buf[5]| buf[6]<<8, &mode, &width);
return rig->callbacks.mode_event(rig,RIG_VFO_CURR,mode,width);
} else
return -RIG_ENAVAIL;

Wyświetl plik

@ -6,7 +6,7 @@
* via serial interface to an Icom PCR-1xxx radio.
*
*
* $Id: pcr.c,v 1.2 2001-04-22 13:57:39 f4cfe Exp $
* $Id: pcr.c,v 1.3 2001-04-26 21:32:32 f4cfe Exp $
*
*
*
@ -228,31 +228,30 @@ int pcr_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
case RIG_MODE_LSB: pcrmode = MD_LSB; pcrfilter = FLT_2_8kHz; break;
case RIG_MODE_AM: pcrmode = MD_AM; pcrfilter = FLT_15kHz; break;
case RIG_MODE_WFM: pcrmode = MD_WFM; pcrfilter = FLT_230kHz; break;
case RIG_MODE_FM:
pcrmode = MD_FM;
switch (width) {
case RIG_PASSBAND_NORMAL: pcrfilter = FLT_15kHz; break;
#ifdef RIG_PASSBAND_OLDTIME
case RIG_PASSBAND_NARROW: pcrfilter = FLT_6kHz; break;
case RIG_PASSBAND_WIDE:
pcrmode = MD_WFM;
pcrfilter = FLT_50kHz;
break;
#else
/* TODO */
#endif
default:
rig_debug(RIG_DEBUG_ERR,"pcr_set_mode: unsupported "
"width %d\n", width);
return -RIG_EINVAL;
}
break;
case RIG_MODE_FM: pcrmode = MD_FM; pcrfilter = FLT_15kHz; break;
default:
rig_debug(RIG_DEBUG_ERR,"pcr_set_mode: unsupported mode %d\n",
mode);
return -RIG_EINVAL;
}
switch (width) {
/* nop, pcrfilter already set
* TODO: use rig_passband_normal instead?
*/
case RIG_PASSBAND_NORMAL: break;
case kHz(2.8): pcrfilter = FLT_2_8kHz; break;
case kHz(6): pcrfilter = FLT_6kHz; break;
case kHz(15): pcrfilter = FLT_15kHz; break;
case kHz(50): pcrfilter = FLT_50kHz; break;
case kHz(230): pcrfilter = FLT_230kHz; break;
default:
rig_debug(RIG_DEBUG_ERR,"pcr_set_mode: unsupported "
"width %d\n", width);
return -RIG_EINVAL;
}
mdbuf_len = sprintf(mdbuf,"K0%010Ld0%c0%c00" CRLF, priv->last_freq,
pcrmode, pcrfilter);
@ -280,45 +279,29 @@ int pcr_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
priv = (struct pcr_priv_data *)rig->state.priv;
*width = RIG_PASSBAND_NORMAL;
switch (priv->last_mode) {
case MD_CW: *mode = RIG_MODE_CW; break;
case MD_USB: *mode = RIG_MODE_USB; break;
case MD_LSB: *mode = RIG_MODE_LSB; break;
case MD_AM: *mode = RIG_MODE_AM; break;
case MD_WFM:
*mode = RIG_MODE_WFM;
break;
case MD_FM:
*mode = RIG_MODE_FM;
switch(priv->last_filter) {
#ifdef RIG_PASSBAND_OLDTIME
case FLT_2_8kHz:
case FLT_6kHz: *width = RIG_PASSBAND_NARROW; break;
#else
case FLT_2_8kHz: *width = kHz(2.8); break;
case FLT_6kHz: *width = kHz(6); break;
#endif
/* TODO: return Hz(0) or 15kHz? */
case FLT_15kHz: *width = RIG_PASSBAND_NORMAL; break;
#ifdef RIG_PASSBAND_OLDTIME
case FLT_50kHz:
case FLT_230kHz: *width = RIG_PASSBAND_WIDE; break;
#else
case FLT_50kHz: *width = kHz(50); break;
case FLT_230kHz: *width = kHz(230); break;
#endif
default:
rig_debug(RIG_DEBUG_ERR,"pcr_get_mode: unsupported "
"width %d\n", priv->last_filter);
return -RIG_EINVAL;
}
break;
case MD_WFM: *mode = RIG_MODE_WFM; break;
case MD_FM: *mode = RIG_MODE_FM; break;
default:
rig_debug(RIG_DEBUG_ERR,"pcr_get_mode: unsupported mode %d\n",
priv->last_mode);
return -RIG_EINVAL;
}
switch(priv->last_filter) {
case FLT_2_8kHz: *width = kHz(2.8); break;
case FLT_6kHz: *width = kHz(6); break;
case FLT_15kHz: *width = kHz(15); break;
case FLT_50kHz: *width = kHz(50); break;
case FLT_230kHz: *width = kHz(230); break;
default:
rig_debug(RIG_DEBUG_ERR,"pcr_get_mode: unsupported "
"width %d\n", priv->last_filter);
return -RIG_EINVAL;
}
return RIG_OK;
}

Wyświetl plik

@ -2,13 +2,13 @@
* hamlib - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com)
*
* winradio.c - Copyright (C) 2001 pab@users.sourceforge.net
* Derived from hamlib code (C) 2000 Stephane Fillod.
* Derived from hamlib code (C) 2000,2001 Stephane Fillod.
*
* This shared library supports winradio receivers through the
* /dev/winradio API.
*
*
* $Id: winradio.c,v 1.7 2001-04-22 13:57:39 f4cfe Exp $
* $Id: winradio.c,v 1.8 2001-04-26 21:32:54 f4cfe Exp $
*
*
* This program is free software; you can redistribute it and/or
@ -77,15 +77,12 @@ int wr_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) {
case RIG_MODE_WFM: m = RMD_FMW; break;
case RIG_MODE_FM:
switch ( width ) {
#ifdef RIG_PASSBAND_OLDTIME
case RIG_PASSBAND_NARROW: m = RMD_FM6; break;
#else
/* TODO */
#endif
case RIG_PASSBAND_NORMAL: m = RMD_FMN; break;
#ifdef RIG_PASSBAND_OLDTIME
case RIG_PASSBAND_WIDE: m = RMD_FMW; break;
#endif
case RIG_PASSBAND_NORMAL:
case kHz(17):
case kHz(15): m = RMD_FMN; break;
case kHz(6): m = RMD_FM6; break;
case kHz(50): m = RMD_FMM; break;
default: return -RIG_EINVAL;
}
default: return -RIG_EINVAL;
@ -97,20 +94,22 @@ int wr_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) {
int wr_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) {
unsigned long m;
if ( ioctl(rig->state.fd, RADIO_GET_MODE, &m) ) return -RIG_EINVAL;
*width = RIG_PASSBAND_NORMAL;
switch ( m ) {
case RMD_CW: *mode = RIG_MODE_CW; *width = RIG_PASSBAND_NORMAL; break;
case RMD_AM: *mode = RIG_MODE_AM; *width = RIG_PASSBAND_NORMAL; break;
#ifdef RIG_PASSBAND_OLDTIME
case RMD_FMN: *mode = RIG_MODE_FM; *width = RIG_PASSBAND_NARROW; break;
case RMD_FM6: *mode = RIG_MODE_FM; *width = RIG_PASSBAND_NARROW; break;
#else
/* TODO */
#endif
case RMD_FMW: *mode = RIG_MODE_WFM; *width = RIG_PASSBAND_NORMAL; break;
case RMD_LSB: *mode = RIG_MODE_LSB; *width = RIG_PASSBAND_NORMAL; break;
case RMD_USB: *mode = RIG_MODE_USB; *width = RIG_PASSBAND_NORMAL; break;
case RMD_CW: *mode = RIG_MODE_CW; break;
case RMD_AM: *mode = RIG_MODE_AM; break;
case RMD_FMN: *mode = RIG_MODE_FM; break; /* 15kHz or 17kHz on WR-3100 */
case RMD_FM6: *mode = RIG_MODE_FM; break; /* 6kHz */
case RMD_FMM: *mode = RIG_MODE_FM; break; /* 50kHz */
case RMD_FMW: *mode = RIG_MODE_WFM; break;
case RMD_LSB: *mode = RIG_MODE_LSB; break;
case RMD_USB: *mode = RIG_MODE_USB; break;
default: return -RIG_EINVAL;
}
if (*width == RIG_PASSBAND_NORMAL)
*width = rig_passband_normal(rig,*mode);
return RIG_OK;
}