From a687c946d28732eb4ba958bcc52c0119cf5e1e88 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 17 May 2025 23:20:55 +0000 Subject: [PATCH] nmea: convert empty fields to nil --- pkgs/maps/nmea.fnl | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/pkgs/maps/nmea.fnl b/pkgs/maps/nmea.fnl index 315e1ec..66ce6b0 100644 --- a/pkgs/maps/nmea.fnl +++ b/pkgs/maps/nmea.fnl @@ -50,7 +50,10 @@ } ) -(local latlon-signs { :N 1 :S -1 :W -1 :E 1 } ) +(fn try-number [s] + (if (= s "") + nil + (tonumber s))) (local msg-types @@ -58,24 +61,31 @@ :GNS (fn [fields] (let [[utc lat latsign lon lonsign mode total-space-vehicles - hdop altitude geoidal-separation _ _ nav-status] fields] - { :lat (* (/ (tonumber lat) 100) (. latlon-signs latsign)) - :lon (* (/ (tonumber lon) 100) (. latlon-signs lonsign)) + hdop altitude geoidal-separation _ _ nav-status] 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 : mode - :total-space-vehicles (tonumber total-space-vehicles) - :hdop (tonumber hdop) - :altitude (tonumber altitude) - :geoidal-separation (tonumber geoidal-separation) + :total-space-vehicles (try-number total-space-vehicles) + :hdop (try-number hdop) + :altitude (try-number altitude) + :geoidal-separation (try-number geoidal-separation) : nav-status } )) + :VTG (fn [[bearing-true _ bearing-mag _ knots _ kmh _ mode]] { - :bearing-true (tonumber bearing-true) - :bearing-magnetic (tonumber bearing-mag) - :speed-knots (tonumber knots) - :speed-kmh (tonumber kmh) + :bearing-true (try-number bearing-true) + :bearing-magnetic (try-number bearing-mag) + :speed-knots (try-number knots) + :speed-kmh (try-number kmh) : mode } )