39 gettimeofday(&tv, NULL);
40 mst = ((uint64_t)tv.tv_sec)*1000;
41 mst += tv.tv_usec/1000;
54 memset(a, 0,
sizeof(*a));
87 if (a->
addr == addr)
return (a);
199 if (0 &&
Modes.aircrafts != a && (time(NULL) - a->
seen) >= 1) {
200 aux =
Modes.aircrafts;
201 while(aux->
next != a) aux = aux->
next;
211 a->
seen = time(NULL);
326 time_t now = time(NULL);
329 char spinner[4] =
"|/-\\";
342 progress = spinner[time(NULL)%4];
345 printf(
"\x1b[H\x1b[2J");
350 if (
Modes.interactive_rtl1090 == 0) {
352 "Hex Mode Sqwk Flight Alt Spd Hdg Lat Long Sig Msgs Ti%c\n", progress);
355 "Hex Flight Alt V/S GS TT SSR G*456^ Msgs Seen %c\n", progress);
358 "-------------------------------------------------------------------------------\n");
360 while(a && (count <
Modes.interactive_rows)) {
362 if ((now - a->
seen) <
Modes.interactive_display_ttl)
372 char strSquawk[5] =
" ";
379 altitude = (int) (altitude / 3.2828);
384 snprintf(strSquawk,5,
"%04x", a->
modeA);}
387 snprintf (strGs, 5,
"%3d",
speed);}
390 snprintf (strTt, 5,
"%03d", a->
track);}
395 if (
Modes.interactive_rtl1090) {
398 snprintf(strFl,6,
"F%03d",(altitude/100));
400 printf(
"%06x %-8s %-4s %-3s %-3s %4s %-6d %-2d\n",
401 a->
addr, a->
flight, strFl, strGs, strTt, strSquawk, msgs, (
int)(now - a->
seen));
404 char strMode[5] =
" ";
405 char strLat[8] =
" ";
406 char strLon[9] =
" ";
408 unsigned int signalAverage = (pSig[0] + pSig[1] + pSig[2] + pSig[3] +
409 pSig[4] + pSig[5] + pSig[6] + pSig[7] + 3) >> 3;
420 snprintf(strLat, 8,
"%7.03f", a->
lat);
421 snprintf(strLon, 9,
"%8.03f", a->
lon);
425 snprintf(strFl, 6,
" grnd");
427 snprintf(strFl, 6,
"%5d", altitude);
430 printf(
"%06x %-4s %-4s %-8s %5s %3s %3s %7s %8s %3d %5d %2d\n",
431 a->
addr, strMode, strSquawk, a->
flight, strFl, strGs, strTt,
432 strLat, strLon, signalAverage, msgs, (
int)(now - a->
seen));
449 time_t now = time(NULL);
452 if ((now - a->
seen) >
Modes.interactive_delete_ttl) {
int ModeAToModeC(unsigned int ModeA)
void interactiveUpdateAircraftModeS()
void interactiveRemoveStaleAircrafts(void)
#define MODES_ACFLAGS_ALTITUDE_VALID
#define MODES_INTERACTIVE_REFRESH_TIME
void interactiveShowData(void)
#define MODEAC_MSG_MODEA_HIT
void interactiveUpdateAircraftModeA(struct aircraft *a)
#define MODEAC_MSG_MODEC_HIT
#define MODEAC_MSG_MODEA_ONLY
#define MODES_ACFLAGS_AOG
struct aircraft * interactiveFindAircraft(uint32_t addr)
unsigned char signalLevel
Iterator next(Iterator it)
#define MODES_ACFLAGS_LLEITHER_VALID
#define MODEAC_MSG_MODEC_OLD
#define MODES_ACFLAGS_SPEED_VALID
#define MODES_ACFLAGS_SQUAWK_VALID
double abs(const SVector< n, T > &v)
void decodeCPR(struct aircraft *a, int fflag, int surface)
#define MODES_ACFLAGS_HEADING_VALID
struct aircraft * interactiveReceiveData(struct modesMessage *mm)
#define MODES_ACFLAGS_LATLON_VALID
#define MODES_ACFLAGS_LLBOTH_VALID
unsigned char signalLevel[8]
int decodeCPRrelative(struct aircraft *a, int fflag, int surface)
#define MODES_ACFLAGS_LLODD_VALID
#define MODES_ACFLAGS_VERTRATE_VALID
#define MODEAC_MSG_MODES_HIT
#define MODES_ACFLAGS_AOG_VALID
#define MODES_ACFLAGS_CALLSIGN_VALID
struct aircraft * interactiveCreateAircraft(struct modesMessage *mm)