towerops/test/support/fixtures/antennas/test-omni-5ghz.ant
Graham McIntire 40db913170 feat: end-to-end /coverage compute pipeline + antenna catalog + cnHeat-style form
The compute pipeline now actually runs: per-pixel path loss over LIDAR
terrain, antenna pattern lookup, real GeoTIFF + colored PNG output,
Leaflet imageOverlay rendering with opacity slider and dBm legend.

Propagation:
- Towerops.Coverages.Propagation: Friis FSPL + Bullington single-knife-edge
  diffraction (ITU-R P.526). Pure Elixir, closed-form, no NIF dependency.
  Clean signature so a future ITM/Longley-Rice backend can drop in.
- Towerops.Coverages.Profile: AAIGrid sampler with elevation_at, sample
  along great circle, haversine distance.
- Towerops.Coverages.Raster: Float32 GeoTIFF via gdal_translate (with VRT
  wrapper) and colored PNG via gdaldem color-relief. Outputs to
  priv/static/coverage/<org>/<id>/, served by existing Plug.Static.

Worker:
- Towerops.Workers.CoverageWorker now does the full pipeline: bbox compute
  -> Towerops.Lidar.get_elevation_grid -> per-pixel Task.async_stream
  (parallel = schedulers) running antenna pattern lookup + propagation +
  RSSI threshold check, write rasters. Configurable terrain source via
  :coverage_terrain_module application env so tests can stub. Friendly
  failure messages for :no_tile, :grid_too_large, :nodata,
  :unknown_antenna, :missing_location.

Bundled antenna catalog (~95 entries):
- AntennaCatalog with compact specs for every antenna in the request list:
  Cambium, ALPHA, Antel, ITELITE, KP Performance, L-com, MARS, MikroTik,
  Mimosa, MTI, RADWIN, RF Elements, Ruckus, Tarana, Simulate, Ubiquiti.
- Antenna.from_spec/1 synthesizes 360+360 attenuation patterns from
  gain+beamwidth (cosine-squared main lobe, smooth transition,
  front-to-back floor with mild ripple). Real .ant files in priv/antennas/
  override the catalog by slug. Test fixtures moved to test/support.

Schema (migration add_radio_fields_to_coverages):
- tx_power_dbm replaces eirp_dbm; EIRP is now derived as
  tx_power + antenna.gain - cable_loss in Coverage.eirp_dbm/2 and shown
  live in the form header.
- cable_loss_db, sm_gain_dbi, latitude_override, longitude_override,
  height_above_rooftop_m, tx_clearance_m, foliage_tuning (0-100 slider).
- Coverage.location/1 returns {lat, lon} from override or parent site.

UI:
- form.html.heex: cnHeat-style grouped form (Identity / Location /
  Mounting / RF / Coverage extent), foliage tuning range slider,
  computed EIRP badge in the header.
- show.html.heex: Leaflet map area with L.imageOverlay heatmap,
  opacity slider, dBm color legend, antenna marker with directional
  wedge for azimuth.
- assets/js/app.ts: CoverageMap hook registered.

Tests: 24 new (propagation reference values, profile sampling,
worker end-to-end with stubbed terrain that writes real GeoTIFF + PNG,
org-mismatch job-cancel guard). Full suite: 10815 tests.
2026-05-06 14:32:38 -05:00

732 lines
6.9 KiB
XML

NAME Test Omni 5 GHz
MAKE Test Manufacturer
FREQUENCY 5500
H_WIDTH 360
V_WIDTH 15
FRONT_TO_BACK 0
GAIN 8.0 dBi
TILT MECHANICAL
POLARIZATION VERTICAL
COMMENT Synthetic omni antenna for tests; flat horizontal plane, slight vertical taper.
HORIZONTAL 360
0 0.00
1 0.00
2 0.00
3 0.00
4 0.00
5 0.00
6 0.00
7 0.00
8 0.00
9 0.00
10 0.00
11 0.00
12 0.00
13 0.00
14 0.00
15 0.00
16 0.00
17 0.00
18 0.00
19 0.00
20 0.00
21 0.00
22 0.00
23 0.00
24 0.00
25 0.00
26 0.00
27 0.00
28 0.00
29 0.00
30 0.00
31 0.00
32 0.00
33 0.00
34 0.00
35 0.00
36 0.00
37 0.00
38 0.00
39 0.00
40 0.00
41 0.00
42 0.00
43 0.00
44 0.00
45 0.00
46 0.00
47 0.00
48 0.00
49 0.00
50 0.00
51 0.00
52 0.00
53 0.00
54 0.00
55 0.00
56 0.00
57 0.00
58 0.00
59 0.00
60 0.00
61 0.00
62 0.00
63 0.00
64 0.00
65 0.00
66 0.00
67 0.00
68 0.00
69 0.00
70 0.00
71 0.00
72 0.00
73 0.00
74 0.00
75 0.00
76 0.00
77 0.00
78 0.00
79 0.00
80 0.00
81 0.00
82 0.00
83 0.00
84 0.00
85 0.00
86 0.00
87 0.00
88 0.00
89 0.00
90 0.00
91 0.00
92 0.00
93 0.00
94 0.00
95 0.00
96 0.00
97 0.00
98 0.00
99 0.00
100 0.00
101 0.00
102 0.00
103 0.00
104 0.00
105 0.00
106 0.00
107 0.00
108 0.00
109 0.00
110 0.00
111 0.00
112 0.00
113 0.00
114 0.00
115 0.00
116 0.00
117 0.00
118 0.00
119 0.00
120 0.00
121 0.00
122 0.00
123 0.00
124 0.00
125 0.00
126 0.00
127 0.00
128 0.00
129 0.00
130 0.00
131 0.00
132 0.00
133 0.00
134 0.00
135 0.00
136 0.00
137 0.00
138 0.00
139 0.00
140 0.00
141 0.00
142 0.00
143 0.00
144 0.00
145 0.00
146 0.00
147 0.00
148 0.00
149 0.00
150 0.00
151 0.00
152 0.00
153 0.00
154 0.00
155 0.00
156 0.00
157 0.00
158 0.00
159 0.00
160 0.00
161 0.00
162 0.00
163 0.00
164 0.00
165 0.00
166 0.00
167 0.00
168 0.00
169 0.00
170 0.00
171 0.00
172 0.00
173 0.00
174 0.00
175 0.00
176 0.00
177 0.00
178 0.00
179 0.00
180 0.00
181 0.00
182 0.00
183 0.00
184 0.00
185 0.00
186 0.00
187 0.00
188 0.00
189 0.00
190 0.00
191 0.00
192 0.00
193 0.00
194 0.00
195 0.00
196 0.00
197 0.00
198 0.00
199 0.00
200 0.00
201 0.00
202 0.00
203 0.00
204 0.00
205 0.00
206 0.00
207 0.00
208 0.00
209 0.00
210 0.00
211 0.00
212 0.00
213 0.00
214 0.00
215 0.00
216 0.00
217 0.00
218 0.00
219 0.00
220 0.00
221 0.00
222 0.00
223 0.00
224 0.00
225 0.00
226 0.00
227 0.00
228 0.00
229 0.00
230 0.00
231 0.00
232 0.00
233 0.00
234 0.00
235 0.00
236 0.00
237 0.00
238 0.00
239 0.00
240 0.00
241 0.00
242 0.00
243 0.00
244 0.00
245 0.00
246 0.00
247 0.00
248 0.00
249 0.00
250 0.00
251 0.00
252 0.00
253 0.00
254 0.00
255 0.00
256 0.00
257 0.00
258 0.00
259 0.00
260 0.00
261 0.00
262 0.00
263 0.00
264 0.00
265 0.00
266 0.00
267 0.00
268 0.00
269 0.00
270 0.00
271 0.00
272 0.00
273 0.00
274 0.00
275 0.00
276 0.00
277 0.00
278 0.00
279 0.00
280 0.00
281 0.00
282 0.00
283 0.00
284 0.00
285 0.00
286 0.00
287 0.00
288 0.00
289 0.00
290 0.00
291 0.00
292 0.00
293 0.00
294 0.00
295 0.00
296 0.00
297 0.00
298 0.00
299 0.00
300 0.00
301 0.00
302 0.00
303 0.00
304 0.00
305 0.00
306 0.00
307 0.00
308 0.00
309 0.00
310 0.00
311 0.00
312 0.00
313 0.00
314 0.00
315 0.00
316 0.00
317 0.00
318 0.00
319 0.00
320 0.00
321 0.00
322 0.00
323 0.00
324 0.00
325 0.00
326 0.00
327 0.00
328 0.00
329 0.00
330 0.00
331 0.00
332 0.00
333 0.00
334 0.00
335 0.00
336 0.00
337 0.00
338 0.00
339 0.00
340 0.00
341 0.00
342 0.00
343 0.00
344 0.00
345 0.00
346 0.00
347 0.00
348 0.00
349 0.00
350 0.00
351 0.00
352 0.00
353 0.00
354 0.00
355 0.00
356 0.00
357 0.00
358 0.00
359 0.00
VERTICAL 360
0 0.00
1 0.05
2 0.10
3 0.15
4 0.20
5 0.30
6 0.45
7 0.60
8 0.80
9 1.00
10 1.30
11 1.65
12 2.00
13 2.40
14 2.85
15 3.30
16 3.80
17 4.35
18 4.95
19 5.60
20 6.30
21 7.05
22 7.85
23 8.70
24 9.60
25 10.55
26 11.55
27 12.60
28 13.70
29 14.85
30 16.05
31 17.30
32 18.60
33 19.95
34 21.35
35 22.80
36 24.30
37 25.85
38 27.45
39 29.10
40 30.80
41 32.55
42 34.35
43 36.20
44 38.10
45 40.05
46 42.05
47 44.10
48 46.20
49 48.35
50 50.55
51 52.80
52 55.10
53 57.45
54 59.85
55 62.30
56 64.80
57 67.35
58 69.95
59 72.60
60 75.30
61 78.05
62 80.85
63 83.70
64 86.60
65 89.55
66 92.55
67 95.60
68 98.70
69 101.85
70 105.05
71 108.30
72 111.60
73 114.95
74 118.35
75 121.80
76 125.30
77 128.85
78 132.45
79 136.10
80 139.80
81 143.55
82 147.35
83 151.20
84 155.10
85 159.05
86 163.05
87 167.10
88 171.20
89 175.35
90 179.55
91 183.80
92 188.10
93 192.45
94 196.85
95 201.30
96 205.80
97 210.35
98 214.95
99 219.60
100 224.30
101 229.05
102 233.85
103 238.70
104 243.60
105 248.55
106 253.55
107 258.60
108 263.70
109 268.85
110 274.05
111 279.30
112 284.60
113 289.95
114 295.35
115 300.80
116 306.30
117 311.85
118 317.45
119 323.10
120 328.80
121 334.55
122 340.35
123 346.20
124 352.10
125 358.05
126 364.05
127 370.10
128 376.20
129 382.35
130 388.55
131 394.80
132 401.10
133 407.45
134 413.85
135 420.30
136 426.80
137 433.35
138 439.95
139 446.60
140 453.30
141 460.05
142 466.85
143 473.70
144 480.60
145 487.55
146 494.55
147 501.60
148 508.70
149 515.85
150 523.05
151 530.30
152 537.60
153 544.95
154 552.35
155 559.80
156 567.30
157 574.85
158 582.45
159 590.10
160 597.80
161 605.55
162 613.35
163 621.20
164 629.10
165 637.05
166 645.05
167 653.10
168 661.20
169 669.35
170 677.55
171 685.80
172 694.10
173 702.45
174 710.85
175 719.30
176 727.80
177 736.35
178 744.95
179 753.60
180 762.30
181 753.60
182 744.95
183 736.35
184 727.80
185 719.30
186 710.85
187 702.45
188 694.10
189 685.80
190 677.55
191 669.35
192 661.20
193 653.10
194 645.05
195 637.05
196 629.10
197 621.20
198 613.35
199 605.55
200 597.80
201 590.10
202 582.45
203 574.85
204 567.30
205 559.80
206 552.35
207 544.95
208 537.60
209 530.30
210 523.05
211 515.85
212 508.70
213 501.60
214 494.55
215 487.55
216 480.60
217 473.70
218 466.85
219 460.05
220 453.30
221 446.60
222 439.95
223 433.35
224 426.80
225 420.30
226 413.85
227 407.45
228 401.10
229 394.80
230 388.55
231 382.35
232 376.20
233 370.10
234 364.05
235 358.05
236 352.10
237 346.20
238 340.35
239 334.55
240 328.80
241 323.10
242 317.45
243 311.85
244 306.30
245 300.80
246 295.35
247 289.95
248 284.60
249 279.30
250 274.05
251 268.85
252 263.70
253 258.60
254 253.55
255 248.55
256 243.60
257 238.70
258 233.85
259 229.05
260 224.30
261 219.60
262 214.95
263 210.35
264 205.80
265 201.30
266 196.85
267 192.45
268 188.10
269 183.80
270 179.55
271 175.35
272 171.20
273 167.10
274 163.05
275 159.05
276 155.10
277 151.20
278 147.35
279 143.55
280 139.80
281 136.10
282 132.45
283 128.85
284 125.30
285 121.80
286 118.35
287 114.95
288 111.60
289 108.30
290 105.05
291 101.85
292 98.70
293 95.60
294 92.55
295 89.55
296 86.60
297 83.70
298 80.85
299 78.05
300 75.30
301 72.60
302 69.95
303 67.35
304 64.80
305 62.30
306 59.85
307 57.45
308 55.10
309 52.80
310 50.55
311 48.35
312 46.20
313 44.10
314 42.05
315 40.05
316 38.10
317 36.20
318 34.35
319 32.55
320 30.80
321 29.10
322 27.45
323 25.85
324 24.30
325 22.80
326 21.35
327 19.95
328 18.60
329 17.30
330 16.05
331 14.85
332 13.70
333 12.60
334 11.55
335 10.55
336 9.60
337 8.70
338 7.85
339 7.05
340 6.30
341 5.60
342 4.95
343 4.35
344 3.80
345 3.30
346 2.85
347 2.40
348 2.00
349 1.65
350 1.30
351 1.00
352 0.80
353 0.60
354 0.45
355 0.30
356 0.20
357 0.15
358 0.10
359 0.05