X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Finput%2Fchronovu_la8.c;h=e83d58229118c5503a16d07bd3afa4d91cb7fd13;hb=20358f90b40a9ecb35529b1cd64bbc44f64beff2;hp=fcafdf5c9d7ba4dee3efe7ecf1676b6c45a4f58d;hpb=8bc2fa6d820d05f88fa003baa9837ebc7663681d;p=libsigrok.git diff --git a/src/input/chronovu_la8.c b/src/input/chronovu_la8.c index fcafdf5c..e83d5822 100644 --- a/src/input/chronovu_la8.c +++ b/src/input/chronovu_la8.c @@ -29,7 +29,7 @@ #define DEFAULT_NUM_CHANNELS 8 #define DEFAULT_SAMPLERATE SR_MHZ(100) -#define CHUNK_SIZE (4 * 1024) +#define CHUNK_SIZE (4 * 1024 * 1024) #define CHRONOVU_LA8_FILESIZE ((8 * 1024 * 1024) + 5) struct context { @@ -37,16 +37,23 @@ struct context { uint64_t samplerate; }; -static int format_match(GHashTable *metadata) +static int format_match(GHashTable *metadata, unsigned int *confidence) { - int size; - - size = GPOINTER_TO_INT(g_hash_table_lookup(metadata, + uint64_t size; + + /* + * In the absence of a reliable condition like magic strings, + * we can only guess based on the file size. Since this is + * rather weak a condition, signal "little confidence" and + * optionally give precedence to better matches. + */ + size = GPOINTER_TO_SIZE(g_hash_table_lookup(metadata, GINT_TO_POINTER(SR_INPUT_META_FILESIZE))); - if (size == CHRONOVU_LA8_FILESIZE) - return SR_OK; + if (size != CHRONOVU_LA8_FILESIZE) + return SR_ERR; + *confidence = 100; - return SR_ERR; + return SR_OK; } static int init(struct sr_input *in, GHashTable *options) @@ -181,8 +188,8 @@ static const struct sr_option *get_options(void) SR_PRIV struct sr_input_module input_chronovu_la8 = { .id = "chronovu-la8", - .name = "Chronovu-LA8", - .desc = "ChronoVu LA8", + .name = "ChronoVu LA8", + .desc = "ChronoVu LA8 native file format data", .exts = (const char*[]){"kdt", NULL}, .metadata = { SR_INPUT_META_FILESIZE | SR_INPUT_META_REQUIRED }, .options = get_options,