diff options
Diffstat (limited to 'ADSBDecoderFramework/PositionDecoder.swift')
| -rw-r--r-- | ADSBDecoderFramework/PositionDecoder.swift | 52 |
1 files changed, 34 insertions, 18 deletions
diff --git a/ADSBDecoderFramework/PositionDecoder.swift b/ADSBDecoderFramework/PositionDecoder.swift index 85b9d49..a8d03de 100644 --- a/ADSBDecoderFramework/PositionDecoder.swift +++ b/ADSBDecoderFramework/PositionDecoder.swift @@ -112,7 +112,7 @@ func mstime() -> Int64 { return mst; } -class PositionDecoder { +public class PositionDecoder { var long: Double = 0.0 var lat: Double = 0.0 @@ -120,18 +120,22 @@ class PositionDecoder { var newposition: Bool = false //initialise first values so this values is nonsence - var queue: Deque<PositionData> = [] + //var queue: Deque<PositionData> = [] + var position_even: PositionData? = nil + var position_odd: PositionData? = nil init() { } func addEvenPosition(_ cpr_lat: UInt32,_ cpr_long: UInt32, _ cprtime: Int64) { - queue.append(PositionData(cpr_lat:cpr_lat, cpr_long:cpr_long, even:true, cprtime: cprtime)) + //queue.append(PositionData(cpr_lat:cpr_lat, cpr_long:cpr_long, even:true, cprtime: cprtime)) + self.position_even = PositionData(cpr_lat:cpr_lat, cpr_long:cpr_long, even:true, cprtime: cprtime) } func addOddPosition(_ cpr_lat: UInt32,_ cpr_long: UInt32, _ cprtime: Int64) { - queue.append(PositionData(cpr_lat:cpr_lat,cpr_long:cpr_long,even:false, cprtime: cprtime)) + //queue.append(PositionData(cpr_lat:cpr_lat,cpr_long:cpr_long,even:false, cprtime: cprtime)) + self.position_odd = PositionData(cpr_lat:cpr_lat,cpr_long:cpr_long,even:false, cprtime: cprtime) } func getPosition() -> (Double, Double)? { @@ -143,24 +147,36 @@ class PositionDecoder { //TODO: allways adds to queue newer frees the queue func calcPosition() -> Bool { - if (queue.count > 2) { - let el1 = queue[queue.count-1] - let el2 = queue[queue.count-2] - if (el1.even == el2.even) { - //ready = false - return false - } - } else { - ready = false - print("Position queue to short to calculate values") + //if (queue.count > 2) { + //let el1 = queue[queue.count-1] + //let el2 = queue[queue.count-2] + //if (el1.even == el2.even) { + // //ready = false + // return false + //} + //} else { + // ready = false + // print("Position queue to short to calculate values") + // return false + //} + if position_odd == nil { + return false + } + if position_even == nil { return false } //last to elements are evan and odd - let el1 = queue[queue.count-1] - let el2 = queue[queue.count-2] - let cpr_even = el1.even ? el1 : el2 - let cpr_odd = (!el1.even) ? el1 : el2 + //let el1 = queue[queue.count-1] + //let el2 = queue[queue.count-2] + guard let cpr_even = self.position_even else { + print("Cant unwrap even position") + return false + } + guard let cpr_odd = self.position_odd else { + print("Cant unwrap odd position") + return false + } //print("Position queue is ready to calculate location \(cpr_even) \(cpr_odd)") // from here https://github.com/antirez/dump1090/blob/master/dump1090.c#L1718 |
