summaryrefslogtreecommitdiffstats
path: root/listen/opentracdump.c
diff options
context:
space:
mode:
Diffstat (limited to 'listen/opentracdump.c')
-rw-r--r--listen/opentracdump.c104
1 files changed, 64 insertions, 40 deletions
diff --git a/listen/opentracdump.c b/listen/opentracdump.c
index 128cb9a..1b0bc26 100644
--- a/listen/opentracdump.c
+++ b/listen/opentracdump.c
@@ -11,23 +11,26 @@
#define MAX_UNIT_INDEX 28
-const char *units[]={"Volts","Amperes","Watts","Kelvins","Meters","Seconds",
- "Meters/Second","Liters","Kilograms","Bits/Second","Bytes","Radians",
- "Radians/Second","Square Meters","Joules","Newtons","Pascals","Hertz",
- "Meters/Sec^2","Grays","Lumens","Cubic Meters/Second",
- "Pascal Seconds","Kilograms/Meter^3","Radians/Second^2","Coulombs",
- "Farads","Siemens","Count"};
+static const char *units[] ={
+ "Volts","Amperes","Watts","Kelvins","Meters","Seconds",
+ "Meters/Second","Liters","Kilograms","Bits/Second","Bytes","Radians",
+ "Radians/Second","Square Meters","Joules","Newtons","Pascals","Hertz",
+ "Meters/Sec^2","Grays","Lumens","Cubic Meters/Second",
+ "Pascal Seconds","Kilograms/Meter^3","Radians/Second^2","Coulombs",
+ "Farads","Siemens","Count"
+};
-char origin_call[7]; /* Who's talking */
-unsigned char origin_ssid;
-char entity_call[7]; /* What they're talking about */
-unsigned char entity_ssid;
-unsigned int entity_serial;
-unsigned int entity_sequence;
+static char origin_call[7]; /* Who's talking */
+static unsigned char origin_ssid;
+static char entity_call[7]; /* What they're talking about */
+static unsigned char entity_ssid;
+static unsigned int entity_serial;
+static unsigned int entity_sequence;
-int extract_ssid(char *call) {
+static int extract_ssid(char *call)
+{
/* Strip the SSID from the callsign and return it */
int c, ssid;
@@ -39,12 +42,10 @@ int extract_ssid(char *call) {
return ssid;
}
-int decode_units(unsigned int unitnum, unsigned char *element, int element_len);
-
-
/* Return values: 0 = OK, -1 = Couldn't Decode, -2 = Invalid Data */
-int decode_sequence(unsigned char *element, int element_len) {
+static int decode_sequence(unsigned char *element, int element_len)
+{
/* 0x00 Sequence number - 16 bit integer */
if (element_len != 2 && element_len != 0) return -1;
@@ -60,7 +61,8 @@ int decode_sequence(unsigned char *element, int element_len) {
return 0;
}
-int decode_origination(unsigned char *element, int element_len) {
+static int decode_origination(unsigned char *element, int element_len)
+{
/* 0x01 Originating Station - Callsign, SSID, and Sequence */
memcpy(origin_call, element, 6);
origin_call[6]=0;
@@ -75,7 +77,8 @@ int decode_origination(unsigned char *element, int element_len) {
return 0;
}
-int decode_entityid(unsigned char *element, int element_len) {
+static int decode_entityid(unsigned char *element, int element_len)
+{
/* 0x02 Entity ID */
if (element_len > 5) {
memcpy(entity_call, element, 6);
@@ -119,7 +122,8 @@ int decode_entityid(unsigned char *element, int element_len) {
return 0;
}
-int decode_position(unsigned char *element, int element_len) {
+static int decode_position(unsigned char *element, int element_len)
+{
/*
* 0x10 Position Report - Lat/Lon/<Alt>
* Lat/Lon is WGS84, 180/2^31 degrees, Alt is 1/100 meter
@@ -143,7 +147,8 @@ int decode_position(unsigned char *element, int element_len) {
return 0;
}
-int decode_timestamp(unsigned char *element, int element_len) {
+static int decode_timestamp(unsigned char *element, int element_len)
+{
/* 0x11 Timestamp - Unix format time (unsigned) */
long rawtime = 0;
@@ -152,7 +157,8 @@ int decode_timestamp(unsigned char *element, int element_len) {
return 0;
}
-int decode_comment(unsigned char *element, int element_len) {
+static int decode_comment(unsigned char *element, int element_len)
+{
/* 0x12 Freeform Comment - ASCII text */
char comment[127];
@@ -163,7 +169,8 @@ int decode_comment(unsigned char *element, int element_len) {
return 0;
}
-int decode_courseandspeed(unsigned char *element, int element_len) {
+static int decode_courseandspeed(unsigned char *element, int element_len)
+{
/* 0x13 Course and Speed - Course in degrees, speed in 1/50 m/s */
unsigned int course;
unsigned int rawspeed;
@@ -178,7 +185,8 @@ int decode_courseandspeed(unsigned char *element, int element_len) {
return 0;
}
-int decode_ambiguity(unsigned char *element, int element_len) {
+static int decode_ambiguity(unsigned char *element, int element_len)
+{
/* 0x14 Positional Ambiguity - 16 bits, in meters */
int ambiguity;
@@ -187,7 +195,8 @@ int decode_ambiguity(unsigned char *element, int element_len) {
return 0;
}
-int decode_country(unsigned char *element, int element_len) {
+static int decode_country(unsigned char *element, int element_len)
+{
/* 0x15 Country Code - ISO 3166-1 and optionally -2 */
char country[3];
char subdivision[4];
@@ -205,7 +214,8 @@ int decode_country(unsigned char *element, int element_len) {
return 0;
}
-int decode_displayname(unsigned char *element, int element_len) {
+static int decode_displayname(unsigned char *element, int element_len)
+{
char displayname[31]; /* 0x16 - Display Name (UTF-8 text) */
strncpy(displayname, (char *)element, element_len);
@@ -215,7 +225,8 @@ int decode_displayname(unsigned char *element, int element_len) {
return 0;
}
-int decode_waypoint(unsigned char *element, int element_len) {
+static int decode_waypoint(unsigned char *element, int element_len)
+{
char waypoint[7]; /* 0x17 - Waypoint Name (up to 6 chars, uppercase) */
strncpy(waypoint, (char *)element, element_len);
@@ -225,7 +236,8 @@ int decode_waypoint(unsigned char *element, int element_len) {
return 0;
}
-int decode_symbol(unsigned char *element, int element_len) {
+static int decode_symbol(unsigned char *element, int element_len)
+{
int c; /* 0x18 Map Symbol - Packed 4-bit integers */
lprintf(T_OPENTRAC, "Symbol: ");
@@ -239,7 +251,8 @@ int decode_symbol(unsigned char *element, int element_len) {
return 0;
}
-int decode_pathtrace(unsigned char *element, int element_len) {
+static int decode_pathtrace(unsigned char *element, int element_len)
+{
char callsign[7]; /* 0x20 Path Trace - Call/SSID, Network */
int ssid, c, network;
@@ -261,7 +274,8 @@ int decode_pathtrace(unsigned char *element, int element_len) {
return 0;
}
-int decode_heardby(unsigned char *element, int element_len) {
+static int decode_heardby(unsigned char *element, int element_len)
+{
int c; /* 0x21 Heard-By List */
lprintf(T_OPENTRAC, "Heard By:");
@@ -273,7 +287,8 @@ int decode_heardby(unsigned char *element, int element_len) {
return 0;
}
-int decode_availablenets(unsigned char *element, int element_len) {
+static int decode_availablenets(unsigned char *element, int element_len)
+{
int c; /* 0x22 Available Networks */
lprintf(T_OPENTRAC, "Available Networks:");
@@ -285,7 +300,8 @@ int decode_availablenets(unsigned char *element, int element_len) {
return 0;
}
-int decode_gpsquality(unsigned char *element, int element_len) {
+static int decode_gpsquality(unsigned char *element, int element_len)
+{
/* 0x34 GPS Data Quality - Fix, Validity, Sats, PDOP, HDOP, VDOP */
int fixtype, validity, sats;
const char *fixstr[] = {"Unknown Fix", "No Fix", "2D Fix", "3D Fix"};
@@ -309,7 +325,8 @@ int decode_gpsquality(unsigned char *element, int element_len) {
}
-int decode_acreg(unsigned char *element, int element_len) {
+static int decode_acreg(unsigned char *element, int element_len)
+{
char nnumber[9]; /* 0x35 Aircraft Registration - ASCII text */
strncpy(nnumber, (char *)element, element_len);
@@ -319,7 +336,8 @@ int decode_acreg(unsigned char *element, int element_len) {
return 0;
}
-int decode_rivergauge(unsigned char *element, int element_len) {
+static int decode_rivergauge(unsigned char *element, int element_len)
+{
unsigned int flow; /* 0x42 River Flow Gauge - 1/64 m^3/sec */
unsigned int height; /* centimeters */
float flowm;
@@ -336,7 +354,9 @@ int decode_rivergauge(unsigned char *element, int element_len) {
}
-int decode_units(unsigned int unitnum, unsigned char *element, int element_len) {
+static int decode_units(unsigned int unitnum, unsigned char *element,
+ int element_len)
+{
/*
* 0x0500 to 0x05ff Generic Measurement Elements
* Values may be 8-bit int, 16-bit int, single float, or double float
@@ -371,19 +391,22 @@ int decode_units(unsigned int unitnum, unsigned char *element, int element_len)
return 0;
}
-int flag_emergency(unsigned char *element, int element_len) {
+static int flag_emergency(unsigned char *element, int element_len)
+{
/* 0x0100 - Emergency / Distress Call */
lprintf(T_ERROR, "* * * EMERGENCY * * *\r\n");
return 0;
}
-int flag_attention(unsigned char *element, int element_len) {
+static int flag_attention(unsigned char *element, int element_len)
+{
/* 0x0101 - Attention / Ident */
lprintf(T_PROTOCOL, " - ATTENTION - \r\n");
return 0;
}
-int decode_hazmat(unsigned char *element, int element_len) {
+static int decode_hazmat(unsigned char *element, int element_len)
+{
/* 0x0300 - HAZMAT (UN ID in lower 14 bits) */
int un_id;
@@ -397,7 +420,8 @@ int decode_hazmat(unsigned char *element, int element_len) {
return 0;
}
-int decode_maidenhead(unsigned char *element, int element_len) {
+static int decode_maidenhead(unsigned char *element, int element_len)
+{
/* 0x32 - Maidenhead Locator (4 or 6 chars) */
char maidenhead[7];
@@ -411,7 +435,7 @@ int decode_maidenhead(unsigned char *element, int element_len) {
}
-struct {
+static struct {
unsigned int element_id;
unsigned char min_size;
unsigned char max_size;