Commit Graph

1737 Commits

Author SHA1 Message Date
Oliver Jowett 3eb2783cdf Use abs, not fabs, on integer types 2021-02-01 11:25:23 +08:00
Oliver Jowett bff71dc820
Move all converters to starch-based implementations (#97)
* Switch all conversion routines to use starch.

main user-visible changes:

 * ensure you check out submodules ('git clone --recurse-submodules")
 * --version shows the CPU features and DSP implementations in use
 * --wisdom allows overriding of the built-in architecture wisdom
 * --dcfilter no longer supported
 * "starch-benchmark" binary will benchmark all options on the
   current machine and can produce a wisdom file to feed to
   the --wisdom option

If you have a usecase for --dcfilter, please get in touch and
let me know - it's an edge case and for now there's no starch/DSP
support for it, but support can be written if needed.

In almost all cases the new conversion routines are slightly or
substantially faster than the old conversion routines. The only case
that is slower is SC16/SC16Q11 on a Pi 0, which is around 10% slower
due to changing from heavily approximated lookup tables to higher
quality results (but SC16 is probably already out of reach of a Pi 0)

* No need to build with SC16Q11_TABLE_BITS any more

* Add oneoff/uc8_capture_stats

(reads a UC8 capture; measures min/max/mean I and Q)

* Switch UC8 conversion to 127.4 center, 128 range.

Looking at actual UC8 captures from a RTL2832, the mean I and Q
are actually at 127.4, so use that as the zero point.

This means that the resulting I/Q maximum values could be as large as
127.6. Switch to 128 for simplicity.

* Switch to the new UC8 zero offset in benchmarks, fix some bugs

* Fix some bugs in SC16/SC16Q11 validation, tighten the max error requirements

* Ditch UC8 approximation path, add a NEON VRQSQRTE path.

* Tweak the SC16 exact path, add a new impl that uses a mix of
u32 & floats.

* SC16Q11 impl tweaks:

 * add a u32->float exact path
 * ditch the approximation path
 * add a NEON VRSQRTE path
 * add a 12-bit table path (using the full signed I/Q value, not absolute value)

* Ditch SC16 approximation path, add NEON vrsqrte path

* Add oneoff/dsp_error_measurement

This runs sample input through the DSP functions that are
allowed to be inexact and dumps the results as a TSV suitable for
feeding to gnuplot to look at the actual errors.

* Update make clean, make wisdom targets

* Update wisdom based on benchmarking

* Preserve the raw wisdom benchmark data

* Update to latest starch

* Update .gitignore for new wisdom files

* Update starch generated code

* Build starch-benchmark as part of the 'all' target

* Use wisdom from /etc/dump1090-fa/wisdom.local if present

* Package starch-benchmark and a helper script to generate local wisdom data

* Remove submodules in preparation for importing them directly

* Import cpu_features v0.6.0 from https://github.com/google/cpu_features/releases/tag/v0.6.0

* Import starch at commit a725c8491dc33a321565d451b385131e589d8490
from https://github.com/flightaware/starch
2021-01-21 19:45:00 +08:00
Oliver Jowett c7675b3cd1 Add missed expiry code for emergency / nac_v fields; initialize emergency_valid.
(noticed by @wiedehopf)

Fixes #96
2021-01-15 18:20:50 +08:00
eric1tran b3fcf82473 Merge branch 'filter_enhancements' into dev 2021-01-08 17:31:53 +00:00
Oliver Jowett e8adeb3414 Fix double-counting of overlap samples in stats. 2021-01-05 19:25:44 +08:00
eric1tran 8c325e04a0 Fix up long decimal issue for min/max altitude values 2020-12-14 23:24:45 +00:00
eric1tran 3577cb4057 Adjust max altitude filter to 65000 2020-12-14 19:56:51 +00:00
eric1tran 9950e72d1a Fix minimum width of sidebar and more spacing cleanup 2020-12-14 16:39:34 +00:00
eric1tran 8f9abe57be Add noUiSlider js files 2020-12-14 16:03:07 +00:00
eric1tran 930d2534a2 Speed filter and white space cleanup 2020-12-14 14:37:16 +00:00
eric1tran 22e02dbc62 noUiSlider for altitude filtering plus other styling 2020-12-14 06:34:40 +00:00
eric1tran af4951a494 Merge branch 'additional_filtering' into dev 2020-12-11 16:58:13 +00:00
eric1tran ea5a2b8740 Set button to take you to claim url if the feeder is not claimed 2020-12-11 16:56:48 +00:00
eric1tran a0dc843842 Add a button that will take you your My ADS-B Stats page if claimed 2020-12-11 16:42:24 +00:00
eric1tran 16b3d12670 Keep configuration buttons highlighted while active and some styling 2020-12-10 00:55:00 +00:00
eric1tran 829fe1b5e2 Filter and Column buttons to expand panels and styling cleanup 2020-12-09 23:34:32 +00:00
eric1tran 47e4df2b7b Put filters into an accordion style dropdown 2020-12-09 18:22:15 +00:00
eric1tran 1916fc6648 Use regex match for filter comparisons 2020-12-09 15:18:05 +00:00
eric1tran ad56c1363b Include SkyAware in version display 2020-12-08 20:44:14 +00:00
eric1tran 9b85a30c91 Enable all data source checkboxes by default 2020-12-08 20:34:04 +00:00
eric1tran cd6d3a373b Comments and spacing 2020-12-08 17:24:10 +00:00
eric1tran c466a4724f Add filtering on data source 2020-12-08 17:24:10 +00:00
eric1tran e2b2ce3f63 Add checkboxes next to data source legend and css styling 2020-12-08 17:24:10 +00:00
eric1tran d3459b1697 Adding filtering by aircraft ident 2020-12-08 17:24:10 +00:00
eric1tran 0fddde5126 Make aircraft type filter case insensitive 2020-12-08 17:24:10 +00:00
eric1tran f4f2f3ddad Add filtering by aircraft type 2020-12-08 17:24:09 +00:00
Oliver Jowett c1eeda612e fifo_acquire / fifo_dequeue: maybe fix pthread_cond_timedwait error handling
It was possible, due to an off-by-one error in normalize_timespec, that
the computed deadline passed to pthread_cond_timedwait had tv_nsec == 1000000000.
glibc would reject this with EINVAL. While I never caught this in the act, there
seem to be two follow-on problems from this:

1) we were looking for a negative return from pthread_cond_timedwait and testing errno.
This is not how errors are reported, instead pthread functions return the error value
directly. So the enclosing loop could spin forever, repeatedly passing the bad deadline
value.

2) even if the error handling caught the EINVAL return, it assumed that the mutex was
no longer held and didn't release it; but on error returns, the mutex state is actually
untouched.

Fix both cases (probably), and log about unusual returns from pthread_cond_timedwait
2020-11-17 19:59:59 +08:00
Oliver Jowett 5c043e8496 normalize_timespec: handle tv_nsec == 1000000000 correctly 2020-11-17 19:59:47 +08:00
Eric Tran e48006311b Fix type on SkyAware README 2020-10-12 03:08:41 +00:00
Oliver Jowett f0055c978d Avoid false positives for address 000000 in the icao filter hashtable 2020-10-08 19:30:06 +08:00
Eric Tran 66f26846b8 Merge branch 'master' into dev 2020-10-02 16:36:11 +00:00
MAUGIN Thomas 9fb1e5b9e8
fix(html): add empty coordinates to constructor (#82)
- Change LineString constructor creation, see deprecated null constructor https://github.com/openlayers/openlayers/blob/main/changelog/upgrade-notes.md#v510
2020-10-02 10:52:51 -05:00
Eric Tran 4cde98e063
Fix up SkyAware README 2020-10-01 09:36:46 -05:00
Oliver Jowett c3cd1ec0de limesdr: use --gain (in dB) if --limesdr-gain was not specified 2020-10-01 13:53:50 +08:00
Oliver Jowett 016cb8f9d2
Merge pull request #81 from gtjoseph/dev-for-fa
Interactive mode updates
2020-10-01 00:47:42 -05:00
Oliver Jowett dc2f47796c 4.1~dev for the dev branch 2020-10-01 13:46:22 +08:00
Eric Tran e00935c8d2
SkyAware README 2020-09-29 22:53:34 -05:00
George Joseph 68e95c06cc Interactive mode updates
These updates were designed to assist those using interactive
mode to tune antennas and SDR gain.

* Add options to display distance and bearing in interactive mode

  Distance and bearing instead of latitude and longitude can now be
  displayed in interactive mode using the following options to
  dump1090-fa and view1090-fa.

  --interactive-show-distance   Show aircraft distance and bearing
                                instead of aircraft lat/lon
                                (requires --lat and --lon)
  --interactive-distance-units  Distance units ('km', 'sm', 'nm')
                                (default: 'nm')"

  You have to specify a reference --lat and --lon for this to
  work of course.

* A new line now shows at the top of the interactive display that
  has for the current sample:

  Total valid aircraft count
  Vidible aircraft count
     Will be less than total if the screen hasn't enough lines to show
     them all.
  Max RSSI
  Min RSSI
  Mean RSSI
  Max Distance

 Tot:  47 Vis:  47 RSSI: Max 25.4+ Mean -29.5 Min -36.9-  MaxD:  197.3nm+

* Add max distance and min/max RSSI indicators

  A '+' after the distance in a row indicates it's the row with the
  maximum distance.

  A '+' after the RSSI in a row indicates it's the row with the highest
  RSSI.

  A '-' after the RSSI in a row indicates it's the row with the lowest
  RSSI.

  The summary line at the top of the screen always shows the values for
  ALL aircraft, even those not visible.  The row indicators only mark
  visible rows though.

  In this example, the first aircraft is both the farthest away and has
  the weakest RSSI.  The second aircraft has the strongest RSSI.

 Tot:  47 Vis:  47 RSSI: Max 25.4+ Mean -29.5 Min -36.9-  MaxD:  197.3nm+     -
 Hex    Mode  Sqwk  Flight   Alt    Spd  Hdg  Dist(nm) Bearing  RSSI  Msgs  Ti
────────────────────────────────────────────────────────────────────────────────
 A8D5A4 S2                   34000  438  252   197.3+      85  -36.1-   26  2
 A39A13 S2ac  5740  FFT525   30750  439  256    98.8       68  -25.4+  123  0
 A70B23 S2ac  2744  LXJ553   43000  419  258   136.1       39  -33.6   174  0

* Finally, a new option '--interactive-callsign-filter' has been added
  to allow filtering interactive by callsign.  The value can be a
  simple string, in which case aircraft with that string anywhere in its
  callsign will be displayed, or a regular expression should you want a
  more precise match.

  Examples:
    --interactive-callsign-filter UAL
      will match all aircraft with UAL anywhere in its callsign.
    --interactive-callsign-filter "^UAL"
      will match only those callsigns that start with UAL.
    --interactive-callsign-filter "^(UAL|AAL)"
      will match only those callsigns that start with UAL or AAL.
    --interactive-callsign-filter "^N[0-9]" or "^N[[:digit:]]"
      will match only those callsigns that start with "N" and a number

  If you need more info on regular expressions, see this link:
  https://en.wikipedia.org/wiki/Regular_expression
2020-09-29 06:23:55 -06:00
Eric Tran 4f5f637dc1 Changelog edits 2020-09-24 15:39:52 +00:00
Eric Tran 863694761a Release 4.0 and update changelog 2020-09-24 15:31:52 +00:00
Eric Tran 3167459bfc Update README with current compressed csv file 2020-09-24 06:10:58 +00:00
Eric Tran 398728439b Update aircraft db to 20200924 2020-09-24 06:01:36 +00:00
eric1tran be9174a352 Bump script cache bust version 2020-09-23 13:03:08 -05:00
Eric Tran ff190286a6 Bump version to 4.0~dev 2020-09-21 15:31:46 +00:00
eric1tran 14ccaa93bd
README.md for geojson directory 2020-09-11 21:40:49 -05:00
Oliver Jowett 774c3cdd55
Merge pull request #79 from b3nn0/dev
Forward MLAT traffic to Stratux JSON output, marked with IsMlat:true in JSON
2020-09-11 21:16:01 -05:00
Eric Tran 24e58762b5 Remove dump1090.deb reference in Jenkinsfile breaking builds 2020-09-11 22:12:24 +00:00
Adrian Batzill 6714148c45 Forward MLAT traffic to Stratux JSON output, marked with IsMlat:true value in JSON 2020-09-10 10:20:21 +02:00
Oliver Jowett 6a4a239d0f
Merge pull request #78 from Gluttton/fix_trivial_typo
fix a trivial copy-paste typo in comments
2020-09-08 10:44:13 -05:00
Oliver Jowett 418e13e6b6 Merge PR #61 (Stratux output format support) plus fixes 2020-09-08 23:36:34 +08:00