From 40f8edca66e800dd9cd04eb8f582557fa8647ac3 Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 17 Jun 2020 22:09:53 -0700 Subject: [PATCH] removing profiling files Former-commit-id: cef240e6ac16d1f361a6a6ef922d4ab6b0b979cc --- 0.geojson.REMOVED.git-id | 1 + 1.geojson.REMOVED.git-id | 1 + 3.geojson.REMOVED.git-id | 1 + drawPolys.REMOVED.git-id | 1 - mapbox_testing | 6 - ...n_0_boundary_lines_land.shp.REMOVED.git-id | 1 + ..._0_boundary_lines_land.shp:Zone.Identifier | 0 ne_10m_admin_0_boundary_lines_land.shx | Bin 0 -> 3796 bytes ..._0_boundary_lines_land.shx:Zone.Identifier | 0 ..._states_provinces_lines.shp.REMOVED.git-id | 1 + ...states_provinces_lines.shp:Zone.Identifier | 0 ..._states_provinces_lines.shx.REMOVED.git-id | 1 + ...states_provinces_lines.shx:Zone.Identifier | 0 ne_10m_coastline.shp.REMOVED.git-id | 1 + ne_10m_coastline.shp:Zone.Identifier | 0 ne_10m_coastline.shx | Bin 0 -> 33164 bytes ne_10m_coastline.shx:Zone.Identifier | 0 ne_10m_land.svg:Zone.Identifier | 4 + out.prof.REMOVED.git-id | 1 - seen | 172 ------------- test.geojson.REMOVED.git-id | 1 + view1090.bak | 234 ------------------ view1090.dsp | 149 ----------- winstubs.h | 111 --------- 24 files changed, 12 insertions(+), 674 deletions(-) create mode 100644 0.geojson.REMOVED.git-id create mode 100644 1.geojson.REMOVED.git-id create mode 100644 3.geojson.REMOVED.git-id delete mode 100644 drawPolys.REMOVED.git-id delete mode 100644 mapbox_testing create mode 100644 ne_10m_admin_0_boundary_lines_land.shp.REMOVED.git-id create mode 100644 ne_10m_admin_0_boundary_lines_land.shp:Zone.Identifier create mode 100644 ne_10m_admin_0_boundary_lines_land.shx create mode 100644 ne_10m_admin_0_boundary_lines_land.shx:Zone.Identifier create mode 100644 ne_10m_admin_1_states_provinces_lines.shp.REMOVED.git-id create mode 100644 ne_10m_admin_1_states_provinces_lines.shp:Zone.Identifier create mode 100644 ne_10m_admin_1_states_provinces_lines.shx.REMOVED.git-id create mode 100644 ne_10m_admin_1_states_provinces_lines.shx:Zone.Identifier create mode 100644 ne_10m_coastline.shp.REMOVED.git-id create mode 100644 ne_10m_coastline.shp:Zone.Identifier create mode 100644 ne_10m_coastline.shx create mode 100644 ne_10m_coastline.shx:Zone.Identifier create mode 100644 ne_10m_land.svg:Zone.Identifier delete mode 100644 out.prof.REMOVED.git-id delete mode 100644 seen create mode 100644 test.geojson.REMOVED.git-id delete mode 100644 view1090.bak delete mode 100644 view1090.dsp delete mode 100644 winstubs.h diff --git a/0.geojson.REMOVED.git-id b/0.geojson.REMOVED.git-id new file mode 100644 index 0000000..48d996e --- /dev/null +++ b/0.geojson.REMOVED.git-id @@ -0,0 +1 @@ +4134a9f456f3d77dcc989bb3aac4e72ea3d66bc7 \ No newline at end of file diff --git a/1.geojson.REMOVED.git-id b/1.geojson.REMOVED.git-id new file mode 100644 index 0000000..2757acb --- /dev/null +++ b/1.geojson.REMOVED.git-id @@ -0,0 +1 @@ +a15df18c70ad80df1500fab02e08ece9530c60c0 \ No newline at end of file diff --git a/3.geojson.REMOVED.git-id b/3.geojson.REMOVED.git-id new file mode 100644 index 0000000..a9c7d13 --- /dev/null +++ b/3.geojson.REMOVED.git-id @@ -0,0 +1 @@ +2869090364c7b65cf11284920a17798c8a5231a0 \ No newline at end of file diff --git a/drawPolys.REMOVED.git-id b/drawPolys.REMOVED.git-id deleted file mode 100644 index f60973a..0000000 --- a/drawPolys.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -85c850fc7f07d0cf30352d3385c7a2aeb57fecf3 \ No newline at end of file diff --git a/mapbox_testing b/mapbox_testing deleted file mode 100644 index 5a82f5c..0000000 --- a/mapbox_testing +++ /dev/null @@ -1,6 +0,0 @@ -curl "https://api.mapbox.com/v4/mapbox.mapbox-streets-v8/8/40/89.mvt?access_token=pk.eyJ1Ijoibm1hdHN1ZGEiLCJhIjoiY2swazhrdGNjMGZ3NzNvcmE0OGxoaGd2byJ9.PAYHqO3any_6vLdjQ44RGw" - -mapbox://styles/nmatsuda/ck0k7rvvt3rkv1cq6l74wjda2 - - -47.695,-123.489 \ No newline at end of file diff --git a/ne_10m_admin_0_boundary_lines_land.shp.REMOVED.git-id b/ne_10m_admin_0_boundary_lines_land.shp.REMOVED.git-id new file mode 100644 index 0000000..9bdadc4 --- /dev/null +++ b/ne_10m_admin_0_boundary_lines_land.shp.REMOVED.git-id @@ -0,0 +1 @@ +1c045ad9fa0e297c746045572bdfb1f9b772e13d \ No newline at end of file diff --git a/ne_10m_admin_0_boundary_lines_land.shp:Zone.Identifier b/ne_10m_admin_0_boundary_lines_land.shp:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/ne_10m_admin_0_boundary_lines_land.shx b/ne_10m_admin_0_boundary_lines_land.shx new file mode 100644 index 0000000000000000000000000000000000000000..dd772801ae74738836eca38f78525c25a8b919b0 GIT binary patch literal 3796 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 QfHT23&pKYc?1`!TAL2{MYXATM literal 0 HcmV?d00001 diff --git a/ne_10m_admin_0_boundary_lines_land.shx:Zone.Identifier b/ne_10m_admin_0_boundary_lines_land.shx:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/ne_10m_admin_1_states_provinces_lines.shp.REMOVED.git-id b/ne_10m_admin_1_states_provinces_lines.shp.REMOVED.git-id new file mode 100644 index 0000000..603c547 --- /dev/null +++ b/ne_10m_admin_1_states_provinces_lines.shp.REMOVED.git-id @@ -0,0 +1 @@ +9b38a7aab7224ba49df6c1d537af8f464b53ac4a \ No newline at end of file diff --git a/ne_10m_admin_1_states_provinces_lines.shp:Zone.Identifier b/ne_10m_admin_1_states_provinces_lines.shp:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/ne_10m_admin_1_states_provinces_lines.shx.REMOVED.git-id b/ne_10m_admin_1_states_provinces_lines.shx.REMOVED.git-id new file mode 100644 index 0000000..bfd66d7 --- /dev/null +++ b/ne_10m_admin_1_states_provinces_lines.shx.REMOVED.git-id @@ -0,0 +1 @@ +a7494045bbf8d8ace0992996e6a759a4a364ead6 \ No newline at end of file diff --git a/ne_10m_admin_1_states_provinces_lines.shx:Zone.Identifier b/ne_10m_admin_1_states_provinces_lines.shx:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/ne_10m_coastline.shp.REMOVED.git-id b/ne_10m_coastline.shp.REMOVED.git-id new file mode 100644 index 0000000..43fc30d --- /dev/null +++ b/ne_10m_coastline.shp.REMOVED.git-id @@ -0,0 +1 @@ +e6f0c1adeb1163f240352e5bc1df5ac72b83e4e8 \ No newline at end of file diff --git a/ne_10m_coastline.shp:Zone.Identifier b/ne_10m_coastline.shp:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/ne_10m_coastline.shx b/ne_10m_coastline.shx new file mode 100644 index 0000000000000000000000000000000000000000..3599df7704dc5113074c426618c937d47644132d GIT binary patch literal 33164 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 N^Wrnext != c)) { -net_io.c: p = p->next; -net_io.c: p->next = c->next; -Binary file .git/objects/pack/pack-bf860161866f3e6c65f8f17c93e90565fe339dff.idx matches -Binary file .git/objects/pack/pack-bf860161866f3e6c65f8f17c93e90565fe339dff.pack matches -AircraftList.cpp: if (p->addr == addr) return (p); -AircraftList.cpp: p = p->next; -AircraftList.cpp: p->live = 0; -AircraftList.cpp: p = p->next; -AircraftList.cpp: p->next = head; -AircraftList.cpp: p->prev_seen = p->seen; -AircraftList.cpp: p->live = 1; -AircraftList.cpp: if(p->seen == a->seen) { -AircraftList.cpp: p->seen = a->seen; -AircraftList.cpp: p->msSeen = now(); -AircraftList.cpp: if((p->seen - p->prev_seen) > 0) { -AircraftList.cpp: p->messageRate = 1.0 / (double)(p->seen - p->prev_seen); -AircraftList.cpp: memcpy(p->flight, a->flight, sizeof(p->flight)); -AircraftList.cpp: memcpy(p->signalLevel, a->signalLevel, sizeof(p->signalLevel)); -AircraftList.cpp: p->altitude = a->altitude; -AircraftList.cpp: p->speed = a->speed; -AircraftList.cpp: p->track = a->track; -AircraftList.cpp: p->vert_rate = a->vert_rate; -AircraftList.cpp: p->lon = a->lon; -AircraftList.cpp: p->lat = a->lat; -AircraftList.cpp: if(p->seenLatLon < a->seenLatLon) { -AircraftList.cpp: p->msSeenLatLon = now(); -AircraftList.cpp: // p->oldIdx = (p->oldIdx+1) % 32; -AircraftList.cpp: // p->oldLon[p->oldIdx] = p->lon; -AircraftList.cpp: // p->oldLat[p->oldIdx] = p->lat; -AircraftList.cpp: p->lonHistory.push_back(p->lon); -AircraftList.cpp: p->latHistory.push_back(p->lat); -AircraftList.cpp: p->headingHistory.push_back(p->track); -AircraftList.cpp: p->timestampHistory.push_back(p->msSeenLatLon); -AircraftList.cpp: // p->oldHeading[p->oldIdx] = p->track; -AircraftList.cpp: // p->oldSeen[p->oldIdx] = p->seenLatLon; -AircraftList.cpp: p->seenLatLon = a->seenLatLon; -AircraftList.cpp: if(!p->live) { -AircraftList.cpp: head = p->next; -AircraftList.cpp: prev->next = p->next; -AircraftList.cpp: p = p->next; -Binary file mapdata.bin matches -Binary file viz1090 matches -View.cpp: if(p->lonHistory.empty()) { -View.cpp: std::vector::iterator lon_idx = p->lonHistory.begin(); -View.cpp: std::vector::iterator lat_idx = p->latHistory.begin(); -View.cpp: std::vector::iterator heading_idx = p->headingHistory.begin(); -View.cpp: int idx = p->lonHistory.size(); -View.cpp: for(; std::next(lon_idx) != p->lonHistory.end(); ++lon_idx, ++lat_idx, ++heading_idx) { -View.cpp: // float age = pow(1.0 - (float)idx / (float)p->lonHistory.size(), 2.2); -View.cpp: float age = 1.0 - (float)idx / (float)p->lonHistory.size(); -View.cpp: unsigned char * pSig = p->signalLevel; -View.cpp: if(elapsed(p->msSeen) < 1024) { -View.cpp: seenFade = (Uint8) (255.0 - elapsed(p->msSeen) / 4.0); -View.cpp: if(elapsed(p->msSeenLatLon) < 1024) { -View.cpp: seenFade = (Uint8) (255.0 - elapsed(p->msSeenLatLon) / 4.0); -View.cpp: if(elapsed(p->msSeenLatLon) < 500) { -View.cpp: circleRGBA(renderer, p->cx, p->cy, elapsed(p->msSeenLatLon) * screen_width / (8192), 255,255, 255, 64 - (uint8_t)(64.0 * elapsed(p->msSeenLatLon) / 500.0)); -View.cpp: if(p->pressure * screen_width < pressure_scale) { -View.cpp: drawSignalMarks(p, p->x, p->y); -View.cpp: maxCharCount = snprintf(flight,10," %s", p->flight); -View.cpp: drawStringBG(flight, p->x, p->y, mapBoldFont, white, black); -View.cpp: //roundedRectangleRGBA(renderer, p->x, p->y, p->x + maxCharCount * mapFontWidth, p->y + mapFontHeight, ROUND_RADIUS, white.r, white.g, white.b, SDL_ALPHA_OPAQUE); -View.cpp: //drawString(flight, p->x, p->y, mapBoldFont, white); -View.cpp: if(p->pressure * screen_width < 0.5f * pressure_scale) { -View.cpp: currentCharCount = snprintf(alt,10," %dm", (int) (p->altitude / 3.2828)); -View.cpp: currentCharCount = snprintf(alt,10," %d'", p->altitude); -View.cpp: drawStringBG(alt, p->x, p->y + currentLine * mapFontHeight, mapFont, grey, black); -View.cpp: currentCharCount = snprintf(speed,10," %dkm/h", (int) (p->speed * 1.852)); -View.cpp: currentCharCount = snprintf(speed,10," %dmph", p->speed); -View.cpp: drawStringBG(speed, p->x, p->y + currentLine * mapFontHeight, mapFont, grey, black); -View.cpp: Sint16 vx[4] = {p->cx, p->cx + (p->x - p->cx) / 2, p->x, p->x}; -View.cpp: Sint16 vy[4] = {p->cy, p->cy + (p->y - p->cy) / 2, p->y - mapFontHeight, p->y}; -View.cpp: if(p->cy > p->y + currentLine * mapFontHeight) { -View.cpp: vy[2] = p->y + currentLine * mapFontHeight + mapFontHeight; -View.cpp: vy[3] = p->y + currentLine * mapFontHeight; -View.cpp: thickLineRGBA(renderer,p->x,p->y,p->x,p->y+currentLine*mapFontHeight,screen_uiscale,200,200,200,SDL_ALPHA_OPAQUE); -View.cpp: p->w = maxCharCount * mapFontWidth; -View.cpp: p->h = currentLine * mapFontHeight; -View.cpp: int x = p->cx - 20; -View.cpp: int y = p->cy + 22; -View.cpp: if(elapsed(p->msSeenLatLon) < 500) { -View.cpp: circleRGBA(renderer, p->cx, p->cy, elapsed(p->msSeenLatLon) * screen_width / (8192), 255,255, 255, 64 - (uint8_t)(64.0 * elapsed(p->msSeenLatLon) / 500.0)); -View.cpp: maxCharCount = snprintf(flight,10," %s", p->flight); -View.cpp: //roundedRectangleRGBA(renderer, p->x, p->y, p->x + maxCharCount * mapFontWidth, p->y + mapFontHeight, ROUND_RADIUS, white.r, white.g, white.b, SDL_ALPHA_OPAQUE); -View.cpp: //drawString(flight, p->x, p->y, mapBoldFont, white); -View.cpp: currentCharCount = snprintf(alt,10," %dm", (int) (p->altitude / 3.2828)); -View.cpp: currentCharCount = snprintf(alt,10," %d'", p->altitude); -View.cpp: currentCharCount = snprintf(speed,10," %dkm/h", (int) (p->speed * 1.852)); -View.cpp: currentCharCount = snprintf(speed,10," %dmph", p->speed); -View.cpp: int p_left = p->x - 10 * screen_uiscale; -View.cpp: int p_right = p->x + p->w + 10 * screen_uiscale; -View.cpp: int p_top = p->y - 10 * screen_uiscale; -View.cpp: int p_bottom = p->y + p->h + 10 * screen_uiscale; -View.cpp: //rectangleRGBA(renderer, p->x, p->y, p->x + p->w, p->y + p->h, 255,0,0, SDL_ALPHA_OPAQUE); -View.cpp: //lineRGBA(renderer, p->cx, p->cy, p->x, p->y, 0,255,0, SDL_ALPHA_OPAQUE); -View.cpp: p->ddox = 0; -View.cpp: p->ddoy = 0; -View.cpp: float o_mag = sqrt(p->ox*p->ox + p->oy*p->oy); -View.cpp: p->ddox -= p->ox / o_mag * spring_force * (o_mag - spring_length); -View.cpp: p->ddoy -= p->oy / o_mag * spring_force * (o_mag - spring_length); -View.cpp: p->ox += (float)(10 * screen_uiscale - p_left); -View.cpp: p->ox -= (float)(p_right - (screen_width - 10 * screen_uiscale)); -View.cpp: p->oy += (float)(10 * screen_uiscale - p_top); -View.cpp: p->oy -= (float)(p_bottom - (screen_height - 10 * screen_uiscale)); -View.cpp: p->pressure = 0; -View.cpp: if(check_p->addr != p->addr) { -View.cpp: int check_left = check_p->x - 5 * screen_uiscale; -View.cpp: int check_right = check_p->x + check_p->w + 5 * screen_uiscale; -View.cpp: int check_top = check_p->y - 5 * screen_uiscale; -View.cpp: int check_bottom = check_p->y + check_p->h + 5 * screen_uiscale; -View.cpp: p->pressure += 1.0f / ((check_p->cx - p->cx) * (check_p->cx - p->cx) + (check_p->cy - p->cy) * (check_p->cy - p->cy)); -View.cpp: check_p->ddox -= label_force * (float)(check_left - p_right); -View.cpp: check_p->ddox -= label_force * (float)(check_right - p_left); -View.cpp: check_p->ddoy -= label_force * (float)(check_top - p_bottom); -View.cpp: check_p->ddoy -= label_force * (float)(check_bottom - p_top); -View.cpp: p_left = p->x - 5 * screen_uiscale; -View.cpp: p_right = p->x + 5 * screen_uiscale; -View.cpp: p_top = p->y - 5 * screen_uiscale; -View.cpp: p_bottom = p->y + 5 * screen_uiscale; -View.cpp: int check_left = check_p->x - 5 * screen_uiscale; -View.cpp: int check_right = check_p->x + check_p->w + 5 * screen_uiscale; -View.cpp: int check_top = check_p->y - 5 * screen_uiscale; -View.cpp: int check_bottom = check_p->y + check_p->h + 5 * screen_uiscale; -View.cpp: check_p->ddox -= plane_force * (float)(check_left - p_right); -View.cpp: check_p->ddox -= plane_force * (float)(check_right - p_left); -View.cpp: check_p->ddoy -= plane_force * (float)(check_top - p_bottom); -View.cpp: check_p->ddoy -= plane_force * (float)(check_bottom - p_top); -View.cpp: p = p->next; -View.cpp: p->dox += p->ddox; -View.cpp: p->doy += p->ddoy; -View.cpp: p->dox *= damping_force; -View.cpp: p->doy *= damping_force; -View.cpp: if(fabs(p->dox) > 10.0f) { -View.cpp: p->dox = sign(p->dox) * 10.0f; -View.cpp: if(fabs(p->doy) > 10.0f) { -View.cpp: p->doy = sign(p->doy) * 10.0f; -View.cpp: if(fabs(p->dox) < 1.0f) { -View.cpp: p->dox = 0; -View.cpp: if(fabs(p->doy) < 1.0f) { -View.cpp: p->doy = 0; -View.cpp: p->ox += p->dox; -View.cpp: p->oy += p->doy; -View.cpp: p->x = p->cx + (int)round(p->ox); -View.cpp: p->y = p->cy + (int)round(p->oy); -View.cpp: p = p->next; -View.cpp: p = p->next; -View.cpp: if (p->lon && p->lat) { -View.cpp: pxFromLonLat(&dx, &dy, p->lon, p->lat); -View.cpp: if(p->created == 0) { -View.cpp: p->created = now(); -View.cpp: float age_ms = (float)elapsed(p->created); -View.cpp: if(p->msSeenLatLon > p->timestampHistory.back()) { -View.cpp: pxFromLonLat(&dx, &dy, p->lonHistory.back(), p->latHistory.back()); -View.cpp: float velx = (x - oldx) / (p->msSeenLatLon - p->timestampHistory.back()); -View.cpp: float vely = (y - oldy) / (p->msSeenLatLon - p->timestampHistory.back()); -View.cpp: usex = x + elapsed(p->msSeenLatLon) * velx; -View.cpp: usey = y + elapsed(p->msSeenLatLon) * vely; -View.cpp: planeColor = lerpColor(style.planeColor, style.planeGoneColor, float(elapsed_s(p->seen)) / (float) DISPLAY_ACTIVE); -View.cpp: drawPlaneOffMap(x, y, &(p->cx), &(p->cy), planeColor); -View.cpp: drawPlaneIcon(usex, usey, p->track, planeColor); -View.cpp: p->cx = usex; -View.cpp: p->cy = usey; -View.cpp: p = p->next; -View.cpp: if((p->cx - x) * (p->cx - x) + (p->cy - y) * (p->cy - y) < 900) { -View.cpp: if((p->cx - x) * (p->cx - x) + (p->cy - y) * (p->cy - y) < -View.cpp: p = p->next; -all.svg: -AppData.cpp: unsigned char * pSig = p->signalLevel; -AppData.cpp: if (p->lon && p->lat) { -AppData.cpp: msgRateAccumulate += p->messageRate; -AppData.cpp: p = p->next; diff --git a/test.geojson.REMOVED.git-id b/test.geojson.REMOVED.git-id new file mode 100644 index 0000000..2757acb --- /dev/null +++ b/test.geojson.REMOVED.git-id @@ -0,0 +1 @@ +a15df18c70ad80df1500fab02e08ece9530c60c0 \ No newline at end of file diff --git a/view1090.bak b/view1090.bak deleted file mode 100644 index e7007a2..0000000 --- a/view1090.bak +++ /dev/null @@ -1,234 +0,0 @@ -// view1090, a Mode S messages viewer for dump1090 devices. -// -// Copyright (C) 2014 by Malcolm Robb -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#include "view1090.h" -#include "structs.h" -#include "AircraftData.h" - -int go = 1; - - -AppData appData; -Style style; - -// -// ============================= Utility functions ========================== -// -void sigintHandler(int dummy) { - NOTUSED(dummy); - signal(SIGINT, SIG_DFL); // reset signal handler - bit extra safety - AircraftData.modes.exit = 1; // Signal to threads that we are done -} - -// -//========================================================================= -// - -// Set up data connection -int setupConnection(struct client *c) { - int fd; - - // Try to connect to the selected ip address and port. We only support *ONE* input connection which we initiate.here. - if ((fd = anetTcpConnect(AircraftData.modes.aneterr, View1090.net_input_beast_ipaddr, AircraftData.modes.net_input_beast_port)) != ANET_ERR) { - anetNonBlock(AircraftData.modes.aneterr, fd); - // - // Setup a service callback client structure for a beast binary input (from dump1090) - // This is a bit dodgy under Windows. The fd parameter is a handle to the internet - // socket on which we are receiving data. Under Linux, these seem to start at 0 and - // count upwards. However, Windows uses "HANDLES" and these don't nececeriy start at 0. - // dump1090 limits fd to values less than 1024, and then uses the fd parameter to - // index into an array of clients. This is ok-ish if handles are allocated up from 0. - // However, there is no gaurantee that Windows will behave like this, and if Windows - // allocates a handle greater than 1024, then dump1090 won't like it. On my test machine, - // the first Windows handle is usually in the 0x54 (84 decimal) region. - - c->next = NULL; - c->buflen = 0; - c->fd = - c->service = - AircraftData.modes.bis = fd; - AircraftData.modes.clients = c; - } - return fd; -} -// -// ================================ Main ==================================== -// -void showHelp(void) { - printf( -"-----------------------------------------------------------------------------\n" -"| view1090 dump1090 Viewer Ver : "MODES_DUMP1090_VERSION " |\n" -"-----------------------------------------------------------------------------\n" - "--server TCP Beast output listen IPv4 (default: 127.0.0.1)\n" - "--port TCP Beast output listen port (default: 30005)\n" - "--lat Reference/receiver latitide for surface posn (opt)\n" - "--lon Reference/receiver longitude for surface posn (opt)\n" - "--metric Use metric units (meters, km/h, ...)\n" - "--help Show this help\n" - "--uiscale UI global scaling (default: 1)\n" - "--screensize Set frame buffer resolution (default: screen resolution)\n" - "--fullscreen Start fullscreen\n" - ); -} - -#ifdef _WIN32 -void showCopyright(void) { - uint64_t llTime = time(NULL) + 1; - - printf( -"-----------------------------------------------------------------------------\n" -"| view1090 ModeS Viewer Ver : " MODES_DUMP1090_VERSION " |\n" -"-----------------------------------------------------------------------------\n" -"\n" -" Copyright (C) 2012 by Salvatore Sanfilippo \n" -" Copyright (C) 2014 by Malcolm Robb \n" -" Copyright (C) 2020 by Nathan Matsuda \n" -"\n" -" All rights reserved.\n" -"\n" -" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n" -" ""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n" -" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n" -" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n" -" HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n" -" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n" -" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n" -" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n" -" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n" -" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n" -" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" -"\n" -" For further details refer to \n" -"\n" - ); - - // delay for 1 second to give the user a chance to read the copyright - while (llTime >= time(NULL)) {} -} -#endif -// -//========================================================================= -// - -int main(int argc, char **argv) { - int j, fd; - struct client *c; - char pk_buf[8]; - - AircraftData aircraftData; - - signal(SIGINT, sigintHandler); // Define Ctrl/C handler (exit program) - - - aircraftData.initialize(); - - // Parse the command line options - for (j = 1; j < argc; j++) { - int more = ((j + 1) < argc); // There are more arguments - - if (!strcmp(argv[j],"--net-bo-port") && more) { - AircraftData.modes.net_input_beast_port = atoi(argv[++j]); - } else if (!strcmp(argv[j],"--port") && more) { - AircraftData.modes.net_input_beast_port = atoi(argv[++j]); - } else if (!strcmp(argv[j],"--net-bo-ipaddr") && more) { - 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],"--lat") && more) { - AircraftData.modes.fUserLat = atof(argv[++j]); - appData.centerLat = AircraftData.modes.fUserLat; - } else if (!strcmp(argv[j],"--lon") && more) { - AircraftData.modes.fUserLon = atof(argv[++j]); - appData.centerLon = AircraftData.modes.fUserLon; - } else if (!strcmp(argv[j],"--metric")) { - AircraftData.modes.metric = 1; - } else if (!strcmp(argv[j],"--fullscreen")) { - appData.fullscreen = 1; - } else if (!strcmp(argv[j],"--uiscale") && more) { - appData.screen_uiscale = atoi(argv[++j]); - } else if (!strcmp(argv[j],"--screensize") && more) { - appData.screen_width = atoi(argv[++j]); - appData.screen_height = atoi(argv[++j]); - } else if (!strcmp(argv[j],"--help")) { - showHelp(); - exit(0); - } else { - fprintf(stderr, "Unknown or not enough arguments for option '%s'.\n\n", argv[j]); - showHelp(); - exit(1); - } - } - - // Try to connect to the selected ip address and port. We only support *ONE* input connection which we initiate.here. - c = (struct client *) malloc(sizeof(*c)); - while(1) { - if ((fd = setupConnection(c)) == ANET_ERR) { - fprintf(stderr, "Waiting on %s:%d\n", View1090.net_input_beast_ipaddr, AircraftData.modes.net_input_beast_port); - sleep(1); - } else { - break; - } - } - - int go; - - - init("sdl1090"); - - atexit(cleanup); - - go = 1; - - while (go == 1) - { - getInput(); - - interactiveRemoveStaleAircrafts(); - draw(); - if ((fd == ANET_ERR) || (recv(c->fd, pk_buf, sizeof(pk_buf), MSG_PEEK | MSG_DONTWAIT) == 0)) { - free(c); - usleep(1000000); - c = (struct client *) malloc(sizeof(*c)); - fd = setupConnection(c); - continue; - } - modesReadFromClient(c,"",decodeBinMessage); - //usleep(10000); - } - - // The user has stopped us, so close any socket we opened - if (fd != ANET_ERR) - {close(fd);} - - return (0); -} -// -//========================================================================= -// diff --git a/view1090.dsp b/view1090.dsp deleted file mode 100644 index de97af8..0000000 --- a/view1090.dsp +++ /dev/null @@ -1,149 +0,0 @@ -# Microsoft Developer Studio Project File - Name="view1090" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=view1090 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "view1090.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "view1090.mak" CFG="view1090 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "view1090 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "view1090 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "view1090 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I ".\pthreads\." /I ".\rtlsdr\." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x809 /d "NDEBUG" -# ADD RSC /l 0x809 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "view1090 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I ".\pthreads\." /I ".\rtlsdr\." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x809 /d "_DEBUG" -# ADD RSC /l 0x809 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "view1090 - Win32 Release" -# Name "view1090 - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\anet.c -# End Source File -# Begin Source File - -SOURCE=.\interactive.c -# End Source File -# Begin Source File - -SOURCE=.\mode_ac.c -# End Source File -# Begin Source File - -SOURCE=.\mode_s.c -# End Source File -# Begin Source File - -SOURCE=.\net_io.c -# End Source File -# Begin Source File - -SOURCE=.\view1090.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\dump1090.h -# End Source File -# Begin Source File - -SOURCE=.\view1090.h -# End Source File -# Begin Source File - -SOURCE=.\winstubs.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# Begin Group "Library Files" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\pthreads\pthreadVC2.lib -# End Source File -# Begin Source File - -SOURCE=.\rtlsdr\rtlsdr.lib -# End Source File -# End Group -# End Target -# End Project diff --git a/winstubs.h b/winstubs.h deleted file mode 100644 index f3ab63f..0000000 --- a/winstubs.h +++ /dev/null @@ -1,111 +0,0 @@ -// dump1090, a Mode S messages decoder for RTLSDR devices. -// -// Copyright (C) 2014 by Malcolm Robb -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// This file provides basic Windows implementation of Linux specific functions -// used in the dump1090 project. This allows dump1090 to be compiled and debugged -// using Microsoft Visual C++ 6.0 -// -// Note that not all functions actually provide equivalent functionality to their -// Linux equivalents. They are simply stubs to allow the project to compile. -// -#ifndef __WINSTUBS_H -#define __WINSTUBS_H - -#include -#include -#include - -typedef UCHAR uint8_t; -typedef USHORT uint16_t; -typedef UINT32 uint32_t; -typedef UINT64 uint64_t; -typedef UINT32 mode_t; -typedef long ssize_t; -typedef int socklen_t; - -#include -#include -#include -#include -#include -#include -#include - -#define M_PI 3.14159265358979323846 -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -//Functions not included in the MSVC maths library. This will do for our use. -_inline double round(double d) {return floor(d + 0.5);} -_inline double trunc(double d) {return (d>0) ? floor(d):ceil(d) ;} - -//usleep works in microseconds, and isn't supported in Windows. This will do for our use. -_inline void usleep(UINT32 ulSleep) {Sleep(ulSleep/1000);} -_inline uint64_t strtoll(const char *p, void *e, UINT32 base) {return _atoi64(p);} -_inline int inet_aton(const char * cp, DWORD * ulAddr) { *ulAddr = inet_addr(cp); return (INADDR_NONE != *ulAddr);} -#define snprintf _snprintf -#define vsnprintf _vsnprintf -#define realpath(N,R) _fullpath((R),(N),_MAX_PATH) - -_inline void cls() { - HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); - COORD coord = {0, 0}; - DWORD count; - - CONSOLE_SCREEN_BUFFER_INFO csbi; - GetConsoleScreenBufferInfo(hStdOut, &csbi); - - FillConsoleOutputCharacter(hStdOut, ' ', csbi.dwSize.X * csbi.dwSize.Y, coord, &count); - - SetConsoleCursorPosition(hStdOut, coord); -} - -_inline int gettimeofday(struct timeval *tv, struct timezone *tz) { - SYSTEMTIME stSystemTime; - GetLocalTime(&stSystemTime); - - tv->tv_sec = stSystemTime.wSecond + (60 * (stSystemTime.wMinute + (60 * stSystemTime.wHour))); - tv->tv_usec = stSystemTime.wMilliseconds * 1000; - - return 0; - } - -#define STDIN_FILENO 0 -#define EINPROGRESS WSAEINPROGRESS -#define EWOULDBLOCK WSAEWOULDBLOCK - -#ifdef __cplusplus -} -#endif - -#endif // __WINSTUBS_H