libhomeradareasy collect aircraft informations |
| ACARS DECODER Planespotting Network Kinetic Avionics AirNav Systems Airframes.org | |||
| Home Docu Examples Functions Downloads Database Search Online API Success Stories News Imprint / Contact | |||
![]() libhomeradar is an easy to use library for all type of programming language which can use libraries. libhomeradar can connect to different sources to collect aircraft informations arround the world with extended informations, powerful filtering and structured data access. libhomeradar is written in C and is available for Linux and Windows (2003, XP, NT, Vista). Currently libhomeradar works with the Kinetic Avionics SBS-1 base station and the Airnav Systems Radarbox. |
Show only Lufthansa aircraftsThis example will connect to a single SBS-1 host and only aircrafts from the German Carrier 'Lufthansa' will be written to stdout. We use a single filter rule to realize this plan. For some filter rules it is required to load the databases! In this example we assign only a filter to the callsign. Therefore the databases must not be loaded. This program will run appr. 5 minutes.
/* System includes */
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
/* libhomeradar header include */
#include "libhomeradar.h"
/* Callback function to show aircraft informations */
void newcontact(void *handle,const int *id, LHR_CONTACT *C) {
LHR_AIRPORTS *P;
printf("%sContact: %s [%s]\nAirline: %s\nFlightnumber: %s Callsign: %s\nSquawk: %d\n",
(C->newcontact)?"AIR":"",
C->icao24,(C->reg)?C->reg:"UNKNOWN",
(C->airline)?C->airline:"NULL",C->flightnum,C->callsign,C->squawk);
printf("Aircraft: %s %s [%s] cn:%s\n",C->manufacturer,C->model,C->details,C->cn);
printf("Routing: %s LAT: %0.5f LON: %0.5f\n",C->route,C->lat,C->lon);
/* Get airport informations */
P = C->airports;
while (P) {
if (P->airport) {
printf("Airport [%s / %s] Name: %s, %s\n",
P->airport->iata,P->airport->icao,
P->airport->name,P->airport->country);
} else printf("Unresolveable: %s\n",P->apcode);
P = P->next;
}
/* Free LHR_CONTACT struct */
homeradar_freecontact(C);
}
/* Connect is established */
void connected(LHR handle, const int *item) {
printf("SUCCESSFULLY CONNECTED TO = %s\n",homeradar_gethostbyid(handle,*(item)));
/* Setup the event listener for the LHR_ONCONTACT event */
if (homeradar_onhandler(handle, LHR_ONCONTACT, *(item), newcontact)==0) {
printf("Unable to add event listener\n");
} else printf("Contact handler successfully installed\n");
}
/* Main program */
int main(int argc, char **argv) {
int e;
LHR H = homeradar_init(16,LHR_AUTOCONNECT,&e,NULL);
/* No error */
if (H == NULL) {
printf("Error initializing libhomeradar. Errorcode #%d\n",e);
return 255;
}
/* Add host without event listener */
e = homeradar_addhost(H, "sbs1.libhomeradar.org", 33033, LHR_SBS1, LHR_ONCONNECT, connected);
/* Show only aircrafts from german carrier 'Lufthansa' */
(void)homeradar_addfilter(H, LHR_FILTER_BYCALLSIGN|LHR_FILTER_INCLUDE, "DLH*", e);
/* Do nothing - in this example - loop will be finished after 5 minutes
In your real program you can do now what you want */
e = 49;
while (e--) sleep(6);
/* Shutdown libhomeradar and free all alocated memory */
printf("Shutdown libhomeradar...\n");
homeradar_destroy(H);
/* Return success */
return 0;
}
|
||