nmea: convert empty fields to nil

This commit is contained in:
Daniel 2025-05-17 23:20:55 +00:00
parent 4835b24e03
commit a687c946d2

View File

@ -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 (local
msg-types msg-types
@ -58,24 +61,31 @@
:GNS :GNS
(fn [fields] (fn [fields]
(let [[utc lat latsign lon lonsign mode total-space-vehicles (let [[utc lat latsign lon lonsign mode total-space-vehicles
hdop altitude geoidal-separation _ _ nav-status] fields] hdop altitude geoidal-separation _ _ nav-status] fields
{ :lat (* (/ (tonumber lat) 100) (. latlon-signs latsign)) latf (if (= lat "")
:lon (* (/ (tonumber lon) 100) (. latlon-signs lonsign)) 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 : mode
:total-space-vehicles (tonumber total-space-vehicles) :total-space-vehicles (try-number total-space-vehicles)
:hdop (tonumber hdop) :hdop (try-number hdop)
:altitude (tonumber altitude) :altitude (try-number altitude)
:geoidal-separation (tonumber geoidal-separation) :geoidal-separation (try-number geoidal-separation)
: nav-status : nav-status
} }
)) ))
:VTG :VTG
(fn [[bearing-true _ bearing-mag _ knots _ kmh _ mode]] (fn [[bearing-true _ bearing-mag _ knots _ kmh _ mode]]
{ {
:bearing-true (tonumber bearing-true) :bearing-true (try-number bearing-true)
:bearing-magnetic (tonumber bearing-mag) :bearing-magnetic (try-number bearing-mag)
:speed-knots (tonumber knots) :speed-knots (try-number knots)
:speed-kmh (tonumber kmh) :speed-kmh (try-number kmh)
: mode : mode
} }
) )