]> sigrok.org Git - libsigrok.git/blobdiff - hwplugin.c
consistent debug msgs, rename sump to ols
[libsigrok.git] / hwplugin.c
index db0e72f135a9b3f4cba2b5db2fc55d091bef3bd8..1fd9521473336ca900240ebd1086ceade71d57e7 100644 (file)
@@ -24,6 +24,7 @@
 #include <string.h>
 #include <glib.h>
 #include <sigrok.h>
+#include "config.h"
 
 source_callback_add source_cb_add = NULL;
 source_callback_remove source_cb_remove = NULL;
@@ -37,22 +38,40 @@ GSList *plugins;
  */
 struct hwcap_option hwcap_options[] = {
        {HWCAP_SAMPLERATE, T_UINT64, "Sample rate", "samplerate"},
-       {0, 0, NULL, NULL}
+       {HWCAP_CAPTURE_RATIO, T_UINT64, "Pre-trigger capture ratio", "captureratio"},
+       {0, 0, NULL, NULL},
 };
 
+#ifdef HAVE_LA_SALEAE_LOGIC
 extern struct device_plugin saleae_logic_plugin_info;
+#endif
+#ifdef HAVE_LA_OLS
 extern struct device_plugin ols_plugin_info;
+#endif
+#ifdef HAVE_LA_ZEROPLUS_LOGIC_CUBE
 extern struct device_plugin zeroplus_logic_cube_plugin_info;
+#endif
+#ifdef HAVE_LA_ASIX_SIGMA
 extern struct device_plugin asix_sigma_plugin_info;
+#endif
 
+/* TODO: No linked list needed, this can be a simple array. */
 int load_hwplugins(void)
 {
+#ifdef HAVE_LA_SALEAE_LOGIC
        plugins =
-           g_slist_append(plugins, (gpointer *) &saleae_logic_plugin_info);
-       plugins = g_slist_append(plugins, (gpointer *) &ols_plugin_info);
+           g_slist_append(plugins, (gpointer *)&saleae_logic_plugin_info);
+#endif
+#ifdef HAVE_LA_OLS
+       plugins = g_slist_append(plugins, (gpointer *)&ols_plugin_info);
+#endif
+#ifdef HAVE_LA_ZEROPLUS_LOGIC_CUBE
        plugins = g_slist_append(plugins,
-                          (gpointer *) &zeroplus_logic_cube_plugin_info);
+                          (gpointer *)&zeroplus_logic_cube_plugin_info);
+#endif
+#ifdef HAVE_LA_ASIX_SIGMA
        plugins = g_slist_append(plugins, (gpointer *)&asix_sigma_plugin_info);
+#endif
 
        return SIGROK_OK;
 }
@@ -63,12 +82,11 @@ GSList *list_hwplugins(void)
 }
 
 struct sigrok_device_instance *sigrok_device_instance_new(int index, int status,
-                               char *vendor, char *model, char *version)
+               const char *vendor, const char *model, const char *version)
 {
        struct sigrok_device_instance *sdi;
 
-       sdi = malloc(sizeof(struct sigrok_device_instance));
-       if (!sdi)
+       if (!(sdi = malloc(sizeof(struct sigrok_device_instance))))
                return NULL;
 
        sdi->index = index;
@@ -88,7 +106,6 @@ struct sigrok_device_instance *get_sigrok_device_instance(
        struct sigrok_device_instance *sdi;
        GSList *l;
 
-       sdi = NULL;
        for (l = device_instances; l; l = l->next) {
                sdi = (struct sigrok_device_instance *)(l->data);
                if (sdi->index == device_index)
@@ -108,7 +125,9 @@ void sigrok_device_instance_free(struct sigrok_device_instance *sdi)
        case SERIAL_INSTANCE:
                serial_device_instance_free(sdi->serial);
                break;
+       default:
                /* No specific type, nothing extra to free. */
+               break;
        }
 
        free(sdi->vendor);
@@ -122,13 +141,12 @@ struct usb_device_instance *usb_device_instance_new(uint8_t bus,
 {
        struct usb_device_instance *udi;
 
-       udi = malloc(sizeof(struct usb_device_instance));
-       if (!udi)
+       if (!(udi = malloc(sizeof(struct usb_device_instance))))
                return NULL;
 
        udi->bus = bus;
        udi->address = address;
-       udi->devhdl = hdl;
+       udi->devhdl = hdl; /* TODO: Check if this is NULL? */
 
        return udi;
 }
@@ -141,12 +159,12 @@ void usb_device_instance_free(struct usb_device_instance *usb)
        /* Nothing to do for this device instance type. */
 }
 
-struct serial_device_instance *serial_device_instance_new(char *port, int fd)
+struct serial_device_instance *serial_device_instance_new(
+                                               const char *port, int fd)
 {
        struct serial_device_instance *serial;
 
-       serial = malloc(sizeof(struct serial_device_instance));
-       if (!serial)
+       if (!(serial = malloc(sizeof(struct serial_device_instance))))
                return NULL;
 
        serial->port = strdup(port);
@@ -164,27 +182,24 @@ int find_hwcap(int *capabilities, int hwcap)
 {
        int i;
 
-       for (i = 0; capabilities[i]; i++)
+       for (i = 0; capabilities[i]; i++) {
                if (capabilities[i] == hwcap)
                        return TRUE;
+       }
 
        return FALSE;
 }
 
 struct hwcap_option *find_hwcap_option(int hwcap)
 {
-       struct hwcap_option *hwo;
        int i;
 
-       hwo = NULL;
        for (i = 0; hwcap_options[i].capability; i++) {
-               if (hwcap_options[i].capability == hwcap) {
-                       hwo = &hwcap_options[i];
-                       break;
-               }
+               if (hwcap_options[i].capability == hwcap)
+                       return &hwcap_options[i];
        }
 
-       return hwo;
+       return NULL;
 }
 
 void source_remove(int fd)