Commit graph

1126 commits

Author SHA1 Message Date
Oliver Jowett 864660bf27 Use uint64_t in load stats to avoid overflow with large intervals. 2014-10-01 01:43:37 +01:00
MalcolmRobb c09c68466c Merge pull request #41 from mutability/skip-remote-timestamps
Don't output message reception time in SBS format for remote messages.
2014-09-30 17:15:46 +01:00
Oliver Jowett c11eca44bb Try all phases if --oversample --phase-enhance is on.
If we demodulate a message in 2.4MHz mode and it has a bad, uncorrectable CRC,
and --phase-enhance is on, then retry with the other possible phases until
we get a good CRC or run out of phases to try.

This is very expensive in AGC mode (lots of candidates that are not real
messages) but relatively cheap otherwise. It yields another 10% messages.

Also factor out some common stats code to avoid lots more copy/paste.
2014-09-30 17:02:22 +01:00
Malcolm Robb e3bbf7b266 Read Files are binary
When replaying recordings, the read files are binary, so the file open
needs to reflect this so that spurious end of file characters aren't
misinterpreted.
2014-09-30 16:36:56 +01:00
Malcolm Robb aa063ba89f Undo Parts of Pull request #29
The table sizing doesn't seem to work in M$ IE8 and IE9.
2014-09-30 16:35:15 +01:00
MalcolmRobb 732fe52a10 Merge pull request #28 from ddeitterick/change_plotted_plane_table_bg_color
Change the Background Color for a Plotted Plane
2014-09-30 15:19:42 +01:00
MalcolmRobb 9d3452f424 Merge pull request #27 from ddeitterick/format_track_field
Add Degree Symbol to Track Value
2014-09-30 15:18:35 +01:00
MalcolmRobb 5cdcc22734 Merge pull request #29 from tslocum/bettermap
Improve map display layout and styling
2014-09-30 15:16:25 +01:00
MalcolmRobb bd151e1e54 Merge pull request #40 from mutability/discard-bad-cpr-latitudes
Reject out-of-range latitudes when doing CPR decoding.
2014-09-30 15:10:33 +01:00
MalcolmRobb 8725ba0b6d Merge pull request #39 from mutability/fractional-gain
Fix --gain with fractional gain values.
2014-09-30 15:00:12 +01:00
Oliver Jowett 93e1b9e10d More tweaking to try to get the signal / CPU tradeoff right. 2014-09-30 00:19:05 +01:00
Oliver Jowett dcae71faa8 Move CPU instrumentation up into the main loop. 2014-09-29 23:11:36 +01:00
Oliver Jowett 7a0ca85a90 Measure CPU used by the sample processing thread. 2014-09-29 23:04:58 +01:00
Oliver Jowett 4732ad3498 Performance tweaking for AGC.
Apparently enabling AGC produces samples with quite different characteristics,
and ends up eating a lot more CPU as the previous heuristics would generate a
lot of false positives. Tweaking the parameters and a bit of optimization
seems to bring this back down to usable levels without losing many potential
messages.
2014-09-29 23:02:42 +01:00
Oliver Jowett ca372ed105 Add SNR calculation in oversample mode. 2014-09-27 16:47:50 +01:00
Oliver Jowett e118668925 Log message time and symbol phase when dumping message info. 2014-09-27 16:45:39 +01:00
Oliver Jowett c3409302ce Fix mlat inter-block timestamp accounting in oversampling mode.
Add calculated phase into the per-message timestamp (it is already exactly a 12MHz offset)
2014-09-27 16:44:26 +01:00
Oliver Jowett 309f79c488 Tweak correlator weighings to be right, and scale up some more to avoid losing precision.
Further tweaking to which phase offsets we look for.
2014-09-27 13:35:41 +01:00
Oliver Jowett 69a30535d4 Oversampling, round two.
This now seems to be at the point where it will decode more messages
than when using 2MHz with --phase-enhance.
2014-09-27 13:07:23 +01:00
Oliver Jowett 17f73cc01a Fix preamble quiet-bits check. 2014-09-26 22:47:56 +01:00
Oliver Jowett 5c8e6198b7 First cut for sampling at 2.4MHz + phase detection. 2014-09-26 22:42:38 +01:00
Oliver Jowett 4cf07536be Merge branch 'report-snr' 2014-09-26 00:34:17 +01:00
Oliver Jowett 826d5e92fa Don't count ambiguous bits beyond bit 56 towards SNR. 2014-09-26 00:33:39 +01:00
Oliver Jowett 9fad408f57 Merge branch 'more-stats' 2014-09-25 22:03:57 +01:00
Oliver Jowett b98c6856b3 Move the stats reset strictly after stats display, so the total message count is shown correctly. 2014-09-25 22:02:52 +01:00
Oliver Jowett 67cdb0f01a Merge branch 'skip-remote-timestamps' 2014-09-25 21:46:34 +01:00
Oliver Jowett 3eb39ab788 Don't output message reception time in SBS format for remote messages.
For remotely received messages that have a mlat timestamp, we have no
useful way of turning that timestamp into a wallclock timestamp, so
don't try, or we'll just produce wildly wrong results (_days_ in error)
2014-09-25 21:45:46 +01:00
Oliver Jowett b58ae5a17e Merge branch 'more-stats' 2014-09-25 20:36:42 +01:00
Oliver Jowett 4fc2697555 Add stats for number of sample blocks processed and dropped. 2014-09-25 20:35:54 +01:00
Oliver Jowett 10061675de Add --stats-every <secs> option.
Periodically displays and resets stats.
Useful for unattended operation.
2014-09-25 20:33:50 +01:00
Oliver Jowett fd4c480df7 Merge cleanup. 2014-09-25 17:18:44 +01:00
Oliver Jowett d820ae1afc Merge branch 'prefer-global-cpr' 2014-09-25 17:18:08 +01:00
Oliver Jowett 661246d347 Prefer to use global CPR decoding where possible.
There is a danger in always using relative decoding where possible.
If there is an undetected error in the first pair of messages received,
then global CPR decoding will give a bad position, and subsequent
relative decoding will just walk around near that bad position even
though many error-free pairs of odd/even messages may have been received.

The first pair of position messages also tends to be the most error-prone, as
they are usually received at the extreme edge of receiver range.

(I see this happen at least once a day in practice)

So, instead, prefer to use global decoding when we have sufficiently recent data.
With recent data this should always be as good as relative decoding, and it
avoids getting stuck with bad data for long periods of time. If we don't have
enough recent data for a global solution, fall back to relative decoding.
2014-09-25 17:10:55 +01:00
Oliver Jowett af281592e8 Merge branch 'discard-bad-cpr-latitudes' 2014-09-25 16:10:27 +01:00
Oliver Jowett e5b3572e8b Reject out-of-range latitudes when doing CPR decoding.
If a CPR message with an undetected error is received this can produce out-of-range results for latitude.
e.g. even latitude of 78000, odd latitude of 0 produces a latitude index j=35 and rlat0 = 213.
2014-09-25 15:49:39 +01:00
Oliver Jowett 3f9c859800 Merge branch 'fractional-gain' 2014-09-24 20:02:00 +01:00
Oliver Jowett 95ccb90c76 Fix --gain with fractional gain values. 2014-09-24 20:01:06 +01:00
Oliver Jowett 5bcc7e1b9a Merge branch 'report-snr' 2014-09-23 14:07:53 +01:00
Oliver Jowett 83d256e984 Fix a thinko in computing the log10 table.
(This shouldn't actually affect the resulting SNR since it's just a constant offset, and the errors in signal and noise will cancel out)
2014-09-23 14:05:25 +01:00
Oliver Jowett e6e92b1e8e Merge branch 'no-decode'
Conflicts:
	mode_s.c
2014-09-23 00:01:54 +01:00
Oliver Jowett 5683001164 Add --no-decode option.
This disables most decoding of the contents of Mode S messages, aircraft tracking, and some output modes that depend on them.
It's intended for edge receivers that just forward to a central hub rather than processing data locally.
2014-09-22 23:56:49 +01:00
Oliver Jowett 76c958b03e Use a lookup table for SNR calculation. 2014-09-22 14:53:06 +01:00
hhm c265ea1d55 B"H net_io.c http server: hopefully mem code is OK now
Still learning the ropes memory-wise :-)
2014-09-17 07:58:19 -04:00
hhm 32fc5fddd0 B"H net_io.c: http server: content should be dynamically allocated 2014-09-17 07:32:34 -04:00
hhm df19d51bc6 B"H net_io.c: use %d like local code 2014-09-17 06:58:53 -04:00
hhm 8d307cd0eb B"H net_io.c: http serve: return HTTP response codes 2014-09-17 06:32:03 -04:00
hhm 04f4abda70 B"H net_io.c: add missing else statement 2014-09-15 09:08:49 -04:00
Oliver Jowett 2e45a59986 Make signalLevel represent the SNR in dB, rather than a somewhat arbitrary amplitude value.
Include SNR values when dumping message contents.
2014-09-15 02:49:11 +01:00
Oliver Jowett 0378620445 Merge branch 'improve-phase-enhancement' 2014-09-15 01:58:38 +01:00
Oliver Jowett 31b28b3878 Rearrange phase enhancement so that it handles phase errors in both directions.
This almost doubles the number of messages recovered by phase enhancement.
2014-09-15 01:43:14 +01:00