gnss-converters 0.1.16 → 0.1.17
raw patch · 2 files changed
+34/−27 lines, 2 files
Files
- gnss-converters.cabal +1/−1
- src/Data/RTCM3/SBP.hs +33/−26
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. --