packages feed

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 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)