#endif
void show_version(void)
+{
+ printf("sigrok-cli %s\n\n", SC_PACKAGE_VERSION_STRING);
+
+ printf("Using libsigrok %s (lib version %s).\n",
+ sr_package_version_string_get(), sr_lib_version_string_get());
+#ifdef HAVE_SRD
+ printf("Using libsigrokdecode %s (lib version %s).\n\n",
+ srd_package_version_string_get(), srd_lib_version_string_get());
+#endif
+}
+
+void show_supported(void)
{
struct sr_dev_driver **drivers, *driver;
const struct sr_input_module **inputs, *input;
struct srd_decoder *dec;
#endif
- printf("sigrok-cli %s\n\n", SC_PACKAGE_VERSION_STRING);
-
- printf("Using libsigrok %s (lib version %s).\n",
- sr_package_version_string_get(), sr_lib_version_string_get());
-#ifdef HAVE_SRD
- printf("Using libsigrokdecode %s (lib version %s).\n\n",
- srd_package_version_string_get(), srd_lib_version_string_get());
-#endif
-
printf("Supported hardware drivers:\n");
drivers = sr_driver_list(sr_ctx);
for (sl = NULL, i = 0; drivers[i]; i++)
gvar = g_variant_get_child_value(gvar_list, i);
g_variant_get(gvar, "(tt)", &p, &q);
if (srci->datatype == SR_T_RATIONAL_PERIOD)
- s = sr_period_string(p * q);
+ s = sr_period_string(p, q);
else
s = sr_voltage_string(p, q);
printf(" %s", s);
}
#ifdef HAVE_SRD
-void show_pd_detail(void)
+static void show_pd_detail_single(const char *pd)
{
struct srd_decoder *dec;
struct srd_decoder_option *o;
struct srd_decoder_annotation_row *r;
GSList *l, *ll, *ol;
int idx;
- char **pdtokens, **pdtok, *optsep, **ann, *val, *doc;
+ char **pdtokens, **pdtok, *optsep, **ann, **bin, *val, *doc, *str;
- pdtokens = g_strsplit(opt_pds, ",", -1);
+ pdtokens = g_strsplit(pd, ",", -1);
for (pdtok = pdtokens; *pdtok; pdtok++) {
/* Strip options. */
if ((optsep = strchr(*pdtok, ':')))
printf("ID: %s\nName: %s\nLong name: %s\nDescription: %s\n",
dec->id, dec->name, dec->longname, dec->desc);
printf("License: %s\n", dec->license);
+ printf("Possible decoder input IDs:\n");
+ if (dec->inputs) {
+ for (l = dec->inputs; l; l = l->next) {
+ str = l->data;
+ printf("- %s\n", str);
+ }
+ } else {
+ printf("None.\n");
+ }
+ printf("Possible decoder output IDs:\n");
+ if (dec->outputs) {
+ for (l = dec->outputs; l; l = l->next) {
+ str = l->data;
+ printf("- %s\n", str);
+ }
+ } else {
+ printf("None.\n");
+ }
printf("Annotation classes:\n");
if (dec->annotations) {
for (l = dec->annotations; l; l = l->next) {
} else {
printf("None.\n");
}
+ printf("Binary classes:\n");
+ if (dec->binary) {
+ for (l = dec->binary; l; l = l->next) {
+ bin = l->data;
+ printf("- %s: %s\n", bin[0], bin[1]);
+ }
+ } else {
+ printf("None.\n");
+ }
printf("Required channels:\n");
if (dec->channels) {
for (l = dec->channels; l; l = l->next) {
g_strfreev(pdtokens);
}
+
+void show_pd_detail(void)
+{
+ for (int i = 0; opt_pds[i]; i++)
+ show_pd_detail_single(opt_pds[i]);
+}
#endif
void show_input(void)