X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=include%2Flibsigrok%2Flibsigrok.h;h=cadb88e881f1913723511fb14688ae7a9a224ac2;hb=edd28877cc74f9f0c063910d3cc24729db67f3f4;hp=3a2c900accc14b8132c01c9d6d66edd136477b67;hpb=63d0fb752830fa8ea225ed9a9776e44a0ba66928;p=libsigrok.git diff --git a/include/libsigrok/libsigrok.h b/include/libsigrok/libsigrok.h index 3a2c900a..cadb88e8 100644 --- a/include/libsigrok/libsigrok.h +++ b/include/libsigrok/libsigrok.h @@ -64,6 +64,7 @@ extern "C" { /** Status/error codes returned by libsigrok functions. */ enum sr_error_code { + SR_OK_CONTINUE = 1, /**< Keep going. */ SR_OK = 0, /**< No error. */ SR_ERR = -1, /**< Generic/unspecified error. */ SR_ERR_MALLOC = -2, /**< Malloc/calloc/realloc error. */ @@ -74,6 +75,7 @@ enum sr_error_code { SR_ERR_DEV_CLOSED = -7, /**< Device is closed, but must be open. */ SR_ERR_TIMEOUT = -8, /**< A timeout occurred. */ SR_ERR_CHANNEL_GROUP = -9, /**< A channel group must be specified. */ + SR_ERR_DATA =-10, /**< Data is invalid. */ /* * Note: When adding entries here, don't forget to also update the @@ -429,174 +431,24 @@ struct sr_datafeed_analog { float *data; }; -/** Input (file) format struct. */ -struct sr_input { - /** - * A pointer to this input format's 'struct sr_input_format'. - * The frontend can use this to call the module's callbacks. - */ - struct sr_input_format *format; - - GHashTable *param; - - struct sr_dev_inst *sdi; - - void *internal; -}; - -/** Input (file) format driver. */ -struct sr_input_format { - /** The unique ID for this input format. Must not be NULL. */ +/** Generic option struct used by various subsystems. */ +struct sr_option { + /* Short name suitable for commandline usage, [a-z0-9-]. */ char *id; - - /** - * A short description of the input format, which can (for example) - * be displayed to the user by frontends. Must not be NULL. - */ - char *description; - - /** - * Check if this input module can load and parse the specified file. - * - * @param[in] filename The name (and path) of the file to check. - * - * @retval TRUE This module knows the format. - * @retval FALSE This module does not know the format. - */ - int (*format_match) (const char *filename); - - /** - * Initialize the input module. - * - * @param in A pointer to a valid 'struct sr_input' that the caller - * has to allocate and provide to this function. It is also - * the responsibility of the caller to free it later. - * @param[in] filename The name (and path) of the file to use. - * - * @retval SR_OK Success - * @retval other Negative error code. - */ - int (*init) (struct sr_input *in, const char *filename); - - /** - * Load a file, parsing the input according to the file's format. - * - * This function will send datafeed packets to the session bus, so - * the calling frontend must have registered its session callbacks - * beforehand. - * - * The packet types sent across the session bus by this function must - * include at least SR_DF_HEADER, SR_DF_END, and an appropriate data - * type such as SR_DF_LOGIC. It may also send a SR_DF_TRIGGER packet - * if appropriate. - * - * @param in A pointer to a valid 'struct sr_input' that the caller - * has to allocate and provide to this function. It is also - * the responsibility of the caller to free it later. - * @param filename The name (and path) of the file to use. - * - * @retval SR_OK Success - * @retval other Negative error code. - */ - int (*loadfile) (struct sr_input *in, const char *filename); -}; - -/** Output (file) format struct. */ -struct sr_output { - /** A pointer to this output's format. */ - struct sr_output_format *format; - - /** - * The device for which this output module is creating output. This - * can be used by the module to find out channel names and numbers. - */ - const struct sr_dev_inst *sdi; - - /** - * An optional parameter which the frontend can pass in to the - * output module. How the string is interpreted is entirely up to - * the module. - */ - GHashTable *params; - - /** - * A generic pointer which can be used by the module to keep internal - * state between calls into its callback functions. - * - * For example, the module might store a pointer to a chunk of output - * there, and only flush it when it reaches a certain size. - */ - void *internal; + /* Short name suitable for GUI usage, can contain UTF-8. */ + char *name; + /* Description of the option, in a sentence. */ + char *desc; + /* Default value for this option. */ + GVariant *def; + /* List of possible values, if this is an option with few values. */ + GSList *values; }; -/** Output (file) format driver. */ -struct sr_output_format { - /** - * A unique ID for this output format. Must not be NULL. - * - * It can be used by frontends to select this output format for use. - * - * For example, calling sigrok-cli with -O hex will - * select the hexadecimal text output format. - */ - char *id; - - /** - * A short description of the output format. Must not be NULL. - * - * This can be displayed by frontends, e.g. when selecting the output - * format for saving a file. - */ - char *description; - - /** - * This function is called once, at the beginning of an output stream. - * - * The device struct will be available in the output struct passed in, - * as well as the param field -- which may be NULL or an empty string, - * if no parameter was passed. - * - * The module can use this to initialize itself, create a struct for - * keeping state and storing it in the internal field. - * - * @param o Pointer to the respective 'struct sr_output'. - * - * @retval SR_OK Success - * @retval other Negative error code. - */ - int (*init) (struct sr_output *o); - - /** - * This function is passed a copy of every packed in the data feed. - * Any output generated by the output module in response to the - * packet should be returned in a newly allocated GString - * out, which will be freed by the caller. - * - * Packets not of interest to the output module can just be ignored, - * and the out parameter set to NULL. - * - * @param o Pointer to the respective 'struct sr_output'. - * @param sdi The device instance that generated the packet. - * @param packet The complete packet. - * @param out A pointer where a GString * should be stored if - * the module generates output, or NULL if not. - * - * @retval SR_OK Success - * @retval other Negative error code. - */ - int (*receive) (struct sr_output *o, - const struct sr_datafeed_packet *packet, GString **out); - - /** - * This function is called after the caller is finished using - * the output module, and can be used to free any internal - * resources the module may keep. - * - * @retval SR_OK Success - * @retval other Negative error code. - */ - int (*cleanup) (struct sr_output *o); -}; +struct sr_input; +struct sr_input_module; +struct sr_output; +struct sr_output_module; /** Constants for channel type. */ enum sr_channeltype { @@ -836,6 +688,9 @@ enum sr_configkey { /** Choice of clock edge for external clock ("r" or "f"). */ SR_CONF_CLOCK_EDGE, + /** Amplitude of a source without strictly-defined MQ. */ + SR_CONF_AMPLITUDE, + /*--- Special stuff -------------------------------------------------*/ /** Scan options supported by the driver. */