doxygen: Add more input format docs.

This is largely taken from the respective wiki page (with some updates
and improvements), which will be removed in favor of the doxygen docs.
This commit is contained in:
Uwe Hermann 2013-02-21 21:27:27 +01:00
parent 1d36b4d27f
commit 8368734386
2 changed files with 68 additions and 0 deletions

View File

@ -31,6 +31,21 @@
* *
* Input file/data format handling. * Input file/data format handling.
* *
* libsigrok can process acquisition data in several different ways.
* Aside from acquiring data from a hardware device, it can also take it from
* a file in various formats (binary, CSV, VCD, and so on).
*
* Like everything in libsigrok that handles data, processing is done in a
* streaming manner -- input should be supplied to libsigrok a chunk at a time.
* This way anything that processes data can do so in real time, without the
* user having to wait for the whole thing to be finished.
*
* Every input module is "pluggable", meaning it's handled as being separate
* from the main libsigrok, but linked in to it statically. To keep things
* modular and separate like this, functions within an input module should be
* declared static, with only the respective 'struct sr_input_format' being
* exported for use into the wider libsigrok namespace.
*
* @{ * @{
*/ */

View File

@ -300,18 +300,71 @@ struct sr_datafeed_analog {
float *data; float *data;
}; };
/** Input (file) format struct. */
struct sr_input { 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; struct sr_input_format *format;
GHashTable *param; GHashTable *param;
struct sr_dev_inst *sdi; struct sr_dev_inst *sdi;
void *internal; void *internal;
}; };
struct sr_input_format { struct sr_input_format {
/** The unique ID for this input format. Must not be NULL. */
char *id; 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; char *description;
/**
* Check if this input module can load and parse the specified file.
*
* @param filename The name (and path) of the file to check.
*
* @return TRUE if this module knows the format, FALSE if it doesn't.
*/
int (*format_match) (const char *filename); 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 filename The name (and path) of the file to use.
*
* @return SR_OK upon success, a negative error code upon failure.
*/
int (*init) (struct sr_input *in, const char *filename); 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.
*
* @return SR_OK upon success, a negative error code upon failure.
*/
int (*loadfile) (struct sr_input *in, const char *filename); int (*loadfile) (struct sr_input *in, const char *filename);
}; };