示例#1
0
文件: rx340.c 项目: dh1tw/hamlib
/*
 * rx340_set_level
 * Assumes rig!=NULL
 * cannot support PREAMP and ATT both at same time (make sense though)
 */
int rx340_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{
	struct rig_state *rs = &rig->state;
	int cmd_len, retval=RIG_OK;
	char cmdbuf[32];

	switch (level) {
	case RIG_LEVEL_ATT:
		cmd_len = sprintf(cmdbuf, "K%c" EOM, val.i ? '3' : '1');
        break;

	case RIG_LEVEL_PREAMP:
		cmd_len = sprintf(cmdbuf, "K%c" EOM, val.i ? '2' : '1');
        break;

	case RIG_LEVEL_AGC:
		/* default to MEDIUM */
		cmd_len = sprintf(cmdbuf, "M%c" EOM,
				val.i==RIG_AGC_SLOW ? '3' : (
				val.i==RIG_AGC_FAST ? '1' : '2' ) );
        break;

     case RIG_LEVEL_RF:
		cmd_len = sprintf(cmdbuf, "A%d" EOM, 120-(int)(val.f*120));
        break;

    case RIG_LEVEL_SQL:
		cmd_len = sprintf(cmdbuf, "Q%d" EOM, 150-(int)(val.f*150));
        break;

    case RIG_LEVEL_NOTCHF:
		cmd_len = num_sprintf(cmdbuf, "N%f" EOM, ((float)val.i)/1e3);
        break;

    case RIG_LEVEL_IF:
		cmd_len = num_sprintf(cmdbuf, "P%f" EOM, ((float)val.i)/1e3);
        break;

    case RIG_LEVEL_CWPITCH:
        /* only in CW mode */
		cmd_len = num_sprintf(cmdbuf, "B%f" EOM, ((float)val.i)/1e3);
        break;

	default:
		rig_debug(RIG_DEBUG_ERR,"%s: Unsupported set_level %d\n",
                __func__, level);
		return -RIG_EINVAL;
	}

    retval = write_block(&rs->rigport, cmdbuf, cmd_len);
    return retval;
}
示例#2
0
文件: rs.c 项目: DF4OR/hamlib
int rs_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{
	char buf[32];
	int len, retval;

    switch (level) {
        case RIG_LEVEL_ATT:
            len = sprintf(buf, BOM "INP:ATT:STAT %s" EOM, val.i ? "ON" : "OFF");
            break;
        case RIG_LEVEL_SQL:
            /* dBuV */
            len = sprintf(buf, BOM "OUTP:SQU:THR %d" EOM, (int) (20 + val.f*20));
            break;
        case RIG_LEVEL_AF:
            len = num_sprintf(buf, BOM "SYST:AUD:VOL %.1f" EOM, val.f);
            break;
        case RIG_LEVEL_AGC:
        case RIG_LEVEL_RF:
             return -RIG_ENIMPL;
        default:
             return -RIG_EINVAL;
    }

    retval = rs_transaction(rig, buf, len, NULL, NULL);

	return retval;
}
示例#3
0
文件: rx340.c 项目: dh1tw/hamlib
/*
 * rx340_set_mode
 * Assumes rig!=NULL
 */
int rx340_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
{
	struct rig_state *rs = &rig->state;
	char dmode;
	int mdbuf_len, retval;
	char mdbuf[32];

	switch (mode) {
		case RIG_MODE_USB:      dmode = RX340_USB; break;
		case RIG_MODE_LSB:      dmode = RX340_LSB; break;
		case RIG_MODE_CW:       dmode = RX340_CW; break;
		case RIG_MODE_FM:       dmode = RX340_FM; break;
		case RIG_MODE_AM:       dmode = RX340_AM; break;
		case RIG_MODE_AMS:      dmode = RX340_SAM; break;
		case RIG_MODE_DSB:      dmode = RX340_ISB; break;
		default:
			rig_debug(RIG_DEBUG_ERR,
							"%s: unsupported mode %d\n",
							__func__, mode);
			return -RIG_EINVAL;
	}

	if (width != RIG_PASSBAND_NOCHANGE) {
		if (width == RIG_PASSBAND_NORMAL)
			width = rig_passband_normal(rig, mode);

    /*
     * Set DETECTION MODE and IF FILTER
     */
		mdbuf_len = num_sprintf(mdbuf,  "D%cI%.02f" EOM,
														dmode, (float)width/1e3);
	}
	else {
    /*
     * Set DETECTION MODE
     */
		mdbuf_len = num_sprintf(mdbuf,  "D%c" EOM, dmode);
	}
	retval = write_block(&rs->rigport, mdbuf, mdbuf_len);

	return retval;
}
示例#4
0
文件: rx340.c 项目: dh1tw/hamlib
/*
 * rx340_set_freq
 */
int rx340_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
{
	struct rig_state *rs = &rig->state;
	int freq_len, retval;
	char freqbuf[16];

	freq_len = num_sprintf(freqbuf, "F%.6f" EOM, freq/1e6);

	retval = write_block(&rs->rigport, freqbuf, freq_len);

	return retval;
}