示例#1
0
int sprintf_level(char *str, setting_t level)
{
    int i, len = 0;

    *str = '\0';

    if (level == RIG_LEVEL_NONE)
    {
        return 0;
    }

    for (i = 0; i < RIG_SETTING_MAX; i++)
    {
        const char *ms = rig_strlevel(level & rig_idx2setting(i));

        if (!ms || !ms[0])
        {
            continue;    /* unknown, FIXME! */
        }

        strcat(str, ms);
        strcat(str, " ");
        len += strlen(ms) + 1;
    }

    return len;
}
示例#2
0
int sprintf_level_gran(char *str, setting_t level, const gran_t gran[])
{
    int i, len = 0;

    *str = '\0';

    if (level == RIG_LEVEL_NONE)
    {
        return 0;
    }

    for (i = 0; i < RIG_SETTING_MAX; i++)
    {
        const char *ms;

        if (!(level & rig_idx2setting(i)))
        {
            continue;
        }

        ms = rig_strlevel(level & rig_idx2setting(i));

        if (!ms || !ms[0])
        {
            if (level != DUMMY_ALL && level != RIG_LEVEL_SET(DUMMY_ALL))
            {
                rig_debug(RIG_DEBUG_BUG, "unknown level idx %d\n", i);
            }

            continue;
        }

        if (RIG_LEVEL_IS_FLOAT(rig_idx2setting(i)))
        {
            len += sprintf(str + len,
                           "%s(%g..%g/%g) ",
                           ms,
                           gran[i].min.f,
                           gran[i].max.f,
                           gran[i].step.f);
        }
        else
        {
            len += sprintf(str + len,
                           "%s(%d..%d/%d) ",
                           ms,
                           gran[i].min.i,
                           gran[i].max.i,
                           gran[i].step.i);
        }
    }

    return len;
}
示例#3
0
文件: thd72.c 项目: mdblack98/hamlib
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;
}
示例#4
0
文件: ft100.c 项目: DF4OR/hamlib
/*
 * blind implementation of get_level.
 * Please test on real hardware and send report on hamlib mailing list
 */
int ft100_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) {

   int ret;
   float f;
   FT100_METER_INFO ft100_meter;

   if( !rig )  return -RIG_EINVAL;
   if( !val )  return -RIG_EINVAL;

   rig_debug(RIG_DEBUG_VERBOSE,"%s: %s\n", __func__, rig_strlevel(level));

   ret = ft100_send_priv_cmd(rig,FT100_NATIVE_CAT_READ_METERS);
   if (ret != RIG_OK)
	   return ret;
   ret = read_block( &rig->state.rigport, (char*)&ft100_meter, sizeof(FT100_METER_INFO));
   rig_debug(RIG_DEBUG_VERBOSE,"%s: read meters=%d\n",__func__, ret);
   if (ret < 0)
	   return ret;

   switch( level ) {

   case RIG_LEVEL_RAWSTR:
      val->i = ft100_meter.s_meter;
      break;
   case RIG_LEVEL_RFPOWER:
      val->f = (float)ft100_meter.tx_fwd_power/0xff;
      break;
   case RIG_LEVEL_SWR:
      if (ft100_meter.tx_fwd_power == 0)
	val->f = 0;
      else {
      	f = sqrt((float)ft100_meter.tx_rev_power/(float)ft100_meter.tx_fwd_power);
      	val->f = (1+f)/(1-f);
      }
      break;
   case RIG_LEVEL_ALC:
      /* need conversion ? */
      val->f = (float)ft100_meter.alc_level/0xff;
      break;
   case RIG_LEVEL_MICGAIN:
      val->f = (float)ft100_meter.mic_level/0xff;
      break;
   case RIG_LEVEL_SQL:
      val->f = (float)ft100_meter.squelch_level/0xff;
      break;
   default:
      return -RIG_EINVAL;
   }

   return RIG_OK;
}
示例#5
0
文件: netrigctl.c 项目: jnse/qtar8200
static int netrigctl_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
{
  int ret, len;
  char cmd[CMD_MAX];
  char buf[BUF_MAX];

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

  len = sprintf(cmd, "l %s\n", rig_strlevel(level));

  ret = netrigctl_transaction(rig, cmd, len, buf);
  if (ret <= 0)
	return (ret < 0) ? ret : -RIG_EPROTO;

  if (RIG_LEVEL_IS_FLOAT(level))
  	val->f = atof(buf);
  else
  	val->i = atoi(buf);

  return RIG_OK;
}
示例#6
0
文件: netrigctl.c 项目: jnse/qtar8200
static int netrigctl_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{
  int ret, len;
  char cmd[CMD_MAX];
  char buf[BUF_MAX];
  char lstr[32];

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

  if (RIG_LEVEL_IS_FLOAT(level))
	sprintf(lstr, "%f", val.f);
  else
	sprintf(lstr, "%d", val.i);

  len = sprintf(cmd, "L %s %s\n", rig_strlevel(level), lstr);

  ret = netrigctl_transaction(rig, cmd, len, buf);
  if (ret > 0)
	return -RIG_EPROTO;
  else
  	return ret;

}
示例#7
0
int main(int argc, char *argv[])
{
    time_t gentime;
    int set_or_get;
    int i;
    char *pbuf, prntbuf[512];

    rig_load_all_backends();


    printf("<TABLE BORDER=1>");
    printf("<TR><TD>Model</TD><TD>Mfg</TD><TD>Vers.</TD><TD>Status</TD>"
           "<TD>Type</TD><TD>Freq. range</TD><TD>Parameters</TD>"
           "<TD>Capabilities</TD>"
           "<TD>Get func</TD>"
           "<TD>Set func</TD>"
           "<TD>Get level</TD>"
           "<TD>Set level</TD>"
           "<TD>Get parm</TD>"
           "<TD>Set parm</TD>"
           "</TR>\n");
    rig_list_foreach(print_caps_sum, NULL);
    printf("</TABLE>\n");

    printf("<P>");

    printf("<TABLE BORDER=1>\n");
    printf("<TR><TD>Model</TD><TD>PTT</TD><TD>DCD</TD><TD>Port</TD>"
           "<TD>Speed min</TD><TD>Speed max</TD>"
           "<TD>Parm.</TD><TD>Handshake</TD><TD>Write delay</TD>"
           "<TD>Post delay</TD><TD>Timeout</TD><TD>Retry</TD></TR>\n");
    rig_list_foreach(print_caps_parameters, NULL);
    printf("</TABLE>\n");

    printf("<P>");

    printf("<TABLE BORDER=1>\n");
    printf("<TR><TD>Model</TD><TD>Freq. range</TD></TR>\n");
    rig_list_foreach(print_caps_range, NULL);
    printf("</TABLE>\n");

    printf("<P>");

    printf("<TABLE BORDER=1>\n");
    printf("<TR><TD>Model</TD><TD>Target VFO</TD>"
           "<TD>Set freq</TD><TD>Get freq</TD>"
           "<TD>Set mode</TD><TD>Get mode</TD>"
           "<TD>Set VFO</TD><TD>Get VFO</TD>"
           "<TD>Set PTT</TD><TD>Get PTT</TD><TD>Get DCD</TD>"
           "<TD>Set rptr shift</TD><TD>Get rptr shift</TD>"
           "<TD>Set rptr offs</TD><TD>Get rptr offs</TD>"
           "<TD>Set split frq</TD><TD>Get split frq</TD>"
           "<TD>Set split</TD><TD>Get split</TD>"
           "<TD>Set ts</TD><TD>Get ts</TD>"
           "<TD>Set CTCSS</TD><TD>Get CTCSS</TD>"
           "<TD>Set DCS</TD><TD>Get DCS</TD>"
           "<TD>Set Power Stat</TD><TD>Get Power Stat</TD>"
           "<TD>Set trn</TD><TD>Get trn</TD>"
           "<TD>Decode</TD><TD>Get info</TD>"
           "</TR>\n");
    rig_list_foreach(print_caps_caps, NULL);
    printf("</TABLE>\n");

    printf("<P>");

    bitmap_func = 0;
    prntbuf[0] = '\0';
    pbuf = prntbuf;

    for (i = 0; i < RIG_SETTING_MAX; i++)
    {
        setting_t func = rig_idx2setting(i);
        const char *s = rig_strfunc(func);

        if (!s)
        {
            continue;
        }

        bitmap_func |= func;
        pbuf += sprintf(pbuf, "<TD>%s</TD>", s);
    }

    printf("Has set func");
    printf("<TABLE BORDER=1>\n");
    printf("<TR><TD>Model</TD>%s</TR>\n", prntbuf);
    set_or_get = 1;
    rig_list_foreach(print_caps_func, &set_or_get);
    printf("</TABLE>\n");

    printf("<P>");

    printf("Has get func");
    printf("<TABLE BORDER=1>\n");
    printf("<TR><TD>Model</TD>%s</TR>\n", prntbuf);
    set_or_get = 0;
    rig_list_foreach(print_caps_func, &set_or_get);
    printf("</TABLE>\n");

    printf("<P>");

    bitmap_level = 0;
    prntbuf[0] = '\0';
    pbuf = prntbuf;

    for (i = 0; i < RIG_SETTING_MAX; i++)
    {
        setting_t level = rig_idx2setting(i);
        const char *s = rig_strlevel(level);

        if (!s)
        {
            continue;
        }

        bitmap_level |= level;
        pbuf += sprintf(pbuf, "<TD>%s</TD>", s);
    }

    printf("Set level");
    printf("<TABLE BORDER=1>\n");
    printf("<TR><TD>Model</TD>%s</TR>\n", prntbuf);
    set_or_get = 1;
    rig_list_foreach(print_caps_level, &set_or_get);
    printf("</TABLE>\n");

    printf("<P>");

    printf("Get level");
    printf("<TABLE BORDER=1>\n");
    printf("<TR><TD>Model</TD>%s</TR>\n", prntbuf);
    set_or_get = 0;
    rig_list_foreach(print_caps_level, &set_or_get);
    printf("</TABLE>\n");

    printf("<P>");

    bitmap_parm = 0;
    prntbuf[0] = '\0';
    pbuf = prntbuf;

    for (i = 0; i < RIG_SETTING_MAX; i++)
    {
        setting_t parm = rig_idx2setting(i);
        const char *s = rig_strparm(parm);

        if (!s)
        {
            continue;
        }

        bitmap_parm |= parm;
        pbuf += sprintf(pbuf, "<TD>%s</TD>", s);
    }

    printf("Set parm");
    printf("<TABLE BORDER=1>\n");
    printf("<TR><TD>Model</TD>%s</TR>\n", prntbuf);
    set_or_get = 1;
    rig_list_foreach(print_caps_parm, &set_or_get);
    printf("</TABLE>\n");

    printf("<P>");

    printf("Get parm");
    printf("<TABLE BORDER=1>\n");
    printf("<TR><TD>Model</TD>%s</TR>\n", prntbuf);
    set_or_get = 0;
    rig_list_foreach(print_caps_parm, &set_or_get);
    printf("</TABLE>\n");

    printf("<P>");

    time(&gentime);
    printf("Rigmatrix generated %s by %s\n", ctime(&gentime), getenv("USER"));

    printf("</body></html>\n");

    return 0;
}