map quadtree in progress

Former-commit-id: 106b914c5f91b0e3c49ff6bca47e9eb9ceed9a63
Former-commit-id: 9b2e2e01cf6c78915925df32c1b004a0c9d2505c
This commit is contained in:
nathan 2020-01-19 22:22:58 -08:00
parent cc3a4f3e88
commit 30606084c0
22 changed files with 1238 additions and 66 deletions

View file

@ -1,10 +1,50 @@
#spidr1090 #spidr1090
###INSTALLATION
Tested and working on Ubuntu 18.04, Raspbian Stretch, Buster
1. Install SDL and RTL-SDR libararies
```
sudo apt-get install libsdl2-dev libsdl2-ttf-dev libsdl2-gfx-dev librtlsdr-dev
```
Note: On Raspbian the SDL2 package requires X to be running. See the Raspberry Pi section for notes on running from the terminal and other improvements.
2. Download and build spidr
```
cd ~
git clone https://www.github.com/nmatsuda/spidr
cd spidr
make clean; make
```
3. Download and build dump1090
```
cd ~
git clone http://www.github.com/MalcolmRobb/dump1090)
cd dump1090
make clean; make
4. Run
```
~/dump1090/dump1090 --net
cd spidr
./view1090 --fullsceen
### Runtime Options
--server [domain name or ip] Specify a dump1090 server. Renamed from the view1090 "--net-bo-ip-addr" argument
--metric Display metric units rather than imperial.
--screensize [width] [height] Specify a specific resolution to pass to SDL_RenderSetLogicalSize, otherwise use resolution of display
--uiscale [scale] Scale up UI elements by integer amounts for high resolution screen
--fullscreen Render fullscreen rather than in a window
### TODO ### TODO
* change plane history from fixed array to linked list of planeObj, handle cleanup * build for ios and android
* status box layout system
* status box tap for info
* trails w/ altitudes
* menu system (toggles for UI elements) * menu system (toggles for UI elements)
* map system (automatically load open source) * map system (automatically load open source)
* separate fully from view1090 (which interface?) * separate fully from view1090 (which interface?)
@ -20,13 +60,13 @@ Notes:
Pi 3b+ and below are a little underpowerd for unoptimized map drawing Pi 3b+ and below are a little underpowerd for unoptimized map drawing
Pi 4 is smooth, may have USB issues with RTLSDR? Pi 4 is smooth, may have USB issues with RTLSDR?
Up squared is good, but large Up squared is good, but large
Up Core may be fine but bad connection options - try up core? Up Core may be fine but bad connection options?
PiJuice is by far best battery option. FCC/CE certified! PiJuice is by far best battery option. FCC/CE certified!
Need to test stratux low power dongles. 987Mhz? Need to test stratux low power dongles. 987Mhz?
Waveshare 4.3" HDMI(B) is very good, slightly too large for handheld. Uses a lot of power, around 500ma Waveshare 4.3" HDMI(B) and 5.5" AOLED are both very good, a little too large for handheld. Uses a lot of power, around 500ma for the 4.3", the AMOLED scales by the overal screen brightness.
Pimoroni Hyperpixel 4.0 is the right size, but takes over default I2C pins so conflicts with PiJuice, unless some pin remapping. Also lower power, around 150ma Pimoroni Hyperpixel 4.0 is the right size, but takes over default I2C pins so conflicts with PiJuice, unless some pin remapping. Also lower power, around 150ma
Adafruit PiTFT 2.8" capacitive touch is ok, but a little small. Not sure about power draw. Docs claim no multitouch? Adafruit PiTFT 2.8" capacitive touch is ok, but a little small. Not sure about power draw. Docs claim no multitouch?
@ -88,34 +128,3 @@ Recommended: PiJuice
18650 batteries (18mm x 65mm). ~2200mAH ea. 18650 batteries (18mm x 65mm). ~2200mAH ea.
Adafruit pack + PowerBoost Charger, ~$40 Adafruit pack + PowerBoost Charger, ~$40
http://www.ebay.com/itm/3-7-volts-6400-mAh-1S2P-18650-Li-Ion-Battery-Pack-PCB-protected-Panasonic-Cells-/221923032745?hash=item33aba4bea9:g:0-IAAOSw14xWLSr2 http://www.ebay.com/itm/3-7-volts-6400-mAh-1S2P-18650-Li-Ion-Battery-Pack-PCB-protected-Panasonic-Cells-/221923032745?hash=item33aba4bea9:g:0-IAAOSw14xWLSr2
###INSTALLATION
Tested and working on Ubuntu 18.04, Raspbian Stretch
1. Install SDL and RTL-SDR libararies
```
sudo apt-get install libsdl2-dev libsdl2-ttf-dev libsdl2-gfx-dev librtlsdr-dev
```
2. Download and build spidr
```
cd ~
git clone https://www.github.com/nmatsuda/spidr
cd spidr
make clean; make
```
3. Download and build dump1090
```
cd ~
git clone http://www.github.com/MalcolmRobb/dump1090)
cd dump1090
make clean; make
4. Run
```
~/dump1090/dump1090
cd spidr
./view1090 --screensize 240 400 --fullsceen
### Runtime Options

92
draw.c
View file

@ -2,7 +2,7 @@
#include "structs.h" #include "structs.h"
#include "SDL2/SDL2_rotozoom.h" #include "SDL2/SDL2_rotozoom.h"
#include "SDL2/SDL2_gfxPrimitives.h" #include "SDL2/SDL2_gfxPrimitives.h"
#include "mapdata.h"
//color schemes //color schemes
#include "parula.h" #include "parula.h"
#include "monokai.h" #include "monokai.h"
@ -128,6 +128,16 @@ void pxFromLonLat(double *dx, double *dy, double lon, double lat) {
*dy = 6371.0 * (lat - appData.centerLat) * M_PI / 180.0f; *dy = 6371.0 * (lat - appData.centerLat) * M_PI / 180.0f;
} }
void latLonFromScreenCoords(double *lat, double *lon, int x, int y) {
double scale_factor = (appData.screen_width > appData.screen_height) ? appData.screen_width : appData.screen_height;
double dx = appData.maxDist * (x - (appData.screen_width>>1)) / (0.95 * scale_factor * 0.5 );
double dy = appData.maxDist * (y - (appData.screen_height * CENTEROFFSET)) / (0.95 * scale_factor * 0.5 );
*lat = 180.0f * dy / (6371.0 * M_PI) + appData.centerLat;
*lon = 180.0 * dx / (cos(((*lat + appData.centerLat)/2.0f) * M_PI / 180.0f) * 6371.0 * M_PI) + appData.centerLon;
}
void screenCoords(int *outX, int *outY, double dx, double dy) { void screenCoords(int *outX, int *outY, double dx, double dy) {
*outX = (appData.screen_width>>1) + ((dx>0) ? 1 : -1) * screenDist(dx); *outX = (appData.screen_width>>1) + ((dx>0) ? 1 : -1) * screenDist(dx);
@ -361,7 +371,77 @@ void drawGrid()
drawString("100km", (appData.screen_width>>1) + (0.707 * p100km) + 5, (appData.screen_height * CENTEROFFSET) + (0.707 * p100km) + 5, appData.mapFont, pink); drawString("100km", (appData.screen_width>>1) + (0.707 * p100km) + 5, (appData.screen_height * CENTEROFFSET) + (0.707 * p100km) + 5, appData.mapFont, pink);
} }
void drawPolys(QuadTree *tree, double screen_lat_min, double screen_lat_max, double screen_lon_min, double screen_lon_max) {
if(tree == NULL) {
return;
}
double dx, dy;
int x, y;
if (!(tree->lat_min < screen_lat_min &&
tree->lat_max > screen_lat_max &&
tree->lon_min < screen_lon_min &&
tree->lon_max > screen_lon_max)) {
return;
}
Polygon *currentPolygon = tree->polygons;
while(currentPolygon != NULL) {
// Sint16 *px = (Sint16*)malloc(sizeof(Sint16*)*currentPolygon->numPoints);
// Sint16 *py = (Sint16*)malloc(sizeof(Sint16*)*currentPolygon->numPoints);
// for(int i=0; i<currentPolygon->numPoints; i++) {
// pxFromLonLat(&dx, &dy, currentPolygon->points[i].lat, currentPolygon->points[i].lon);
// screenCoords(&x, &y, dx, dy);
// px[i] = x;
// py[i] = y;
// }
// double alpha = 1.0;
pxFromLonLat(&dx, &dy, currentPolygon->lat_min, currentPolygon->lon_min);
screenCoords(&x, &y, dx, dy);
int top = y;
int left = x;
pxFromLonLat(&dx, &dy, currentPolygon->lat_max, currentPolygon->lon_max);
screenCoords(&x, &y, dx, dy);
int bottom = y;
int right = x;
//polygonRGBA (appData.renderer, px, py, currentPolygon->numPoints, alpha * purple.r + (1.0-alpha) * blue.r, alpha * purple.g + (1.0-alpha) * blue.g, alpha * purple.b + (1.0-alpha) * blue.b, 255 * alpha);
rectangleRGBA(appData.renderer, left, top, right, bottom, purple.r, purple.g, purple.b, 255);
currentPolygon = currentPolygon->next;
}
//drawPolys(tree->nw, screen_lat_min, screen_lat_max, screen_lon_min, screen_lon_max);
//drawPolys(tree->sw, screen_lat_min, screen_lat_max, screen_lon_min, screen_lon_max);
//drawPolys(tree->ne, screen_lat_min, screen_lat_max, screen_lon_min, screen_lon_max);
//drawPolys(tree->se, screen_lat_min, screen_lat_max, screen_lon_min, screen_lon_max);
}
void drawGeography() { void drawGeography() {
double screen_lat_min, screen_lat_max, screen_lon_min, screen_lon_max;
latLonFromScreenCoords(&screen_lon_min, &screen_lat_min, 0, 0);
latLonFromScreenCoords(&screen_lon_max, &screen_lat_max, appData.screen_width, appData.screen_height);
drawPolys(&root, screen_lat_min, screen_lat_max, screen_lon_min, screen_lon_max);
return;
int x1, y1, x2, y2; int x1, y1, x2, y2;
int skip = (int)(appData.maxDist / 25.0f); int skip = (int)(appData.maxDist / 25.0f);
@ -376,11 +456,11 @@ void drawGeography() {
dx = 1; dx = 1;
dy = 1; dy = 1;
for(int j = 0; j < skip; j++) { for(int j = 0; j < skip; j++) {
if(!mapPoints_relative[(i - skip + j) * 2]) { if(!mapPoints[(i - skip + j) * 2]) {
dx = 0; dx = 0;
} }
if(!mapPoints_relative[(i - skip + j) * 2 + 1]) { if(!mapPoints[(i - skip + j) * 2 + 1]) {
dy = 0; dy = 0;
} }
} }
@ -389,7 +469,7 @@ void drawGeography() {
continue; continue;
} }
pxFromLonLat(&dx, &dy, mapPoints_relative[(i - skip) * 2], mapPoints_relative[(i - skip) * 2 + 1]); pxFromLonLat(&dx, &dy, mapPoints[(i - skip) * 2], mapPoints[(i - skip) * 2 + 1]);
if(!dx || !dy) { if(!dx || !dy) {
continue; continue;
@ -403,7 +483,7 @@ void drawGeography() {
double d1 = sqrt(dx * dx + dy * dy); double d1 = sqrt(dx * dx + dy * dy);
pxFromLonLat(&dx, &dy, mapPoints_relative[i * 2], mapPoints_relative[i * 2 + 1]); pxFromLonLat(&dx, &dy, mapPoints[i * 2], mapPoints[i * 2 + 1]);
if(!dx || !dy) { if(!dx || !dy) {
continue; continue;
@ -752,7 +832,7 @@ void drawMap() {
if((int)(now - p->seen) > DISPLAY_ACTIVE) { if((int)(now - p->seen) > DISPLAY_ACTIVE) {
planeColor = grey; planeColor = grey;
} else { } else {
planeColor = white; planeColor = green;
//srand(p->addr); //srand(p->addr);
// planeColor = hsv2SDLColor(255.0 * (double)rand()/(double)RAND_MAX, 255.0, 200.0); // planeColor = hsv2SDLColor(255.0 * (double)rand()/(double)RAND_MAX, 255.0, 200.0);
//planeColor = signalToColor((int)(255.0f * (float)rand()/(float)RAND_MAX)); //planeColor = signalToColor((int)(255.0f * (float)rand()/(float)RAND_MAX));

View file

@ -1 +1 @@
5bec8587fd94772a4061e38543ad9846ffb0fc11 737abac0c33061fb6e1c86993e1b329d8a451dcd

BIN
font.o

Binary file not shown.

BIN
gmon.out Normal file

Binary file not shown.

1
init.c
View file

@ -2,6 +2,7 @@
#include "structs.h" #include "structs.h"
void init(char *title) { void init(char *title) {
// raspberry pi compiler flag enables these options // raspberry pi compiler flag enables these options
#ifdef RPI #ifdef RPI
putenv((char*)"FRAMEBUFFER=/dev/fb1"); putenv((char*)"FRAMEBUFFER=/dev/fb1");

BIN
init.o

Binary file not shown.

View file

@ -1 +1 @@
b7c0644a5ba34c2548772d880bce685146ce9e95 bb8d618a3de2096192e6fd03ba715f6346df1193

BIN
list.o

Binary file not shown.

View file

@ -1 +1 @@
7ed2e5c3d762695e6aaf4111584830b537a549a0 212d4fb6e7ea7b3c502081037abbac1fbdd9fccf

View file

@ -1,4 +1,43 @@
#ifndef MAPPOINTS_H
#define MAPPOINTS_H
double *mapPoints_relative; double *mapPoints_relative;
double *mapPoints_x;
double *mapPoints_y;
int mapPoints_count; int mapPoints_count;
extern double mapPoints[];
typedef struct Point{
double lat;
double lon;
struct Point *next;
} Point;
typedef struct Polygon{
double lat_min;
double lat_max;
double lon_min;
double lon_max;
Point *points;
int numPoints;
struct Polygon *next;
} Polygon;
typedef struct QuadTree{
double lat_min;
double lat_max;
double lon_min;
double lon_max;
Polygon *polygons;
struct QuadTree *nw;
struct QuadTree *sw;
struct QuadTree *ne;
struct QuadTree *se;
} QuadTree;
QuadTree root;
#endif

View file

@ -1 +1 @@
c95610367de3a9e8503644016da9760739f94993 1c1e7d6bdf081956022b7592b8d59a929da2f463

BIN
monokai.o

Binary file not shown.

Binary file not shown.

517
prof_output_nogeography Normal file
View file

@ -0,0 +1,517 @@
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls us/call us/call name
66.67 0.02 0.02 600 33.34 33.34 resolveLabelConflicts
33.34 0.03 0.01 2147 4.66 4.66 drawTrail
0.00 0.03 0.00 9666 0.00 0.00 screenDist
0.00 0.03 0.00 4935 0.00 0.00 mstime
0.00 0.03 0.00 4608 0.00 0.00 pxFromLonLat
0.00 0.03 0.00 4608 0.00 0.00 screenCoords
0.00 0.03 0.00 2831 0.00 0.00 outOfBounds
0.00 0.03 0.00 2147 0.00 0.00 findPlaneObj
0.00 0.03 0.00 1770 0.00 0.00 drawStringBG
0.00 0.03 0.00 1650 0.00 0.00 drawString
0.00 0.03 0.00 1598 0.00 0.00 CROSSVP
0.00 0.03 0.00 985 0.00 0.00 drawPlaneText
0.00 0.03 0.00 656 0.00 0.00 drawSignalMarks
0.00 0.03 0.00 656 0.00 0.00 setColor
0.00 0.03 0.00 656 0.00 0.00 signalToColor
0.00 0.03 0.00 600 0.00 0.00 drawStatusBox
0.00 0.03 0.00 528 0.00 0.00 drawPlaneHeading
0.00 0.03 0.00 493 0.00 0.00 modesChecksum
0.00 0.03 0.00 457 0.00 0.00 drawPlaneOffMap
0.00 0.03 0.00 387 0.00 0.00 ICAOCacheHashAddress
0.00 0.03 0.00 386 0.00 0.00 decodeBinMessage
0.00 0.03 0.00 386 0.00 0.00 decodeModesMessage
0.00 0.03 0.00 386 0.00 0.00 modesMessageLenByType
0.00 0.03 0.00 386 0.00 0.00 useModesMessage
0.00 0.03 0.00 373 0.00 0.00 interactiveFindAircraft
0.00 0.03 0.00 373 0.00 0.00 interactiveReceiveData
0.00 0.03 0.00 330 0.00 0.00 cprNLFunction
0.00 0.03 0.00 324 0.00 0.00 getInput
0.00 0.03 0.00 323 0.00 92.88 draw
0.00 0.03 0.00 323 0.00 0.00 interactiveRemoveStaleAircrafts
0.00 0.03 0.00 323 0.00 0.00 modesReadFromClient
0.00 0.03 0.00 206 0.00 0.00 addRecentlySeenICAOAddr
0.00 0.03 0.00 181 0.00 0.00 ICAOAddressWasRecentlySeen
0.00 0.03 0.00 172 0.00 0.00 sign
0.00 0.03 0.00 167 0.00 0.00 decodeAC13Field
0.00 0.03 0.00 165 0.00 0.00 cprModFunction
0.00 0.03 0.00 150 0.00 0.00 drawGrid
0.00 0.03 0.00 150 0.00 200.01 drawMap
0.00 0.03 0.00 150 0.00 0.00 drawStatus
0.00 0.03 0.00 150 0.00 0.00 updatePlanes
0.00 0.03 0.00 150 0.00 0.00 updateStatus
0.00 0.03 0.00 110 0.00 0.00 cprNFunction
0.00 0.03 0.00 108 0.00 0.00 mstime
0.00 0.03 0.00 72 0.00 0.00 decodeAC12Field
0.00 0.03 0.00 72 0.00 0.00 mstime
0.00 0.03 0.00 55 0.00 0.00 cprDlonFunction
0.00 0.03 0.00 55 0.00 0.00 decodeCPR
0.00 0.03 0.00 22 0.00 0.00 decodeID13Field
0.00 0.03 0.00 19 0.00 0.00 ModeAToModeC
0.00 0.03 0.00 17 0.00 0.00 createPlaneObj
0.00 0.03 0.00 17 0.00 0.00 decodeCPRrelative
0.00 0.03 0.00 17 0.00 0.00 interactiveCreateAircraft
0.00 0.03 0.00 6 0.00 0.00 interactiveRemoveStaleDF
0.00 0.03 0.00 5 0.00 0.00 closeFont
0.00 0.03 0.00 5 0.00 0.00 loadFont
0.00 0.03 0.00 1 0.00 0.00 anetCreateSocket
0.00 0.03 0.00 1 0.00 0.00 anetNonBlock
0.00 0.03 0.00 1 0.00 0.00 anetTcpConnect
0.00 0.03 0.00 1 0.00 0.00 anetTcpGenericConnect
0.00 0.03 0.00 1 0.00 0.00 init
0.00 0.03 0.00 1 0.00 0.00 initMaps
0.00 0.03 0.00 1 0.00 0.00 modesInitErrorInfo
0.00 0.03 0.00 1 0.00 0.00 setupConnection
0.00 0.03 0.00 1 0.00 0.00 view1090Init
0.00 0.03 0.00 1 0.00 0.00 view1090InitConfig
% the percentage of the total running time of the
time program used by this function.
cumulative a running sum of the number of seconds accounted
seconds for by this function and those listed above it.
self the number of seconds accounted for by this
seconds function alone. This is the major sort for this
listing.
calls the number of times this function was invoked, if
this function is profiled, else blank.
self the average number of milliseconds spent in this
ms/call function per call, if this function is profiled,
else blank.
total the average number of milliseconds spent in this
ms/call function and its descendents per call, if this
function is profiled, else blank.
name the name of the function. This is the minor sort
for this listing. The index shows the location of
the function in the gprof listing. If the index is
in parenthesis it shows where it would appear in
the gprof listing if it were to be printed.
Copyright (C) 2012-2018 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
Call graph (explanation follows)
granularity: each sample hit covers 2 byte(s) for 33.33% of 0.03 seconds
index % time self children called name
0.00 0.03 323/323 main [3]
[1] 100.0 0.00 0.03 323 draw [1]
0.00 0.03 150/150 drawMap [2]
0.00 0.00 473/4935 mstime [7]
0.00 0.00 150/150 updatePlanes [41]
0.00 0.00 150/150 updateStatus [42]
0.00 0.00 150/150 drawStatus [40]
-----------------------------------------------
0.00 0.03 150/150 draw [1]
[2] 100.0 0.00 0.03 150 drawMap [2]
0.02 0.00 600/600 resolveLabelConflicts [4]
0.01 0.00 2147/2147 drawTrail [5]
0.00 0.00 3150/4935 mstime [7]
0.00 0.00 2152/4608 pxFromLonLat [8]
0.00 0.00 2152/4608 screenCoords [9]
0.00 0.00 985/2831 outOfBounds [10]
0.00 0.00 985/985 drawPlaneText [15]
0.00 0.00 528/528 drawPlaneHeading [20]
0.00 0.00 457/457 drawPlaneOffMap [22]
0.00 0.00 150/150 drawGrid [39]
-----------------------------------------------
<spontaneous>
[3] 100.0 0.00 0.03 main [3]
0.00 0.03 323/323 draw [1]
0.00 0.00 324/324 getInput [31]
0.00 0.00 323/323 interactiveRemoveStaleAircrafts [32]
0.00 0.00 323/323 modesReadFromClient [33]
0.00 0.00 1/1 view1090InitConfig [66]
0.00 0.00 1/1 view1090Init [65]
0.00 0.00 1/1 setupConnection [64]
0.00 0.00 1/1 init [61]
-----------------------------------------------
0.02 0.00 600/600 drawMap [2]
[4] 66.7 0.02 0.00 600 resolveLabelConflicts [4]
0.00 0.00 172/172 sign [36]
-----------------------------------------------
0.01 0.00 2147/2147 drawMap [2]
[5] 33.3 0.01 0.00 2147 drawTrail [5]
0.00 0.00 2456/4608 pxFromLonLat [8]
0.00 0.00 2456/4608 screenCoords [9]
0.00 0.00 1846/2831 outOfBounds [10]
0.00 0.00 613/1598 CROSSVP [14]
-----------------------------------------------
0.00 0.00 450/9666 drawGrid [39]
0.00 0.00 9216/9666 screenCoords [9]
[6] 0.0 0.00 0.00 9666 screenDist [6]
-----------------------------------------------
0.00 0.00 473/4935 draw [1]
0.00 0.00 1312/4935 drawSignalMarks [16]
0.00 0.00 3150/4935 drawMap [2]
[7] 0.0 0.00 0.00 4935 mstime [7]
-----------------------------------------------
0.00 0.00 2152/4608 drawMap [2]
0.00 0.00 2456/4608 drawTrail [5]
[8] 0.0 0.00 0.00 4608 pxFromLonLat [8]
-----------------------------------------------
0.00 0.00 2152/4608 drawMap [2]
0.00 0.00 2456/4608 drawTrail [5]
[9] 0.0 0.00 0.00 4608 screenCoords [9]
0.00 0.00 9216/9666 screenDist [6]
-----------------------------------------------
0.00 0.00 985/2831 drawMap [2]
0.00 0.00 1846/2831 drawTrail [5]
[10] 0.0 0.00 0.00 2831 outOfBounds [10]
-----------------------------------------------
0.00 0.00 2147/2147 updatePlanes [41]
[11] 0.0 0.00 0.00 2147 findPlaneObj [11]
-----------------------------------------------
0.00 0.00 1770/1770 drawPlaneText [15]
[12] 0.0 0.00 0.00 1770 drawStringBG [12]
-----------------------------------------------
0.00 0.00 450/1650 drawGrid [39]
0.00 0.00 1200/1650 drawStatusBox [19]
[13] 0.0 0.00 0.00 1650 drawString [13]
-----------------------------------------------
0.00 0.00 457/1598 drawPlaneOffMap [22]
0.00 0.00 528/1598 drawPlaneHeading [20]
0.00 0.00 613/1598 drawTrail [5]
[14] 0.0 0.00 0.00 1598 CROSSVP [14]
-----------------------------------------------
0.00 0.00 985/985 drawMap [2]
[15] 0.0 0.00 0.00 985 drawPlaneText [15]
0.00 0.00 1770/1770 drawStringBG [12]
0.00 0.00 656/656 drawSignalMarks [16]
-----------------------------------------------
0.00 0.00 656/656 drawPlaneText [15]
[16] 0.0 0.00 0.00 656 drawSignalMarks [16]
0.00 0.00 1312/4935 mstime [7]
0.00 0.00 656/656 signalToColor [18]
-----------------------------------------------
0.00 0.00 656/656 signalToColor [18]
[17] 0.0 0.00 0.00 656 setColor [17]
-----------------------------------------------
0.00 0.00 656/656 drawSignalMarks [16]
[18] 0.0 0.00 0.00 656 signalToColor [18]
0.00 0.00 656/656 setColor [17]
-----------------------------------------------
0.00 0.00 600/600 drawStatus [40]
[19] 0.0 0.00 0.00 600 drawStatusBox [19]
0.00 0.00 1200/1650 drawString [13]
-----------------------------------------------
0.00 0.00 528/528 drawMap [2]
[20] 0.0 0.00 0.00 528 drawPlaneHeading [20]
0.00 0.00 528/1598 CROSSVP [14]
-----------------------------------------------
0.00 0.00 107/493 modesInitErrorInfo [63]
0.00 0.00 386/493 decodeModesMessage [25]
[21] 0.0 0.00 0.00 493 modesChecksum [21]
-----------------------------------------------
0.00 0.00 457/457 drawMap [2]
[22] 0.0 0.00 0.00 457 drawPlaneOffMap [22]
0.00 0.00 457/1598 CROSSVP [14]
-----------------------------------------------
0.00 0.00 181/387 ICAOAddressWasRecentlySeen [35]
0.00 0.00 206/387 addRecentlySeenICAOAddr [34]
[23] 0.0 0.00 0.00 387 ICAOCacheHashAddress [23]
-----------------------------------------------
0.00 0.00 386/386 modesReadFromClient [33]
[24] 0.0 0.00 0.00 386 decodeBinMessage [24]
0.00 0.00 386/386 decodeModesMessage [25]
0.00 0.00 386/386 useModesMessage [27]
-----------------------------------------------
0.00 0.00 386/386 decodeBinMessage [24]
[25] 0.0 0.00 0.00 386 decodeModesMessage [25]
0.00 0.00 386/386 modesMessageLenByType [26]
0.00 0.00 386/493 modesChecksum [21]
0.00 0.00 206/206 addRecentlySeenICAOAddr [34]
0.00 0.00 181/181 ICAOAddressWasRecentlySeen [35]
0.00 0.00 167/167 decodeAC13Field [37]
0.00 0.00 72/72 decodeAC12Field [45]
0.00 0.00 3/22 decodeID13Field [49]
-----------------------------------------------
0.00 0.00 386/386 decodeModesMessage [25]
[26] 0.0 0.00 0.00 386 modesMessageLenByType [26]
-----------------------------------------------
0.00 0.00 386/386 decodeBinMessage [24]
[27] 0.0 0.00 0.00 386 useModesMessage [27]
0.00 0.00 373/373 interactiveReceiveData [29]
-----------------------------------------------
0.00 0.00 373/373 interactiveReceiveData [29]
[28] 0.0 0.00 0.00 373 interactiveFindAircraft [28]
-----------------------------------------------
0.00 0.00 373/373 useModesMessage [27]
[29] 0.0 0.00 0.00 373 interactiveReceiveData [29]
0.00 0.00 373/373 interactiveFindAircraft [28]
0.00 0.00 72/72 mstime [46]
0.00 0.00 55/55 decodeCPR [48]
0.00 0.00 17/17 interactiveCreateAircraft [53]
0.00 0.00 17/17 decodeCPRrelative [52]
-----------------------------------------------
0.00 0.00 110/330 cprNFunction [43]
0.00 0.00 220/330 decodeCPR [48]
[30] 0.0 0.00 0.00 330 cprNLFunction [30]
-----------------------------------------------
0.00 0.00 324/324 main [3]
[31] 0.0 0.00 0.00 324 getInput [31]
-----------------------------------------------
0.00 0.00 323/323 main [3]
[32] 0.0 0.00 0.00 323 interactiveRemoveStaleAircrafts [32]
0.00 0.00 6/6 interactiveRemoveStaleDF [54]
-----------------------------------------------
0.00 0.00 323/323 main [3]
[33] 0.0 0.00 0.00 323 modesReadFromClient [33]
0.00 0.00 386/386 decodeBinMessage [24]
-----------------------------------------------
0.00 0.00 206/206 decodeModesMessage [25]
[34] 0.0 0.00 0.00 206 addRecentlySeenICAOAddr [34]
0.00 0.00 206/387 ICAOCacheHashAddress [23]
-----------------------------------------------
0.00 0.00 181/181 decodeModesMessage [25]
[35] 0.0 0.00 0.00 181 ICAOAddressWasRecentlySeen [35]
0.00 0.00 181/387 ICAOCacheHashAddress [23]
-----------------------------------------------
0.00 0.00 172/172 resolveLabelConflicts [4]
[36] 0.0 0.00 0.00 172 sign [36]
-----------------------------------------------
0.00 0.00 167/167 decodeModesMessage [25]
[37] 0.0 0.00 0.00 167 decodeAC13Field [37]
0.00 0.00 10/22 decodeID13Field [49]
0.00 0.00 10/19 ModeAToModeC [50]
-----------------------------------------------
0.00 0.00 165/165 decodeCPR [48]
[38] 0.0 0.00 0.00 165 cprModFunction [38]
-----------------------------------------------
0.00 0.00 150/150 drawMap [2]
[39] 0.0 0.00 0.00 150 drawGrid [39]
0.00 0.00 450/9666 screenDist [6]
0.00 0.00 450/1650 drawString [13]
-----------------------------------------------
0.00 0.00 150/150 draw [1]
[40] 0.0 0.00 0.00 150 drawStatus [40]
0.00 0.00 600/600 drawStatusBox [19]
-----------------------------------------------
0.00 0.00 150/150 draw [1]
[41] 0.0 0.00 0.00 150 updatePlanes [41]
0.00 0.00 2147/2147 findPlaneObj [11]
0.00 0.00 108/108 mstime [44]
0.00 0.00 17/17 createPlaneObj [51]
-----------------------------------------------
0.00 0.00 150/150 draw [1]
[42] 0.0 0.00 0.00 150 updateStatus [42]
-----------------------------------------------
0.00 0.00 55/110 cprDlonFunction [47]
0.00 0.00 55/110 decodeCPR [48]
[43] 0.0 0.00 0.00 110 cprNFunction [43]
0.00 0.00 110/330 cprNLFunction [30]
-----------------------------------------------
0.00 0.00 108/108 updatePlanes [41]
[44] 0.0 0.00 0.00 108 mstime [44]
-----------------------------------------------
0.00 0.00 72/72 decodeModesMessage [25]
[45] 0.0 0.00 0.00 72 decodeAC12Field [45]
0.00 0.00 9/22 decodeID13Field [49]
0.00 0.00 9/19 ModeAToModeC [50]
-----------------------------------------------
0.00 0.00 72/72 interactiveReceiveData [29]
[46] 0.0 0.00 0.00 72 mstime [46]
-----------------------------------------------
0.00 0.00 55/55 decodeCPR [48]
[47] 0.0 0.00 0.00 55 cprDlonFunction [47]
0.00 0.00 55/110 cprNFunction [43]
-----------------------------------------------
0.00 0.00 55/55 interactiveReceiveData [29]
[48] 0.0 0.00 0.00 55 decodeCPR [48]
0.00 0.00 220/330 cprNLFunction [30]
0.00 0.00 165/165 cprModFunction [38]
0.00 0.00 55/110 cprNFunction [43]
0.00 0.00 55/55 cprDlonFunction [47]
-----------------------------------------------
0.00 0.00 3/22 decodeModesMessage [25]
0.00 0.00 9/22 decodeAC12Field [45]
0.00 0.00 10/22 decodeAC13Field [37]
[49] 0.0 0.00 0.00 22 decodeID13Field [49]
-----------------------------------------------
0.00 0.00 9/19 decodeAC12Field [45]
0.00 0.00 10/19 decodeAC13Field [37]
[50] 0.0 0.00 0.00 19 ModeAToModeC [50]
-----------------------------------------------
0.00 0.00 17/17 updatePlanes [41]
[51] 0.0 0.00 0.00 17 createPlaneObj [51]
-----------------------------------------------
0.00 0.00 17/17 interactiveReceiveData [29]
[52] 0.0 0.00 0.00 17 decodeCPRrelative [52]
-----------------------------------------------
0.00 0.00 17/17 interactiveReceiveData [29]
[53] 0.0 0.00 0.00 17 interactiveCreateAircraft [53]
-----------------------------------------------
0.00 0.00 6/6 interactiveRemoveStaleAircrafts [32]
[54] 0.0 0.00 0.00 6 interactiveRemoveStaleDF [54]
-----------------------------------------------
0.00 0.00 5/5 cleanup [85]
[55] 0.0 0.00 0.00 5 closeFont [55]
-----------------------------------------------
0.00 0.00 5/5 init [61]
[56] 0.0 0.00 0.00 5 loadFont [56]
-----------------------------------------------
0.00 0.00 1/1 anetTcpGenericConnect [60]
[57] 0.0 0.00 0.00 1 anetCreateSocket [57]
-----------------------------------------------
0.00 0.00 1/1 setupConnection [64]
[58] 0.0 0.00 0.00 1 anetNonBlock [58]
-----------------------------------------------
0.00 0.00 1/1 setupConnection [64]
[59] 0.0 0.00 0.00 1 anetTcpConnect [59]
0.00 0.00 1/1 anetTcpGenericConnect [60]
-----------------------------------------------
0.00 0.00 1/1 anetTcpConnect [59]
[60] 0.0 0.00 0.00 1 anetTcpGenericConnect [60]
0.00 0.00 1/1 anetCreateSocket [57]
-----------------------------------------------
0.00 0.00 1/1 main [3]
[61] 0.0 0.00 0.00 1 init [61]
0.00 0.00 5/5 loadFont [56]
0.00 0.00 1/1 initMaps [62]
-----------------------------------------------
0.00 0.00 1/1 init [61]
[62] 0.0 0.00 0.00 1 initMaps [62]
-----------------------------------------------
0.00 0.00 1/1 view1090Init [65]
[63] 0.0 0.00 0.00 1 modesInitErrorInfo [63]
0.00 0.00 107/493 modesChecksum [21]
-----------------------------------------------
0.00 0.00 1/1 main [3]
[64] 0.0 0.00 0.00 1 setupConnection [64]
0.00 0.00 1/1 anetTcpConnect [59]
0.00 0.00 1/1 anetNonBlock [58]
-----------------------------------------------
0.00 0.00 1/1 main [3]
[65] 0.0 0.00 0.00 1 view1090Init [65]
0.00 0.00 1/1 modesInitErrorInfo [63]
-----------------------------------------------
0.00 0.00 1/1 main [3]
[66] 0.0 0.00 0.00 1 view1090InitConfig [66]
-----------------------------------------------
This table describes the call tree of the program, and was sorted by
the total amount of time spent in each function and its children.
Each entry in this table consists of several lines. The line with the
index number at the left hand margin lists the current function.
The lines above it list the functions that called this function,
and the lines below it list the functions this one called.
This line lists:
index A unique number given to each element of the table.
Index numbers are sorted numerically.
The index number is printed next to every function name so
it is easier to look up where the function is in the table.
% time This is the percentage of the `total' time that was spent
in this function and its children. Note that due to
different viewpoints, functions excluded by options, etc,
these numbers will NOT add up to 100%.
self This is the total amount of time spent in this function.
children This is the total amount of time propagated into this
function by its children.
called This is the number of times the function was called.
If the function called itself recursively, the number
only includes non-recursive calls, and is followed by
a `+' and the number of recursive calls.
name The name of the current function. The index number is
printed after it. If the function is a member of a
cycle, the cycle number is printed between the
function's name and the index number.
For the function's parents, the fields have the following meanings:
self This is the amount of time that was propagated directly
from the function into this parent.
children This is the amount of time that was propagated from
the function's children into this parent.
called This is the number of times this parent called the
function `/' the total number of times the function
was called. Recursive calls to the function are not
included in the number after the `/'.
name This is the name of the parent. The parent's index
number is printed after it. If the parent is a
member of a cycle, the cycle number is printed between
the name and the index number.
If the parents of the function cannot be determined, the word
`<spontaneous>' is printed in the `name' field, and all the other
fields are blank.
For the function's children, the fields have the following meanings:
self This is the amount of time that was propagated directly
from the child into the function.
children This is the amount of time that was propagated from the
child's children to the function.
called This is the number of times the function called
this child `/' the total number of times the child
was called. Recursive calls by the child are not
listed in the number after the `/'.
name This is the name of the child. The child's index
number is printed after it. If the child is a
member of a cycle, the cycle number is printed
between the name and the index number.
If there are any cycles (circles) in the call graph, there is an
entry for the cycle-as-a-whole. This entry shows who called the
cycle (as parents) and the members of the cycle (as children.)
The `+' recursive calls entry shows the number of function calls that
were internal to the cycle, and the calls entry for each member shows,
for that member, how many times it was called from other members of
the cycle.
Copyright (C) 2012-2018 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
Index by function name
[14] CROSSVP [1] draw [21] modesChecksum
[35] ICAOAddressWasRecentlySeen [39] drawGrid [63] modesInitErrorInfo
[23] ICAOCacheHashAddress [2] drawMap [26] modesMessageLenByType
[50] ModeAToModeC [20] drawPlaneHeading [33] modesReadFromClient
[34] addRecentlySeenICAOAddr [22] drawPlaneOffMap [46] mstime
[57] anetCreateSocket [15] drawPlaneText [44] mstime
[58] anetNonBlock [16] drawSignalMarks [7] mstime
[59] anetTcpConnect [40] drawStatus [10] outOfBounds
[60] anetTcpGenericConnect [19] drawStatusBox [8] pxFromLonLat
[55] closeFont [13] drawString [4] resolveLabelConflicts
[47] cprDlonFunction [12] drawStringBG [9] screenCoords
[38] cprModFunction [5] drawTrail [6] screenDist
[43] cprNFunction [11] findPlaneObj [17] setColor
[30] cprNLFunction [31] getInput [64] setupConnection
[51] createPlaneObj [61] init [36] sign
[45] decodeAC12Field [62] initMaps [18] signalToColor
[37] decodeAC13Field [53] interactiveCreateAircraft [41] updatePlanes
[24] decodeBinMessage [28] interactiveFindAircraft [42] updateStatus
[48] decodeCPR [29] interactiveReceiveData [27] useModesMessage
[52] decodeCPRrelative [32] interactiveRemoveStaleAircrafts [65] view1090Init
[49] decodeID13Field [54] interactiveRemoveStaleDF [66] view1090InitConfig
[25] decodeModesMessage [56] loadFont

517
prof_output_withgeography Normal file
View file

@ -0,0 +1,517 @@
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
38.46 0.05 0.05 62 0.81 2.10 drawGeography
23.08 0.08 0.03 7006834 0.00 0.00 screenDist
23.08 0.11 0.03 3503324 0.00 0.00 screenCoords
15.39 0.13 0.02 3508939 0.00 0.00 pxFromLonLat
0.00 0.13 0.00 3502994 0.00 0.00 outOfBounds
0.00 0.13 0.00 1057 0.00 0.00 mstime
0.00 0.13 0.00 698 0.00 0.00 drawTrail
0.00 0.13 0.00 698 0.00 0.00 findPlaneObj
0.00 0.13 0.00 682 0.00 0.00 drawString
0.00 0.13 0.00 510 0.00 0.00 drawStringBG
0.00 0.13 0.00 478 0.00 0.00 modesChecksum
0.00 0.13 0.00 372 0.00 0.00 ICAOCacheHashAddress
0.00 0.13 0.00 371 0.00 0.00 decodeBinMessage
0.00 0.13 0.00 371 0.00 0.00 decodeModesMessage
0.00 0.13 0.00 371 0.00 0.00 modesMessageLenByType
0.00 0.13 0.00 371 0.00 0.00 useModesMessage
0.00 0.13 0.00 351 0.00 0.00 interactiveFindAircraft
0.00 0.13 0.00 351 0.00 0.00 interactiveReceiveData
0.00 0.13 0.00 251 0.00 0.00 CROSSVP
0.00 0.13 0.00 248 0.00 0.00 drawStatusBox
0.00 0.13 0.00 248 0.00 0.00 resolveLabelConflicts
0.00 0.13 0.00 234 0.00 0.00 cprNLFunction
0.00 0.13 0.00 199 0.00 0.00 ICAOAddressWasRecentlySeen
0.00 0.13 0.00 178 0.00 0.00 drawPlaneText
0.00 0.13 0.00 175 0.00 0.00 decodeAC13Field
0.00 0.13 0.00 173 0.00 0.00 addRecentlySeenICAOAddr
0.00 0.13 0.00 172 0.00 0.00 sign
0.00 0.13 0.00 170 0.00 0.00 drawSignalMarks
0.00 0.13 0.00 170 0.00 0.00 setColor
0.00 0.13 0.00 170 0.00 0.00 signalToColor
0.00 0.13 0.00 117 0.00 0.00 cprModFunction
0.00 0.13 0.00 89 0.00 0.00 drawPlaneHeading
0.00 0.13 0.00 89 0.00 0.00 drawPlaneOffMap
0.00 0.13 0.00 82 0.00 0.00 mstime
0.00 0.13 0.00 78 0.00 0.00 cprNFunction
0.00 0.13 0.00 63 0.00 0.00 getInput
0.00 0.13 0.00 62 0.00 2.10 draw
0.00 0.13 0.00 62 0.00 0.00 drawGrid
0.00 0.13 0.00 62 0.00 2.10 drawMap
0.00 0.13 0.00 62 0.00 0.00 drawStatus
0.00 0.13 0.00 62 0.00 0.00 interactiveRemoveStaleAircrafts
0.00 0.13 0.00 62 0.00 0.00 modesReadFromClient
0.00 0.13 0.00 62 0.00 0.00 updatePlanes
0.00 0.13 0.00 62 0.00 0.00 updateStatus
0.00 0.13 0.00 57 0.00 0.00 decodeAC12Field
0.00 0.13 0.00 57 0.00 0.00 mstime
0.00 0.13 0.00 39 0.00 0.00 cprDlonFunction
0.00 0.13 0.00 39 0.00 0.00 decodeCPR
0.00 0.13 0.00 18 0.00 0.00 decodeCPRrelative
0.00 0.13 0.00 13 0.00 0.00 createPlaneObj
0.00 0.13 0.00 13 0.00 0.00 interactiveCreateAircraft
0.00 0.13 0.00 7 0.00 0.00 decodeID13Field
0.00 0.13 0.00 6 0.00 0.00 interactiveRemoveStaleDF
0.00 0.13 0.00 5 0.00 0.00 closeFont
0.00 0.13 0.00 5 0.00 0.00 loadFont
0.00 0.13 0.00 1 0.00 0.00 anetCreateSocket
0.00 0.13 0.00 1 0.00 0.00 anetNonBlock
0.00 0.13 0.00 1 0.00 0.00 anetTcpConnect
0.00 0.13 0.00 1 0.00 0.00 anetTcpGenericConnect
0.00 0.13 0.00 1 0.00 0.00 init
0.00 0.13 0.00 1 0.00 0.00 initMaps
0.00 0.13 0.00 1 0.00 0.00 modesInitErrorInfo
0.00 0.13 0.00 1 0.00 0.00 setupConnection
0.00 0.13 0.00 1 0.00 0.00 view1090Init
0.00 0.13 0.00 1 0.00 0.00 view1090InitConfig
% the percentage of the total running time of the
time program used by this function.
cumulative a running sum of the number of seconds accounted
seconds for by this function and those listed above it.
self the number of seconds accounted for by this
seconds function alone. This is the major sort for this
listing.
calls the number of times this function was invoked, if
this function is profiled, else blank.
self the average number of milliseconds spent in this
ms/call function per call, if this function is profiled,
else blank.
total the average number of milliseconds spent in this
ms/call function and its descendents per call, if this
function is profiled, else blank.
name the name of the function. This is the minor sort
for this listing. The index shows the location of
the function in the gprof listing. If the index is
in parenthesis it shows where it would appear in
the gprof listing if it were to be printed.
Copyright (C) 2012-2018 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
Call graph (explanation follows)
granularity: each sample hit covers 2 byte(s) for 7.69% of 0.13 seconds
index % time self children called name
0.00 0.13 62/62 main [3]
[1] 100.0 0.00 0.13 62 draw [1]
0.00 0.13 62/62 drawMap [2]
0.00 0.00 124/1057 mstime [11]
0.00 0.00 62/62 updatePlanes [44]
0.00 0.00 62/62 updateStatus [45]
0.00 0.00 62/62 drawStatus [41]
-----------------------------------------------
0.00 0.13 62/62 draw [1]
[2] 100.0 0.00 0.13 62 drawMap [2]
0.05 0.08 62/62 drawGeography [4]
0.00 0.00 698/698 drawTrail [8]
0.00 0.00 406/3503324 screenCoords [5]
0.00 0.00 406/3508939 pxFromLonLat [7]
0.00 0.00 62/62 drawGrid [9]
0.00 0.00 593/1057 mstime [11]
0.00 0.00 248/248 resolveLabelConflicts [25]
0.00 0.00 178/3502994 outOfBounds [10]
0.00 0.00 178/178 drawPlaneText [28]
0.00 0.00 89/89 drawPlaneOffMap [37]
0.00 0.00 89/89 drawPlaneHeading [36]
-----------------------------------------------
<spontaneous>
[3] 100.0 0.00 0.13 main [3]
0.00 0.13 62/62 draw [1]
0.00 0.00 63/63 getInput [40]
0.00 0.00 62/62 interactiveRemoveStaleAircrafts [42]
0.00 0.00 62/62 modesReadFromClient [43]
0.00 0.00 1/1 view1090InitConfig [66]
0.00 0.00 1/1 view1090Init [65]
0.00 0.00 1/1 setupConnection [64]
0.00 0.00 1/1 init [61]
-----------------------------------------------
0.05 0.08 62/62 drawMap [2]
[4] 100.0 0.05 0.08 62 drawGeography [4]
0.03 0.03 3502560/3503324 screenCoords [5]
0.02 0.00 3508175/3508939 pxFromLonLat [7]
0.00 0.00 3502560/3502994 outOfBounds [10]
-----------------------------------------------
0.00 0.00 358/3503324 drawTrail [8]
0.00 0.00 406/3503324 drawMap [2]
0.03 0.03 3502560/3503324 drawGeography [4]
[5] 46.2 0.03 0.03 3503324 screenCoords [5]
0.03 0.00 7006648/7006834 screenDist [6]
-----------------------------------------------
0.00 0.00 186/7006834 drawGrid [9]
0.03 0.00 7006648/7006834 screenCoords [5]
[6] 23.1 0.03 0.00 7006834 screenDist [6]
-----------------------------------------------
0.00 0.00 358/3508939 drawTrail [8]
0.00 0.00 406/3508939 drawMap [2]
0.02 0.00 3508175/3508939 drawGeography [4]
[7] 15.4 0.02 0.00 3508939 pxFromLonLat [7]
-----------------------------------------------
0.00 0.00 698/698 drawMap [2]
[8] 0.0 0.00 0.00 698 drawTrail [8]
0.00 0.00 358/3503324 screenCoords [5]
0.00 0.00 358/3508939 pxFromLonLat [7]
0.00 0.00 256/3502994 outOfBounds [10]
0.00 0.00 73/251 CROSSVP [23]
-----------------------------------------------
0.00 0.00 62/62 drawMap [2]
[9] 0.0 0.00 0.00 62 drawGrid [9]
0.00 0.00 186/7006834 screenDist [6]
0.00 0.00 186/682 drawString [13]
-----------------------------------------------
0.00 0.00 178/3502994 drawMap [2]
0.00 0.00 256/3502994 drawTrail [8]
0.00 0.00 3502560/3502994 drawGeography [4]
[10] 0.0 0.00 0.00 3502994 outOfBounds [10]
-----------------------------------------------
0.00 0.00 124/1057 draw [1]
0.00 0.00 340/1057 drawSignalMarks [32]
0.00 0.00 593/1057 drawMap [2]
[11] 0.0 0.00 0.00 1057 mstime [11]
-----------------------------------------------
0.00 0.00 698/698 updatePlanes [44]
[12] 0.0 0.00 0.00 698 findPlaneObj [12]
-----------------------------------------------
0.00 0.00 186/682 drawGrid [9]
0.00 0.00 496/682 drawStatusBox [24]
[13] 0.0 0.00 0.00 682 drawString [13]
-----------------------------------------------
0.00 0.00 510/510 drawPlaneText [28]
[14] 0.0 0.00 0.00 510 drawStringBG [14]
-----------------------------------------------
0.00 0.00 107/478 modesInitErrorInfo [63]
0.00 0.00 371/478 decodeModesMessage [18]
[15] 0.0 0.00 0.00 478 modesChecksum [15]
-----------------------------------------------
0.00 0.00 173/372 addRecentlySeenICAOAddr [30]
0.00 0.00 199/372 ICAOAddressWasRecentlySeen [27]
[16] 0.0 0.00 0.00 372 ICAOCacheHashAddress [16]
-----------------------------------------------
0.00 0.00 371/371 modesReadFromClient [43]
[17] 0.0 0.00 0.00 371 decodeBinMessage [17]
0.00 0.00 371/371 decodeModesMessage [18]
0.00 0.00 371/371 useModesMessage [20]
-----------------------------------------------
0.00 0.00 371/371 decodeBinMessage [17]
[18] 0.0 0.00 0.00 371 decodeModesMessage [18]
0.00 0.00 371/371 modesMessageLenByType [19]
0.00 0.00 371/478 modesChecksum [15]
0.00 0.00 199/199 ICAOAddressWasRecentlySeen [27]
0.00 0.00 175/175 decodeAC13Field [29]
0.00 0.00 173/173 addRecentlySeenICAOAddr [30]
0.00 0.00 57/57 decodeAC12Field [46]
0.00 0.00 7/7 decodeID13Field [53]
-----------------------------------------------
0.00 0.00 371/371 decodeModesMessage [18]
[19] 0.0 0.00 0.00 371 modesMessageLenByType [19]
-----------------------------------------------
0.00 0.00 371/371 decodeBinMessage [17]
[20] 0.0 0.00 0.00 371 useModesMessage [20]
0.00 0.00 351/351 interactiveReceiveData [22]
-----------------------------------------------
0.00 0.00 351/351 interactiveReceiveData [22]
[21] 0.0 0.00 0.00 351 interactiveFindAircraft [21]
-----------------------------------------------
0.00 0.00 351/351 useModesMessage [20]
[22] 0.0 0.00 0.00 351 interactiveReceiveData [22]
0.00 0.00 351/351 interactiveFindAircraft [21]
0.00 0.00 57/57 mstime [47]
0.00 0.00 39/39 decodeCPR [49]
0.00 0.00 18/18 decodeCPRrelative [50]
0.00 0.00 13/13 interactiveCreateAircraft [52]
-----------------------------------------------
0.00 0.00 73/251 drawTrail [8]
0.00 0.00 89/251 drawPlaneOffMap [37]
0.00 0.00 89/251 drawPlaneHeading [36]
[23] 0.0 0.00 0.00 251 CROSSVP [23]
-----------------------------------------------
0.00 0.00 248/248 drawStatus [41]
[24] 0.0 0.00 0.00 248 drawStatusBox [24]
0.00 0.00 496/682 drawString [13]
-----------------------------------------------
0.00 0.00 248/248 drawMap [2]
[25] 0.0 0.00 0.00 248 resolveLabelConflicts [25]
0.00 0.00 172/172 sign [31]
-----------------------------------------------
0.00 0.00 78/234 cprNFunction [39]
0.00 0.00 156/234 decodeCPR [49]
[26] 0.0 0.00 0.00 234 cprNLFunction [26]
-----------------------------------------------
0.00 0.00 199/199 decodeModesMessage [18]
[27] 0.0 0.00 0.00 199 ICAOAddressWasRecentlySeen [27]
0.00 0.00 199/372 ICAOCacheHashAddress [16]
-----------------------------------------------
0.00 0.00 178/178 drawMap [2]
[28] 0.0 0.00 0.00 178 drawPlaneText [28]
0.00 0.00 510/510 drawStringBG [14]
0.00 0.00 170/170 drawSignalMarks [32]
-----------------------------------------------
0.00 0.00 175/175 decodeModesMessage [18]
[29] 0.0 0.00 0.00 175 decodeAC13Field [29]
-----------------------------------------------
0.00 0.00 173/173 decodeModesMessage [18]
[30] 0.0 0.00 0.00 173 addRecentlySeenICAOAddr [30]
0.00 0.00 173/372 ICAOCacheHashAddress [16]
-----------------------------------------------
0.00 0.00 172/172 resolveLabelConflicts [25]
[31] 0.0 0.00 0.00 172 sign [31]
-----------------------------------------------
0.00 0.00 170/170 drawPlaneText [28]
[32] 0.0 0.00 0.00 170 drawSignalMarks [32]
0.00 0.00 340/1057 mstime [11]
0.00 0.00 170/170 signalToColor [34]
-----------------------------------------------
0.00 0.00 170/170 signalToColor [34]
[33] 0.0 0.00 0.00 170 setColor [33]
-----------------------------------------------
0.00 0.00 170/170 drawSignalMarks [32]
[34] 0.0 0.00 0.00 170 signalToColor [34]
0.00 0.00 170/170 setColor [33]
-----------------------------------------------
0.00 0.00 117/117 decodeCPR [49]
[35] 0.0 0.00 0.00 117 cprModFunction [35]
-----------------------------------------------
0.00 0.00 89/89 drawMap [2]
[36] 0.0 0.00 0.00 89 drawPlaneHeading [36]
0.00 0.00 89/251 CROSSVP [23]
-----------------------------------------------
0.00 0.00 89/89 drawMap [2]
[37] 0.0 0.00 0.00 89 drawPlaneOffMap [37]
0.00 0.00 89/251 CROSSVP [23]
-----------------------------------------------
0.00 0.00 82/82 updatePlanes [44]
[38] 0.0 0.00 0.00 82 mstime [38]
-----------------------------------------------
0.00 0.00 39/78 cprDlonFunction [48]
0.00 0.00 39/78 decodeCPR [49]
[39] 0.0 0.00 0.00 78 cprNFunction [39]
0.00 0.00 78/234 cprNLFunction [26]
-----------------------------------------------
0.00 0.00 63/63 main [3]
[40] 0.0 0.00 0.00 63 getInput [40]
-----------------------------------------------
0.00 0.00 62/62 draw [1]
[41] 0.0 0.00 0.00 62 drawStatus [41]
0.00 0.00 248/248 drawStatusBox [24]
-----------------------------------------------
0.00 0.00 62/62 main [3]
[42] 0.0 0.00 0.00 62 interactiveRemoveStaleAircrafts [42]
0.00 0.00 6/6 interactiveRemoveStaleDF [54]
-----------------------------------------------
0.00 0.00 62/62 main [3]
[43] 0.0 0.00 0.00 62 modesReadFromClient [43]
0.00 0.00 371/371 decodeBinMessage [17]
-----------------------------------------------
0.00 0.00 62/62 draw [1]
[44] 0.0 0.00 0.00 62 updatePlanes [44]
0.00 0.00 698/698 findPlaneObj [12]
0.00 0.00 82/82 mstime [38]
0.00 0.00 13/13 createPlaneObj [51]
-----------------------------------------------
0.00 0.00 62/62 draw [1]
[45] 0.0 0.00 0.00 62 updateStatus [45]
-----------------------------------------------
0.00 0.00 57/57 decodeModesMessage [18]
[46] 0.0 0.00 0.00 57 decodeAC12Field [46]
-----------------------------------------------
0.00 0.00 57/57 interactiveReceiveData [22]
[47] 0.0 0.00 0.00 57 mstime [47]
-----------------------------------------------
0.00 0.00 39/39 decodeCPR [49]
[48] 0.0 0.00 0.00 39 cprDlonFunction [48]
0.00 0.00 39/78 cprNFunction [39]
-----------------------------------------------
0.00 0.00 39/39 interactiveReceiveData [22]
[49] 0.0 0.00 0.00 39 decodeCPR [49]
0.00 0.00 156/234 cprNLFunction [26]
0.00 0.00 117/117 cprModFunction [35]
0.00 0.00 39/78 cprNFunction [39]
0.00 0.00 39/39 cprDlonFunction [48]
-----------------------------------------------
0.00 0.00 18/18 interactiveReceiveData [22]
[50] 0.0 0.00 0.00 18 decodeCPRrelative [50]
-----------------------------------------------
0.00 0.00 13/13 updatePlanes [44]
[51] 0.0 0.00 0.00 13 createPlaneObj [51]
-----------------------------------------------
0.00 0.00 13/13 interactiveReceiveData [22]
[52] 0.0 0.00 0.00 13 interactiveCreateAircraft [52]
-----------------------------------------------
0.00 0.00 7/7 decodeModesMessage [18]
[53] 0.0 0.00 0.00 7 decodeID13Field [53]
-----------------------------------------------
0.00 0.00 6/6 interactiveRemoveStaleAircrafts [42]
[54] 0.0 0.00 0.00 6 interactiveRemoveStaleDF [54]
-----------------------------------------------
0.00 0.00 5/5 cleanup [86]
[55] 0.0 0.00 0.00 5 closeFont [55]
-----------------------------------------------
0.00 0.00 5/5 init [61]
[56] 0.0 0.00 0.00 5 loadFont [56]
-----------------------------------------------
0.00 0.00 1/1 anetTcpGenericConnect [60]
[57] 0.0 0.00 0.00 1 anetCreateSocket [57]
-----------------------------------------------
0.00 0.00 1/1 setupConnection [64]
[58] 0.0 0.00 0.00 1 anetNonBlock [58]
-----------------------------------------------
0.00 0.00 1/1 setupConnection [64]
[59] 0.0 0.00 0.00 1 anetTcpConnect [59]
0.00 0.00 1/1 anetTcpGenericConnect [60]
-----------------------------------------------
0.00 0.00 1/1 anetTcpConnect [59]
[60] 0.0 0.00 0.00 1 anetTcpGenericConnect [60]
0.00 0.00 1/1 anetCreateSocket [57]
-----------------------------------------------
0.00 0.00 1/1 main [3]
[61] 0.0 0.00 0.00 1 init [61]
0.00 0.00 5/5 loadFont [56]
0.00 0.00 1/1 initMaps [62]
-----------------------------------------------
0.00 0.00 1/1 init [61]
[62] 0.0 0.00 0.00 1 initMaps [62]
-----------------------------------------------
0.00 0.00 1/1 view1090Init [65]
[63] 0.0 0.00 0.00 1 modesInitErrorInfo [63]
0.00 0.00 107/478 modesChecksum [15]
-----------------------------------------------
0.00 0.00 1/1 main [3]
[64] 0.0 0.00 0.00 1 setupConnection [64]
0.00 0.00 1/1 anetTcpConnect [59]
0.00 0.00 1/1 anetNonBlock [58]
-----------------------------------------------
0.00 0.00 1/1 main [3]
[65] 0.0 0.00 0.00 1 view1090Init [65]
0.00 0.00 1/1 modesInitErrorInfo [63]
-----------------------------------------------
0.00 0.00 1/1 main [3]
[66] 0.0 0.00 0.00 1 view1090InitConfig [66]
-----------------------------------------------
This table describes the call tree of the program, and was sorted by
the total amount of time spent in each function and its children.
Each entry in this table consists of several lines. The line with the
index number at the left hand margin lists the current function.
The lines above it list the functions that called this function,
and the lines below it list the functions this one called.
This line lists:
index A unique number given to each element of the table.
Index numbers are sorted numerically.
The index number is printed next to every function name so
it is easier to look up where the function is in the table.
% time This is the percentage of the `total' time that was spent
in this function and its children. Note that due to
different viewpoints, functions excluded by options, etc,
these numbers will NOT add up to 100%.
self This is the total amount of time spent in this function.
children This is the total amount of time propagated into this
function by its children.
called This is the number of times the function was called.
If the function called itself recursively, the number
only includes non-recursive calls, and is followed by
a `+' and the number of recursive calls.
name The name of the current function. The index number is
printed after it. If the function is a member of a
cycle, the cycle number is printed between the
function's name and the index number.
For the function's parents, the fields have the following meanings:
self This is the amount of time that was propagated directly
from the function into this parent.
children This is the amount of time that was propagated from
the function's children into this parent.
called This is the number of times this parent called the
function `/' the total number of times the function
was called. Recursive calls to the function are not
included in the number after the `/'.
name This is the name of the parent. The parent's index
number is printed after it. If the parent is a
member of a cycle, the cycle number is printed between
the name and the index number.
If the parents of the function cannot be determined, the word
`<spontaneous>' is printed in the `name' field, and all the other
fields are blank.
For the function's children, the fields have the following meanings:
self This is the amount of time that was propagated directly
from the child into the function.
children This is the amount of time that was propagated from the
child's children to the function.
called This is the number of times the function called
this child `/' the total number of times the child
was called. Recursive calls by the child are not
listed in the number after the `/'.
name This is the name of the child. The child's index
number is printed after it. If the child is a
member of a cycle, the cycle number is printed
between the name and the index number.
If there are any cycles (circles) in the call graph, there is an
entry for the cycle-as-a-whole. This entry shows who called the
cycle (as parents) and the members of the cycle (as children.)
The `+' recursive calls entry shows the number of function calls that
were internal to the cycle, and the calls entry for each member shows,
for that member, how many times it was called from other members of
the cycle.
Copyright (C) 2012-2018 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
Index by function name
[23] CROSSVP [4] drawGeography [15] modesChecksum
[27] ICAOAddressWasRecentlySeen [9] drawGrid [63] modesInitErrorInfo
[16] ICAOCacheHashAddress [2] drawMap [19] modesMessageLenByType
[30] addRecentlySeenICAOAddr [36] drawPlaneHeading [43] modesReadFromClient
[57] anetCreateSocket [37] drawPlaneOffMap [47] mstime
[58] anetNonBlock [28] drawPlaneText [38] mstime
[59] anetTcpConnect [32] drawSignalMarks [11] mstime
[60] anetTcpGenericConnect [41] drawStatus [10] outOfBounds
[55] closeFont [24] drawStatusBox [7] pxFromLonLat
[48] cprDlonFunction [13] drawString [25] resolveLabelConflicts
[35] cprModFunction [14] drawStringBG [5] screenCoords
[39] cprNFunction [8] drawTrail [6] screenDist
[26] cprNLFunction [12] findPlaneObj [33] setColor
[51] createPlaneObj [40] getInput [64] setupConnection
[46] decodeAC12Field [61] init [31] sign
[29] decodeAC13Field [62] initMaps [34] signalToColor
[17] decodeBinMessage [52] interactiveCreateAircraft [44] updatePlanes
[49] decodeCPR [21] interactiveFindAircraft [45] updateStatus
[50] decodeCPRrelative [22] interactiveReceiveData [20] useModesMessage
[53] decodeID13Field [42] interactiveRemoveStaleAircrafts [65] view1090Init
[18] decodeModesMessage [54] interactiveRemoveStaleDF [66] view1090InitConfig
[1] draw [56] loadFont

View file

@ -225,7 +225,7 @@ void drawStatus() {
snprintf(strSig, 18, "%.0f%%", 100.0 * Status.avgSig / 1024.0); snprintf(strSig, 18, "%.0f%%", 100.0 * Status.avgSig / 1024.0);
drawStatusBox(&left, &top, "sAvg", strSig, green); drawStatusBox(&left, &top, "sAvg", strSig, green);
// drawStatusBox(&left, &top, "||||", "MENU", grey); //drawStatusBox(&left, &top, "x", "exit", grey);
// if(Status.closeCall != NULL) { // if(Status.closeCall != NULL) {
// drawStatusBox(&left, &top, "", "", black); //this is effectively a newline // drawStatusBox(&left, &top, "", "", black); //this is effectively a newline

View file

@ -1 +1 @@
90ec17d3fd60fd6950fbb50080a31747734eec21 ad8dd0e24a66f4d0d8df1297c6b9d65e3e429797

19
testing.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.7 KiB

View file

@ -1 +1 @@
2e266c7f3d943cd7251613fc0eddc9208d5bb05a 59d9fddeaaf6bf38d20131f49c0ce5c67d56749c

View file

@ -178,24 +178,12 @@ void showHelp(void) {
"-----------------------------------------------------------------------------\n" "-----------------------------------------------------------------------------\n"
"| view1090 dump1090 Viewer Ver : "MODES_DUMP1090_VERSION " |\n" "| view1090 dump1090 Viewer Ver : "MODES_DUMP1090_VERSION " |\n"
"-----------------------------------------------------------------------------\n" "-----------------------------------------------------------------------------\n"
"--interactive Interactive mode refreshing data on screen\n" "--server <IPv4/hosname> TCP Beast output listen IPv4 (default: 127.0.0.1)\n"
"--interactive-rows <num> Max number of rows in interactive mode (default: 15)\n"
"--interactive-ttl <sec> Remove from list if idle for <sec> (default: 60)\n"
"--interactive-rtl1090 Display flight table in RTL1090 format\n"
"--modeac Enable decoding of SSR modes 3/A & 3/C\n"
"--net-bo-ipaddr <IPv4> TCP Beast output listen IPv4 (default: 127.0.0.1)\n"
"--net-bo-port <port> TCP Beast output listen port (default: 30005)\n" "--net-bo-port <port> TCP Beast output listen port (default: 30005)\n"
"--lat <latitude> Reference/receiver latitide for surface posn (opt)\n" "--lat <latitude> Reference/receiver latitide for surface posn (opt)\n"
"--lon <longitude> Reference/receiver longitude for surface posn (opt)\n" "--lon <longitude> Reference/receiver longitude for surface posn (opt)\n"
"--no-crc-check Disable messages with broken CRC (discouraged)\n"
"--no-fix Disable single-bits error correction using CRC\n"
"--fix Enable single-bits error correction using CRC\n"
"--aggressive More CPU for more messages (two bits fixes, ...)\n"
"--metric Use metric units (meters, km/h, ...)\n" "--metric Use metric units (meters, km/h, ...)\n"
"--help Show this help\n" "--help Show this help\n"
"\n-----------------------------------------------------------------------------\n"
"| SDL DISPLAY OPTIONS |\n"
"-----------------------------------------------------------------------------\n"
"--uiscale <factor> UI global scaling\n" "--uiscale <factor> UI global scaling\n"
"--screensize <width> <height>\n" "--screensize <width> <height>\n"
"--fullscreen Start fullscreen\n" "--fullscreen Start fullscreen\n"
@ -258,6 +246,8 @@ int main(int argc, char **argv) {
Modes.net_input_beast_port = atoi(argv[++j]); Modes.net_input_beast_port = atoi(argv[++j]);
} else if (!strcmp(argv[j],"--net-bo-ipaddr") && more) { } else if (!strcmp(argv[j],"--net-bo-ipaddr") && more) {
strcpy(View1090.net_input_beast_ipaddr, argv[++j]); strcpy(View1090.net_input_beast_ipaddr, argv[++j]);
} else if (!strcmp(argv[j],"--server") && more) {
strcpy(View1090.net_input_beast_ipaddr, argv[++j]);
} else if (!strcmp(argv[j],"--modeac")) { } else if (!strcmp(argv[j],"--modeac")) {
Modes.mode_ac = 1; Modes.mode_ac = 1;
} else if (!strcmp(argv[j],"--interactive-rows") && more) { } else if (!strcmp(argv[j],"--interactive-rows") && more) {

View file

@ -1 +1 @@
547bceb30b8891c365837c7f01eac3b9c227fa8e 015246b1fb747817b20ce17e660e6fb65096a4ff