public static function update_schedule() { $Connection = new Connection(); $query = "SELECT * FROM schedule"; try { $sth = Connection::$db->prepare($query); $sth->execute(); } catch (PDOException $e) { return "error : " . $e->getMessage() . "\n"; } while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { Schedule::addSchedule($row['ident'], $row['departure_airport_icao'], $row['departure_airport_time'], $row['arrival_airport_icao'], $row['arrival_airport_time']); } }
function get_Schedule($id, $ident) { global $globalDebug; // Get schedule here, so it's done only one time $Connection = new Connection(); $dbc = $Connection->db; $Spotter = new Spotter($dbc); $Schedule = new Schedule($dbc); $Translation = new Translation($dbc); $operator = $Spotter->getOperator($ident); if ($Schedule->checkSchedule($operator) == 0) { $operator = $Translation->checkTranslation($ident); if ($Schedule->checkSchedule($operator) == 0) { $schedule = $Schedule->fetchSchedule($operator); if (count($schedule) > 0) { if ($globalDebug) { echo "-> Schedule info for " . $operator . " (" . $ident . ")\n"; } $this->all_flights[$id] = array_merge($this->all_flights[$id], array('departure_airport_time' => $schedule['DepartureTime'])); $this->all_flights[$id] = array_merge($this->all_flights[$id], array('arrival_airport_time' => $schedule['ArrivalTime'])); // FIXME : Check if route schedule = route from DB if ($schedule['DepartureAirportIATA'] != '') { if ($this->all_flights[$id]['departure_airport'] != $Spotter->getAirportIcao($schedule['DepartureAirportIATA'])) { $airport_icao = $Spotter->getAirportIcao($schedule['DepartureAirportIATA']); if ($airport_icao != '') { $this->all_flights[$id]['departure_airport'] = $airport_icao; if ($globalDebug) { echo "-> Change departure airport to " . $airport_icao . " for " . $ident . "\n"; } } } } if ($schedule['ArrivalAirportIATA'] != '') { if ($this->all_flights[$id]['arrival_airport'] != $Spotter->getAirportIcao($schedule['ArrivalAirportIATA'])) { $airport_icao = $Spotter->getAirportIcao($schedule['ArrivalAirportIATA']); if ($airport_icao != '') { $this->all_flights[$id]['arrival_airport'] = $airport_icao; if ($globalDebug) { echo "-> Change arrival airport to " . $airport_icao . " for " . $ident . "\n"; } } } } $Schedule->addSchedule($operator, $this->all_flights[$id]['departure_airport'], $this->all_flights[$id]['departure_airport_time'], $this->all_flights[$id]['arrival_airport'], $this->all_flights[$id]['arrival_airport_time'], $schedule['Source']); } } } //$Connection->db = null; }
static function get_Schedule($id, $ident) { global $globalDebug; // Get schedule here, so it's done only one time $operator = Spotter::getOperator($ident); if (Schedule::checkSchedule($operator) == 0) { $operator = Translation::checkTranslation($ident); if (Schedule::checkSchedule($operator) == 0) { $schedule = Schedule::fetchSchedule($operator); if (count($schedule) > 0) { if ($globalDebug) { echo "-> Schedule info for " . $operator . " (" . $ident . ")\n"; } self::$all_flights[$id] = array_merge(self::$all_flights[$id], array('departure_airport_time' => $schedule['DepartureTime'])); self::$all_flights[$id] = array_merge(self::$all_flights[$id], array('arrival_airport_time' => $schedule['ArrivalTime'])); // FIXME : Check if route schedule = route from DB if ($schedule['DepartureAirportIATA'] != '') { if (self::$all_flights[$id]['departure_airport'] != Spotter::getAirportIcao($schedule['DepartureAirportIATA'])) { $airport_icao = Spotter::getAirportIcao($schedule['DepartureAirportIATA']); if ($airport_icao != '') { self::$all_flights[$id]['departure_airport'] = $airport_icao; if ($globalDebug) { echo "-> Change departure airport to " . $airport_icao . " for " . $ident . "\n"; } } } } if ($schedule['ArrivalAirportIATA'] != '') { if (self::$all_flights[$id]['arrival_airport'] != Spotter::getAirportIcao($schedule['ArrivalAirportIATA'])) { $airport_icao = Spotter::getAirportIcao($schedule['ArrivalAirportIATA']); if ($airport_icao != '') { self::$all_flights[$id]['arrival_airport'] = $airport_icao; if ($globalDebug) { echo "-> Change arrival airport to " . $airport_icao . " for " . $ident . "\n"; } } } } Schedule::addSchedule($operator, self::$all_flights[$id]['departure_airport'], self::$all_flights[$id]['departure_airport_time'], self::$all_flights[$id]['arrival_airport'], self::$all_flights[$id]['arrival_airport_time'], $schedule['Source']); } } } }
/** * Add ACARS data * * @param String ACARS data in acarsdec data * */ function add($data) { global $globalDebug; $Image = new Image(); $Schedule = new Schedule(); $Translation = new Translation(); // (null) 4 09/03/2015 08:11:14 0 -41 2 ! SQ 02XA LYSLFL L104544N00505BV136975/ARINC // (null) 1 09/03/2015 08:10:08 0 -36 R .F-GPMD T _d 8 S65A AF6202 // $line = sscapreg_split('/\(null\) \d //$n = sscanf($data,'(null) %*d %*02d/%*02d/%*04d %*02d:%*02d:%*02d %*d %*[0-9-] %*[A-Z0-9] .%6s %*c %2[0-9a-zA-Z_] %d %4[0-9A-Z] %6[0-9A-Z] %[^\r\n]',$registration,$label,$block_id,$msg_no,$ident,$message); $n = sscanf($data, '(null) %*d %*02d/%*02d/%*04d %*02d:%*02d:%*02d %*d %*[0-9-] %*[A-Z0-9] %7s %*c %2[0-9a-zA-Z_] %d %4[0-9A-Z] %6[0-9A-Z] %[^\\r\\n]', $registration, $label, $block_id, $msg_no, $ident, $message); if ($n == 0) { $n = sscanf($data, 'AC%*c %7s %*c %2[0-9a-zA-Z_] %d %4[0-9A-Z] %6[0-9A-Z] %[^\\r\\n]', $registration, $label, $block_id, $msg_no, $ident, $message); } /* $line = explode(' ',$data,13); $registration = substr($line[7],1); $ident = $line[12]; $label = $line[9]; $block_id = $line[10]; $msg_no = $line[11]; //$message = implode(' ',array_slice($line,13)); $message = $line[13]; */ $icao = ''; $airicao = ''; $decode = array(); $found = false; if ($globalDebug) { echo "Reg. : " . $registration . " - Ident : " . $ident . " - Label : " . $label . " - Message : " . $message . "\n"; } if ($registration != '' && $ident != '' && $registration != '!') { /* Messages not yet parsed : ========================= Reg. : G-EUXE - Ident : BA31CE - Label : H1 - Message : #CFBFLR/FR15022612180028424806FUEL QUANTITY R ULTRACOMP 52QT/IDFUEL Reg. : OO-DWA - Ident : SN01LY - Label : 13 - Message : EBBR,LFLL,26FEB15,1626,164626 Reg. : OO-SSF - Ident : SN088L - Label : 28 - Message : EBBR,LFSB,LFST,ELLX, N 46.668,E 5.692,31735 Reg. : D-ABNL - Ident : AB718H - Label : 3V - Message : HB50,, 718H,27FEB15,EDDN,LEPA,.D-ABNL, LEPA,AB7892, 6600, 3000, 200,,2, 4, ,EOF, Reg. : F-GHQJ - Ident : AF7889 - Label : H1 - Message : #DFBA02/CCF-GHQJ,FEB27,134654,LFRS,LFMN,0889/C106,15201,4000,42,0010,0,0100,42,X/CEN285,36992,252,778,5619,315,B5B7G8/CNN282,36984,252,777,5618,315/EC731134,42384,01436,41191,12/EE731212,44929,11866,43552,12/N1 Reg. : CN-RNR - Ident : AT816C - Label : 5U - Message : 01 WXRQ 816C/27 GMMN/EDDT .CN-RNR /TYP 1/STA EDDT/STA LSZH/STA EDDS --Reg. : D-ABFN - Ident : AB662E - Label : 4A - Message : EDDL,EDDH,EDDV,,-SA,EOF, Reg. : F-GPMF - Ident : AF7828 - Label : H1 - Message : #DFBA01/A31901,1,1/CCF-GPMF,FEB27,175317,LFMN,LFLL,0828/C106,18139,4000,51,0011,0,1100,51,X/CEN097,15830,220,447,4989,254,C63015/EC731855,00832,01809,00757,C3,--/EE731869,00832,07653,00757,C3/N10333,0333,0656,4 Reg. : F-GHQJ - Ident : AF6241 - Label : 80 - Message : /ORYKOAF.VER/071/A320/M SCH/AF6241/LFMN/LFPO/27FEB/2010 FTX TPI Reg. : YU-API - Ident : EY0314 - Label : 2D - Message : TOD01,ASL314,LYBE,LFPG,,1828,LFPG26L Reg. : F-GLZH - Ident : AF0669 - Label : H1 - Message : #DFBR01/A34001,1,1 C1,.F-GLZH,15MAR01,02.29.43,HDAM,LFPG,AFR669XXXX,5000,066 C2,002,06.0,000000,SE1N05,VN1005,AF2055,000,052,052 C3,N24.3,37957,0.799,111,1.03,1111,1010,0,0101,1111,1.03,- C4,N24.3,37956,0.8 Reg. : F-GRHG - Ident : AF6040 - Label : 80 - Message : /RSYGXAF.VER/071/A319/M SCH/AF6040/LFPO/LFML/09MAR/1715 FTX DESOLE NOUS NE COMPREN ONS PAS LE MESSAGE ... */ if (!$found) { // example message : "FST01EGLLLIRFN047599E0033586390 55 25- 4C 74254 487 2059194" //FIX : Reg. : G-DOCF - Ident : BA2599 - Label : 15 - Message : FST01LIPXEGKKN478304E006124636000500057M057C060334309304372OA13431246 // FST01MMMXEGKKN376904W079449733007380380 019061 XA1237 => wind direction and velocity (019/061) //$n = sscanf($message, "FST01%4c%4c%c%06d%c%07d%*11[0-9a-zA-Z ]-%02dC", $dair, $darr, $lac, $la, $lnc, $ln, $temp); $n = sscanf($message, "FST01%4c%4c%c%06d%c%07d%03d%*8[0-9a-zA-Z ]-%02dC", $dair, $darr, $lac, $la, $lnc, $ln, $alt, $temp); if ($n > 5 && ($lac == 'N' || $lac == 'S') && ($lnc == 'E' || $lnc == 'W')) { $latitude = $la / 10000.0; $longitude = $ln / 10000.0; if ($lac == 'S') { $latitude = '-' . $latitude; } if ($lnc == 'W') { $longitude = '-' . $longitude; } // Temp not always available if ($globalDebug) { echo 'latitude : ' . $latitude . ' - longitude : ' . $longitude . ' - airport depart : ' . $dair . ' - airport arrival : ' . $darr . ' - température : ' . $temp . "°C\n"; } if ($temp == '') { $decode = array('Latitude' => $latitude, 'Longitude' => $longitude, 'Departure airport' => $dair, 'Arrival airport' => $darr, 'Altitude' => $alt); } else { $decode = array('Latitude' => $latitude, 'Longitude' => $longitude, 'Departure airport' => $dair, 'Arrival airport' => $darr, 'Altitude' => 'FL' . $alt, 'Temperature' => $temp . '°C'); } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $Schedule->addSchedule($icao, $dair, '', $darr, '', 'ACARS'); $found = true; } } if (!$found && $label == '10') { $n = sscanf($message, "ARR01 %4[A-Z]%4d %4[A-Z]%4d", $dair, $dhour, $darr, $ahour); if ($n == 4 && strlen($darr) == 4) { if ($dhour != '') { $dhour = substr(sprintf('%04d', $dhour), 0, 2) . ':' . substr(sprintf('%04d', $dhour), 2); } if ($ahour != '') { $ahour = substr(sprintf('%04d', $ahour), 0, 2) . ':' . substr(sprintf('%04d', $ahour), 2); } if ($globalDebug) { echo 'departure airport : ' . $dair . ' - arrival airport : ' . $darr . ' - departure hour : ' . $dhour . ' - arrival hour : ' . $ahour . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $Schedule->addSchedule($icao, $dair, $dhour, $darr, $ahour, 'ACARS'); $decode = array('Departure airport' => $dair, 'Departure hour' => $dhour, 'Arrival airport' => $darr, 'Arrival hour' => $ahour); $found = true; } elseif ($n == 2 || $n == 4) { if ($dhour != '') { $dhour = substr(sprintf('%04d', $dhour), 0, 2) . ':' . substr(sprintf('%04d', $dhour), 2); } if ($globalDebug) { echo 'airport arrival : ' . $dair . ' - arrival hour : ' . $dhour . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $decode = array('Arrival airport' => $dair, 'Arrival hour' => $dhour); $found = true; } elseif ($n == 1) { if ($globalDebug) { echo 'airport arrival : ' . $darr . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $decode = array('Arrival airport' => $darr); $found = true; } } if (!$found && ($label == '13' || $label == '12')) { // example message : "Reg. : OO-DWA - Ident : SN01LY - Label : 13 - Message : EBBR,LFLL,26FEB15,1626,164626" /* Reg. : OO-SSP - Ident : SN01LY - Label : 13 - Message : EBBR,LFLL,27FEB15,1624,164400 N 46.493,E 3.980,19810 */ $n = sscanf($message, "%4c,%4c,%*7s,%*d", $dair, $darr); if ($n == 4) { if ($globalDebug) { echo 'airport depart : ' . $dair . ' - airport arrival : ' . $darr . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $Schedule->addSchedule($icao, $dair, '', $darr, '', 'ACARS'); $decode = array('Departure airport' => $dair, 'Arrival airport' => $darr); $found = true; } } if (!$found) { /* example message : VER/071/A320/M SCH/AF6244/LFPO/LFMN/25FEB/0905 FTX/ADDRESS/DEST STA/LFMN */ /* example message : VER/070/A319/M SCH/AF7671/LFML/LFPG/23FEB/1820 WXR/META/LFLL/LFLC/LFPG */ //$n = sscanf($message, "%*[0-9A-Z]/%*3d/%4s/%*c\nSCH/%6[0-9A-Z ]/%4c/%4c/%5s/%4d\n%*3c/%4d/%4c/%[0-9A-Z ]/", $airicao,$aident,$dair, $darr, $ddate, $dhour,$ahour, $aair, $apiste); $n = sscanf(str_replace(array("\r\n", "\n", "\r"), '', $message), "%*[0-9A-Z]/%*3d/%4s/%*cSCH/%6[0-9A-Z ]/%4c/%4c/%5s/%4d%*3c/%4d/%4c/%[0-9A-Z ]/", $airicao, $aident, $dair, $darr, $ddate, $dhour, $ahour, $aair, $apiste); if ($n > 8) { if ($globalDebug) { echo 'airicao : ' . $airicao . ' - ident : ' . $aident . ' - departure airport : ' . $dair . ' - arrival airport : ' . $darr . ' - date depart : ' . $ddate . ' - departure hour : ' . $dhour . ' - arrival hour : ' . $ahour . ' - arrival airport : ' . $aair . ' - arrival piste : ' . $apiste . "\n"; } if ($dhour != '') { $dhour = substr(sprintf('%04d', $dhour), 0, 2) . ':' . substr(sprintf('%04d', $dhour), 2); } if ($ahour != '') { $ahour = substr(sprintf('%04d', $ahour), 0, 2) . ':' . substr(sprintf('%04d', $ahour), 2); } $icao = trim($aident); //$decode = 'Departure airport : '.$dair.' ('.$ddate.' at '.$dhour.') - Arrival Airport : '.$aair.' (at '.$ahour.') way '.$apiste; if ($ahour == '') { $decode = array('Departure airport' => $dair, 'Departure date' => $ddate, 'Departure hour' => $dhour, 'Arrival airport' => $darr); } else { $decode = array('Departure airport' => $dair, 'Departure date' => $ddate, 'Departure hour' => $dhour, 'Arrival airport' => $darr, 'Arrival hour' => $ahour, 'Arrival way' => $apiste); } $Schedule->addSchedule($icao, $dair, $dhour, $darr, $ahour, 'ACARS'); $found = true; } } if (!$found) { // example message : "221111,34985,0817, 65,N 50.056 E 13.850" //Reg. : CS-TFY - Ident : CR0321 - Label : 16 - Message : 140600,34008,1440, 66,N 46.768 E 4.793 $n = sscanf($message, "%*6c,%*5c,%*4c,%*4c,%c%3d.%3d %c%3d.%3d,", $lac, $las, $lass, $lnc, $lns, $lnss); if ($n == 10 && ($lac == 'N' || $lac == 'S') && ($lnc == 'E' || $lnc == 'W')) { $las = $las . '.' . $lass; $lns = $lns . '.' . $lns; $latitude = $las / 1000.0; $longitude = $lns / 1000.0; if ($lac == 'S') { $latitude = '-' . $latitude; } if ($lnc == 'W') { $longitude = '-' . $longitude; } if ($globalDebug) { echo 'latitude : ' . $latitude . ' - longitude : ' . $longitude . "\n"; } $decode = array('Latitude' => $latitude, 'Longitude' => $longitude); $found = true; } } if (!$found && $label == '5U') { /* example message : Reg. : CN-RNR - Ident : AT816C - Label : 5U - Message : 01 WXRQ 816C/27 GMMN/EDDT .CN-RNR /TYP 1/STA EDDT/STA LSZH/STA EDDS Reg. : G-OOBD - Ident : DP079T - Label : 5U - Message : 01 WXRQ 079T/28 LIPX/EGKK .G-OOBD /TYP 1/STA EGKK/STA EGLL/STA EGHH */ $n = sscanf($message, "%*[0-9A-Z ]/%*s %4c/%4c .", $dair, $darr); if ($n == 4) { if ($globalDebug) { echo 'airport depart : ' . $dair . ' - airport arrival : ' . $darr . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $Schedule->addSchedule($icao, $dair, '', $darr, '', 'ACARS'); $decode = array('Departure airport' => $dair, 'Arrival airport' => $darr); $found = true; } } if (!$found && $label == '1L') { // example message : "Reg. : TS-ION - Ident : TU0634 - Label : 1L - Message : 000442152001337,DTTJ,LFPO,1609" $n = sscanf($message, "%*[0-9],%4c,%4c,", $dair, $darr); if ($n == 4) { if ($globalDebug) { echo 'airport depart : ' . $dair . ' - airport arrival : ' . $darr . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $Schedule->addSchedule($icao, $dair, '', $darr, '', 'ACARS'); $decode = array('Departure airport' => $dair, 'Arrival airport' => $darr); $found = true; } } if (!$found && $label == '5U') { // example message : "Reg. : OO-TAH - Ident : 3V042J - Label : 5U - Message : 002AF EBLG EBBR N4621.5E 524.2195" $n = sscanf($message, "002AF %4c %4c ", $dair, $darr); if ($n == 2) { if ($globalDebug) { echo 'airport depart : ' . $dair . ' - airport arrival : ' . $darr . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $decode = array('Departure airport' => $dair, 'Arrival airport' => $darr); $Schedule->addSchedule($icao, $dair, '', $darr, '', 'ACARS'); $found = true; } } if (!$found && $label == 'H1') { // example message : 'Reg. : F-GHQJ - Ident : AF6241 - Label : H1 - Message : #DFBA01/CCF-GHQJ,FEB27,205556,LFMN,LFPO,0241/C106,17404,5000,42,0010,0,0100,42,X/CEN270,36012,257,778,6106,299,B5B7G8/EC731134,42387,01439,41194,12/EE731212,44932,11870,43555,12/N10875,0875,0910,6330,1205,-----' $n = sscanf($message, "#DFBA%*02d/%*[A-Z-],%*[0-9A-Z],%*d,%4c,%4c", $dair, $darr); if ($n == 6) { if ($globalDebug) { echo 'airport depart : ' . $dair . ' - airport arrival : ' . $darr . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $Schedule->addSchedule($icao, $dair, '', $darr, '', 'ACARS'); $decode = array('Departure airport' => $dair, 'Arrival airport' => $darr); $found = true; } } if (!$found && $label == 'H1') { // example message : 'Reg. : F-GUGP - Ident : AF1842 - Label : H1 - Message : #DFBA01/A31801,1,1/CCF-GUGP,MAR11,093856,LFPG,LSGG,1842/C106,55832,5000,37,0010,0,0100,37,X/CEN282,31018,277,750,5515,255,C11036/EC577870,02282,07070,01987,73,14/EE577871,02282,06947,01987,73/N10790,0790,0903,5' $n = sscanf($message, "#DFBA%*02d/%*[0-9A-Z,]/%*[A-Z-],%*[0-9A-Z],%*d,%4c,%4c", $dair, $darr); if ($n == 7) { if ($globalDebug) { echo 'airport depart : ' . $dair . ' - airport arrival : ' . $darr . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $Schedule->addSchedule($icao, $dair, '', $darr, '', 'ACARS'); $decode = array('Departure airport' => $dair, 'Arrival airport' => $darr); $found = true; } } if (!$found) { /* example message : Reg. : PH-BXO - Ident : KL079K - Label : H1 - Message : #DFB(POS-KLM79K -4319N00252E/143435 F390 RMK/FUEL 2.6 M0.79) */ //$n = sscanf($message, "#DFB(POS-%s -%4d%c%5d%c/%*d F%d\nRMK/FUEL %f M%f", $aident, $las, $lac, $lns, $lnc, $alt, $fuel, $speed); $n = sscanf(str_replace(array("\r\n", "\n", "\r"), '', $message), "#DFB(POS-%s -%4d%c%5d%c/%*d F%dRMK/FUEL %f M%f", $aident, $las, $lac, $lns, $lnc, $alt, $fuel, $speed); if ($n == 9) { //if (self->$debug) echo 'airport depart : '.$dair.' - airport arrival : '.$darr."\n"; $icao = trim($aident); $latitude = $las / 100.0; $longitude = $lns / 100.0; if ($lac == 'S') { $latitude = '-' . $latitude; } if ($lnc == 'W') { $longitude = '-' . $longitude; } $decode = array('Latitude' => $latitude, 'Longitude' => $longitude, 'Altitude' => 'FL' . $alt, 'Fuel' => $fuel, 'speed' => $speed); $found = true; } } if (!$found) { /* example message : Reg. : F-HBSA - Ident : XK505F - Label : 16 - Message : LAT N 46.184/LON E 5.019 */ $n = sscanf($message, "LAT %c %f/LON %c %f", $lac, $las, $lnc, $lns); if ($n == 4) { $latitude = $las; $longitude = $lns; if ($lac == 'S') { $latitude = '-' . $latitude; } if ($lnc == 'W') { $longitude = '-' . $longitude; } $decode = array('Latitude' => $latitude, 'Longitude' => $longitude); $found = true; } } if (!$found && $label == '80') { /* example message : Reg. : EI-DSB - Ident : AZ0207 - Label : 80 - Message : 3X01 NLINFO 0207/28 EGLL/LIRF .EI-DSB /AZ/1783/28/FCO/N */ $n = sscanf($message, "%*[0-9A-Z] NLINFO %*d/%*d %4c/%4c .", $dair, $darr); if ($n == 5) { if ($globalDebug) { echo 'airport depart : ' . $dair . ' - airport arrival : ' . $darr . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $Schedule->addSchedule($icao, $dair, '', $darr, '', 'ACARS'); $decode = array('Departure airport' => $dair, 'Arrival airport' => $darr); $found = true; } } if (!$found) { /* example message : Reg. : D-ABNK - Ident : AB930V - Label : 3O - Message : HB50,, 930V,12MAR15,EDDH,LEPA,.D-ABNK, LEPA, AB7757, DABNK,10100, 7100,02:46, 200, 44068,52.4, 77000, 62500, 66000,3, 4, */ // $n = sscanf($message, "%*[0-9A-Z],,\n%*[0-9A-Z],%*[0-9A-Z],%4s,%4s,.%*6s,\n%*4[A-Z],\n%[0-9A-Z],", $dair, $darr, $aident); $n = sscanf(str_replace(array("\r\n", "\n", "\r"), '', $message), "%*[0-9A-Z],,%*[0-9A-Z],%*[0-9A-Z],%4s,%4s,.%*6s,%*4[A-Z],%[0-9A-Z],", $dair, $darr, $aident); if ($n == 8) { if ($globalDebug) { echo 'airport depart : ' . $dair . ' - airport arrival : ' . $darr . "\n"; } $icao = trim($aident); $Schedule->addSchedule($icao, $dair, '', $darr, '', 'ACARS'); $decode = array('Departure airport' => $dair, 'Arrival airport' => $darr); $found = true; } } if (!$found) { /* example message : Reg. : N702DN - Ident : DL0008 - Label : 80 - Message : 3401/11 KATL/OMDB .N702DN ACK RDA */ $n = sscanf($message, "%*d/%*d %4s/%4s .%*6s", $dair, $darr); if ($n == 5) { if ($globalDebug) { echo 'airport depart : ' . $dair . ' - airport arrival : ' . $darr . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $Schedule->addSchedule($icao, $dair, '', $darr, '', 'ACARS'); $decode = array('Departure airport' => $dair, 'Arrival airport' => $darr); $found = true; } } if (!$found) { /* example message : LFLLLFRS1315U2687X */ $n = sscanf($message, '%4[A-Z]%4[A-Z]%*4d', $dair, $darr); if ($n == 3) { if ($globalDebug) { echo 'airport depart : ' . $dair . ' - airport arrival : ' . $darr . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $Schedule->addSchedule($icao, $dair, '', $darr, '', 'ACARS'); $decode = array('Departure airport' => $dair, 'Arrival airport' => $darr); $found = true; } } if (!$found) { /* example message : 3J01 DSPTCH 7503/01 LFTH/LFPO .F-HMLF */ $n = sscanf($message, '3J01 DSPTCH %*d/%*d %4s/%4s .%*6s', $dair, $darr); if ($n == 3) { if ($globalDebug) { echo 'airport depart : ' . $dair . ' - airport arrival : ' . $darr . "\n"; } //$icao = ACARS->ident2icao($ident); $icao = $Translation->checkTranslation($ident); $Schedule->addSchedule($icao, $dair, '', $darr, '', 'ACARS'); $decode = array('Departure airport' => $dair, 'Arrival airport' => $darr); $found = true; } } if (!$found) { $n = sscanf($message, 'MET01%4c', $airport); if ($n == 1) { if ($globalDebug) { echo 'airport name : ' . $airport; } $decode = array('Airport/Waypoint name' => $airport); $found = true; } } if ($label == 'H1') { if (preg_match('/^#CFBFLR/', $message) || preg_match('/^#CFBWRN/', $message)) { $decode = array_merge(array('Message nature' => 'Equipment failure'), $decode); } elseif (preg_match('/^#DFB\\*TKO/', $message) || preg_match('/^#DFBTKO/', $message)) { $decode = array_merge(array('Message nature' => 'Take off performance data'), $decode); } elseif (preg_match('/^#DFB\\*CRZ/', $message) || preg_match('/^#DFBCRZ/', $message)) { $decode = array_merge(array('Message nature' => 'Cruise performance data'), $decode); } elseif (preg_match('/^#DFB\\*WOB/', $message) || preg_match('/^#DFBWOB/', $message)) { $decode = array_merge(array('Message nature' => 'Weather observation'), $decode); } elseif (preg_match(':^#DFB/PIREP:', $message)) { $decode = array_merge(array('Message nature' => 'Pilot Report'), $decode); } elseif (preg_match('/^#DFBEDA/', $message) || preg_match('/^#DFBENG/', $message)) { $decode = array_merge(array('Message nature' => 'Engine Data'), $decode); } elseif (preg_match(':^#M1AAEP:', $message)) { $decode = array_merge(array('Message nature' => 'Position/Weather Report'), $decode); } elseif (preg_match(':^#M2APWD:', $message)) { $decode = array_merge(array('Message nature' => 'Flight plan predicted wind data'), $decode); } elseif (preg_match(':^#M1BREQPWI:', $message)) { $decode = array_merge(array('Message nature' => 'Predicted wind info request'), $decode); } elseif (preg_match(':^#CF:', $message)) { $decode = array_merge(array('Message nature' => 'Central Fault Display'), $decode); } elseif (preg_match(':^#DF:', $message)) { $decode = array_merge(array('Message nature' => 'Digital Flight Data Acquisition Unit'), $decode); } elseif (preg_match(':^#EC:', $message)) { $decode = array_merge(array('Message nature' => 'Engine Display System'), $decode); } elseif (preg_match(':^#EI:', $message)) { $decode = array_merge(array('Message nature' => 'Engine Report'), $decode); } elseif (preg_match(':^#H1:', $message)) { $decode = array_merge(array('Message nature' => 'HF Data Radio - Left'), $decode); } elseif (preg_match(':^#H2:', $message)) { $decode = array_merge(array('Message nature' => 'HF Data Radio - Right'), $decode); } elseif (preg_match(':^#HD:', $message)) { $decode = array_merge(array('Message nature' => 'HF Data Radio - Selected'), $decode); } elseif (preg_match(':^#M1:', $message)) { $decode = array_merge(array('Message nature' => 'Flight Management Computer - Left'), $decode); } elseif (preg_match(':^#M2:', $message)) { $decode = array_merge(array('Message nature' => 'Flight Management Computer - Right'), $decode); } elseif (preg_match(':^#M3:', $message)) { $decode = array_merge(array('Message nature' => 'Flight Management Computer - Center'), $decode); } elseif (preg_match(':^#MD:', $message)) { $decode = array_merge(array('Message nature' => 'Flight Management Computer - Selected'), $decode); } elseif (preg_match(':^#PS:', $message)) { $decode = array_merge(array('Message nature' => 'Keyboard/Display Unit'), $decode); } elseif (preg_match(':^#S1:', $message)) { $decode = array_merge(array('Message nature' => 'SDU - Left'), $decode); } elseif (preg_match(':^#S2:', $message)) { $decode = array_merge(array('Message nature' => 'SDU - Right'), $decode); } elseif (preg_match(':^#SD:', $message)) { $decode = array_merge(array('Message nature' => 'SDU - Selected'), $decode); } elseif (preg_match(':^#T[0-8]:', $message)) { $decode = array_merge(array('Message nature' => 'Cabin Terminal Messages'), $decode); } elseif (preg_match(':^#WO:', $message)) { $decode = array_merge(array('Message nature' => 'Weather Observation Report'), $decode); } elseif (preg_match(':^#A1:', $message)) { $decode = array_merge(array('Message nature' => 'Oceanic Clearance'), $decode); } elseif (preg_match(':^#A3:', $message)) { $decode = array_merge(array('Message nature' => 'Departure Clearance Response'), $decode); } elseif (preg_match(':^#A4:', $message)) { $decode = array_merge(array('Message nature' => 'Flight Systems Message'), $decode); } elseif (preg_match(':^#A6:', $message)) { $decode = array_merge(array('Message nature' => 'Request ADS Reports'), $decode); } elseif (preg_match(':^#A8:', $message)) { $decode = array_merge(array('Message nature' => 'Deliver Departure Slot'), $decode); } elseif (preg_match(':^#A9:', $message)) { $decode = array_merge(array('Message nature' => 'ATIS report'), $decode); } elseif (preg_match(':^#A0:', $message)) { $decode = array_merge(array('Message nature' => 'ATIS Facility Notification (AFN)'), $decode); } elseif (preg_match(':^#AA:', $message)) { $decode = array_merge(array('Message nature' => 'ATCComm'), $decode); } elseif (preg_match(':^#AB:', $message)) { $decode = array_merge(array('Message nature' => 'TWIP Report'), $decode); } elseif (preg_match(':^#AC:', $message)) { $decode = array_merge(array('Message nature' => 'Pushback Clearance'), $decode); } elseif (preg_match(':^#AD:', $message)) { $decode = array_merge(array('Message nature' => 'Expected Taxi Clearance'), $decode); } elseif (preg_match(':^#AF:', $message)) { $decode = array_merge(array('Message nature' => 'CPC Command/Response'), $decode); } elseif (preg_match(':^#B1:', $message)) { $decode = array_merge(array('Message nature' => 'Request Oceanic Clearance'), $decode); } elseif (preg_match(':^#B2:', $message)) { $decode = array_merge(array('Message nature' => 'Oceanic Clearance Readback'), $decode); } elseif (preg_match(':^#B3:', $message)) { $decode = array_merge(array('Message nature' => 'Request Departure Clearance'), $decode); } elseif (preg_match(':^#B4:', $message)) { $decode = array_merge(array('Message nature' => 'Departure Clearance Readback'), $decode); } elseif (preg_match(':^#B6:', $message)) { $decode = array_merge(array('Message nature' => 'Provide ADS Report'), $decode); } elseif (preg_match(':^#B8:', $message)) { $decode = array_merge(array('Message nature' => 'Request Departure Slot'), $decode); } elseif (preg_match(':^#B9:', $message)) { $decode = array_merge(array('Message nature' => 'Request ATIS Report'), $decode); } elseif (preg_match(':^#B0:', $message)) { $decode = array_merge(array('Message nature' => 'ATS Facility Notification'), $decode); } elseif (preg_match(':^#BA:', $message)) { $decode = array_merge(array('Message nature' => 'ATCComm'), $decode); } elseif (preg_match(':^#BB:', $message)) { $decode = array_merge(array('Message nature' => 'Request TWIP Report'), $decode); } elseif (preg_match(':^#BC:', $message)) { $decode = array_merge(array('Message nature' => 'Pushback Clearance Request'), $decode); } elseif (preg_match(':^#BD:', $message)) { $decode = array_merge(array('Message nature' => 'Expected Taxi Clearance Request'), $decode); } elseif (preg_match(':^#BE:', $message)) { $decode = array_merge(array('Message nature' => 'CPC Aircraft Log-On/Off Request'), $decode); } elseif (preg_match(':^#BF:', $message)) { $decode = array_merge(array('Message nature' => 'CPC WILCO/UNABLE Response'), $decode); } elseif (preg_match(':^#H3:', $message)) { $decode = array_merge(array('Message nature' => 'Icing Report'), $decode); } } if ($label == '10') { if (preg_match(':^DTO01:', $message)) { $decode = array_merge(array('Message nature' => 'Delayed Takeoff Report'), $decode); } elseif (preg_match(':^AIS01:', $message)) { $decode = array_merge(array('Message nature' => 'AIS Request'), $decode); } elseif (preg_match(':^FTX01:', $message)) { $decode = array_merge(array('Message nature' => 'Free Text Downlink'), $decode); } elseif (preg_match(':^FPL01:', $message)) { $decode = array_merge(array('Message nature' => 'Flight Plan Request'), $decode); } elseif (preg_match(':^WAB01:', $message)) { $decode = array_merge(array('Message nature' => 'Weight & Balance Request'), $decode); } elseif (preg_match(':^MET01:', $message)) { $decode = array_merge(array('Message nature' => 'Weather Data Request'), $decode); } elseif (preg_match(':^WAB02:', $message)) { $decode = array_merge(array('Message nature' => 'Weight and Balance Acknowledgement'), $decode); } } if ($label == '15') { if (preg_match(':^FST01:', $message)) { $decode = array_merge(array('Message nature' => 'Flight Status Report'), $decode); } } if (!$found && $label == 'SA') { $n = sscanf($message, "%d%c%c%6[0-9]", $version, $state, $type, $at); if ($n == 4) { $vsta = array('Version' => $version); if ($state == 'E') { $vsta = array_merge($vsta, array('Link state' => 'Established')); } elseif ($state == 'L') { $vsta = array_merge($vsta, array('Link state' => 'Lost')); } else { $vsta = array_merge($vsta, array('Link state' => 'Unknown')); } if ($type == 'V') { $vsta = array_merge($vsta, array('Link type' => 'VHF ACARS')); } elseif ($type == 'S') { $vsta = array_merge($vsta, array('Link type' => 'Generic SATCOM')); } elseif ($type == 'H') { $vsta = array_merge($vsta, array('Link type' => 'HF')); } elseif ($type == 'G') { $vsta = array_merge($vsta, array('Link type' => 'GlobalStar SATCOM')); } elseif ($type == 'C') { $vsta = array_merge($vsta, array('Link type' => 'ICO SATCOM')); } elseif ($type == '2') { $vsta = array_merge($vsta, array('Link type' => 'VDL Mode 2')); } elseif ($type == 'X') { $vsta = array_merge($vsta, array('Link type' => 'Inmarsat Aero')); } elseif ($type == 'I') { $vsta = array_merge($vsta, array('Link type' => 'Irridium SATCOM')); } else { $vsta = array_merge($vsta, array('Link type' => 'Unknown')); } $vsta = array_merge($vsta, array('Event occured at' => implode(':', str_split($at, 2)))); $decode = array_merge($vsta, $decode); } } $title = $this->getTitlefromLabel($label); if ($title != '') { $decode = array_merge(array('Message title' => $title), $decode); } // Business jets always use GS0001 if ($ident != 'GS0001') { $info = $this->addModeSData($ident, $registration, $icao, $airicao); } if ($globalDebug && isset($info) && $info != '') { echo $info; } $image_array = $Image->getSpotterImage($registration); if (!isset($image_array[0]['registration'])) { $Image->addSpotterImage($registration); } } if (count($decode) > 0) { $decode_json = json_encode($decode); } else { $decode_json = ''; } $result = $this->addLiveAcarsData($ident, $registration, $label, $block_id, $msg_no, $message, $decode_json); //if ((is_numeric($label) && (($label > 9 && $label < 50) || ($label > 79 && $label < 90))) || $label == '3F') ACARS->addArchiveAcarsData($ident,$registration,$label,$block_id,$msg_no,$message,$decode_json); if ($result && ($label == '10' || $label == '80' || $label == '81' || $label == '82' || $label == '3F')) { $this->addArchiveAcarsData($ident, $registration, $label, $block_id, $msg_no, $message, $decode_json); } if ($globalDebug && count($decode) > 0) { echo "Human readable data : " . implode(' - ', $decode) . "\n"; } }