gnss-converters 0.1.4 → 0.1.5
raw patch · 2 files changed
+30/−28 lines, 2 files
Files
- gnss-converters.cabal +1/−1
- src/Data/RTCM3/SBP.hs +29/−27
gnss-converters.cabal view
@@ -1,5 +1,5 @@ name: gnss-converters-version: 0.1.4+version: 0.1.5 synopsis: GNSS Converters. description: Haskell bindings for GNSS converters. homepage: http://github.com/swift-nav/gnss-converters
src/Data/RTCM3/SBP.hs view
@@ -38,12 +38,12 @@ t <- toGPSTime hdr return ObservationHeader { _observationHeader_t = t- , _observationHeader_n_obs = fromIntegral $ hdr ^. gpsObservationHeader_n+ , _observationHeader_n_obs = 0x10 } toP :: GpsL1Observation -> GpsL1ExtObservation -> Word32 toP l1 l1e = round $ p * 100 where- p = 0.02 * fromIntegral (l1 ^. gpsL1Observation_pseudorange) ++ p = (0.02 :: Double) * fromIntegral (l1 ^. gpsL1Observation_pseudorange) + 299792.458 * fromIntegral (l1e ^. gpsL1ExtObservation_ambiguity) toL :: GpsL1Observation -> GpsL1ExtObservation -> CarrierPhase@@ -72,36 +72,38 @@ , _gnssSignal_constellation = 0 } -fromObservation1002 :: Observation1002 -> PackedObsContent-fromObservation1002 obs = PackedObsContent- { _packedObsContent_P = toP l1 l1e- , _packedObsContent_L = toL l1 l1e- , _packedObsContent_cn0 = toCn0 l1e- , _packedObsContent_lock = toLock l1- , _packedObsContent_sid = toSid sat- } where- sat = obs ^. observation1002_sat- l1 = obs ^. observation1002_l1- l1e = obs ^. observation1002_l1e+fromObservation1002 :: Observation1002 -> Maybe PackedObsContent+fromObservation1002 obs =+ if obs ^. observation1002_l1 ^. gpsL1Observation_code then Nothing else Just PackedObsContent+ { _packedObsContent_P = toP l1 l1e+ , _packedObsContent_L = toL l1 l1e+ , _packedObsContent_cn0 = toCn0 l1e+ , _packedObsContent_lock = toLock l1+ , _packedObsContent_sid = toSid sat+ } where+ sat = obs ^. observation1002_sat+ l1 = obs ^. observation1002_l1+ l1e = obs ^. observation1002_l1e -fromObservation1004 :: Observation1004 -> PackedObsContent-fromObservation1004 obs = PackedObsContent- { _packedObsContent_P = toP l1 l1e- , _packedObsContent_L = toL l1 l1e- , _packedObsContent_cn0 = toCn0 l1e- , _packedObsContent_lock = toLock l1- , _packedObsContent_sid = toSid sat- } where- sat = obs ^. observation1004_sat- l1 = obs ^. observation1004_l1- l1e = obs ^. observation1004_l1e+fromObservation1004 :: Observation1004 -> Maybe PackedObsContent+fromObservation1004 obs =+ if obs ^. observation1004_l1 ^. gpsL1Observation_code then Nothing else Just PackedObsContent+ { _packedObsContent_P = toP l1 l1e+ , _packedObsContent_L = toL l1 l1e+ , _packedObsContent_cn0 = toCn0 l1e+ , _packedObsContent_lock = toLock l1+ , _packedObsContent_sid = toSid sat+ } where+ sat = obs ^. observation1004_sat+ l1 = obs ^. observation1004_l1+ l1e = obs ^. observation1004_l1e fromMsg1002 :: MonadIO m => Msg1002 -> m MsgObs fromMsg1002 msg = do header <- fromGpsObservationHeader $ msg ^. msg1002_header return MsgObs { _msgObs_header = header- , _msgObs_obs = map fromObservation1002 $ msg ^. msg1002_observations+ , _msgObs_obs = mapMaybe fromObservation1002 $ msg ^. msg1002_observations } fromMsg1004 :: MonadIO m => Msg1004 -> m MsgObs@@ -109,7 +111,7 @@ header <- fromGpsObservationHeader $ msg ^. msg1004_header return MsgObs { _msgObs_header = header- , _msgObs_obs = map fromObservation1004 $ msg ^. msg1004_observations+ , _msgObs_obs = mapMaybe fromObservation1004 $ msg ^. msg1004_observations } fromMsg1005 :: MonadIO m => Msg1005 -> m MsgBasePosEcef@@ -142,4 +144,4 @@ (RTCM3Msg1006 msg _rtcm3) -> do msg' <- fromMsg1006 msg return $ Just $ SBPMsgBasePosEcef msg' $ toSBP msg' defaultSender- _rtcm3Msg -> return $ Nothing+ _rtcm3Msg -> return Nothing