Merge pull request #396 from fanthos/master
[project/luci.git] / applications / luci-app-dump1090 / luasrc / model / cbi / dump1090.lua
1 -- Copyright 2014-2015 Álvaro Fernández Rojas <noltari@gmail.com>
2 -- Licensed to the public under the Apache License 2.0.
3
4 m = Map("dump1090", "dump1090", translate("dump1090 is a Mode S decoder specifically designed for RTLSDR devices, here you can configure the settings."))
5
6 s = m:section(TypedSection, "dump1090", "")
7 s.addremove = true
8 s.anonymous = false
9
10 enable=s:option(Flag, "disabled", translate("Enabled"))
11 enable.enabled="0"
12 enable.disabled="1"
13 enable.default = "1"
14 enable.rmempty = false
15
16 respawn=s:option(Flag, "respawn", translate("Respawn"))
17 respawn.default = false
18
19 device_index=s:option(Value, "device_index", translate("RTL device index"))
20 device_index.rmempty = true
21 device_index.datatype = "uinteger"
22
23 gain=s:option(Value, "gain", translate("Gain (-10 for auto-gain)"))
24 gain.rmempty = true
25 gain.datatype = "integer"
26
27 enable_agc=s:option(Flag, "enable_agc", translate("Enable automatic gain control"))
28 enable_agc.default = false
29
30 freq=s:option(Value, "freq", translate("Frequency"))
31 freq.rmempty = true
32 freq.datatype = "uinteger"
33
34 ifile=s:option(Value, "ifile", translate("Data file"))
35 ifile.rmempty = true
36 ifile.datatype = "file"
37
38 iformat=s:option(ListValue, "iformat", translate("Sample format for data file"))
39 iformat:value("", translate("Default"))
40 iformat:value("UC8")
41 iformat:value("SC16")
42 iformat:value("SC16Q11")
43
44 throttle=s:option(Flag, "throttle", translate("When reading from a file play back in realtime, not at max speed"))
45 throttle.default = false
46
47 raw=s:option(Flag, "raw", translate("Show only messages hex values"))
48 raw.default = false
49
50 net=s:option(Flag, "net", translate("Enable networking"))
51
52 modeac=s:option(Flag, "modeac", translate("Enable decoding of SSR Modes 3/A & 3/C"))
53 modeac.default = false
54
55 net_beast=s:option(Flag, "net_beast", translate("TCP raw output in Beast binary format"))
56 net_beast.default = false
57
58 net_only=s:option(Flag, "net_only", translate("Enable just networking, no RTL device or file used"))
59 net_only.default = false
60
61 net_bind_address=s:option(Value, "net_bind_address", translate("IP address to bind to"))
62 net_bind_address.rmempty = true
63 net_bind_address.datatype = "ipaddr"
64
65 net_http_port=s:option(Value, "net_http_port", translate("HTTP server port"))
66 net_http_port.rmempty = true
67 net_http_port.datatype = "port"
68
69 net_ri_port=s:option(Value, "net_ri_port", translate("TCP raw input listen port"))
70 net_ri_port.rmempty = true
71 net_ri_port.datatype = "port"
72
73 net_ro_port=s:option(Value, "net_ro_port", translate("TCP raw output listen port"))
74 net_ro_port.rmempty = true
75 net_ro_port.datatype = "port"
76
77 net_sbs_port=s:option(Value, "net_sbs_port", translate("TCP BaseStation output listen port"))
78 net_sbs_port.rmempty = true
79 net_sbs_port.datatype = "port"
80
81 net_bi_port=s:option(Value, "net_bi_port", translate("TCP Beast input listen port"))
82 net_bi_port.rmempty = true
83 net_bi_port.datatype = "port"
84
85 net_bo_port=s:option(Value, "net_bo_port", translate("TCP Beast output listen port"))
86 net_bo_port.rmempty = true
87 net_bo_port.datatype = "port"
88
89 net_fatsv_port=s:option(Value, "net_fatsv_port", translate("FlightAware TSV output port"))
90 net_fatsv_port.rmempty = true
91 net_fatsv_port.datatype = "port"
92
93 net_ro_size=s:option(Value, "net_ro_size", translate("TCP raw output minimum size"))
94 net_ro_size.rmempty = true
95 net_ro_size.datatype = "uinteger"
96
97 net_ro_interval=s:option(Value, "net_ro_interval", translate("TCP raw output memory flush rate in seconds"))
98 net_ro_interval.rmempty = true
99 net_ro_interval.datatype = "uinteger"
100
101 net_heartbeat=s:option(Value, "net_heartbeat", translate("TCP heartbeat rate in seconds"))
102 net_heartbeat.rmempty = true
103 net_heartbeat.datatype = "uinteger"
104
105 net_buffer=s:option(Value, "net_buffer", translate("TCP buffer size 64Kb * (2^n)"))
106 net_buffer.rmempty = true
107 net_buffer.datatype = "uinteger"
108
109 net_verbatim=s:option(Flag, "net_verbatim", translate("Do not apply CRC corrections to messages we forward"))
110 net_verbatim.default = false
111
112 forward_mlat=s:option(Flag, "forward_mlat", translate("Allow forwarding of received mlat results to output ports"))
113 forward_mlat.default = false
114
115 lat=s:option(Value, "lat", translate("Reference/receiver latitude for surface posn"))
116 lat.rmempty = true
117 lat.datatype = "float"
118
119 lon=s:option(Value, "lon", translate("Reference/receiver longitude for surface posn"))
120 lon.rmempty = true
121 lon.datatype = "float"
122
123 max_range=s:option(Value, "max_range", translate("Absolute maximum range for position decoding"))
124 max_range.rmempty = true
125 max_range.datatype = "uinteger"
126
127 fix=s:option(Flag, "fix", translate("Enable single-bits error correction using CRC"))
128 fix.default = false
129
130 no_fix=s:option(Flag, "no_fix", translate("Disable single-bits error correction using CRC"))
131 no_fix.default = false
132
133 no_crc_check=s:option(Flag, "no_crc_check", translate("Disable messages with broken CRC"))
134 no_crc_check.default = false
135
136 phase_enhance=s:option(Flag, "phase_enhance", translate("Enable phase enhancement"))
137 phase_enhance.default = false
138
139 agressive=s:option(Flag, "agressive", translate("More CPU for more messages"))
140 agressive.default = false
141
142 mlat=s:option(Flag, "mlat", translate("Display raw messages in Beast ascii mode"))
143 mlat.default = false
144
145 stats=s:option(Flag, "stats", translate("Print stats at exit"))
146 stats.default = false
147
148 stats_range=s:option(Flag, "stats_range", translate("Collect/show range histogram"))
149 stats_range.default = false
150
151 stats_every=s:option(Value, "stats_every", translate("Show and reset stats every seconds"))
152 stats_every.rmempty = true
153 stats_every.datatype = "uinteger"
154
155 onlyaddr=s:option(Flag, "onlyaddr", translate("Show only ICAO addresses"))
156 onlyaddr.default = false
157
158 metric=s:option(Flag, "metric", translate("Use metric units"))
159 metric.default = false
160
161 snip=s:option(Value, "snip", translate("Strip IQ file removing samples"))
162 snip.rmempty = true
163 snip.datatype = "uinteger"
164
165 debug_mode=s:option(Value, "debug", translate("Debug mode flags"))
166 debug_mode.rmempty = true
167
168 ppm=s:option(Value, "ppm", translate("Set receiver error in parts per million"))
169 ppm.rmempty = true
170 ppm.datatype = "uinteger"
171
172 html_dir=s:option(Value, "html_dir", translate("Base directory for the internal HTTP server"))
173 html_dir.rmempty = true
174 html_dir.datatype = "directory"
175
176 write_json=s:option(Value, "write_json", translate("Periodically write json output to a directory"))
177 write_json.rmempty = true
178 write_json.datatype = "directory"
179
180 write_json_every=s:option(Flag, "write_json_every", translate("Write json output every t seconds"))
181 write_json_every.rmempty = true
182 write_json_every.datatype = "uinteger"
183
184 json_location_accuracy=s:option(ListValue, "json_location_accuracy", translate("Accuracy of receiver location in json metadata"))
185 json_location_accuracy:value("", translate("Default"))
186 json_location_accuracy:value("0", "No location")
187 json_location_accuracy:value("1", "Approximate")
188 json_location_accuracy:value("2", "Exact")
189
190 oversample=s:option(Flag, "oversample", translate("Use the 2.4MHz demodulator"))
191 oversample.default = false
192
193 dcfilter=s:option(Flag, "dcfilter", translate("Apply a 1Hz DC filter to input data"))
194 dcfilter.default = false
195
196 measure_noise=s:option(Flag, "measure_noise", translate("Measure noise power"))
197 measure_noise.default = false
198
199 return m