]> sigrok.org Git - sigrok-cli.git/blobdiff - sigrok-cli.c
sr: Made hwcap const
[sigrok-cli.git] / sigrok-cli.c
index b5cb5af3977970b478640d16513b69c9b785963c..f13e092a0947adcd0c5cc7c40c043721bcb8269a 100644 (file)
@@ -204,11 +204,12 @@ static void show_dev_list(void)
 static void show_dev_detail(void)
 {
        struct sr_dev *dev;
-       struct sr_hwcap_option *hwo;
+       const struct sr_hwcap_option *hwo;
        const struct sr_samplerates *samplerates;
        struct sr_rational *rationals;
        uint64_t *integers;
-       int cap, *hwcaps, i;
+       const int *hwcaps;
+       int cap, i;
        char *s, *title;
        const char *charopts, **stropts;
 
@@ -332,6 +333,30 @@ static void show_dev_detail(void)
                        for (i = 0; stropts[i]; i++)
                                printf("      %s\n", stropts[i]);
 
+               } else if (hwo->hwcap == SR_HWCAP_VDIV) {
+                       /* Supported volts/div values */
+                       printf("    %s", hwo->shortname);
+                       if (sr_dev_info_get(dev, SR_DI_VDIVS,
+                                       (const void **)&rationals) != SR_OK) {
+                               printf("\n");
+                               continue;
+                       }
+                       printf(" - supported volts/div:\n");
+                       for (i = 0; rationals[i].p && rationals[i].q; i++)
+                               printf("      %s\n", sr_voltage_string( &rationals[i]));
+
+               } else if (hwo->hwcap == SR_HWCAP_COUPLING) {
+                       /* Supported coupling settings */
+                       printf("    %s", hwo->shortname);
+                       if (sr_dev_info_get(dev, SR_DI_COUPLING,
+                                       (const void **)&stropts) != SR_OK) {
+                               printf("\n");
+                               continue;
+                       }
+                       printf(" - supported coupling options:\n");
+                       for (i = 0; stropts[i]; i++)
+                               printf("      %s\n", stropts[i]);
+
                } else {
                        /* Everything else */
                        printf("    %s\n", hwo->shortname);
@@ -1116,6 +1141,12 @@ static int set_dev_options(struct sr_dev *dev, GHashTable *args)
                                ret = dev->driver->dev_config_set(dev->driver_index,
                                                sr_hwcap_options[i].hwcap, &tmp_rat);
                                break;
+                       case SR_T_RATIONAL_VOLT:
+                               if ((ret = sr_parse_voltage(value, &tmp_rat)) != SR_OK)
+                                       break;
+                               ret = dev->driver->dev_config_set(dev->driver_index,
+                                               sr_hwcap_options[i].hwcap, &tmp_rat);
+                               break;
                        default:
                                ret = SR_ERR;
                        }