From 30a23711626c5afe7f86ca34fbc489d7979b71d9 Mon Sep 17 00:00:00 2001 From: Arturs Artamonovs Date: Thu, 8 Aug 2024 12:25:55 +0100 Subject: Live data works --- LearnMapKit/ADSBNetRunner.swift | 111 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 LearnMapKit/ADSBNetRunner.swift (limited to 'LearnMapKit/ADSBNetRunner.swift') diff --git a/LearnMapKit/ADSBNetRunner.swift b/LearnMapKit/ADSBNetRunner.swift new file mode 100644 index 0000000..7125615 --- /dev/null +++ b/LearnMapKit/ADSBNetRunner.swift @@ -0,0 +1,111 @@ +// +// ADSBNetRunner.swift +// LearnMapKit +// +// Created by Jacky Jack on 05/08/2024. +// + +import Foundation + +class ADSBNetRunner { + var address = "" + var port = 0 + var tracker = AirPlaneTracker() + var adsb_tag_stream = ADSBDataQueue() + var ADSBClient:NetADSBDecoder! + var timer: Timer? + + init(address:String, port:Int) { + self.address = address + self.port = port + } + + func start() { + var found: Bool = false + let adsb_net_decoder = NetADSBDecoder(host: self.address, port: self.port) + //var _adsb_tag_stream = ADSBDataQueue() + //var _tracker = AirPlaneTracker() + print("_start ADSBNetRunner") + timer = Timer.scheduledTimer( + withTimeInterval: 1, + repeats: true + ) { _ in + print("Timer drain queue") + print("\(adsb_net_decoder.msgarray.message_array.count)") + if adsb_net_decoder.msgarray.message_array.count > 0 { + print(adsb_net_decoder.msgarray.message_array.count) + for _ in 0..= 9 && d17.TypeCode <= 18) { + if let airbornposition = d17.messageAirbornPositon { + self.tracker.addDF17AirBornPosition( + d17.AddressAnnounced, + airbornposition.Latitude, + airbornposition.Longitude, + airbornposition.Altitude, + airbornposition.CPRFormat == 0 + ) + if let position = self.tracker.getPosition(d17.AddressAnnounced) { + print("position: \(position)") + self.adsb_tag_stream.addAltitude(d17.AddressAnnounced, self.tracker.getAltitude(d17.AddressAnnounced)!) + let location = self.tracker.getPosition(d17.AddressAnnounced)! + self.adsb_tag_stream.addLocation(d17.AddressAnnounced, location.0, location.1) + } + } + } + } + } + }; + } catch { + print("Error") + } + + if (found == false) { + print("Unknown adsb data line [\(msg)]") + } + } + } + } + + } + + DispatchQueue.global(qos: .background).async { + do { + try adsb_net_decoder.start() + } catch let error { + print("Error: \(error.localizedDescription)") + adsb_net_decoder.stop() + } + } + } + + func getDataOut() { + + } + + func stop() { + + } + + func getCount() -> Int { + return self.adsb_tag_stream.getCount() + } +} -- cgit v1.2.3