extern "C" {
#endif
+/**
+ * @file
+ *
+ * The public libsigrokdecode header file to be used by frontends.
+ *
+ * This is the only file that libsigrokdecode users (frontends) are supposed
+ * to use and include. There are other header files which get installed with
+ * libsigrokdecode, but those are not meant to be used directly by frontends.
+ *
+ * The correct way to get/use the libsigrokdecode API functions is:
+ *
+ * @code{.c}
+ * #include <sigrokdecode.h>
+ * @endcode
+ */
+
/*
* Package version macros (can be used for conditional compilation).
*/
* Use SRD_API to mark public API symbols, and SRD_PRIV for private symbols.
*
* Variables and functions marked 'static' are private already and don't
- * need SR_PRIV. However, functions which are not static (because they need
+ * need SRD_PRIV. However, functions which are not static (because they need
* to be used in other libsigrokdecode-internal files) but are also not
* meant to be part of the public libsigrokdecode API, must use SRD_PRIV.
*
* This uses the 'visibility' feature of gcc (requires gcc >= 4.0).
*
+ * This feature is not available on MinGW/Windows, as it is a feature of
+ * ELF files and MinGW/Windows uses PE files.
+ *
* Details: http://gcc.gnu.org/wiki/Visibility
*/
/* Marks public libsigrokdecode API symbols. */
+#ifndef _WIN32
#define SRD_API __attribute__((visibility("default")))
+#else
+#define SRD_API
+#endif
/* Marks private, non-public libsigrokdecode symbols (not part of the API). */
+#ifndef _WIN32
#define SRD_PRIV __attribute__((visibility("hidden")))
+#else
+#define SRD_PRIV
+#endif
/*
* When adding an output type, don't forget to...
#define SRD_MAX_NUM_PROBES 64
-/* TODO: Documentation. */
struct srd_decoder {
/** The decoder ID. Must be non-NULL and unique for all decoders. */
char *id;
SRD_API int srd_init(const char *path);
SRD_API int srd_exit(void);
SRD_API int srd_inst_option_set(struct srd_decoder_inst *di,
- GHashTable *options);
+ GHashTable *options);
SRD_API int srd_inst_probe_set_all(struct srd_decoder_inst *di,
- GHashTable *probes);
+ GHashTable *probes);
SRD_API struct srd_decoder_inst *srd_inst_new(const char *id,
- GHashTable *options);
+ GHashTable *options);
SRD_API int srd_inst_stack(struct srd_decoder_inst *di_from,
- struct srd_decoder_inst *di_to);
+ struct srd_decoder_inst *di_to);
SRD_API struct srd_decoder_inst *srd_inst_find_by_id(const char *inst_id);
-SRD_API int srd_session_start(int num_probes, int unitsize,
- uint64_t samplerate);
+SRD_API int srd_session_start(int num_probes, int unitsize, uint64_t samplerate);
SRD_API int srd_session_send(uint64_t start_samplenum, const uint8_t *inbuf,
- uint64_t inbuflen);
+ uint64_t inbuflen);
SRD_API int srd_pd_output_callback_add(int output_type,
- srd_pd_output_callback_t cb, void *cb_data);
+ srd_pd_output_callback_t cb, void *cb_data);
/*--- decoder.c -------------------------------------------------------------*/
-SRD_API GSList *srd_decoder_list(void);
+SRD_API const GSList *srd_decoder_list(void);
SRD_API struct srd_decoder *srd_decoder_get_by_id(const char *id);
SRD_API int srd_decoder_load(const char *name);
SRD_API int srd_decoder_unload(struct srd_decoder *dec);