gnss-converters 0.3.14 → 0.3.15
raw patch · 3 files changed
+9/−45 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.RTCM3.Replay: replay :: MonadIO m => Conduit RTCM3Msg m RTCM3Msg
- Data.RTCM3.Replay: replay' :: MonadIO m => Conduit RTCM3Msg m RTCM3Msg
+ Data.RTCM3.Replay: replayer :: MonadIO m => Conduit RTCM3Msg m RTCM3Msg
Files
- gnss-converters.cabal +1/−1
- main/RTCM32RTCM3.hs +1/−1
- src/Data/RTCM3/Replay.hs +7/−43
gnss-converters.cabal view
@@ -1,5 +1,5 @@ name: gnss-converters-version: 0.3.14+version: 0.3.15 synopsis: GNSS Converters. description: Haskell bindings for GNSS converters. homepage: http://github.com/swift-nav/gnss-converters
main/RTCM32RTCM3.hs view
@@ -22,6 +22,6 @@ runConduitRes $ sourceHandle stdin =$= conduitDecode- =$= replay+ =$= replayer =$= conduitEncode $$ sinkHandle stdout
src/Data/RTCM3/Replay.hs view
@@ -2,15 +2,13 @@ {-# LANGUAGE NoImplicitPrelude #-} module Data.RTCM3.Replay- ( replay- , replay'+ ( replayer ) where -import BasicPrelude hiding (mapM)+import BasicPrelude import Control.Concurrent hiding (yield) import Control.Lens import Data.Conduit-import Data.Conduit.List import Data.RTCM3 import Data.Time import Data.Time.Calendar.WeekDate@@ -32,21 +30,6 @@ where gpsLeapSeconds = 18 :: Int --- | Update time of week on replayed messages to be current.----postDelay :: MonadIO m => Conduit RTCM3Msg m RTCM3Msg-postDelay = awaitForever $ \case- (RTCM3Msg1002 m _rtcm3) -> do- tow <- currentTow- let n = set (msg1002_header . gpsObservationHeader_tow) tow m- yield (RTCM3Msg1002 n (toRTCM3 n))- (RTCM3Msg1004 m _rtcm3) -> do- tow <- currentTow- let n = set (msg1004_header . gpsObservationHeader_tow) tow m- yield (RTCM3Msg1004 n (toRTCM3 n))- _rtcm3Msg ->- pure ()- -- | Delay between two time of week values - differences over 15 seconds are ignored. -- delayTow :: MonadIO m => Word32 -> Word32 -> m ()@@ -58,29 +41,10 @@ where diffMilliseconds = 15 * 1000 --- | Delay between observations.----delay :: MonadIO m => Conduit (Word32, RTCM3Msg) m RTCM3Msg-delay = awaitForever $ uncurry $ \tow -> \case- (RTCM3Msg1002 m rtcm3) -> peek >>= delayTow tow . fromMaybe maxBound . (fst <$>) >> yield (RTCM3Msg1002 m rtcm3)- (RTCM3Msg1004 m rtcm3) -> peek >>= delayTow tow . fromMaybe maxBound . (fst <$>) >> yield (RTCM3Msg1004 m rtcm3)- _rtcm3Msg -> pure ()---- | Setup observations with their time of weeks.----preDelay :: Monad m => Conduit RTCM3Msg m (Word32, RTCM3Msg)-preDelay = awaitForever $ \case- (RTCM3Msg1002 m rtcm3) -> yield (m ^. msg1002_header ^. gpsObservationHeader_tow, RTCM3Msg1002 m rtcm3)- (RTCM3Msg1004 m rtcm3) -> yield (m ^. msg1004_header ^. gpsObservationHeader_tow, RTCM3Msg1004 m rtcm3)- _rtcm3Msg -> pure ()- -- | Replay observations. ---replay :: MonadIO m => Conduit RTCM3Msg m RTCM3Msg-replay = preDelay =$= delay =$= postDelay--dog :: MonadIO m => Word32 -> RTCM3Msg -> ConduitM i RTCM3Msg m Word32-dog tow = \case+replay :: MonadIO m => Word32 -> RTCM3Msg -> ConduitM i RTCM3Msg m Word32+replay tow = \case (RTCM3Msg1002 m _rtcm3) -> do let tow' = m ^. msg1002_header ^. gpsObservationHeader_tow delayTow tow tow'@@ -99,8 +63,8 @@ yield rtcm3Msg pure tow -replay' :: MonadIO m => Conduit RTCM3Msg m RTCM3Msg-replay' = loop maxBound+replayer :: MonadIO m => Conduit RTCM3Msg m RTCM3Msg+replayer = loop maxBound where loop tow =- await >>= maybe (pure tow) (dog tow) >>= loop+ await >>= maybe (pure ()) ((>>= loop) . replay tow)