packages feed

gnss-converters 0.1.16 → 0.1.17

raw patch · 2 files changed

+34/−27 lines, 2 files

Files

gnss-converters.cabal view
@@ -1,5 +1,5 @@ name:                  gnss-converters-version:               0.1.16+version:               0.1.17 synopsis:              GNSS Converters. description:           Haskell bindings for GNSS converters. homepage:              http://github.com/swift-nav/gnss-converters
src/Data/RTCM3/SBP.hs view
@@ -215,16 +215,16 @@ -- See DF011 and DF012 of the RTCM3 spec invalid_L1 :: GpsL1Observation -> Bool invalid_L1 l1 =-  l1 ^. gpsL1Observation_pseudorange == 0x80000      ||-  l1 ^. gpsL1Observation_carrierMinusCode == 0x80000+  l1 ^. gpsL1Observation_pseudorange == 524288 ||+  l1 ^. gpsL1Observation_carrierMinusCode == -524288  -- | 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+  l2 ^. gpsL2Observation_pseudorangeDifference == -8192 ||+  l2 ^. gpsL2Observation_carrierMinusCode == -524288  -- | Construct metric pseudorange (meters!) from L1 RTCM observation. --@@ -432,16 +432,19 @@ -- | Construct an L1 SBP PackedObsContent from an RTCM Msg 1002. -- fromObservation1002 :: MonadStore e m => Word16 -> Observation1002 -> m [PackedObsContent]-fromObservation1002 station obs =-  -- Only lower set of PRN numbers (1-32) are supported-  if sat > maxSats || invalid_L1 l1 then return mempty else do-    obs1 <- fromL1SatelliteObservation station sat l1 l1e-    return [obs1]-    where-      sat = obs ^. observation1002_sat-      l1  = obs ^. observation1002_l1-      l1e = obs ^. observation1002_l1e+fromObservation1002 station obs = do+  obs1 <- fromL1SatelliteObservation station sat l1 l1e+  return $+    -- Only lower set of PRN numbers (1-32) are supported+    if sat > maxSats then mempty else+      if invalid_L1 l1 then mempty else+        [obs1]+  where+    sat = obs ^. observation1002_sat+    l1  = obs ^. observation1002_l1+    l1e = obs ^. observation1002_l1e + -- | Convert an RTCM L1 1002 observation into an SBP MsgObs. -- -- This chunking takes places because the number of observations in a given 1002@@ -458,19 +461,23 @@ -- | Construct an L1/L2 SBP PackedObsContent from an RTCM Msg 1004. -- fromObservation1004 :: MonadStore e m => Word16 -> Observation1004 -> m [PackedObsContent]-fromObservation1004 station obs =-  -- Only lower set of PRN numbers (1-32) are supported-  if sat > maxSats || invalid_L2 l2 then return mempty else do-    obs2 <- fromL2SatelliteObservation station sat l1 l1e l2 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+fromObservation1004 station obs = do+  obs1 <- fromL1SatelliteObservation station sat l1 l1e+  obs2 <- fromL2SatelliteObservation station sat l1 l1e l2 l2e+  return $+    -- Only lower set of PRN numbers (1-32) are supported+    if sat > maxSats then mempty else+      if invalid_L1 l1 && invalid_L2 l2 then mempty else+        if invalid_L1 l1 then maybeToList obs2 else+          if invalid_L2 l2 then [obs1] else+            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. --