Completed
Push — master ( d8fba4...5e2e76 )
by Yannick
35:01
created
require/class.SBS.php 2 patches
Spacing   +60 added lines, -60 removed lines patch added patch discarded remove patch
@@ -18,25 +18,25 @@  discard block
 block discarded – undo
18 18
 	public function parse($buffer) {
19 19
 		// Not yet finished, no CRC checks
20 20
 		$data = array();
21
-		$typehex = substr($buffer,0,1);
22
-		if ($typehex == '*' || $typehex == ':') $hex = substr($buffer,1);
21
+		$typehex = substr($buffer, 0, 1);
22
+		if ($typehex == '*' || $typehex == ':') $hex = substr($buffer, 1);
23 23
 		//elseif ($typehex == '@' || $typehex == '%') $hex = substr($buffer,13,-13);
24
-		elseif ($typehex == '@' || $typehex == '%') $hex = substr($buffer,13,-1);
25
-		else $hex = substr($buffer,1,-1);
26
-		$bin = gmp_strval( gmp_init($hex,16), 2);
24
+		elseif ($typehex == '@' || $typehex == '%') $hex = substr($buffer, 13, -1);
25
+		else $hex = substr($buffer, 1, -1);
26
+		$bin = gmp_strval(gmp_init($hex, 16), 2);
27 27
 		//if (strlen($hex) == 28 && $this->parityCheck($hex,$bin)) {
28 28
 		//if (strlen($hex) == 28) {
29 29
 		//echo strlen($hex);
30 30
 		//echo $hex;
31 31
 		if (strlen($hex) == 28 || strlen($hex) == 16) {
32
-			$df = intval(substr($bin,0,5),2);
32
+			$df = intval(substr($bin, 0, 5), 2);
33 33
 			//$ca = intval(substr($bin,5,3),2);
34 34
 			// Only support DF17 for now
35 35
 			//if ($df == 17 || ($df == 18 && ($ca == 0 || $ca == 1 || $ca == 6))) {
36
-			if (($df == 17 || $df == 18) && ($this->parityCheck($hex,$bin) || $typehex == '@')) {
37
-				$icao = substr($hex,2,6);
36
+			if (($df == 17 || $df == 18) && ($this->parityCheck($hex, $bin) || $typehex == '@')) {
37
+				$icao = substr($hex, 2, 6);
38 38
 				$data['hex'] = $icao;
39
-				$tc = intval(substr($bin,32,5),2);
39
+				$tc = intval(substr($bin, 32, 5), 2);
40 40
 				if ($tc >= 1 && $tc <= 4) {
41 41
 					// Category:
42 42
 					// 1 = light aircraft <= 7000 kg
@@ -59,67 +59,67 @@  discard block
 block discarded – undo
59 59
 					// 22 = fixed ground or tethered obstruction
60 60
 					// 23 to 24 = reserved
61 61
 					//$data['category'] = intval(substr($bin,5,3),2);
62
-					$data['category'] = intval(substr($bin,37,3),2);
62
+					$data['category'] = intval(substr($bin, 37, 3), 2);
63 63
 					//callsign
64
-					$csbin = substr($bin,40,56);
64
+					$csbin = substr($bin, 40, 56);
65 65
 					$charset = str_split('#ABCDEFGHIJKLMNOPQRSTUVWXYZ#####_###############0123456789######');
66 66
 					$cs = '';
67
-					$cs .= $charset[intval(substr($csbin,0,6),2)];
68
-					$cs .= $charset[intval(substr($csbin,6,6),2)];
69
-					$cs .= $charset[intval(substr($csbin,12,6),2)];
70
-					$cs .= $charset[intval(substr($csbin,18,6),2)];
71
-					$cs .= $charset[intval(substr($csbin,24,6),2)];
72
-					$cs .= $charset[intval(substr($csbin,30,6),2)];
73
-					$cs .= $charset[intval(substr($csbin,36,6),2)];
74
-					$cs .= $charset[intval(substr($csbin,42,6),2)];
75
-					$cs = str_replace('_','',$cs);
76
-					$cs = str_replace('#','',$cs);
67
+					$cs .= $charset[intval(substr($csbin, 0, 6), 2)];
68
+					$cs .= $charset[intval(substr($csbin, 6, 6), 2)];
69
+					$cs .= $charset[intval(substr($csbin, 12, 6), 2)];
70
+					$cs .= $charset[intval(substr($csbin, 18, 6), 2)];
71
+					$cs .= $charset[intval(substr($csbin, 24, 6), 2)];
72
+					$cs .= $charset[intval(substr($csbin, 30, 6), 2)];
73
+					$cs .= $charset[intval(substr($csbin, 36, 6), 2)];
74
+					$cs .= $charset[intval(substr($csbin, 42, 6), 2)];
75
+					$cs = str_replace('_', '', $cs);
76
+					$cs = str_replace('#', '', $cs);
77 77
 					$callsign = $cs;
78 78
 					$data['ident'] = $callsign;
79 79
 				} elseif ($tc >= 9 && $tc <= 18) {
80 80
 					// Check Q-bit
81
-					$q = substr($bin,47,1);
81
+					$q = substr($bin, 47, 1);
82 82
 					if ($q) {
83
-						$n = intval(substr($bin,40,7).substr($bin,48,4),2);
84
-						$alt = $n*25-1000;
83
+						$n = intval(substr($bin, 40, 7).substr($bin, 48, 4), 2);
84
+						$alt = $n*25 - 1000;
85 85
 						$data['altitude'] = $alt;
86 86
 					}
87 87
 					// Check odd/even flag
88
-					$oe = substr($bin,53,1);
88
+					$oe = substr($bin, 53, 1);
89 89
 					//if ($oe) => odd else even
90 90
 					//  131072 is 2^17 since CPR latitude and longitude are encoded in 17 bits.
91
-					$cprlat = intval(substr($bin,54,17),2)/131072.0;
92
-					$cprlon = intval(substr($bin,71,17),2)/131072.0;
93
-					if ($oe == 0) $this::$latlon[$icao] = array('latitude' => $cprlat,'longitude' => $cprlon,'created' => time());
91
+					$cprlat = intval(substr($bin, 54, 17), 2)/131072.0;
92
+					$cprlon = intval(substr($bin, 71, 17), 2)/131072.0;
93
+					if ($oe == 0) $this::$latlon[$icao] = array('latitude' => $cprlat, 'longitude' => $cprlon, 'created' => time());
94 94
 					elseif (isset($this::$latlon[$icao]) && (time() - $this::$latlon[$icao]['created']) < 10) {
95 95
 						$cprlat_odd = $cprlat;
96 96
 						$cprlon_odd = $cprlon;
97 97
 						$cprlat_even = $this::$latlon[$icao]['latitude'];
98 98
 						$cprlon_even = $this::$latlon[$icao]['longitude'];
99
-						$j = 59*$cprlat_even-60*$cprlat_odd+0.5;
100
-						$lat_even = (360.0/60)*($j%60+$cprlat_even);
101
-						$lat_odd = (360.0/59)*($j%59+$cprlat_odd);
99
+						$j = 59*$cprlat_even - 60*$cprlat_odd + 0.5;
100
+						$lat_even = (360.0/60)*($j%60 + $cprlat_even);
101
+						$lat_odd = (360.0/59)*($j%59 + $cprlat_odd);
102 102
 						if ($lat_even >= 270) $lat_even = $lat_even - 360;
103 103
 						if ($lat_odd >= 270) $lat_odd = $lat_odd - 360;
104 104
 						// check latitude zone
105 105
 						if ($this->cprNL($lat_even) == $this->cprNL($lat_odd)) {
106 106
 							if ($this::$latlon[$icao]['created'] > time()) {
107
-								$ni = $this->cprN($lat_even,0);
108
-								$m = floor($cprlon_even*($this->cprNL($lat_even)-1) - $cprlon_odd * $this->cprNL($lat_even)+0.5);
109
-								$lon = (360.0/$ni)*($m%$ni+$cprlon_even);
107
+								$ni = $this->cprN($lat_even, 0);
108
+								$m = floor($cprlon_even*($this->cprNL($lat_even) - 1) - $cprlon_odd*$this->cprNL($lat_even) + 0.5);
109
+								$lon = (360.0/$ni)*($m%$ni + $cprlon_even);
110 110
 								$lat = $lat_even;
111
-								if ($lon > 180) $lon = $lon -360;
111
+								if ($lon > 180) $lon = $lon - 360;
112 112
 								if ($lat > -91 && $lat < 91 && $lon > -181 && $lon < 181) {
113 113
 									//if ($globalDebug) echo 'cs : '.$cs.' - hex : '.$hex.' - lat : '.$lat.' - lon : '.$lon;
114 114
 									$data['latitude'] = $lat;
115 115
 									$data['longitude'] = $lon;
116 116
 								}
117 117
 							} else {
118
-								$ni = $this->cprN($lat_odd,1);
119
-								$m = floor($cprlon_even*($this->cprNL($lat_odd)-1) - $cprlon_odd * $this->cprNL($lat_odd)+0.5);
120
-								$lon = (360.0/$ni)*($m%$ni+$cprlon_odd);
118
+								$ni = $this->cprN($lat_odd, 1);
119
+								$m = floor($cprlon_even*($this->cprNL($lat_odd) - 1) - $cprlon_odd*$this->cprNL($lat_odd) + 0.5);
120
+								$lon = (360.0/$ni)*($m%$ni + $cprlon_odd);
121 121
 								$lat = $lat_odd;
122
-								if ($lon > 180) $lon = $lon -360;
122
+								if ($lon > 180) $lon = $lon - 360;
123 123
 								if ($lat > -91 && $lat < 91 && $lon > -181 && $lon < 181) {
124 124
 									//if ($globalDebug) echo 'icao : '.$icao.' - hex : '.$hex.' - lat : '.$lat.' - lon : '.$lon.' second'."\n";
125 125
 									$data['latitude'] = $lat;
@@ -131,15 +131,15 @@  discard block
 block discarded – undo
131 131
 					}
132 132
 				} elseif ($tc == 19) {
133 133
 					// speed & heading
134
-					$v_ew_dir = intval(substr($bin,45,1));
135
-					$v_ew = intval(substr($bin,46,10),2);
136
-					$v_ns_dir = intval(substr($bin,56,1));
137
-					$v_ns = intval(substr($bin,57,10),2);
134
+					$v_ew_dir = intval(substr($bin, 45, 1));
135
+					$v_ew = intval(substr($bin, 46, 10), 2);
136
+					$v_ns_dir = intval(substr($bin, 56, 1));
137
+					$v_ns = intval(substr($bin, 57, 10), 2);
138 138
 					if ($v_ew_dir) $v_ew = -1*$v_ew;
139 139
 					if ($v_ns_dir) $v_ns = -1*$v_ns;
140
-					$speed = sqrt($v_ns*$v_ns+$v_ew*$v_ew);
141
-					$heading = atan2($v_ew,$v_ns)*360.0/(2*pi());
142
-					if ($heading <0) $heading = $heading+360;
140
+					$speed = sqrt($v_ns*$v_ns + $v_ew*$v_ew);
141
+					$heading = atan2($v_ew, $v_ns)*360.0/(2*pi());
142
+					if ($heading < 0) $heading = $heading + 360;
143 143
 					$data['speed'] = $speed;
144 144
 					$data['heading'] = $heading;
145 145
 				}
@@ -154,7 +154,7 @@  discard block
 block discarded – undo
154 154
 	 * Lookup table to convert the latitude to index.
155 155
 	*/
156 156
 	private function cprNL($lat) {
157
-		if ($lat < 0) $lat = -$lat;             // Table is simmetric about the equator.
157
+		if ($lat < 0) $lat = -$lat; // Table is simmetric about the equator.
158 158
 		if ($lat < 10.47047130) return 59;
159 159
 		if ($lat < 14.82817437) return 58;
160 160
 		if ($lat < 18.18626357) return 57;
@@ -216,7 +216,7 @@  discard block
 block discarded – undo
216 216
 		return 1;
217 217
 	}
218 218
 
219
-	private function cprN($lat,$isodd) {
219
+	private function cprN($lat, $isodd) {
220 220
 		$nl = $this->cprNL($lat) - $isodd;
221 221
 		if ($nl > 1) return $nl;
222 222
 		else return 1;
@@ -240,9 +240,9 @@  discard block
 block discarded – undo
240 240
 		    0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000
241 241
 		);
242 242
 		$crc = 0;
243
-		$checksum = intval(substr($msg,22,6),16);
243
+		$checksum = intval(substr($msg, 22, 6), 16);
244 244
 		for ($j = 0; $j < strlen($bin); $j++) {
245
-			if ($bin[$j]) $crc = $crc^intval($modes_checksum_table[$j],0);
245
+			if ($bin[$j]) $crc = $crc^intval($modes_checksum_table[$j], 0);
246 246
 		}
247 247
 		if ($crc == $checksum) return true;
248 248
 		else {
@@ -264,10 +264,10 @@  discard block
 block discarded – undo
264 264
 			$msg['aircraftid'] = hexdec($data['address']);
265 265
 			$msg['hex'] = $data['address'];
266 266
 			$msg['flightid'] = hexdec($data['address']);
267
-			$msg['date_gen'] = date('Y/m/d',$data['timestamp']);
268
-			$msg['time_gen'] = date('H:i:s',$data['timestamp']).'.180';
269
-			$msg['date_log'] = date('Y/m/d',$data['timestamp']);
270
-			$msg['time_log'] = date('H:i:s',$data['timestamp']).'.180';
267
+			$msg['date_gen'] = date('Y/m/d', $data['timestamp']);
268
+			$msg['time_gen'] = date('H:i:s', $data['timestamp']).'.180';
269
+			$msg['date_log'] = date('Y/m/d', $data['timestamp']);
270
+			$msg['time_log'] = date('H:i:s', $data['timestamp']).'.180';
271 271
 			$msg['callsign'] = $data['ident'];
272 272
 			$msg['altitude'] = '';
273 273
 			$msg['speed'] = '';
@@ -280,7 +280,7 @@  discard block
 block discarded – undo
280 280
 			$msg['emergency'] = '';
281 281
 			$msg['SPI'] = '';
282 282
 			$msg['ground'] = '';
283
-			$result[] = implode(',',$msg);
283
+			$result[] = implode(',', $msg);
284 284
 		}
285 285
 		if (isset($data['latitude']) && $data['latitude'] != 0) {
286 286
 			$msg = array();
@@ -290,10 +290,10 @@  discard block
 block discarded – undo
290 290
 			$msg['aircraftid'] = hexdec($data['address']);
291 291
 			$msg['hex'] = $data['address'];
292 292
 			$msg['flightid'] = hexdec($data['address']);
293
-			$msg['date_gen'] = date('Y/m/d',$data['timestamp']);
294
-			$msg['time_gen'] = date('H:i:s',$data['timestamp']).'.180';
295
-			$msg['date_log'] = date('Y/m/d',$data['timestamp']);
296
-			$msg['time_log'] = date('H:i:s',$data['timestamp']).'.180';
293
+			$msg['date_gen'] = date('Y/m/d', $data['timestamp']);
294
+			$msg['time_gen'] = date('H:i:s', $data['timestamp']).'.180';
295
+			$msg['date_log'] = date('Y/m/d', $data['timestamp']);
296
+			$msg['time_log'] = date('H:i:s', $data['timestamp']).'.180';
297 297
 			$msg['callsign'] = '';
298 298
 			if (isset($data['altitude'])) $msg['altitude'] = $data['altitude'];
299 299
 			else $msg['altitude'] = '';
@@ -311,7 +311,7 @@  discard block
 block discarded – undo
311 311
 			$msg['SPI'] = 0;
312 312
 			if (isset($data['ground'])) $msg['ground'] = 1;
313 313
 			else $msg['ground'] = 0;
314
-			$result[] = implode(',',$msg);
314
+			$result[] = implode(',', $msg);
315 315
 		}
316 316
 		return $result;
317 317
 	}
Please login to merge, or discard this patch.
Braces   +249 added lines, -87 removed lines patch added patch discarded remove patch
@@ -19,10 +19,15 @@  discard block
 block discarded – undo
19 19
 		// Not yet finished, no CRC checks
20 20
 		$data = array();
21 21
 		$typehex = substr($buffer,0,1);
22
-		if ($typehex == '*' || $typehex == ':') $hex = substr($buffer,1);
22
+		if ($typehex == '*' || $typehex == ':') {
23
+			$hex = substr($buffer,1);
24
+		}
23 25
 		//elseif ($typehex == '@' || $typehex == '%') $hex = substr($buffer,13,-13);
24
-		elseif ($typehex == '@' || $typehex == '%') $hex = substr($buffer,13,-1);
25
-		else $hex = substr($buffer,1,-1);
26
+		elseif ($typehex == '@' || $typehex == '%') {
27
+			$hex = substr($buffer,13,-1);
28
+		} else {
29
+			$hex = substr($buffer,1,-1);
30
+		}
26 31
 		$bin = gmp_strval( gmp_init($hex,16), 2);
27 32
 		//if (strlen($hex) == 28 && $this->parityCheck($hex,$bin)) {
28 33
 		//if (strlen($hex) == 28) {
@@ -90,8 +95,9 @@  discard block
 block discarded – undo
90 95
 					//  131072 is 2^17 since CPR latitude and longitude are encoded in 17 bits.
91 96
 					$cprlat = intval(substr($bin,54,17),2)/131072.0;
92 97
 					$cprlon = intval(substr($bin,71,17),2)/131072.0;
93
-					if ($oe == 0) $this::$latlon[$icao] = array('latitude' => $cprlat,'longitude' => $cprlon,'created' => time());
94
-					elseif (isset($this::$latlon[$icao]) && (time() - $this::$latlon[$icao]['created']) < 10) {
98
+					if ($oe == 0) {
99
+						$this::$latlon[$icao] = array('latitude' => $cprlat,'longitude' => $cprlon,'created' => time());
100
+					} elseif (isset($this::$latlon[$icao]) && (time() - $this::$latlon[$icao]['created']) < 10) {
95 101
 						$cprlat_odd = $cprlat;
96 102
 						$cprlon_odd = $cprlon;
97 103
 						$cprlat_even = $this::$latlon[$icao]['latitude'];
@@ -99,8 +105,12 @@  discard block
 block discarded – undo
99 105
 						$j = 59*$cprlat_even-60*$cprlat_odd+0.5;
100 106
 						$lat_even = (360.0/60)*($j%60+$cprlat_even);
101 107
 						$lat_odd = (360.0/59)*($j%59+$cprlat_odd);
102
-						if ($lat_even >= 270) $lat_even = $lat_even - 360;
103
-						if ($lat_odd >= 270) $lat_odd = $lat_odd - 360;
108
+						if ($lat_even >= 270) {
109
+							$lat_even = $lat_even - 360;
110
+						}
111
+						if ($lat_odd >= 270) {
112
+							$lat_odd = $lat_odd - 360;
113
+						}
104 114
 						// check latitude zone
105 115
 						if ($this->cprNL($lat_even) == $this->cprNL($lat_odd)) {
106 116
 							if ($this::$latlon[$icao]['created'] > time()) {
@@ -108,7 +118,9 @@  discard block
 block discarded – undo
108 118
 								$m = floor($cprlon_even*($this->cprNL($lat_even)-1) - $cprlon_odd * $this->cprNL($lat_even)+0.5);
109 119
 								$lon = (360.0/$ni)*($m%$ni+$cprlon_even);
110 120
 								$lat = $lat_even;
111
-								if ($lon > 180) $lon = $lon -360;
121
+								if ($lon > 180) {
122
+									$lon = $lon -360;
123
+								}
112 124
 								if ($lat > -91 && $lat < 91 && $lon > -181 && $lon < 181) {
113 125
 									//if ($globalDebug) echo 'cs : '.$cs.' - hex : '.$hex.' - lat : '.$lat.' - lon : '.$lon;
114 126
 									$data['latitude'] = $lat;
@@ -119,14 +131,18 @@  discard block
 block discarded – undo
119 131
 								$m = floor($cprlon_even*($this->cprNL($lat_odd)-1) - $cprlon_odd * $this->cprNL($lat_odd)+0.5);
120 132
 								$lon = (360.0/$ni)*($m%$ni+$cprlon_odd);
121 133
 								$lat = $lat_odd;
122
-								if ($lon > 180) $lon = $lon -360;
134
+								if ($lon > 180) {
135
+									$lon = $lon -360;
136
+								}
123 137
 								if ($lat > -91 && $lat < 91 && $lon > -181 && $lon < 181) {
124 138
 									//if ($globalDebug) echo 'icao : '.$icao.' - hex : '.$hex.' - lat : '.$lat.' - lon : '.$lon.' second'."\n";
125 139
 									$data['latitude'] = $lat;
126 140
 									$data['longitude'] = $lon;
127 141
 								}
128 142
 							}
129
-						} else echo "Not cprNL";
143
+						} else {
144
+							echo "Not cprNL";
145
+						}
130 146
 						unset($this::$latlon[$icao]);
131 147
 					}
132 148
 				} elseif ($tc == 19) {
@@ -135,11 +151,17 @@  discard block
 block discarded – undo
135 151
 					$v_ew = intval(substr($bin,46,10),2);
136 152
 					$v_ns_dir = intval(substr($bin,56,1));
137 153
 					$v_ns = intval(substr($bin,57,10),2);
138
-					if ($v_ew_dir) $v_ew = -1*$v_ew;
139
-					if ($v_ns_dir) $v_ns = -1*$v_ns;
154
+					if ($v_ew_dir) {
155
+						$v_ew = -1*$v_ew;
156
+					}
157
+					if ($v_ns_dir) {
158
+						$v_ns = -1*$v_ns;
159
+					}
140 160
 					$speed = sqrt($v_ns*$v_ns+$v_ew*$v_ew);
141 161
 					$heading = atan2($v_ew,$v_ns)*360.0/(2*pi());
142
-					if ($heading <0) $heading = $heading+360;
162
+					if ($heading <0) {
163
+						$heading = $heading+360;
164
+					}
143 165
 					$data['speed'] = $speed;
144 166
 					$data['heading'] = $heading;
145 167
 				}
@@ -154,72 +176,194 @@  discard block
 block discarded – undo
154 176
 	 * Lookup table to convert the latitude to index.
155 177
 	*/
156 178
 	private function cprNL($lat) {
157
-		if ($lat < 0) $lat = -$lat;             // Table is simmetric about the equator.
158
-		if ($lat < 10.47047130) return 59;
159
-		if ($lat < 14.82817437) return 58;
160
-		if ($lat < 18.18626357) return 57;
161
-		if ($lat < 21.02939493) return 56;
162
-		if ($lat < 23.54504487) return 55;
163
-		if ($lat < 25.82924707) return 54;
164
-		if ($lat < 27.93898710) return 53;
165
-		if ($lat < 29.91135686) return 52;
166
-		if ($lat < 31.77209708) return 51;
167
-		if ($lat < 33.53993436) return 50;
168
-		if ($lat < 35.22899598) return 49;
169
-		if ($lat < 36.85025108) return 48;
170
-		if ($lat < 38.41241892) return 47;
171
-		if ($lat < 39.92256684) return 46;
172
-		if ($lat < 41.38651832) return 45;
173
-		if ($lat < 42.80914012) return 44;
174
-		if ($lat < 44.19454951) return 43;
175
-		if ($lat < 45.54626723) return 42;
176
-		if ($lat < 46.86733252) return 41;
177
-		if ($lat < 48.16039128) return 40;
178
-		if ($lat < 49.42776439) return 39;
179
-		if ($lat < 50.67150166) return 38;
180
-		if ($lat < 51.89342469) return 37;
181
-		if ($lat < 53.09516153) return 36;
182
-		if ($lat < 54.27817472) return 35;
183
-		if ($lat < 55.44378444) return 34;
184
-		if ($lat < 56.59318756) return 33;
185
-		if ($lat < 57.72747354) return 32;
186
-		if ($lat < 58.84763776) return 31;
187
-		if ($lat < 59.95459277) return 30;
188
-		if ($lat < 61.04917774) return 29;
189
-		if ($lat < 62.13216659) return 28;
190
-		if ($lat < 63.20427479) return 27;
191
-		if ($lat < 64.26616523) return 26;
192
-		if ($lat < 65.31845310) return 25;
193
-		if ($lat < 66.36171008) return 24;
194
-		if ($lat < 67.39646774) return 23;
195
-		if ($lat < 68.42322022) return 22;
196
-		if ($lat < 69.44242631) return 21;
197
-		if ($lat < 70.45451075) return 20;
198
-		if ($lat < 71.45986473) return 19;
199
-		if ($lat < 72.45884545) return 18;
200
-		if ($lat < 73.45177442) return 17;
201
-		if ($lat < 74.43893416) return 16;
202
-		if ($lat < 75.42056257) return 15;
203
-		if ($lat < 76.39684391) return 14;
204
-		if ($lat < 77.36789461) return 13;
205
-		if ($lat < 78.33374083) return 12;
206
-		if ($lat < 79.29428225) return 11;
207
-		if ($lat < 80.24923213) return 10;
208
-		if ($lat < 81.19801349) return 9;
209
-		if ($lat < 82.13956981) return 8;
210
-		if ($lat < 83.07199445) return 7;
211
-		if ($lat < 83.99173563) return 6;
212
-		if ($lat < 84.89166191) return 5;
213
-		if ($lat < 85.75541621) return 4;
214
-		if ($lat < 86.53536998) return 3;
215
-		if ($lat < 87.00000000) return 2;
179
+		if ($lat < 0) {
180
+			$lat = -$lat;
181
+		}
182
+		// Table is simmetric about the equator.
183
+		if ($lat < 10.47047130) {
184
+			return 59;
185
+		}
186
+		if ($lat < 14.82817437) {
187
+			return 58;
188
+		}
189
+		if ($lat < 18.18626357) {
190
+			return 57;
191
+		}
192
+		if ($lat < 21.02939493) {
193
+			return 56;
194
+		}
195
+		if ($lat < 23.54504487) {
196
+			return 55;
197
+		}
198
+		if ($lat < 25.82924707) {
199
+			return 54;
200
+		}
201
+		if ($lat < 27.93898710) {
202
+			return 53;
203
+		}
204
+		if ($lat < 29.91135686) {
205
+			return 52;
206
+		}
207
+		if ($lat < 31.77209708) {
208
+			return 51;
209
+		}
210
+		if ($lat < 33.53993436) {
211
+			return 50;
212
+		}
213
+		if ($lat < 35.22899598) {
214
+			return 49;
215
+		}
216
+		if ($lat < 36.85025108) {
217
+			return 48;
218
+		}
219
+		if ($lat < 38.41241892) {
220
+			return 47;
221
+		}
222
+		if ($lat < 39.92256684) {
223
+			return 46;
224
+		}
225
+		if ($lat < 41.38651832) {
226
+			return 45;
227
+		}
228
+		if ($lat < 42.80914012) {
229
+			return 44;
230
+		}
231
+		if ($lat < 44.19454951) {
232
+			return 43;
233
+		}
234
+		if ($lat < 45.54626723) {
235
+			return 42;
236
+		}
237
+		if ($lat < 46.86733252) {
238
+			return 41;
239
+		}
240
+		if ($lat < 48.16039128) {
241
+			return 40;
242
+		}
243
+		if ($lat < 49.42776439) {
244
+			return 39;
245
+		}
246
+		if ($lat < 50.67150166) {
247
+			return 38;
248
+		}
249
+		if ($lat < 51.89342469) {
250
+			return 37;
251
+		}
252
+		if ($lat < 53.09516153) {
253
+			return 36;
254
+		}
255
+		if ($lat < 54.27817472) {
256
+			return 35;
257
+		}
258
+		if ($lat < 55.44378444) {
259
+			return 34;
260
+		}
261
+		if ($lat < 56.59318756) {
262
+			return 33;
263
+		}
264
+		if ($lat < 57.72747354) {
265
+			return 32;
266
+		}
267
+		if ($lat < 58.84763776) {
268
+			return 31;
269
+		}
270
+		if ($lat < 59.95459277) {
271
+			return 30;
272
+		}
273
+		if ($lat < 61.04917774) {
274
+			return 29;
275
+		}
276
+		if ($lat < 62.13216659) {
277
+			return 28;
278
+		}
279
+		if ($lat < 63.20427479) {
280
+			return 27;
281
+		}
282
+		if ($lat < 64.26616523) {
283
+			return 26;
284
+		}
285
+		if ($lat < 65.31845310) {
286
+			return 25;
287
+		}
288
+		if ($lat < 66.36171008) {
289
+			return 24;
290
+		}
291
+		if ($lat < 67.39646774) {
292
+			return 23;
293
+		}
294
+		if ($lat < 68.42322022) {
295
+			return 22;
296
+		}
297
+		if ($lat < 69.44242631) {
298
+			return 21;
299
+		}
300
+		if ($lat < 70.45451075) {
301
+			return 20;
302
+		}
303
+		if ($lat < 71.45986473) {
304
+			return 19;
305
+		}
306
+		if ($lat < 72.45884545) {
307
+			return 18;
308
+		}
309
+		if ($lat < 73.45177442) {
310
+			return 17;
311
+		}
312
+		if ($lat < 74.43893416) {
313
+			return 16;
314
+		}
315
+		if ($lat < 75.42056257) {
316
+			return 15;
317
+		}
318
+		if ($lat < 76.39684391) {
319
+			return 14;
320
+		}
321
+		if ($lat < 77.36789461) {
322
+			return 13;
323
+		}
324
+		if ($lat < 78.33374083) {
325
+			return 12;
326
+		}
327
+		if ($lat < 79.29428225) {
328
+			return 11;
329
+		}
330
+		if ($lat < 80.24923213) {
331
+			return 10;
332
+		}
333
+		if ($lat < 81.19801349) {
334
+			return 9;
335
+		}
336
+		if ($lat < 82.13956981) {
337
+			return 8;
338
+		}
339
+		if ($lat < 83.07199445) {
340
+			return 7;
341
+		}
342
+		if ($lat < 83.99173563) {
343
+			return 6;
344
+		}
345
+		if ($lat < 84.89166191) {
346
+			return 5;
347
+		}
348
+		if ($lat < 85.75541621) {
349
+			return 4;
350
+		}
351
+		if ($lat < 86.53536998) {
352
+			return 3;
353
+		}
354
+		if ($lat < 87.00000000) {
355
+			return 2;
356
+		}
216 357
 		return 1;
217 358
 	}
218 359
 
219 360
 	private function cprN($lat,$isodd) {
220 361
 		$nl = $this->cprNL($lat) - $isodd;
221
-		if ($nl > 1) return $nl;
222
-		else return 1;
362
+		if ($nl > 1) {
363
+			return $nl;
364
+		} else {
365
+			return 1;
366
+		}
223 367
 	}
224 368
 
225 369
 	private function parityCheck($msg, $bin) {
@@ -242,10 +386,13 @@  discard block
 block discarded – undo
242 386
 		$crc = 0;
243 387
 		$checksum = intval(substr($msg,22,6),16);
244 388
 		for ($j = 0; $j < strlen($bin); $j++) {
245
-			if ($bin[$j]) $crc = $crc^intval($modes_checksum_table[$j],0);
389
+			if ($bin[$j]) {
390
+				$crc = $crc^intval($modes_checksum_table[$j],0);
391
+			}
246 392
 		}
247
-		if ($crc == $checksum) return true;
248
-		else {
393
+		if ($crc == $checksum) {
394
+			return true;
395
+		} else {
249 396
 			//echo "**** CRC ERROR ****\n";
250 397
 			return false;
251 398
 		}
@@ -295,22 +442,37 @@  discard block
 block discarded – undo
295 442
 			$msg['date_log'] = date('Y/m/d',$data['timestamp']);
296 443
 			$msg['time_log'] = date('H:i:s',$data['timestamp']).'.180';
297 444
 			$msg['callsign'] = '';
298
-			if (isset($data['altitude'])) $msg['altitude'] = $data['altitude'];
299
-			else $msg['altitude'] = '';
445
+			if (isset($data['altitude'])) {
446
+				$msg['altitude'] = $data['altitude'];
447
+			} else {
448
+				$msg['altitude'] = '';
449
+			}
300 450
 			$msg['speed'] = $data['speed'];
301
-			if (isset($data['heading'])) $msg['track'] = $data['heading'];
302
-			else $msg['track'] = '';
451
+			if (isset($data['heading'])) {
452
+				$msg['track'] = $data['heading'];
453
+			} else {
454
+				$msg['track'] = '';
455
+			}
303 456
 			$msg['latitude'] = $data['latitude'];
304 457
 			$msg['longitude'] = $data['longitude'];
305
-			if (isset($data['verticalrate'])) $msg['verticalrate'] = $data['verticalrate'];
306
-			else $msg['verticalrate'] = '';
307
-			if (isset($data['squawk'])) $msg['squawk'] = $data['squawk'];
308
-			else $msg['squawk'] = 0;
458
+			if (isset($data['verticalrate'])) {
459
+				$msg['verticalrate'] = $data['verticalrate'];
460
+			} else {
461
+				$msg['verticalrate'] = '';
462
+			}
463
+			if (isset($data['squawk'])) {
464
+				$msg['squawk'] = $data['squawk'];
465
+			} else {
466
+				$msg['squawk'] = 0;
467
+			}
309 468
 			$msg['alert'] = 0;
310 469
 			$msg['emergency'] = 0;
311 470
 			$msg['SPI'] = 0;
312
-			if (isset($data['ground'])) $msg['ground'] = 1;
313
-			else $msg['ground'] = 0;
471
+			if (isset($data['ground'])) {
472
+				$msg['ground'] = 1;
473
+			} else {
474
+				$msg['ground'] = 0;
475
+			}
314 476
 			$result[] = implode(',',$msg);
315 477
 		}
316 478
 		return $result;
Please login to merge, or discard this patch.