summaryrefslogtreecommitdiff
path: root/ADSBDecoderFramework/PositionDecoder.swift
diff options
context:
space:
mode:
Diffstat (limited to 'ADSBDecoderFramework/PositionDecoder.swift')
-rw-r--r--ADSBDecoderFramework/PositionDecoder.swift52
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