X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Finput%2Finput.c;h=f99902d317c6b4497f520ac5a19738273f413d6b;hb=0417ada03e6dc816472802c8263a1d23d872c618;hp=e93925d2b1c590572d7eb5b66ad7fa839b57d283;hpb=4619fab47acf4fb0a1c035072c2e8552b4bcbae3;p=libsigrok.git diff --git a/src/input/input.c b/src/input/input.c index e93925d2..f99902d3 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -62,16 +62,20 @@ extern SR_PRIV struct sr_input_module input_chronovu_la8; extern SR_PRIV struct sr_input_module input_csv; extern SR_PRIV struct sr_input_module input_binary; +extern SR_PRIV struct sr_input_module input_trace32_ad; extern SR_PRIV struct sr_input_module input_vcd; extern SR_PRIV struct sr_input_module input_wav; +extern SR_PRIV struct sr_input_module input_raw_analog; /* @endcond */ static const struct sr_input_module *input_module_list[] = { &input_binary, &input_chronovu_la8, &input_csv, + &input_trace32_ad, &input_vcd, &input_wav, + &input_raw_analog, NULL, }; @@ -242,7 +246,7 @@ SR_API struct sr_input *sr_input_new(const struct sr_input_module *imod, GHashTable *options) { struct sr_input *in; - struct sr_option *mod_opts; + const struct sr_option *mod_opts; const GVariantType *gvt; GHashTable *new_opts; GHashTableIter iter; @@ -403,43 +407,6 @@ SR_API int sr_input_scan_buffer(GString *buf, const struct sr_input **in) return ret; } -/** Retrieve the size of the open stream @a file. - * This function only works on seekable streams. However, the set of seekable - * streams is generally congruent with the set of streams that have a size. - * Code that needs to work with any type of stream (including pipes) should - * require neither seekability nor advance knowledge of the size. - * On failure, the return value is negative and errno is set. - * @param file An I/O stream opened in binary mode. - * @return The size of @a file in bytes, or a negative value on failure. - */ -SR_PRIV int64_t sr_file_get_size(FILE *file) -{ - off_t filepos, filesize; - - /* ftello() and fseeko() are not standard C, but part of POSIX.1-2001. - * Thus, if these functions are available at all, they can reasonably - * be expected to also conform to POSIX semantics. In particular, this - * means that ftello() after fseeko(..., SEEK_END) has a defined result - * and can be used to get the size of a seekable stream. - * On Windows, the result is fully defined only for binary streams. - */ - filepos = ftello(file); - if (filepos < 0) - return -1; - - if (fseeko(file, 0, SEEK_END) < 0) - return -1; - - filesize = ftello(file); - if (filesize < 0) - return -1; - - if (fseeko(file, filepos, SEEK_SET) < 0) - return -1; - - return filesize; -} - /** * Try to find an input module that can parse the given file. * @@ -592,6 +559,27 @@ SR_API int sr_input_end(const struct sr_input *in) return in->module->end((struct sr_input *)in); } +/** + * Reset the input module's input handling structures. + * + * Causes the input module to reset its internal state so that we can re-send + * the input data from the beginning without having to re-create the entire + * input module. + * + * @since 0.5.0 + */ +SR_API int sr_input_reset(const struct sr_input *in) +{ + if (!in->module->reset) { + sr_spew("Tried to reset %s module but no reset handler found.", + in->module->id); + return SR_OK; + } + + sr_spew("Resetting %s module.", in->module->id); + return in->module->reset((struct sr_input *)in); +} + /** * Free the specified input instance and all associated resources. *