]> sigrok.org Git - libsigrok.git/blob - src/input/input.c
Reorganize project tree.
[libsigrok.git] / src / input / input.c
1 /*
2  * This file is part of the libsigrok project.
3  *
4  * Copyright (C) 2010-2012 Bert Vermeulen <bert@biot.com>
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 #include "libsigrok.h"
21 #include "libsigrok-internal.h"
22
23 /**
24  * @file
25  *
26  * Input file/data format handling.
27  */
28
29 /**
30  * @defgroup grp_input Input formats
31  *
32  * Input file/data format handling.
33  *
34  * libsigrok can process acquisition data in several different ways.
35  * Aside from acquiring data from a hardware device, it can also take it from
36  * a file in various formats (binary, CSV, VCD, and so on).
37  *
38  * Like everything in libsigrok that handles data, processing is done in a
39  * streaming manner -- input should be supplied to libsigrok a chunk at a time.
40  * This way anything that processes data can do so in real time, without the
41  * user having to wait for the whole thing to be finished.
42  *
43  * Every input module is "pluggable", meaning it's handled as being separate
44  * from the main libsigrok, but linked in to it statically. To keep things
45  * modular and separate like this, functions within an input module should be
46  * declared static, with only the respective 'struct sr_input_format' being
47  * exported for use into the wider libsigrok namespace.
48  *
49  * @{
50  */
51
52 /** @cond PRIVATE */
53 extern SR_PRIV struct sr_input_format input_chronovu_la8;
54 extern SR_PRIV struct sr_input_format input_csv;
55 extern SR_PRIV struct sr_input_format input_binary;
56 extern SR_PRIV struct sr_input_format input_vcd;
57 extern SR_PRIV struct sr_input_format input_wav;
58 /* @endcond */
59
60 static struct sr_input_format *input_module_list[] = {
61         &input_vcd,
62         &input_chronovu_la8,
63         &input_wav,
64         &input_csv,
65         /* This one has to be last, because it will take any input. */
66         &input_binary,
67         NULL,
68 };
69
70 /** @since 0.1.0 */
71 SR_API struct sr_input_format **sr_input_list(void)
72 {
73         return input_module_list;
74 }
75
76 /** @} */