Add rotator funcs/levels/parms to rotator caps dump

pull/453/head
Mikael Nousiainen 2020-12-02 22:35:38 +02:00
rodzic bb315270bf
commit a661bee283
6 zmienionych plików z 99 dodań i 38 usunięć

Wyświetl plik

@ -31,6 +31,7 @@
#include "hamlib/rotator.h"
#include "dummy_common.h"
#include "register.h"
#include "idx_builtin.h"
#include "rot_dummy.h"
@ -847,7 +848,7 @@ const struct rot_caps dummy_rot_caps =
ROT_MODEL(ROT_MODEL_DUMMY),
.model_name = "Dummy",
.mfg_name = "Hamlib",
.version = "20200310.0",
.version = "20201202.0",
.copyright = "LGPL",
.status = RIG_STATUS_STABLE,
.rot_type = ROT_TYPE_AZEL,
@ -867,7 +868,7 @@ const struct rot_caps dummy_rot_caps =
.has_get_parm = DUMMY_ROT_PARM,
.has_set_parm = ROT_PARM_SET(DUMMY_ROT_PARM),
.level_gran = { [ROT_LEVEL_SPEED] = { .min = { .i = 1 }, .max = { .i = 4 }, .step = { .i = 1 } } },
.level_gran = { [ROT_LVL_SPEED] = { .min = { .i = 1 }, .max = { .i = 4 }, .step = { .i = 1 } } },
.extlevels = dummy_ext_levels,
.extfuncs = dummy_ext_funcs,

Wyświetl plik

@ -23,6 +23,7 @@
#define _IDX_BUILTIN_H 1
#include <hamlib/rig.h>
#include <hamlib/rotator.h>
/*
* only for Hamlib internal use (backend caps)
@ -185,5 +186,9 @@
#define PARM_BAT setting2idx_builtin(RIG_PARM_BAT)
#define PARM_KEYLIGHT setting2idx_builtin(RIG_PARM_KEYLIGHT)
/* Rotator levels */
#define ROT_LVL_SPEED setting2idx_builtin(ROT_LEVEL_SPEED)
#endif /* _IDX_BUILTIN_H */

Wyświetl plik

@ -33,12 +33,15 @@
#include "sprintflst.h"
#include "rigctl_parse.h"
static int print_ext(RIG *rig, const struct confparams *cfp, rig_ptr_t ptr);
void range_print(FILE *fout, const struct freq_range_list range_list[], int rx);
int range_sanity_check(const struct freq_range_list range_list[], int rx);
int ts_sanity_check(const struct tuning_step_list tuning_step[]);
static void dump_chan_caps(const channel_cap_t *chan, FILE *fout);
static int print_ext(RIG *rig, const struct confparams *cfp, rig_ptr_t ptr)
{
return print_ext_param(cfp, ptr);
}
/*
* the rig may be in rig_init state, but not opened
@ -832,41 +835,6 @@ int dumpcaps(RIG *rig, FILE *fout)
return backend_warnings;
}
static int print_ext(RIG *rig, const struct confparams *cfp, rig_ptr_t ptr)
{
int i;
fprintf((FILE *)ptr, "\t%s\n", cfp->name);
fprintf((FILE *)ptr, "\t\tType: %s\n", get_rig_conf_type(cfp->type));
fprintf((FILE *)ptr, "\t\tDefault: %s\n", cfp->dflt != NULL ? cfp->dflt : "");
fprintf((FILE *)ptr, "\t\tLabel: %s\n", cfp->label != NULL ? cfp->label : "");
fprintf((FILE *)ptr, "\t\tTooltip: %s\n",
cfp->tooltip != NULL ? cfp->tooltip : "");
switch (cfp->type)
{
case RIG_CONF_NUMERIC:
fprintf((FILE *)ptr, "\t\tRange: %g..%g/%g\n", cfp->u.n.min, cfp->u.n.max,
cfp->u.n.step);
break;
case RIG_CONF_COMBO:
fprintf((FILE *)ptr, "\t\tValues:");
for (i = 0; i < RIG_COMBO_MAX && cfp->u.c.combostr[i] != NULL; i++)
{
fprintf((FILE *)ptr, " %d=\"%s\"", i, cfp->u.c.combostr[i]);
}
fprintf((FILE *)ptr, "\n");
break;
default:
break;
}
return 1; /* process them all */
}
void range_print(FILE *fout, const struct freq_range_list range_list[], int rx)
{
int i;

Wyświetl plik

@ -34,6 +34,11 @@
#include "rotctl_parse.h"
static int print_ext(ROT *rot, const struct confparams *cfp, rig_ptr_t ptr)
{
return print_ext_param(cfp, ptr);
}
/*
* the rot may be in rot_init state, but not opened
*/
@ -41,6 +46,7 @@ int dumpcaps_rot(ROT *rot, FILE *fout)
{
const struct rot_caps *caps;
int backend_warnings = 0;
static char prntbuf[1024];
if (!rot || !rot->caps)
{
@ -140,6 +146,51 @@ int dumpcaps_rot(ROT *rot, FILE *fout)
"Post Write delay:\t%dmS\n",
caps->post_write_delay);
rot_sprintf_func(prntbuf, caps->has_get_func);
fprintf(fout, "Get functions: %s\n", prntbuf);
rot_sprintf_func(prntbuf, caps->has_set_func);
fprintf(fout, "Set functions: %s\n", prntbuf);
fprintf(fout, "Extra functions:\n");
rot_ext_func_foreach(rot, print_ext, fout);
rot_sprintf_level_gran(prntbuf, caps->has_get_level, caps->level_gran);
fprintf(fout, "Get level: %s\n", prntbuf);
if ((caps->has_get_level & RIG_LEVEL_SQLSTAT))
{
fprintf(fout, "Warning--backend uses deprecated SQLSTAT level!\n");
backend_warnings++;
}
rot_sprintf_level_gran(prntbuf, caps->has_set_level, caps->level_gran);
fprintf(fout, "Set level: %s\n", prntbuf);
if (caps->has_set_level & ROT_LEVEL_READONLY_LIST)
{
fprintf(fout, "Warning--backend can set readonly levels!\n");
backend_warnings++;
}
fprintf(fout, "Extra levels:\n");
rot_ext_level_foreach(rot, print_ext, fout);
rot_sprintf_parm_gran(prntbuf, caps->has_get_parm, caps->parm_gran);
fprintf(fout, "Get parameters: %s\n", prntbuf);
rot_sprintf_parm_gran(prntbuf, caps->has_set_parm, caps->parm_gran);
fprintf(fout, "Set parameters: %s\n", prntbuf);
if (caps->has_set_parm & ROT_PARM_READONLY_LIST)
{
fprintf(fout, "Warning--backend can set readonly parms!\n");
backend_warnings++;
}
fprintf(fout, "Extra parameters:\n");
rot_ext_parm_foreach(rot, print_ext, fout);
fprintf(fout, "Min Azimuth:\t\t%.2f\n", caps->min_az);
fprintf(fout, "Max Azimuth:\t\t%.2f\n", caps->max_az);

Wyświetl plik

@ -690,3 +690,38 @@ char *get_rig_conf_type(enum rig_conf_e type)
return "UNKNOWN";
}
int print_ext_param(const struct confparams *cfp, rig_ptr_t ptr)
{
int i;
fprintf((FILE *)ptr, "\t%s\n", cfp->name);
fprintf((FILE *)ptr, "\t\tType: %s\n", get_rig_conf_type(cfp->type));
fprintf((FILE *)ptr, "\t\tDefault: %s\n", cfp->dflt != NULL ? cfp->dflt : "");
fprintf((FILE *)ptr, "\t\tLabel: %s\n", cfp->label != NULL ? cfp->label : "");
fprintf((FILE *)ptr, "\t\tTooltip: %s\n",
cfp->tooltip != NULL ? cfp->tooltip : "");
switch (cfp->type)
{
case RIG_CONF_NUMERIC:
fprintf((FILE *)ptr, "\t\tRange: %g..%g/%g\n", cfp->u.n.min, cfp->u.n.max,
cfp->u.n.step);
break;
case RIG_CONF_COMBO:
fprintf((FILE *)ptr, "\t\tValues:");
for (i = 0; i < RIG_COMBO_MAX && cfp->u.c.combostr[i] != NULL; i++)
{
fprintf((FILE *)ptr, " %d=\"%s\"", i, cfp->u.c.combostr[i]);
}
fprintf((FILE *)ptr, "\n");
break;
default:
break;
}
return 1; /* process them all */
}

Wyświetl plik

@ -46,6 +46,7 @@ extern int rot_sprintf_parm_gran(char *str, setting_t parm, const gran_t *gran);
extern int rig_sprintf_vfop(char *str, vfo_op_t op);
extern int rig_sprintf_scan(char *str, scan_t rscan);
extern char *get_rig_conf_type(enum rig_conf_e type);
int print_ext_param(const struct confparams *cfp, rig_ptr_t ptr);
__END_DECLS