module Data.RTCM3.SBP
( converter
, newStore
) where
import BasicPrelude
import Data.Conduit
import Data.IORef
import Data.RTCM3
import qualified Data.RTCM3.SBP.Ephemerides as Ephemerides
import qualified Data.RTCM3.SBP.Observations as Observations
import qualified Data.RTCM3.SBP.Positions as Positions
import Data.RTCM3.SBP.Types
import SwiftNav.SBP
converter :: MonadStore e m => RTCM3Msg -> Conduit i m [SBPMsg]
converter = \case
(RTCM3Msg1002 m _rtcm3) -> Observations.converter m
(RTCM3Msg1004 m _rtcm3) -> Observations.converter m
(RTCM3Msg1010 m _rtcm3) -> Observations.converter m
(RTCM3Msg1012 m _rtcm3) -> Observations.converter m
(RTCM3Msg1005 m _rtcm3) -> Positions.converter m
(RTCM3Msg1006 m _rtcm3) -> Positions.converter m
(RTCM3Msg1019 m _rtcm3) -> Ephemerides.converter m
_rtcm3Msg -> mempty
newStore :: MonadIO m => m Store
newStore = liftIO $ Store <$> newIORef mempty <*> newIORef mempty