int sprintf_parm_gran(char *str, setting_t parm, const gran_t gran[]) { int i, len = 0; *str = '\0'; if (parm == RIG_PARM_NONE) { return 0; } for (i = 0; i < RIG_SETTING_MAX; i++) { const char *ms; if (!(parm & rig_idx2setting(i))) { continue; } ms = rig_strparm(parm & rig_idx2setting(i)); if (!ms || !ms[0]) { if (parm != DUMMY_ALL && parm != RIG_PARM_SET(DUMMY_ALL)) { rig_debug(RIG_DEBUG_BUG, "unknown parm idx %d\n", i); } continue; } if (RIG_PARM_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; }
static int netrigctl_get_parm(RIG *rig, setting_t parm, 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, "p %s\n", rig_strparm(parm)); ret = netrigctl_transaction(rig, cmd, len, buf); if (ret <= 0) return (ret < 0) ? ret : -RIG_EPROTO; if (RIG_PARM_IS_FLOAT(parm)) val->f = atoi(buf); else val->i = atoi(buf); return RIG_OK; }
static int netrigctl_set_parm(RIG *rig, setting_t parm, value_t val) { int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; char pstr[32]; rig_debug(RIG_DEBUG_VERBOSE,"%s called\n", __FUNCTION__); if (RIG_PARM_IS_FLOAT(parm)) sprintf(pstr, "%f", val.f); else sprintf(pstr, "%d", val.i); len = sprintf(cmd, "P %s %s\n", rig_strparm(parm), pstr); ret = netrigctl_transaction(rig, cmd, len, buf); if (ret > 0) return -RIG_EPROTO; else return ret; }
int csv_parm_save(RIG *rig, const char *outfilename) { int i, ret; FILE *f; setting_t parm, get_parm = all ? 0x7fffffff : rig->state.has_get_parm; f = fopen(outfilename, "w"); if (!f) { return -1; } for (i = 0; i < RIG_SETTING_MAX; i++) { const char *ms = rig_strparm(get_parm & rig_idx2setting(i)); if (!ms || !ms[0]) { continue; } fprintf(f, "%s%c", ms, csv_sep); } rig_ext_parm_foreach(rig, print_parm_name, f); fprintf(f, "\n"); for (i = 0; i < RIG_SETTING_MAX; i++) { const char *ms; value_t val; parm = get_parm & rig_idx2setting(i); ms = rig_strparm(parm); if (!ms || !ms[0]) { continue; } ret = rig_get_parm(rig, parm, &val); if (ret != RIG_OK) { return ret; } if (RIG_PARM_IS_FLOAT(parm)) { fprintf(f, "%f%c", val.f, csv_sep); } else { fprintf(f, "%d%c", val.i, csv_sep); } } rig_ext_parm_foreach(rig, print_parm_val, f); fprintf(f, "\n"); fclose(f); return 0; }