Commit graph

349 commits

Author SHA1 Message Date
Oliver Jowett 1769ac9006 Restructuring of network output side.
Mostly refactoring the common code that was duplicated
between the different output types so that there aren't
many copies floating around.

This introduces "struct net_writer" to store the state of a
particular type of output service - buffers, time of last write,
connection count etc. prepareWrite() / completeWrite() give access
to the buffer and handle the actual writes and flushing when needed.

Heartbeat and time-based flushing move into a generic periodic-work
function.

Update the SBS output code to use the new infrastructure. This makes
a big different to CPU use when under load.
2014-10-03 22:55:21 +01:00
Oliver Jowett 8d4f1a396c Merge branch 'fix-net-list-corruption' into net-cleanups 2014-10-03 20:58:52 +01:00
MalcolmRobb 65751ed6e9 Merge pull request #45 from mutability/net-client-eof-handling
Detect client EOF properly. Handle EWOULDBLOCK.
2014-10-02 21:32:40 +01:00
MalcolmRobb dee6ded673 Merge pull request #35 from mutability/use-repaired-checksums
Check if bit correction happened before bailing out due to a bad CRC.
2014-10-02 21:29:10 +01:00
Malcolm Robb 4f449a8d44 Make Pull # compatible with Pull #42 2014-10-02 21:08:57 +01:00
Oliver Jowett a2f49f2bb8 Fix a crash when an outbound client is closed in response to reading a remote message.
When we read from some client A, we may end up forwarding a message to other
clients. If we forward to some client B and there is a write error, then
we close B and remove it from the client list. However, if before this happened
A->next == B, then the read loop will still be holding on to a pointer to B,
and we crash.

As it's unpredictable what clients could be closed at what point, the simplest
approach is to retain closed clients in the list until we are at a point where
we know there are no stray pointers on stack, and only then modify the list.
This also simplifies anything that has to loop over clients, as it doesn't need
to worry about the current client being freed under it.
2014-10-02 21:06:10 +01:00
MalcolmRobb 16a900c667 Merge pull request #42 from mutability/prefer-global-cpr
Prefer to use global CPR decoding where possible.
2014-10-02 21:05:26 +01:00
MalcolmRobb bc496fbcad Merge pull request #43 from mutability/more-stats
Add --stats-every option, add sample block counters
2014-10-02 20:51:13 +01:00
Malcolm Robb 5a5c52d7a9 Merge remote-tracking branch 'origin/pr/46' 2014-10-02 19:53:43 +01:00
MalcolmRobb 98f510540e Merge pull request #47 from mutability/flightradar-compat-fix
Always emit a message reception time, as otherwise the FR24 uploader is unhappy.
2014-10-02 19:41:18 +01:00
Oliver Jowett 15f3408d8e Always emit a message reception time, as otherwise the FR24 uploader is unhappy.
When we don't have a time available (e.g. remote message) use the system time.
2014-10-02 12:20:37 +01:00
MalcolmRobb bf111360bc Merge pull request #44 from mutability/fix-obinary
Only use O_BINARY on Win32
2014-10-01 13:57:07 +01:00
Oliver Jowett 186cac5c25 Use the anet-reported error string when reporting bind errors.
errno may have been modified by the time you see it.
2014-10-01 12:37:29 +01:00
Oliver Jowett a513c3677b Detect client EOF properly. Handle EWOULDBLOCK.
Client disconnection appears as a read of 0 bytes.
Without a test for this, dump1090 continues to poll that client forever.

Also, read() may return EWOULDBLOCK as well as EAGAIN
for "no data right now", so handle that.

I don't know if there is an equivalent Win32 bug here as the Win32
interfaces seem subtly different to vanilla POSIX.

The following test/break can probably be removed if Win32 needs
the same fix.
2014-10-01 12:29:16 +01:00
Oliver Jowett 98c7c73d06 Only use O_BINARY on Win32 2014-10-01 12:17:51 +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
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 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 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 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 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 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 95ccb90c76 Fix --gain with fractional gain values. 2014-09-24 20:01:06 +01:00
Oliver Jowett 7fab5b0cb5 Check if bit correction happened before bailing out due to a bad CRC. 2014-09-13 12:11:19 +01:00
Trevor Slocum b7d01c5615 Don't restrict sidebar width 2014-08-07 23:50:28 -07:00
Trevor Slocum 14ff25b87f Improve map display layout and styling 2014-08-06 19:31:05 -07:00
Malcolm Robb a82df07c0c Version 1.09.0608.14
Release of COAA PlanePlotter MLAT and SMU support for RPi

ppup1090 now supports Ground Stations functions required for MLAT and
SMU operation. This is *ONLY* available for RPi and similar linux
hardware.

Also included are sample startup scripts for dump1090 only and
dump1090+ppup1090 together.
2014-08-06 15:29:08 +01:00
Malcolm Robb 90fa1dac81 net_io port 30003 bug
Thanks to "Harrie" for this one.
Fix the SBS port 30003 stream to always include speed and/or heading
when available.
2014-08-06 15:29:07 +01:00
Malcolm Robb f1b85ec5e7 Tidy up interactive.c
Remove spaces from the end of line.
2014-08-06 15:29:06 +01:00
Malcolm Robb 845289ad9f Version 1.09.1607.14
Improvements to COAA MLAT functions
Reduce CPU load in PPUP1090 and DUMP1090 during cleanup
2014-08-06 15:29:06 +01:00
Malcolm Robb 8b05286a24 Version 1.09.1007.14
Updates to support COAA Planeplotter Ground Station on an RPi
2014-08-06 15:29:05 +01:00
ddeitterick df4a8ce00b Change the Background Color for a Plotted Plane
Changed the background color for a plotted plane in the planes table to
something that was more easily visible.
2014-08-03 22:11:09 -04:00
ddeitterick 0c2487df30 Add Degree Symbol to Track Value
Add the degree symbol to the "Track:" value in the plane details
section.
2014-08-01 23:42:58 -04:00
MalcolmRobb a17e5b0f98 Merge pull request #23 from hhm0/decoding
use last recent airplane position to calculate its ground position
2014-07-16 15:21:42 +01:00
hhm d1b37ad1c5 B"H decoding: use last air position to calculate ground position 2014-07-14 04:03:07 -04:00
MalcolmRobb 60e2c92c05 Merge pull request #21 from hhm0/view1090_net_mods
View1090 net mods
2014-07-10 16:52:46 +01:00
MalcolmRobb f68ae551df Merge pull request #22 from matthewbrandes/master
Allows choosing device by serial number rather than device index which can change.
2014-07-10 16:48:53 +01:00
matthewbrandes 6f14ecf7dd Update dump1090.c 2014-07-08 17:34:43 -05:00
matthewbrandes c80582274b Delete convienience.c 2014-07-08 17:32:30 -05:00
matthewbrandes 3043e86096 Delete convienience.h 2014-07-08 17:32:16 -05:00
matthewbrandes 652af93b88 Update dump1090.c 2014-07-08 16:58:23 -05:00
matthewbrandes d0207569b6 Update dump1090.c 2014-07-08 16:56:03 -05:00
matthewbrandes a190677ad4 Create convienience.c 2014-07-08 16:55:16 -05:00