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,
};
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;
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.
*
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.
*