diff --git a/pkgs/maps/nmea.fnl b/pkgs/maps/nmea.fnl index 66ce6b0..065e912 100644 --- a/pkgs/maps/nmea.fnl +++ b/pkgs/maps/nmea.fnl @@ -58,6 +58,56 @@ (local msg-types { + :GGA + (fn [fields] + (let [[utc lat latsign lon lonsign + fix-quality + total-space-vehicles + hdop + altitude _ + geoidal-separation _ + _ _ ] fields + latf (if (= lat "") + nil + (* (tonumber lat) 0.01 (case latsign :N 1 :S -1))) + lonf (if (= lon "") + nil + (* (tonumber lon) 0.01 (case lonsign :E 1 :W -1)))] + { :lat latf + :lon lonf + : fix-quality + :total-space-vehicles (try-number total-space-vehicles) + :hdop (try-number hdop) + :altitude (try-number altitude) + :geoidal-separation (try-number geoidal-separation) + })) + + :RMC + (fn [[utc valid lat latsign lon lonsign + knots bearing-true date + magn-var magn-var-sign + mode nav-status &as fields]] + (let [latf (if (= lat "") + nil + (* (tonumber lat) 0.01 (case latsign :N 1 :S -1))) + lonf (if (= lon "") + nil + (* (tonumber lon) 0.01 (case lonsign :E 1 :W -1))) + magnetic-variation (if (= magn-var "") + nil + (* (tonumber magn-var) + (case magn-var-sign :E 1 :W -1)))] + { : utc + : valid + :lat latf + :lon lonf + :speed-knots (try-number knots) + :bearing-true (try-number bearing-true) + : date + : magnetic-variation + : mode + })) + :GNS (fn [fields] (let [[utc lat latsign lon lonsign mode total-space-vehicles