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
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
}
)