Example #1
0
int parse_s2200_aor_mode(RIG *rig, char aormode, char aorwidth, rmode_t *mode, pbwidth_t *width)
{
    switch (aormode) {
	case SR2200_FM:		*mode = RIG_MODE_FM; break;
	case SR2200_AM:		*mode = RIG_MODE_AM; break;
	case SR2200_SFM:	*mode = RIG_MODE_FM; break;
	case SR2200_WAM:	*mode = RIG_MODE_AM; break;
	case SR2200_WFM:	*mode = RIG_MODE_WFM; break;
	default:
	    rig_debug(RIG_DEBUG_ERR,"%s: unsupported mode '%c'\n",
		      __FUNCTION__, aormode);
	    return -RIG_EPROTO;
    }

    switch (aorwidth) {
	case SR2200_FM:		*width = s_kHz(15); break;
	case SR2200_AM:		*width = s_kHz(6); break;
	case SR2200_SFM:	*width = s_kHz(6); break;
	case SR2200_WAM:	*width = s_kHz(15); break;
	case SR2200_WFM:	*width = s_kHz(300); break;
	default:
	    rig_debug(RIG_DEBUG_ERR,"%s: unsupported width %d\n",
		      __FUNCTION__, aorwidth);
	    return -RIG_EPROTO;
    }

    return RIG_OK;
}
Example #2
0
int ts2000_set_channel(RIG *rig, const channel_t *chan)
{
	rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);

	if (!rig || !chan)
		return -RIG_EINVAL;

	char buf[128];
	char mode, tx_mode = 0;
	int err;
	int tone = 0;
	

	struct kenwood_priv_caps *caps = kenwood_caps(rig);

	mode = rmode2kenwood(chan->mode, caps->mode_table);
		if (mode < 0 ) {
				rig_debug(RIG_DEBUG_ERR, "%s: unsupported mode '%s'\n",
								   __func__, rig_strrmode(chan->mode));
				return -RIG_EINVAL;
		}

	if (chan->split == RIG_SPLIT_ON) {
		tx_mode = rmode2kenwood(chan->tx_mode, caps->mode_table);
			if (tx_mode < 0 ) {
					rig_debug(RIG_DEBUG_ERR, "%s: unsupported mode '%s'\n",
	   							   __func__, rig_strrmode(chan->tx_mode));
					return -RIG_EINVAL;
			}
	}

	/* find tone */
	char sqltype = '0';
	if (chan->ctcss_tone) {
		for (; rig->caps->ctcss_list[tone] != 0; tone++) {
			if (chan->ctcss_tone == rig->caps->ctcss_list[tone])
				break;
		}
		if (chan->ctcss_tone != rig->caps->ctcss_list[tone]) tone = -1;
		else sqltype = '1';
	}else{
	  tone = -1; /* -1 because we will add 1 when outputing; this is necessary as CTCSS codes are numbered from 1 */
	}
	/* find CTCSS code */
	short code = 0;
	if (chan->ctcss_sql) {
		for (; rig->caps->ctcss_list[code] != 0; code++) {
			if (chan->ctcss_sql == rig->caps->ctcss_list[code])
				break;
		}
		if (chan->ctcss_sql != rig->caps->ctcss_list[code]) code = -1;
		else sqltype = '2';
	}else{
	  code = -1;
	}
	/* find DCS code */
	short dcscode = 0;
	if (chan->dcs_code) {
		for (; rig->caps->dcs_list[dcscode] != 0; dcscode++) {
			if (chan->dcs_code == rig->caps->dcs_list[dcscode])
				break;
		}
		if (chan->dcs_code != rig->caps->dcs_list[dcscode]) dcscode = 0;
		else sqltype = '3';
	}else{
	  dcscode = 0;
	}
	
	char shift = '0';
	if( chan->rptr_shift == RIG_RPT_SHIFT_PLUS ){
	  shift = '1';
	}
	if( chan->rptr_shift ==  RIG_RPT_SHIFT_MINUS ){
	  shift = '2';
	}
	int tstep = 0;
    if(  (chan->mode == RIG_MODE_AM) || (chan->mode == RIG_MODE_FM) ){
       switch( chan->tuning_step ){
          case s_kHz(6.25):   tstep = 1; break;
          case s_kHz(10):     tstep = 2; break;
          case s_kHz(12.5):   tstep = 3; break;
          case s_kHz(15):     tstep = 4; break;
          case s_kHz(20):     tstep = 5; break;
          case s_kHz(25):     tstep = 6; break;
          case s_kHz(30):     tstep = 7; break;
          case s_kHz(50):     tstep = 8; break;
          case s_kHz(100):    tstep = 9; break;
          default:            tstep = 0;
       }
    }else{
       switch( chan->tuning_step ){
          case s_kHz(2.5):    tstep = 1; break;
          case s_kHz(5):      tstep = 2; break;
          case s_kHz(10):     tstep = 3; break;
          default:            tstep = 0;
       }
    }

    /* P-number       2-3    4 5 6 7   8   9  101112  13 141516  */
	snprintf(buf, sizeof(buf), "MW0%03d%011u%c%c%c%02d%02d%03d%c%c%09d0%c%c%s;", 
		chan->channel_num,
		(unsigned) chan->freq,		/*  4 - frequency */
		'0' + mode,					/*  5 - mode */
		(chan->flags & RIG_CHFLAG_SKIP) ? '1' : '0',    /*  6 - lockout status */
		sqltype,					/*  7 - squelch and tone type */
		tone+1,						/*  8 - tone code */
		code+1,						/*  9 - CTCSS code */
		dcscode,					/* 10 - DCS code */
		(chan->funcs & RIG_FUNC_REV ) ? '1' : '0',/* 11 - Reverse status */
		shift,						/* 12 - shift type */
		(int) chan->rptr_offs,				/* 13 - offset frequency */
		tstep + '0',   						/* 14 - Step size */
        chan->scan_group + '0',         /* 15 - Memory group no */
		chan->channel_desc 				/* 16 - description */
		);
	rig_debug( RIG_DEBUG_VERBOSE, "The command will be: %s\n", buf );

	err = kenwood_transaction(rig, buf, NULL, 0);
	if (err != RIG_OK)
		return err;
	
    if( chan->split == RIG_SPLIT_ON ){
	  sprintf(buf, "MW1%03d%011u%c%c%c%02d%02d%03d%c%c%09d0%c%c%s;\n", 
		chan->channel_num,
		(unsigned) chan->tx_freq, 		/*  4 - frequency */
		'0' + tx_mode,     				/*  5 - mode */
		(chan->flags & RIG_CHFLAG_SKIP) ? '1' : '0',    /*  6 - lockout status */
		sqltype,					/*  7 - squelch and tone type */
		tone+1,						/*  8 - tone code */
		code+1,						/*  9 - CTCSS code */
		dcscode+1,					/* 10 - DCS code */
		(chan->funcs & RIG_FUNC_REV ) ? '1' : '0',/* 11 - Reverse status */
		shift,						/* 12 - shift type */
		(int) chan->rptr_offs,				/* 13 - offset frequency */
		tstep + '0',   						/* 14 - Step size */
        chan->scan_group + '0',         /* Memory group no */
		chan->channel_desc 				/* 16 - description */
		);
	  rig_debug( RIG_DEBUG_VERBOSE, "Split, the command will be: %s\n", buf );
	
	  err = kenwood_transaction(rig, buf, NULL, 0);
	}
	return err;
}
Example #3
0
File: pcr.c Project: DF4OR/hamlib
int
pcr_set_mode(RIG * rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
{
	struct pcr_priv_data *priv = (struct pcr_priv_data *) rig->state.priv;
	struct pcr_rcvr *rcvr = is_sub_rcvr(rig, vfo) ? &priv->sub_rcvr : &priv->main_rcvr;

	unsigned char buf[20];
	int buf_len, err;
	int pcrmode, pcrfilter;

	rig_debug(RIG_DEBUG_VERBOSE, "%s: mode = %d (%s), width = %d\n",
		  __func__, mode, rig_strrmode(mode), width);

	/* XXX? */
	if (mode == RIG_MODE_NONE)
		mode = RIG_MODE_FM;

	/*
	 * not so sure about modes and filters
	 * as I write this from manual (no testing) --SF
	 */
	switch (mode) {
	case RIG_MODE_CW:
		pcrmode = MD_CW;
		break;
	case RIG_MODE_USB:
		pcrmode = MD_USB;
		break;
	case RIG_MODE_LSB:
		pcrmode = MD_LSB;
		break;
	case RIG_MODE_AM:
		pcrmode = MD_AM;
		break;
	case RIG_MODE_WFM:
		pcrmode = MD_WFM;
		break;
	case RIG_MODE_FM:
		pcrmode = MD_FM;
		break;
	default:
		rig_debug(RIG_DEBUG_ERR, "%s: unsupported mode %d\n",
			  __func__, mode);
		return -RIG_EINVAL;
	}

	if (width == RIG_PASSBAND_NORMAL)
		width = rig_passband_normal(rig, mode);

	rig_debug(RIG_DEBUG_VERBOSE, "%s: will set to %d\n",
		  __func__, width);

	switch (width) {
		/* nop, pcrfilter already set
		 * TODO: use rig_passband_normal instead?
		 */
	case s_kHz(2.8):
		pcrfilter = FLT_2_8kHz;
		break;
	case s_kHz(6):
		pcrfilter = FLT_6kHz;
		break;
	case s_kHz(15):
		pcrfilter = FLT_15kHz;
		break;
	case s_kHz(50):
		pcrfilter = FLT_50kHz;
		break;
	case s_kHz(230):
		pcrfilter = FLT_230kHz;
		break;
	default:
		rig_debug(RIG_DEBUG_ERR, "%s: unsupported width %d\n",
			  __func__, width);
		return -RIG_EINVAL;
	}

	rig_debug(RIG_DEBUG_VERBOSE, "%s: filter set to %d (%c)\n",
		  __func__, width, pcrfilter);

	buf_len = sprintf((char *) buf, "K%c%010" PRIll "0%c0%c00",
			is_sub_rcvr(rig, vfo) ? '1':'0',
			(int64_t) rcvr->last_freq, pcrmode, pcrfilter);
	if (buf_len < 0)
		return -RIG_ETRUNC;

	err = pcr_transaction(rig, (char *) buf);
	if (err != RIG_OK)
		return err;

	rig_debug(RIG_DEBUG_VERBOSE, "%s: saving values\n",
		  __func__);

	rcvr->last_mode = pcrmode;
	rcvr->last_filter = pcrfilter;

	return RIG_OK;
}
Example #4
0
File: aor.c Project: airween/hamlib
int format8k_mode(RIG *rig, char *buf, rmode_t mode, pbwidth_t width)
{
	int aormode;

	switch (mode) {
	case RIG_MODE_AM:
		if (rig->caps->rig_model == RIG_MODEL_AR8000)
			{
				aormode = AR8K_AM;
			}
		else
			{
				switch(width) {
				case RIG_PASSBAND_NORMAL:
				case s_kHz(9): aormode = AR8K_AM; break;

				case s_kHz(12): aormode = AR8K_WAM; break;
				case s_kHz(3): aormode = AR8K_NAM; break;
				case RIG_PASSBAND_NOCHANGE: aormode = AR8K_AM; break;
				default:
					rig_debug(RIG_DEBUG_ERR,
										"%s: unsupported passband %d %d\n",
										__FUNCTION__,
										mode, width);
					return -RIG_EINVAL;
				}
			}
		break;
	case RIG_MODE_CW:       aormode = AR8K_CW; break;
	case RIG_MODE_USB:      aormode = AR8K_USB; break;
	case RIG_MODE_LSB:      aormode = AR8K_LSB; break;
	case RIG_MODE_WFM:      aormode = AR8K_WFM; break;
	case RIG_MODE_FM:
		if (rig->caps->rig_model == RIG_MODEL_AR8000)
			{
				aormode = AR8K_NFM;
			}
		else
			{
				switch(width) {
				case RIG_PASSBAND_NORMAL:
				case s_kHz(12): aormode = AR8K_NFM; break;

				case s_kHz(9): aormode = AR8K_SFM; break;
				case RIG_PASSBAND_NOCHANGE: aormode = AR8K_NFM; break;
				default:
					rig_debug(RIG_DEBUG_ERR,
										"%s: unsupported passband %d %d\n",
										__FUNCTION__,
										mode, width);
					return -RIG_EINVAL;
				}
			}
		break;
	default:
		rig_debug(RIG_DEBUG_ERR,"%s: unsupported mode %d\n",
							__FUNCTION__, mode);
		return -RIG_EINVAL;
	}

	return sprintf(buf, "MD%c", aormode);
}