gnss-converters 0.1.14 → 0.1.15
raw patch · 2 files changed
+28/−11 lines, 2 files
Files
- gnss-converters.cabal +1/−1
- src/Data/RTCM3/SBP.hs +27/−10
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. --