packages feed

gnss-converters 0.1.14 → 0.1.15

raw patch · 2 files changed

+28/−11 lines, 2 files

Files

gnss-converters.cabal view
@@ -1,5 +1,5 @@ name:                  gnss-converters-version:               0.1.14+version:               0.1.15 synopsis:              GNSS Converters. description:           Haskell bindings for GNSS converters. homepage:              http://github.com/swift-nav/gnss-converters
src/Data/RTCM3/SBP.hs view
@@ -196,6 +196,22 @@ toWn :: Word16 -> Word16 toWn mjd = (mjd - mjdEpoch) `div` 7 +-- | Determine whether an L1 RTCM observation is invalid.+--+-- See DF011 and DF012 of the RTCM3 spec+invalid_L1 :: GpsL1Observation -> Bool+invalid_L1 l1 =+  l1 ^. gpsL1Observation_pseudorange == 0x80000      ||+  l1 ^. gpsL1Observation_carrierMinusCode == 0x80000++-- | Determine whether an L1 + L2 RTCM observation is invalid.+--+-- See DF011, DF012, and DF018 of the RTCM3 spec+invalid_L2 :: GpsL2Observation -> Bool+invalid_L2 l2 =+  l2 ^. gpsL2Observation_pseudorangeDifference == 0x2000 ||+  l2 ^. gpsL2Observation_carrierMinusCode == 0x80000+ -- | Construct metric pseudorange (meters!) from L1 RTCM observation. -- -- See DF011, pg. 3-16 of the RTCM3 spec@@ -404,7 +420,7 @@ fromObservation1002 :: MonadStore e m => Word16 -> Observation1002 -> m [PackedObsContent] fromObservation1002 station obs =   -- Only lower set of PRN numbers (1-32) are supported-  if sat > maxSats then return mempty else do+  if sat > maxSats || invalid_L1 l1 then return mempty else do     obs1 <- fromL1SatelliteObservation station sat l1 l1e     return [obs1]     where@@ -430,16 +446,17 @@ fromObservation1004 :: MonadStore e m => Word16 -> Observation1004 -> m [PackedObsContent] fromObservation1004 station obs =   -- Only lower set of PRN numbers (1-32) are supported-  if sat > maxSats then return mempty else do-    obs1 <- fromL1SatelliteObservation station sat l1 l1e+  if sat > maxSats || invalid_L2 l2 then return mempty else do     obs2 <- fromL2SatelliteObservation station sat l1 l1e l2 l2e-    return $ maybe [obs1] (: [obs1]) obs2-    where-      sat = obs ^. observation1004_sat-      l1  = obs ^. observation1004_l1-      l1e = obs ^. observation1004_l1e-      l2  = obs ^. observation1004_l2-      l2e = obs ^. observation1004_l2e+    if invalid_L1 l1 then return $ maybeToList obs2 else do+      obs1 <- fromL1SatelliteObservation station sat l1 l1e+      return $ obs1 : maybeToList obs2+      where+        sat = obs ^. observation1004_sat+        l1  = obs ^. observation1004_l1+        l1e = obs ^. observation1004_l1e+        l2  = obs ^. observation1004_l2+        l2e = obs ^. observation1004_l2e  -- | Convert an RTCM L1+L2 1004 observation into multiple SBP MsgObs. --