Exemple #1
0
int barrett_set_split_vfo(RIG *rig, vfo_t rxvfo, split_t split, vfo_t txvfo)
{
    struct barrett_priv_data *priv;

    priv = rig->state.priv;

    rig_debug(RIG_DEBUG_VERBOSE, "%s called rxvfo=%s, txvfo=%s, split=%d\n",
              __FUNCTION__, rig_strvfo(rxvfo), rig_strvfo(txvfo), split);
    priv->split = split;

    return RIG_OK;
}
Exemple #2
0
int barrett_get_split_vfo(RIG *rig, vfo_t rxvfo, split_t *split, vfo_t *txvfo)
{
    struct barrett_priv_data *priv;

    priv = rig->state.priv;

    *split = priv->split;
    *txvfo = RIG_VFO_B; // constant
    rig_debug(RIG_DEBUG_VERBOSE, "%s called rxvfo=%s, txvfo=%s, split=%d\n",
              __FUNCTION__, rig_strvfo(rxvfo), rig_strvfo(*txvfo), *split);

    return RIG_OK;
}
Exemple #3
0
int barrett_get_vfo(RIG *rig, vfo_t *vfo)
{
    *vfo = RIG_VFO_A;

    if (check_vfo(*vfo) == FALSE) {
        rig_debug(RIG_DEBUG_ERR, "%s: unsupported VFO %s\n", __FUNCTION__,
                  rig_strvfo(*vfo));
        return -RIG_EINVAL;
    }

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s\n", __FUNCTION__, rig_strvfo(*vfo));

    return RIG_OK;
}
Exemple #4
0
int
pcr_set_freq(RIG * rig, vfo_t vfo, freq_t freq)
{
	struct pcr_priv_data *priv;
	struct pcr_rcvr *rcvr;
	unsigned char buf[20];
	int freq_len, err;

	rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo = %s, freq = %.0f\n",
		  __func__, rig_strvfo(vfo), freq);

	priv = (struct pcr_priv_data *) rig->state.priv;
	rcvr = is_sub_rcvr(rig, vfo) ? &priv->sub_rcvr : &priv->main_rcvr;

	freq_len = sprintf((char *) buf, "K%c%010" PRIll "0%c0%c00",
			   is_sub_rcvr(rig, vfo) ? '1':'0',
			   (int64_t) freq,
			   rcvr->last_mode, rcvr->last_filter);

	buf[freq_len] = '\0';

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

	rcvr->last_freq = freq;

	return RIG_OK;
}
Exemple #5
0
int ft847_set_freq(RIG *rig, vfo_t vfo, freq_t freq) {
  struct rig_state *rig_s;
  unsigned char p_cmd[YAESU_CMD_LENGTH]; /* sequence to send */
  int ret;

  if (!rig)
    return -RIG_EINVAL;

  rig_s = &rig->state;

  rig_debug(RIG_DEBUG_VERBOSE,"ft847: requested freq = %"PRIfreq" Hz, vfo=%s\n",
		  freq, rig_strvfo(vfo));

  ret = opcode_vfo(rig, p_cmd, FT_847_NATIVE_CAT_SET_FREQ_MAIN, vfo);
  if (ret != RIG_OK)
	  return ret;

  to_bcd_be(p_cmd,freq/10,8);	/* store bcd format in in p_cmd */

  rig_debug(RIG_DEBUG_VERBOSE,"%s: requested freq after conversion = %"PRIll" Hz \n", __func__, from_bcd_be(p_cmd,8)* 10 );

  if (rig->caps->rig_model == RIG_MODEL_FT847UNI) {
    struct ft847_priv_data *priv = (struct ft847_priv_data*)rig->state.priv;
    if (vfo == RIG_VFO_MAIN) {
      priv->freqA = freq;
      rig_debug(RIG_DEBUG_TRACE,"%s: freqA=%"PRIfreq"\n", __func__, priv->freqA);
    }
    else {
      priv->freqB = freq;
      rig_debug(RIG_DEBUG_TRACE,"%s: freqB=%"PRIfreq"\n", __func__, priv->freqB);
    }
  }

  return write_block(&rig_s->rigport, (char*)p_cmd, YAESU_CMD_LENGTH);
}
Exemple #6
0
int
gp2000_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
{
    char buf[RESPSZ], *sfunc;
    int buf_len, retval;

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s\n", __func__, rig_strvfo(vfo));

    switch (func)
    {
    case RIG_FUNC_SQL:
        sfunc = BOM "SQ00?" EOM;
        break;

    default:
        return -RIG_EINVAL;
    }

    retval = gp2000_transaction(rig, sfunc, strlen(sfunc), buf, &buf_len);

    if (retval < 0)
    {
        return retval;
    }

    // we expecte LF+"X" where X is the status
    *status = buf[2] == 1 ? 1 : 0;

    return retval;
}
Exemple #7
0
int
gp2000_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{
    char buf[64];
    int len, retval;

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s\n", __func__, rig_strvfo(vfo));

    switch (level)
    {
    case RIG_LEVEL_AF:
        len = snprintf(buf, sizeof(buf), BOM "SR%02d" EOM, (int)val.f);
        break;

    case RIG_LEVEL_SQL:
        len = snprintf(buf, sizeof(buf), BOM "SQ%1d" EOM, (int)val.f);
        break;

    case RIG_LEVEL_AGC:
    case RIG_LEVEL_RF:
        return -RIG_ENIMPL;

    default:
        return -RIG_EINVAL;
    }

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

    return retval;
}
Exemple #8
0
/*
 * barrett_get_freq
 * Assumes rig!=NULL, rig->state.priv!=NULL, freq!=NULL
 */
int barrett_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
{
    int retval;

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s\n", __FUNCTION__, rig_strvfo(vfo));
    *freq = 0;

    char *response = NULL;

    if (vfo == RIG_VFO_B) { // We treat the TX VFO as VFO_B and RX VFO as VFO_A
        retval = barrett_transaction(rig, "IT", 0, &response);
    } else {
        retval = barrett_transaction(rig, "IR", 0, &response);
    }

    if (retval != RIG_OK) {
        rig_debug(RIG_DEBUG_ERR, "%s: invalid response=\n", __FUNCTION__, response);
        return retval;
    }

    retval = sscanf(response, "%lg", freq);

    if (retval != 1) {
        rig_debug(RIG_DEBUG_ERR, "Unable to parse response\n");
        return -RIG_EPROTO;
    }

    return RIG_OK;
}
Exemple #9
0
static int thd72_set_vfo(RIG *rig, vfo_t vfo)
{
  const char *cmd;

  rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);

  switch (vfo)
  {
  case RIG_VFO_A:
  case RIG_VFO_VFO:
  case RIG_VFO_MAIN:
    cmd = "BC 0";
    rig->state.current_vfo = RIG_VFO_A;
    break;

  case RIG_VFO_B:
  case RIG_VFO_SUB:
    rig->state.current_vfo = RIG_VFO_B;
    cmd = "BC 1";
    break;

  default:
    rig_debug(RIG_DEBUG_ERR, "%s: Unsupported VFO: %s\n", __func__,
              rig_strvfo(vfo));
    return -RIG_ENTARGET;
  }

  return kenwood_simple_transaction(rig, cmd, 4);
}
Exemple #10
0
/*
 * barrett_get_ptt
 * Assumes rig!=NULL
 */
int barrett_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
{
    int retval;
    char *response = NULL;

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s\n", __FUNCTION__, rig_strvfo(vfo));

    retval = barrett_transaction(rig, "IP", 0, &response);

    if (retval != RIG_OK) {
        rig_debug(RIG_DEBUG_ERR, "%s: error response?='%s'\n", response);
        return retval;
    }

    char c = response[0];

    if (c == '1' || c == '0') {
        *ptt = c - '0';
    } else {
        rig_debug(RIG_DEBUG_ERR, "%s: error response='%s'\n", response);
        return -RIG_EPROTO;
    }

    return RIG_OK;
}
Exemple #11
0
/*
 * opcode_vfo() copy into cmd the 5 byte command designated by cmd_index,
 * and patch the opcode with VFO targetting (MAIN 0x0-, SAT RX 0x1-, SAT TX 0x2-)
 */
static int opcode_vfo(RIG *rig, unsigned char * cmd, int cmd_index, vfo_t vfo)
{
  struct ft847_priv_data *p = (struct ft847_priv_data*)rig->state.priv;

  memcpy(cmd, &ncmd[cmd_index].nseq,YAESU_CMD_LENGTH);

  /* If the sat_mode is not enabled,
   * then leave the OpCode untouched (MAIN VFO) */

  if (p->sat_mode == RIG_SPLIT_ON) {
	  switch(vfo) {
	  case RIG_VFO_CURR:
	  case RIG_VFO_MAIN:
	    cmd[4] &= 0x0f;
	    cmd[4] |= 0x10;  /* MAIN VFO -> SAT RX VFO */
	    break;
	  case RIG_VFO_SUB:
	  case RIG_VFO_TX:
	    cmd[4] &= 0x0f;
	    cmd[4] |= 0x20;  /* SAT TX VFO */
	    break;
	  default:
	    rig_debug(RIG_DEBUG_WARN,"%s: Unsupported VFO %s\n",
			    rig_strvfo(vfo));
	    return -RIG_EINVAL;		/* sorry, wrong VFO */
	  }
  }
  return RIG_OK;
}
Exemple #12
0
/*
 * gp2000_get_mode
 * Assumes rig!=NULL
 */
int
gp2000_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
{
    char buf[RESPSZ];
    int buf_len, retval;

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s\n", __func__, rig_strvfo(vfo));

#define DEM_QUERY   BOM "I?" EOM

    retval =
        gp2000_transaction(rig, DEM_QUERY, strlen(DEM_QUERY), buf, &buf_len);

    if (retval < 0)
    {
        return retval;
    }

    int nmode;
    char *pmode = "UNKNOWN";
    int n = sscanf(buf, "%*cI%d", &nmode);

    if (n != 1)
    {
        return -RIG_EPROTO;
    }

    switch (nmode)
    {
    case 1: pmode = "AM"; break;

    case 2: pmode = "USB"; break;

    case 3: pmode = "LSB"; break;

    case 5: pmode = "CW"; break;

    case 9: pmode = "FM"; break;

    case 13: pmode = "PKTUSB"; break;

    case 14: pmode = "PKTLSB"; break;
    }

    *mode = rig_parse_mode(pmode);

#define BAND_QUERY   BOM "W?" EOM
    retval =
        gp2000_transaction(rig, BAND_QUERY, strlen(BAND_QUERY), buf, &buf_len);

    if (retval < 0)
    {
        return retval;
    }

    *width = atoi(&buf[2]);

    return retval;
}
Exemple #13
0
/*
 * barrett_get_mode
 * Assumes rig!=NULL
 * Note that 2050 does not have set or get width
 */
int barrett_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
{
    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s\n", __FUNCTION__, rig_strvfo(vfo));

    char *result = NULL;
    int retval = barrett_transaction(rig, "IB", 0, &result);

    if (retval != RIG_OK) {
        rig_debug(RIG_DEBUG_ERR, "%s: bad response=%s\n", __FUNCTION__, result);
        return retval;
    }

    //dump_hex((unsigned char *)result,strlen(result));
    switch (result[1]) {
    case 'L':
        *mode = RIG_MODE_LSB;
        break;

    case 'U':
        *mode = RIG_MODE_USB;
        break;

    case 'A':
        *mode = RIG_MODE_AM;
        break;

    case 'F':
        *mode = RIG_MODE_RTTY;
        break;

    case 'C':
        *mode = RIG_MODE_CW;
        break;

    default:
        rig_debug(RIG_DEBUG_ERR, "%s: Unknown mode='%c%c'\n", __FUNCTION__,  result[0],
                  result[1]);
        return -RIG_EPROTO;
    }

    *width = 3000; // we'll default this to 3000 for now
    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s mode=%s width=%d\n", __FUNCTION__,
              rig_strvfo(vfo), rig_strrmode(*mode), *width);

    return RIG_OK;
}
Exemple #14
0
/*
 * tm_set_vfo_bc2
 * Apply to split-capable models (with BC command taking 2 args): TM-V7, TM-D700
 *
 * Assumes rig!=NULL
 */
int tmd710_set_vfo (RIG *rig, vfo_t vfo)
{
    struct kenwood_priv_data *priv = rig->state.priv;
    char vfobuf[16], ackbuf[16];
    int vfonum, txvfonum, vfomode=0;
    int retval;
    size_t ack_len;


    rig_debug(RIG_DEBUG_TRACE, "%s: called %s\n", __func__, rig_strvfo(vfo));

	switch (vfo) {
        case RIG_VFO_A:
        case RIG_VFO_VFO:
            vfonum = 0;
            /* put back split mode when toggling */
            txvfonum = (priv->split == RIG_SPLIT_ON &&
                rig->state.tx_vfo == RIG_VFO_B) ? 1 : vfonum;
            break;
        case RIG_VFO_B:
            vfonum = 1;
            /* put back split mode when toggling */
            txvfonum = (priv->split == RIG_SPLIT_ON &&
                rig->state.tx_vfo == RIG_VFO_A) ? 0 : vfonum;
            break;
        case RIG_VFO_MEM:
            /* get current band */
	  snprintf(vfobuf, 10, "BC");
            ack_len=16;
            retval = kenwood_transaction(rig, vfobuf, strlen(vfobuf), ackbuf, &ack_len);
            if (retval != RIG_OK)
                return retval;
            txvfonum = vfonum = ackbuf[3]-'0';
            vfomode = 2;
            break;

        default:
            rig_debug(RIG_DEBUG_ERR, "%s: Unsupported VFO %d\n", __func__, vfo);
            return -RIG_EVFO;
	}

	snprintf(vfobuf,9, "VM %d,%d", vfonum, vfomode);
	retval = kenwood_cmd(rig, vfobuf);
	if (retval != RIG_OK)
        return retval;

    if (vfo == RIG_VFO_MEM)
        return RIG_OK;

    snprintf(vfobuf, 15, "BC %d,%d", vfonum, txvfonum);
    retval = kenwood_cmd(rig, vfobuf);
	if (retval != RIG_OK)
        return retval;

    return RIG_OK;
}
Exemple #15
0
static int thd72_vfoc(RIG *rig, vfo_t vfo, char *vfoc)
{
  rig_debug(RIG_DEBUG_TRACE, "%s: called VFO=%s\n", __func__, rig_strvfo(vfo));
  vfo = (vfo == RIG_VFO_CURR) ? rig->state.current_vfo : vfo;

  switch (vfo)
  {
  case RIG_VFO_A:
  case RIG_VFO_MAIN: *vfoc = '0'; break;

  case RIG_VFO_B:
  case RIG_VFO_SUB: *vfoc = '1'; break;

  default:
    rig_debug(RIG_DEBUG_ERR, "%s: Unsupported VFO: %s\n", __func__,
              rig_strvfo(vfo));
    return -RIG_ENTARGET;
  }

  return RIG_OK;
}
Exemple #16
0
int
gp2000_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
{
    int retval = 0;
    char cmd[32];

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s\n", __func__, rig_strvfo(vfo));

    snprintf(cmd, sizeof(cmd), "X%1d", ptt);
    retval = gp2000_transaction(rig, cmd, strlen(cmd), NULL, NULL);
    return retval;
}
Exemple #17
0
static int thd72_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{
  int retval, lvl;
  char c, lvlc, cmd[10];

  rig_debug(RIG_DEBUG_TRACE, "%s: called VFO=%s, level=%s, val=%g\n", __func__,
            rig_strvfo(vfo), rig_strlevel(level), val.f);

  retval = thd72_vfoc(rig, vfo, &c);

  if (retval != RIG_OK)
  {
    return retval;
  }

  switch (level)
  {
  case RIG_LEVEL_RFPOWER:
    if (val.f <= 0.01) { lvlc = '2'; }
    else if (val.f <= 0.10) { lvlc = '1'; }
    else { lvlc = '0'; }

    sprintf(cmd, "PC %c,%c", c, lvlc);
    return kenwood_simple_transaction(rig, cmd, 6);

  case RIG_LEVEL_VOXGAIN:
    return thd72_set_menu_item(rig, 8, (int)(val.f * 10.0 - 0.5));

  case RIG_LEVEL_VOXDELAY:
    if (val.i > 20000) { lvl = 6; }
    else if (val.i > 10000) { lvl = val.i / 10000 + 3; }
    else { lvl = val.i / 2500; }

    return thd72_set_menu_item(rig, 9, lvl);

  case RIG_LEVEL_SQL:
    lvlc = '0' + (int)(val.f * 5);
    sprintf(cmd, "PC %c,%c", c, lvlc);
    return kenwood_simple_transaction(rig, cmd, 6);

  case RIG_LEVEL_BALANCE:
    /* FIXME - is balance 0.0 .. 1.0 or -1.0 .. 1.0? */
    lvl = (int)(val.f * 4.0);
    return thd72_set_menu_item(rig, 13, lvl);

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

  return retval;
}
Exemple #18
0
int sprintf_vfo(char *str, vfo_t vfo)
{
    int i, len = 0;
    const char *sv;

    *str = '\0';

    if (vfo == RIG_VFO_NONE)
    {
        return 0;
    }

    sv = rig_strvfo(vfo & RIG_VFO_CURR);

    if (sv && sv[0])
    {
        len += sprintf(str + len, "%s ", sv);
    }

    sv = rig_strvfo(vfo & RIG_VFO_MEM);

    if (sv && sv[0])
    {
        len += sprintf(str + len, "%s ", sv);
    }

    sv = rig_strvfo(vfo & RIG_VFO_VFO);

    if (sv && sv[0])
    {
        len += sprintf(str + len, "%s ", sv);
    }

    sv = rig_strvfo(vfo & RIG_VFO_MAIN);

    if (sv && sv[0])
    {
        len += sprintf(str + len, "%s ", sv);
    }

    sv = rig_strvfo(vfo & RIG_VFO_SUB);

    if (sv && sv[0])
    {
        len += sprintf(str + len, "%s ", sv);
    }

    for (i = 0; i < 16; i++)
    {
        sv = rig_strvfo(vfo & RIG_VFO_N(i));

        if (sv && sv[0])
        {
            len += sprintf(str + len, "%s ", sv);
        }
    }

    return len;
}
Exemple #19
0
int th_set_split_vfo (RIG *rig, vfo_t vfo, split_t split, vfo_t txvfo)
{
    struct kenwood_priv_data *priv = rig->state.priv;
    char vfobuf[16];
    int vfonum, txvfonum;
    int retval;

    rig_debug(RIG_DEBUG_TRACE, "%s: called %s\n", __func__, rig_strvfo(vfo));

    if (vfo == RIG_VFO_CURR) {
        retval = rig_get_vfo(rig, &vfo);
        if (retval != RIG_OK)
            return retval;
    }

	switch (vfo) {
        case RIG_VFO_A:
        case RIG_VFO_VFO:
            vfonum = 0;
            if (split == RIG_SPLIT_ON && txvfo != RIG_VFO_B)
                return -RIG_EINVAL;
            txvfonum = split == RIG_SPLIT_ON ? 1 : vfonum;
            break;
        case RIG_VFO_B:
            vfonum = 1;
            if (split == RIG_SPLIT_ON && txvfo != RIG_VFO_A)
                return -RIG_EINVAL;
            txvfonum = split == RIG_SPLIT_ON ? 0 : vfonum;
            break;
        default:
            return -RIG_EINVAL;
    }

    /* Set VFO mode. To be done for TX vfo also? */
	sprintf(vfobuf, "VMC %d,0", vfonum);
	retval = kenwood_cmd(rig, vfobuf);
	if (retval != RIG_OK)
        return retval;

    sprintf(vfobuf, "BC %d,%d", vfonum, txvfonum);
    retval = kenwood_cmd(rig, vfobuf);
	if (retval != RIG_OK)
        return retval;

    /* Remember whether split is on, for th_set_vfo */
    priv->split = split;

    return RIG_OK;
}
Exemple #20
0
static int netrigctl_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo)
{
  int ret, len;
  char cmd[CMD_MAX];
  char buf[BUF_MAX];

  rig_debug(RIG_DEBUG_VERBOSE,"%s called\n", __FUNCTION__);

  len = sprintf(cmd, "S %s\n", rig_strvfo(tx_vfo));

  ret = netrigctl_transaction(rig, cmd, len, buf);
  if (ret > 0)
	return -RIG_EPROTO;
  else
  	return ret;
}
Exemple #21
0
/*
 * barrett_set_mode
 * Assumes rig!=NULL
 * Note that 2050 does not have set or get width
 */
int barrett_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
{
    char cmd_buf[32], ttmode;
    int retval;

    //struct tt588_priv_data *priv = (struct tt588_priv_data *) rig->state.priv;

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s mode=%d width=%d\n", __FUNCTION__,
              rig_strvfo(vfo), mode, width);

    switch (mode) {
    case RIG_MODE_USB:
        ttmode = 'U';
        break;

    case RIG_MODE_LSB:
        ttmode = 'L';
        break;

    case RIG_MODE_CW:
        ttmode = 'C';
        break;

    case RIG_MODE_AM:
        ttmode = 'A';
        break;

    case RIG_MODE_RTTY:
        ttmode = 'F';
        break;

    default:
        rig_debug(RIG_DEBUG_ERR, "%s: unsupported mode %d\n", __FUNCTION__, mode);
        return -RIG_EINVAL;
    }

    sprintf((char *) cmd_buf, "XB%c" EOM, ttmode);

    retval = barrett_transaction(rig, cmd_buf, 0, NULL);

    if (retval < 0) {
        return retval;
    }

    return RIG_OK;
}
Exemple #22
0
/*
 * barrett_set_freq
 * assumes rig!=NULL, rig->state.priv!=NULL
 */
int barrett_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
{
    char cmd_buf[MAXCMDLEN];
    int retval;
    struct barrett_priv_data *priv = rig->state.priv;

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s freq=%.0f\n", __FUNCTION__,
              rig_strvfo(vfo), freq);

    // If we are not explicity asking for VFO_B then we'll set the receive side also
    if (vfo != RIG_VFO_B) {
        sprintf((char *) cmd_buf, "TR%08.0f", freq);
        char *response = NULL;
        retval = barrett_transaction(rig, cmd_buf, 0, &response);

        if (retval < 0) {
            return retval;
        }

        //dump_hex((unsigned char *)response, strlen(response));

        if (strncmp(response, "OK", 2) != 0) {
            rig_debug(RIG_DEBUG_ERR, "%s: Expected OK, got '%s'\n", __FUNCTION__, response);
            return -RIG_EINVAL;
        }
    }

    if (priv->split == 0
        || vfo == RIG_VFO_B) { // if we aren't in split mode we have to set the TX VFO too

        sprintf((char *) cmd_buf, "TT%08.0f", freq);
        char *response = NULL;
        retval = barrett_transaction(rig, cmd_buf, 0, &response);

        if (retval < 0) {
            return retval;
        }

        if (strncmp(response, "OK", 2) != 0) {
            rig_debug(RIG_DEBUG_ERR, "%s: Expected OK, got '%s'\n", __FUNCTION__, response);
            return -RIG_EINVAL;
        }
    }

    return RIG_OK;
}
Exemple #23
0
static int thd72_get_freq_info(RIG *rig, vfo_t vfo, char *buf)
{
  int retval;
  char c, cmd[8];

  rig_debug(RIG_DEBUG_TRACE, "%s: called VFO=%s\n", __func__, rig_strvfo(vfo));
  retval = thd72_vfoc(rig, vfo, &c);

  if (retval != RIG_OK)
  {
    return retval;
  }

  sprintf(cmd, "FO %c", c);
  retval = kenwood_transaction(rig, cmd, buf, 53);
  return RIG_OK;
}
Exemple #24
0
/*
 * gp2000_set_freq
 * Assumes rig!=NULL
 */
int
gp2000_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
{
    char freqbuf[32];
    int freq_len, retval;

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s,freq=%.0f\n", __func__,
              rig_strvfo(vfo), freq);

    freq_len =
        snprintf(freqbuf, sizeof(freqbuf), BOM "F%" PRIll ",%" PRIll EOM,
                 (int64_t) freq,
                 (int64_t) freq);
    retval = gp2000_transaction(rig, freqbuf, freq_len, NULL, NULL);

    return retval;
}
Exemple #25
0
/*
 * barrett_set_split_freq
 */
int barrett_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq)
{
    // The 2050 only has one RX and one TX VFO -- it's not treated as VFOA/VFOB
    char cmd_buf[MAXCMDLEN];

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s freq=%g\n", __FUNCTION__,
              rig_strvfo(vfo), tx_freq);

    sprintf((char *) cmd_buf, "TT%08.0f" EOM, tx_freq);

    int retval = barrett_transaction(rig, cmd_buf, 0, NULL);

    if (retval < 0) {
        return retval;
    }

    return RIG_OK;
}
Exemple #26
0
int
gp2000_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
{
    int retval = 0;
    int len;
    char buf[RESPSZ];
    char *cmd = BOM "X?" EOM;

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s\n", __func__, rig_strvfo(vfo));

    retval = gp2000_transaction(rig, cmd, strlen(cmd), buf, &len);

    if (retval < 0)
    {
        return retval;
    }

    retval = (sscanf(buf, "%*cX%1u", ptt) == 1) ? RIG_OK : -RIG_EPROTO;
    return retval;
}
Exemple #27
0
/*
 * pcr_set_vfo
 *
 * Only useful on PCR-2500 which is a double receiver.
 * Simply remember what the current VFO is for RIG_VFO_CURR.
 */
int
pcr_set_vfo(RIG * rig, vfo_t vfo)
{
	struct pcr_priv_data *priv = (struct pcr_priv_data *) rig->state.priv;

	rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo = %s\n",
		  __func__, rig_strvfo(vfo));

    switch (vfo) {
        case RIG_VFO_MAIN:
        case RIG_VFO_SUB:
            break;

        default:
            return -RIG_EINVAL;
    }

    priv->current_vfo = vfo;

    return RIG_OK;
}
Exemple #28
0
/*
 * gp2000_get_freq
 * Assumes rig!=NULL
 */
int
gp2000_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
{
    char buf[RESPSZ];
    int len, retval;

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s\n", __func__, rig_strvfo(vfo));

#define FREQ_QUERY  BOM "F?" EOM

    retval =
        gp2000_transaction(rig, FREQ_QUERY, strlen(FREQ_QUERY), buf, &len);

    if (retval < 0)
    {
        return retval;
    }

    retval = (sscanf(buf, "%*cF%" SCNfreq, freq) == 1) ? RIG_OK : -RIG_EPROTO;

    return retval;
}
Exemple #29
0
/*
 * barrett_get_level
 */
int barrett_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
{
    int retval = 0;
    char *response = NULL;

    switch (level) {
    case RIG_LEVEL_STRENGTH:
        retval = barrett_transaction(rig, "IAL", 0, &response);

        if (retval < 0) {
            rig_debug(RIG_DEBUG_ERR, "%s: invalid response=%s\n", __FUNCTION__,
                      level);
            return retval;
        }

        int strength;
        int n = sscanf(response, "%2d", &strength);

        if (n == 1) {
            val->i = strength;
        } else {
            rig_debug(RIG_DEBUG_ERR, "%s: unable to parse STRENGHT from %s\n",
                      __FUNCTION__, response);
            return -RIG_EPROTO;
        }

        break;

    default:
        rig_debug(RIG_DEBUG_ERR, "%s: unsupported level %d\n", __FUNCTION__, level);
        return -RIG_EINVAL;
    }

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s level=%d val=%d\n", __FUNCTION__,
              rig_strvfo(vfo), level, *val);

    return RIG_OK;
}
Exemple #30
0
int
gp2000_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
{
    char buf[32], *sfunc;
    int len, retval;

    rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s\n", __func__, rig_strvfo(vfo));

    switch (func)
    {
    case RIG_FUNC_SQL:
        sfunc = "SQ00";
        break;

    default:
        return -RIG_EINVAL;
    }

    len = snprintf(buf, sizeof(buf), BOM "%s %s" EOM, sfunc, status ? "1" : "0");
    retval = gp2000_transaction(rig, buf, len, NULL, NULL);

    return retval;
}