{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TemplateHaskell #-} -- | -- Module: Data.RTCM3.SSR -- Copyright: Copyright (C) 2015 Swift Navigation, Inc. -- License: LGPL-3 -- Maintainer: Swift Navigation -- Stability: experimental -- Portability: portable -- -- RTCMv3 messages for State Space Representation parameters. module Data.RTCM3.SSR ( module Data.RTCM3.SSR ) where import BasicPrelude import Control.Lens import Data.Aeson.TH import Data.Binary import Data.Binary.Bits import qualified Data.Binary.Bits.Get as B import qualified Data.Binary.Bits.Put as B import Data.Int import Data.RTCM3.Extras import Data.RTCM3.TH {-# ANN module ("HLint: ignore Use camelCase"::String) #-} -- | GpsOrbitCorrectionHeader. -- -- GPS orbit correction header. data GpsOrbitCorrectionHeader = GpsOrbitCorrectionHeader { _gpsOrbitCorrectionHeader_num :: Word16 -- ^ Message number. , _gpsOrbitCorrectionHeader_epochs :: Word32 -- ^ GPS epoch time. , _gpsOrbitCorrectionHeader_updateInterval :: Word8 -- ^ SSR update interval. , _gpsOrbitCorrectionHeader_multiple :: Bool -- ^ Multiple message indicator. , _gpsOrbitCorrectionHeader_datum :: Bool -- ^ Satellite reference datum. , _gpsOrbitCorrectionHeader_iod :: Word8 -- ^ IOD SSR. , _gpsOrbitCorrectionHeader_provider :: Word16 -- ^ SSR provider id. , _gpsOrbitCorrectionHeader_solution :: Word8 -- ^ SSR solution id. , _gpsOrbitCorrectionHeader_n :: Word8 -- ^ Number of satellites. } deriving ( Show, Read, Eq ) $(makeLenses ''GpsOrbitCorrectionHeader) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsOrbitCorrectionHeader_" . stripPrefix "_gpsOrbitCorrectionHeader_"} ''GpsOrbitCorrectionHeader) instance BinaryBit GpsOrbitCorrectionHeader where getBits _n = do _gpsOrbitCorrectionHeader_num <- B.getWord16be 12 _gpsOrbitCorrectionHeader_epochs <- B.getWord32be 20 _gpsOrbitCorrectionHeader_updateInterval <- B.getWord8 4 _gpsOrbitCorrectionHeader_multiple <- B.getBool _gpsOrbitCorrectionHeader_datum <- B.getBool _gpsOrbitCorrectionHeader_iod <- B.getWord8 4 _gpsOrbitCorrectionHeader_provider <- B.getWord16be 16 _gpsOrbitCorrectionHeader_solution <- B.getWord8 4 _gpsOrbitCorrectionHeader_n <- B.getWord8 6 pure GpsOrbitCorrectionHeader {..} putBits _n GpsOrbitCorrectionHeader {..} = do B.putWord16be 12 _gpsOrbitCorrectionHeader_num B.putWord32be 20 _gpsOrbitCorrectionHeader_epochs B.putWord8 4 _gpsOrbitCorrectionHeader_updateInterval B.putBool _gpsOrbitCorrectionHeader_multiple B.putBool _gpsOrbitCorrectionHeader_datum B.putWord8 4 _gpsOrbitCorrectionHeader_iod B.putWord16be 16 _gpsOrbitCorrectionHeader_provider B.putWord8 4 _gpsOrbitCorrectionHeader_solution B.putWord8 6 _gpsOrbitCorrectionHeader_n -- | GpsOrbitCorrectionMessage. -- -- GPS orbit correction message. data GpsOrbitCorrection = GpsOrbitCorrection { _gpsOrbitCorrection_sat :: Word8 -- ^ GPS satellite id. , _gpsOrbitCorrection_iode :: Word8 -- ^ GPS IODE. , _gpsOrbitCorrection_deltaRadial :: Int32 -- ^ Delta Radial. , _gpsOrbitCorrection_deltaAlongTrack :: Int32 -- ^ Delta Along-Track. , _gpsOrbitCorrection_deltaCrossTrack :: Int32 -- ^ Delta Cross-Track. , _gpsOrbitCorrection_dotDeltaRadial :: Int32 -- ^ Dot Delta Radial. , _gpsOrbitCorrection_dotDeltaAlongTrack :: Int32 -- ^ Dot Delta Along-Track. , _gpsOrbitCorrection_dotDeltaCrossTrack :: Int32 -- ^ Dot Delta Cross-Track. } deriving ( Show, Read, Eq ) $(makeLenses ''GpsOrbitCorrection) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsOrbitCorrection_" . stripPrefix "_gpsOrbitCorrection_"} ''GpsOrbitCorrection) instance BinaryBit GpsOrbitCorrection where getBits _n = do _gpsOrbitCorrection_sat <- B.getWord8 6 _gpsOrbitCorrection_iode <- B.getWord8 8 _gpsOrbitCorrection_deltaRadial <- getInt32be 22 _gpsOrbitCorrection_deltaAlongTrack <- getInt32be 20 _gpsOrbitCorrection_deltaCrossTrack <- getInt32be 20 _gpsOrbitCorrection_dotDeltaRadial <- getInt32be 21 _gpsOrbitCorrection_dotDeltaAlongTrack <- getInt32be 19 _gpsOrbitCorrection_dotDeltaCrossTrack <- getInt32be 19 pure GpsOrbitCorrection {..} putBits _n GpsOrbitCorrection {..} = do B.putWord8 6 _gpsOrbitCorrection_sat B.putWord8 8 _gpsOrbitCorrection_iode putInt32be 22 _gpsOrbitCorrection_deltaRadial putInt32be 20 _gpsOrbitCorrection_deltaAlongTrack putInt32be 20 _gpsOrbitCorrection_deltaCrossTrack putInt32be 21 _gpsOrbitCorrection_dotDeltaRadial putInt32be 19 _gpsOrbitCorrection_dotDeltaAlongTrack putInt32be 19 _gpsOrbitCorrection_dotDeltaCrossTrack -- | GpsClockCorrectionHeader. -- -- GPS clock correction message. data GpsClockCorrectionHeader = GpsClockCorrectionHeader { _gpsClockCorrectionHeader_num :: Word16 -- ^ Message number. , _gpsClockCorrectionHeader_epochs :: Word32 -- ^ GPS epoch time. , _gpsClockCorrectionHeader_updateInterval :: Word8 -- ^ SSR update interval. , _gpsClockCorrectionHeader_multiple :: Bool -- ^ Multiple message indicator. , _gpsClockCorrectionHeader_iod :: Word8 -- ^ IOD SSR. , _gpsClockCorrectionHeader_provider :: Word16 -- ^ SSR provider id. , _gpsClockCorrectionHeader_solution :: Word8 -- ^ SSR solution id. , _gpsClockCorrectionHeader_n :: Word8 -- ^ Number of satellites. } deriving ( Show, Read, Eq ) $(makeLenses ''GpsClockCorrectionHeader) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsClockCorrectionHeader_" . stripPrefix "_gpsClockCorrectionHeader_"} ''GpsClockCorrectionHeader) instance BinaryBit GpsClockCorrectionHeader where getBits _n = do _gpsClockCorrectionHeader_num <- B.getWord16be 12 _gpsClockCorrectionHeader_epochs <- B.getWord32be 20 _gpsClockCorrectionHeader_updateInterval <- B.getWord8 4 _gpsClockCorrectionHeader_multiple <- B.getBool _gpsClockCorrectionHeader_iod <- B.getWord8 4 _gpsClockCorrectionHeader_provider <- B.getWord16be 16 _gpsClockCorrectionHeader_solution <- B.getWord8 4 _gpsClockCorrectionHeader_n <- B.getWord8 6 pure GpsClockCorrectionHeader {..} putBits _n GpsClockCorrectionHeader {..} = do B.putWord16be 12 _gpsClockCorrectionHeader_num B.putWord32be 20 _gpsClockCorrectionHeader_epochs B.putWord8 4 _gpsClockCorrectionHeader_updateInterval B.putBool _gpsClockCorrectionHeader_multiple B.putWord8 4 _gpsClockCorrectionHeader_iod B.putWord16be 16 _gpsClockCorrectionHeader_provider B.putWord8 4 _gpsClockCorrectionHeader_solution B.putWord8 6 _gpsClockCorrectionHeader_n -- | GpsClockCorrectionMessage. -- -- GPS clock correction message. data GpsClockCorrection = GpsClockCorrection { _gpsClockCorrection_sat :: Word8 -- ^ GPS satellite id. , _gpsClockCorrection_deltaClockC0 :: Int32 -- ^ Delta clock C0. , _gpsClockCorrection_deltaClockC1 :: Int32 -- ^ Delta clock C1. , _gpsClockCorrection_deltaClockC2 :: Int32 -- ^ Delta clock C2. } deriving ( Show, Read, Eq ) $(makeLenses ''GpsClockCorrection) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsClockCorrection_" . stripPrefix "_gpsClockCorrection_"} ''GpsClockCorrection) instance BinaryBit GpsClockCorrection where getBits _n = do _gpsClockCorrection_sat <- B.getWord8 6 _gpsClockCorrection_deltaClockC0 <- getInt32be 22 _gpsClockCorrection_deltaClockC1 <- getInt32be 21 _gpsClockCorrection_deltaClockC2 <- getInt32be 27 pure GpsClockCorrection {..} putBits _n GpsClockCorrection {..} = do B.putWord8 6 _gpsClockCorrection_sat putInt32be 22 _gpsClockCorrection_deltaClockC0 putInt32be 21 _gpsClockCorrection_deltaClockC1 putInt32be 27 _gpsClockCorrection_deltaClockC2 -- | GlonassOrbitCorrectionHeader. -- -- GLONASS orbit correction header. data GlonassOrbitCorrectionHeader = GlonassOrbitCorrectionHeader { _glonassOrbitCorrectionHeader_num :: Word16 -- ^ Message number. , _glonassOrbitCorrectionHeader_epochs :: Word32 -- ^ GLONASS epoch time. , _glonassOrbitCorrectionHeader_updateInterval :: Word8 -- ^ SSR update interval. , _glonassOrbitCorrectionHeader_multiple :: Bool -- ^ Multiple message indicator. , _glonassOrbitCorrectionHeader_datum :: Bool -- ^ Satellite reference datum. , _glonassOrbitCorrectionHeader_iod :: Word8 -- ^ IOD SSR. , _glonassOrbitCorrectionHeader_provider :: Word16 -- ^ SSR provider id. , _glonassOrbitCorrectionHeader_solution :: Word8 -- ^ SSR solution id. , _glonassOrbitCorrectionHeader_n :: Word8 -- ^ Number of satellites. } deriving ( Show, Read, Eq ) $(makeLenses ''GlonassOrbitCorrectionHeader) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_glonassOrbitCorrectionHeader_" . stripPrefix "_glonassOrbitCorrectionHeader_"} ''GlonassOrbitCorrectionHeader) instance BinaryBit GlonassOrbitCorrectionHeader where getBits _n = do _glonassOrbitCorrectionHeader_num <- B.getWord16be 12 _glonassOrbitCorrectionHeader_epochs <- B.getWord32be 17 _glonassOrbitCorrectionHeader_updateInterval <- B.getWord8 4 _glonassOrbitCorrectionHeader_multiple <- B.getBool _glonassOrbitCorrectionHeader_datum <- B.getBool _glonassOrbitCorrectionHeader_iod <- B.getWord8 4 _glonassOrbitCorrectionHeader_provider <- B.getWord16be 16 _glonassOrbitCorrectionHeader_solution <- B.getWord8 4 _glonassOrbitCorrectionHeader_n <- B.getWord8 6 pure GlonassOrbitCorrectionHeader {..} putBits _n GlonassOrbitCorrectionHeader {..} = do B.putWord16be 12 _glonassOrbitCorrectionHeader_num B.putWord32be 17 _glonassOrbitCorrectionHeader_epochs B.putWord8 4 _glonassOrbitCorrectionHeader_updateInterval B.putBool _glonassOrbitCorrectionHeader_multiple B.putBool _glonassOrbitCorrectionHeader_datum B.putWord8 4 _glonassOrbitCorrectionHeader_iod B.putWord16be 16 _glonassOrbitCorrectionHeader_provider B.putWord8 4 _glonassOrbitCorrectionHeader_solution B.putWord8 6 _glonassOrbitCorrectionHeader_n -- | GlonassOrbitCorrectionMessage. -- -- GLONASS orbit correction message. data GlonassOrbitCorrection = GlonassOrbitCorrection { _glonassOrbitCorrection_sat :: Word8 -- ^ GLONASS satellite id. , _glonassOrbitCorrection_iode :: Word8 -- ^ GLONASS IODE. , _glonassOrbitCorrection_deltaRadial :: Int32 -- ^ Delta Radial. , _glonassOrbitCorrection_deltaAlongTrack :: Int32 -- ^ Delta Along-Track. , _glonassOrbitCorrection_deltaCrossTrack :: Int32 -- ^ Delta Cross-Track. , _glonassOrbitCorrection_dotDeltaRadial :: Int32 -- ^ Dot Delta Radial. , _glonassOrbitCorrection_dotDeltaAlongTrack :: Int32 -- ^ Dot Delta Along-Track. , _glonassOrbitCorrection_dotDeltaCrossTrack :: Int32 -- ^ Dot Delta Cross-Track. } deriving ( Show, Read, Eq ) $(makeLenses ''GlonassOrbitCorrection) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_glonassOrbitCorrection_" . stripPrefix "_glonassOrbitCorrection_"} ''GlonassOrbitCorrection) instance BinaryBit GlonassOrbitCorrection where getBits _n = do _glonassOrbitCorrection_sat <- B.getWord8 5 _glonassOrbitCorrection_iode <- B.getWord8 8 _glonassOrbitCorrection_deltaRadial <- getInt32be 22 _glonassOrbitCorrection_deltaAlongTrack <- getInt32be 20 _glonassOrbitCorrection_deltaCrossTrack <- getInt32be 20 _glonassOrbitCorrection_dotDeltaRadial <- getInt32be 21 _glonassOrbitCorrection_dotDeltaAlongTrack <- getInt32be 19 _glonassOrbitCorrection_dotDeltaCrossTrack <- getInt32be 19 pure GlonassOrbitCorrection {..} putBits _n GlonassOrbitCorrection {..} = do B.putWord8 5 _glonassOrbitCorrection_sat B.putWord8 8 _glonassOrbitCorrection_iode putInt32be 22 _glonassOrbitCorrection_deltaRadial putInt32be 20 _glonassOrbitCorrection_deltaAlongTrack putInt32be 20 _glonassOrbitCorrection_deltaCrossTrack putInt32be 21 _glonassOrbitCorrection_dotDeltaRadial putInt32be 19 _glonassOrbitCorrection_dotDeltaAlongTrack putInt32be 19 _glonassOrbitCorrection_dotDeltaCrossTrack -- | GlonassClockCorrectionHeader. -- -- GLONASS clock correction message. data GlonassClockCorrectionHeader = GlonassClockCorrectionHeader { _glonassClockCorrectionHeader_num :: Word16 -- ^ Message number. , _glonassClockCorrectionHeader_epochs :: Word32 -- ^ GLONASS epoch time. , _glonassClockCorrectionHeader_updateInterval :: Word8 -- ^ SSR update interval. , _glonassClockCorrectionHeader_multiple :: Bool -- ^ Multiple message indicator. , _glonassClockCorrectionHeader_iod :: Word8 -- ^ IOD SSR. , _glonassClockCorrectionHeader_provider :: Word16 -- ^ SSR provider id. , _glonassClockCorrectionHeader_solution :: Word8 -- ^ SSR solution id. , _glonassClockCorrectionHeader_n :: Word8 -- ^ Number of satellites. } deriving ( Show, Read, Eq ) $(makeLenses ''GlonassClockCorrectionHeader) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_glonassClockCorrectionHeader_" . stripPrefix "_glonassClockCorrectionHeader_"} ''GlonassClockCorrectionHeader) instance BinaryBit GlonassClockCorrectionHeader where getBits _n = do _glonassClockCorrectionHeader_num <- B.getWord16be 12 _glonassClockCorrectionHeader_epochs <- B.getWord32be 17 _glonassClockCorrectionHeader_updateInterval <- B.getWord8 4 _glonassClockCorrectionHeader_multiple <- B.getBool _glonassClockCorrectionHeader_iod <- B.getWord8 4 _glonassClockCorrectionHeader_provider <- B.getWord16be 16 _glonassClockCorrectionHeader_solution <- B.getWord8 4 _glonassClockCorrectionHeader_n <- B.getWord8 6 pure GlonassClockCorrectionHeader {..} putBits _n GlonassClockCorrectionHeader {..} = do B.putWord16be 12 _glonassClockCorrectionHeader_num B.putWord32be 17 _glonassClockCorrectionHeader_epochs B.putWord8 4 _glonassClockCorrectionHeader_updateInterval B.putBool _glonassClockCorrectionHeader_multiple B.putWord8 4 _glonassClockCorrectionHeader_iod B.putWord16be 16 _glonassClockCorrectionHeader_provider B.putWord8 4 _glonassClockCorrectionHeader_solution B.putWord8 6 _glonassClockCorrectionHeader_n -- | GlonassClockCorrectionMessage. -- -- GLONASS clock correction message. data GlonassClockCorrection = GlonassClockCorrection { _glonassClockCorrection_sat :: Word8 -- ^ GLONASS satellite id. , _glonassClockCorrection_deltaClockC0 :: Int32 -- ^ Delta clock C0. , _glonassClockCorrection_deltaClockC1 :: Int32 -- ^ Delta clock C1. , _glonassClockCorrection_deltaClockC2 :: Int32 -- ^ Delta clock C2. } deriving ( Show, Read, Eq ) $(makeLenses ''GlonassClockCorrection) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_glonassClockCorrection_" . stripPrefix "_glonassClockCorrection_"} ''GlonassClockCorrection) instance BinaryBit GlonassClockCorrection where getBits _n = do _glonassClockCorrection_sat <- B.getWord8 5 _glonassClockCorrection_deltaClockC0 <- getInt32be 22 _glonassClockCorrection_deltaClockC1 <- getInt32be 21 _glonassClockCorrection_deltaClockC2 <- getInt32be 27 pure GlonassClockCorrection {..} putBits _n GlonassClockCorrection {..} = do B.putWord8 5 _glonassClockCorrection_sat putInt32be 22 _glonassClockCorrection_deltaClockC0 putInt32be 21 _glonassClockCorrection_deltaClockC1 putInt32be 27 _glonassClockCorrection_deltaClockC2 -- | GpsOrbitClockCorrectionHeader. -- -- GPS orbit and clock correction header. data GpsOrbitClockCorrectionHeader = GpsOrbitClockCorrectionHeader { _gpsOrbitClockCorrectionHeader_num :: Word16 -- ^ Message number. , _gpsOrbitClockCorrectionHeader_epochs :: Word32 -- ^ GPS epoch time. , _gpsOrbitClockCorrectionHeader_updateInterval :: Word8 -- ^ SSR update interval. , _gpsOrbitClockCorrectionHeader_multiple :: Bool -- ^ Multiple message indicator. , _gpsOrbitClockCorrectionHeader_datum :: Bool -- ^ Satellite reference datum. , _gpsOrbitClockCorrectionHeader_iod :: Word8 -- ^ IOD SSR. , _gpsOrbitClockCorrectionHeader_provider :: Word16 -- ^ SSR provider id. , _gpsOrbitClockCorrectionHeader_solution :: Word8 -- ^ SSR solution id. , _gpsOrbitClockCorrectionHeader_n :: Word8 -- ^ Number of satellites. } deriving ( Show, Read, Eq ) $(makeLenses ''GpsOrbitClockCorrectionHeader) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsOrbitClockCorrectionHeader_" . stripPrefix "_gpsOrbitClockCorrectionHeader_"} ''GpsOrbitClockCorrectionHeader) instance BinaryBit GpsOrbitClockCorrectionHeader where getBits _n = do _gpsOrbitClockCorrectionHeader_num <- B.getWord16be 12 _gpsOrbitClockCorrectionHeader_epochs <- B.getWord32be 20 _gpsOrbitClockCorrectionHeader_updateInterval <- B.getWord8 4 _gpsOrbitClockCorrectionHeader_multiple <- B.getBool _gpsOrbitClockCorrectionHeader_datum <- B.getBool _gpsOrbitClockCorrectionHeader_iod <- B.getWord8 4 _gpsOrbitClockCorrectionHeader_provider <- B.getWord16be 16 _gpsOrbitClockCorrectionHeader_solution <- B.getWord8 4 _gpsOrbitClockCorrectionHeader_n <- B.getWord8 6 pure GpsOrbitClockCorrectionHeader {..} putBits _n GpsOrbitClockCorrectionHeader {..} = do B.putWord16be 12 _gpsOrbitClockCorrectionHeader_num B.putWord32be 20 _gpsOrbitClockCorrectionHeader_epochs B.putWord8 4 _gpsOrbitClockCorrectionHeader_updateInterval B.putBool _gpsOrbitClockCorrectionHeader_multiple B.putBool _gpsOrbitClockCorrectionHeader_datum B.putWord8 4 _gpsOrbitClockCorrectionHeader_iod B.putWord16be 16 _gpsOrbitClockCorrectionHeader_provider B.putWord8 4 _gpsOrbitClockCorrectionHeader_solution B.putWord8 6 _gpsOrbitClockCorrectionHeader_n -- | GpsOrbitClockCorrectionMessage. -- -- GPS orbit correction message. data GpsOrbitClockCorrection = GpsOrbitClockCorrection { _gpsOrbitClockCorrection_sat :: Word8 -- ^ GPS satellite id. , _gpsOrbitClockCorrection_iode :: Word8 -- ^ GPS IODE. , _gpsOrbitClockCorrection_deltaRadial :: Int32 -- ^ Delta Radial. , _gpsOrbitClockCorrection_deltaAlongTrack :: Int32 -- ^ Delta Along-Track. , _gpsOrbitClockCorrection_deltaCrossTrack :: Int32 -- ^ Delta Cross-Track. , _gpsOrbitClockCorrection_dotDeltaRadial :: Int32 -- ^ Dot Delta Radial. , _gpsOrbitClockCorrection_dotDeltaAlongTrack :: Int32 -- ^ Dot Delta Along-Track. , _gpsOrbitClockCorrection_dotDeltaCrossTrack :: Int32 -- ^ Dot Delta Cross-Track. , _gpsOrbitClockCorrection_deltaClockC0 :: Int32 -- ^ Delta clock C0. , _gpsOrbitClockCorrection_deltaClockC1 :: Int32 -- ^ Delta clock C1. , _gpsOrbitClockCorrection_deltaClockC2 :: Int32 -- ^ Delta clock C2. } deriving ( Show, Read, Eq ) $(makeLenses ''GpsOrbitClockCorrection) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsOrbitClockCorrection_" . stripPrefix "_gpsOrbitClockCorrection_"} ''GpsOrbitClockCorrection) instance BinaryBit GpsOrbitClockCorrection where getBits _n = do _gpsOrbitClockCorrection_sat <- B.getWord8 6 _gpsOrbitClockCorrection_iode <- B.getWord8 8 _gpsOrbitClockCorrection_deltaRadial <- getInt32be 22 _gpsOrbitClockCorrection_deltaAlongTrack <- getInt32be 20 _gpsOrbitClockCorrection_deltaCrossTrack <- getInt32be 20 _gpsOrbitClockCorrection_dotDeltaRadial <- getInt32be 21 _gpsOrbitClockCorrection_dotDeltaAlongTrack <- getInt32be 19 _gpsOrbitClockCorrection_dotDeltaCrossTrack <- getInt32be 19 _gpsOrbitClockCorrection_deltaClockC0 <- getInt32be 22 _gpsOrbitClockCorrection_deltaClockC1 <- getInt32be 21 _gpsOrbitClockCorrection_deltaClockC2 <- getInt32be 27 pure GpsOrbitClockCorrection {..} putBits _n GpsOrbitClockCorrection {..} = do B.putWord8 6 _gpsOrbitClockCorrection_sat B.putWord8 8 _gpsOrbitClockCorrection_iode putInt32be 22 _gpsOrbitClockCorrection_deltaRadial putInt32be 20 _gpsOrbitClockCorrection_deltaAlongTrack putInt32be 20 _gpsOrbitClockCorrection_deltaCrossTrack putInt32be 21 _gpsOrbitClockCorrection_dotDeltaRadial putInt32be 19 _gpsOrbitClockCorrection_dotDeltaAlongTrack putInt32be 19 _gpsOrbitClockCorrection_dotDeltaCrossTrack putInt32be 22 _gpsOrbitClockCorrection_deltaClockC0 putInt32be 21 _gpsOrbitClockCorrection_deltaClockC1 putInt32be 27 _gpsOrbitClockCorrection_deltaClockC2 -- | GlonassOrbitClockCorrectionHeader. -- -- GLONASS orbit correction header. data GlonassOrbitClockCorrectionHeader = GlonassOrbitClockCorrectionHeader { _glonassOrbitClockCorrectionHeader_num :: Word16 -- ^ Message number. , _glonassOrbitClockCorrectionHeader_epochs :: Word32 -- ^ GLONASS epoch time. , _glonassOrbitClockCorrectionHeader_updateInterval :: Word8 -- ^ SSR update interval. , _glonassOrbitClockCorrectionHeader_multiple :: Bool -- ^ Multiple message indicator. , _glonassOrbitClockCorrectionHeader_datum :: Bool -- ^ Satellite reference datum. , _glonassOrbitClockCorrectionHeader_iod :: Word8 -- ^ IOD SSR. , _glonassOrbitClockCorrectionHeader_provider :: Word16 -- ^ SSR provider id. , _glonassOrbitClockCorrectionHeader_solution :: Word8 -- ^ SSR solution id. , _glonassOrbitClockCorrectionHeader_n :: Word8 -- ^ Number of satellites. } deriving ( Show, Read, Eq ) $(makeLenses ''GlonassOrbitClockCorrectionHeader) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_glonassOrbitClockCorrectionHeader_" . stripPrefix "_glonassOrbitClockCorrectionHeader_"} ''GlonassOrbitClockCorrectionHeader) instance BinaryBit GlonassOrbitClockCorrectionHeader where getBits _n = do _glonassOrbitClockCorrectionHeader_num <- B.getWord16be 12 _glonassOrbitClockCorrectionHeader_epochs <- B.getWord32be 17 _glonassOrbitClockCorrectionHeader_updateInterval <- B.getWord8 4 _glonassOrbitClockCorrectionHeader_multiple <- B.getBool _glonassOrbitClockCorrectionHeader_datum <- B.getBool _glonassOrbitClockCorrectionHeader_iod <- B.getWord8 4 _glonassOrbitClockCorrectionHeader_provider <- B.getWord16be 16 _glonassOrbitClockCorrectionHeader_solution <- B.getWord8 4 _glonassOrbitClockCorrectionHeader_n <- B.getWord8 6 pure GlonassOrbitClockCorrectionHeader {..} putBits _n GlonassOrbitClockCorrectionHeader {..} = do B.putWord16be 12 _glonassOrbitClockCorrectionHeader_num B.putWord32be 17 _glonassOrbitClockCorrectionHeader_epochs B.putWord8 4 _glonassOrbitClockCorrectionHeader_updateInterval B.putBool _glonassOrbitClockCorrectionHeader_multiple B.putBool _glonassOrbitClockCorrectionHeader_datum B.putWord8 4 _glonassOrbitClockCorrectionHeader_iod B.putWord16be 16 _glonassOrbitClockCorrectionHeader_provider B.putWord8 4 _glonassOrbitClockCorrectionHeader_solution B.putWord8 6 _glonassOrbitClockCorrectionHeader_n -- | GlonassOrbitClockCorrectionMessage. -- -- GLONASS orbit correction message. data GlonassOrbitClockCorrection = GlonassOrbitClockCorrection { _glonassOrbitClockCorrection_sat :: Word8 -- ^ GLONASS satellite id. , _glonassOrbitClockCorrection_iode :: Word8 -- ^ GLONASS IODE. , _glonassOrbitClockCorrection_deltaRadial :: Int32 -- ^ Delta Radial. , _glonassOrbitClockCorrection_deltaAlongTrack :: Int32 -- ^ Delta Along-Track. , _glonassOrbitClockCorrection_deltaCrossTrack :: Int32 -- ^ Delta Cross-Track. , _glonassOrbitClockCorrection_dotDeltaRadial :: Int32 -- ^ Dot Delta Radial. , _glonassOrbitClockCorrection_dotDeltaAlongTrack :: Int32 -- ^ Dot Delta Along-Track. , _glonassOrbitClockCorrection_dotDeltaCrossTrack :: Int32 -- ^ Dot Delta Cross-Track. , _glonassOrbitClockCorrection_deltaClockC0 :: Int32 -- ^ Delta clock C0. , _glonassOrbitClockCorrection_deltaClockC1 :: Int32 -- ^ Delta clock C1. , _glonassOrbitClockCorrection_deltaClockC2 :: Int32 -- ^ Delta clock C2. } deriving ( Show, Read, Eq ) $(makeLenses ''GlonassOrbitClockCorrection) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_glonassOrbitClockCorrection_" . stripPrefix "_glonassOrbitClockCorrection_"} ''GlonassOrbitClockCorrection) instance BinaryBit GlonassOrbitClockCorrection where getBits _n = do _glonassOrbitClockCorrection_sat <- B.getWord8 5 _glonassOrbitClockCorrection_iode <- B.getWord8 8 _glonassOrbitClockCorrection_deltaRadial <- getInt32be 22 _glonassOrbitClockCorrection_deltaAlongTrack <- getInt32be 20 _glonassOrbitClockCorrection_deltaCrossTrack <- getInt32be 20 _glonassOrbitClockCorrection_dotDeltaRadial <- getInt32be 21 _glonassOrbitClockCorrection_dotDeltaAlongTrack <- getInt32be 19 _glonassOrbitClockCorrection_dotDeltaCrossTrack <- getInt32be 19 _glonassOrbitClockCorrection_deltaClockC0 <- getInt32be 22 _glonassOrbitClockCorrection_deltaClockC1 <- getInt32be 21 _glonassOrbitClockCorrection_deltaClockC2 <- getInt32be 27 pure GlonassOrbitClockCorrection {..} putBits _n GlonassOrbitClockCorrection {..} = do B.putWord8 5 _glonassOrbitClockCorrection_sat B.putWord8 8 _glonassOrbitClockCorrection_iode putInt32be 22 _glonassOrbitClockCorrection_deltaRadial putInt32be 20 _glonassOrbitClockCorrection_deltaAlongTrack putInt32be 20 _glonassOrbitClockCorrection_deltaCrossTrack putInt32be 21 _glonassOrbitClockCorrection_dotDeltaRadial putInt32be 19 _glonassOrbitClockCorrection_dotDeltaAlongTrack putInt32be 19 _glonassOrbitClockCorrection_dotDeltaCrossTrack putInt32be 22 _glonassOrbitClockCorrection_deltaClockC0 putInt32be 21 _glonassOrbitClockCorrection_deltaClockC1 putInt32be 27 _glonassOrbitClockCorrection_deltaClockC2 -- | GpsCodeBiasCorrectionHeader. -- -- GPS code bias correction header. data GpsCodeBiasCorrectionHeader = GpsCodeBiasCorrectionHeader { _gpsCodeBiasCorrectionHeader_num :: Word16 -- ^ Message number. , _gpsCodeBiasCorrectionHeader_epochs :: Word32 -- ^ GPS epoch time. , _gpsCodeBiasCorrectionHeader_updateInterval :: Word8 -- ^ SSR update interval. , _gpsCodeBiasCorrectionHeader_multiple :: Bool -- ^ Multiple message indicator. , _gpsCodeBiasCorrectionHeader_iod :: Word8 -- ^ IOD SSR. , _gpsCodeBiasCorrectionHeader_provider :: Word16 -- ^ SSR provider id. , _gpsCodeBiasCorrectionHeader_solution :: Word8 -- ^ SSR solution id. , _gpsCodeBiasCorrectionHeader_n :: Word8 -- ^ Number of satellites. } deriving ( Show, Read, Eq ) $(makeLenses ''GpsCodeBiasCorrectionHeader) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsCodeBiasCorrectionHeader_" . stripPrefix "_gpsCodeBiasCorrectionHeader_"} ''GpsCodeBiasCorrectionHeader) instance BinaryBit GpsCodeBiasCorrectionHeader where getBits _n = do _gpsCodeBiasCorrectionHeader_num <- B.getWord16be 12 _gpsCodeBiasCorrectionHeader_epochs <- B.getWord32be 20 _gpsCodeBiasCorrectionHeader_updateInterval <- B.getWord8 4 _gpsCodeBiasCorrectionHeader_multiple <- B.getBool _gpsCodeBiasCorrectionHeader_iod <- B.getWord8 4 _gpsCodeBiasCorrectionHeader_provider <- B.getWord16be 16 _gpsCodeBiasCorrectionHeader_solution <- B.getWord8 4 _gpsCodeBiasCorrectionHeader_n <- B.getWord8 6 pure GpsCodeBiasCorrectionHeader {..} putBits _n GpsCodeBiasCorrectionHeader {..} = do B.putWord16be 12 _gpsCodeBiasCorrectionHeader_num B.putWord32be 20 _gpsCodeBiasCorrectionHeader_epochs B.putWord8 4 _gpsCodeBiasCorrectionHeader_updateInterval B.putBool _gpsCodeBiasCorrectionHeader_multiple B.putWord8 4 _gpsCodeBiasCorrectionHeader_iod B.putWord16be 16 _gpsCodeBiasCorrectionHeader_provider B.putWord8 4 _gpsCodeBiasCorrectionHeader_solution B.putWord8 6 _gpsCodeBiasCorrectionHeader_n -- | GpsCodeBias. -- -- GPS code bias. data GpsCodeBias = GpsCodeBias { _gpsCodeBias_signal :: Word8 -- ^ GPS signal. , _gpsCodeBias_codeBias :: Int16 -- ^ GPS code bias. } deriving ( Show, Read, Eq ) $(makeLenses ''GpsCodeBias) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsCodeBias_" . stripPrefix "_gpsCodeBias_"} ''GpsCodeBias) instance BinaryBit GpsCodeBias where getBits _n = do _gpsCodeBias_signal <- B.getWord8 5 _gpsCodeBias_codeBias <- getInt16be 14 pure GpsCodeBias {..} putBits _n GpsCodeBias {..} = do B.putWord8 5 _gpsCodeBias_signal putInt16be 14 _gpsCodeBias_codeBias -- | GpsCodeBiasCorrectionMessage. -- -- GPS code bias correction message. data GpsCodeBiasCorrection = GpsCodeBiasCorrection { _gpsCodeBiasCorrection_sat :: Word8 -- ^ GPS satellite id. , _gpsCodeBiasCorrection_n :: Word8 -- ^ Number of biases. , _gpsCodeBiasCorrection_codeBiases :: [GpsCodeBias] -- ^ GPS code biases. } deriving ( Show, Read, Eq ) $(makeLenses ''GpsCodeBiasCorrection) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsCodeBiasCorrection_" . stripPrefix "_gpsCodeBiasCorrection_"} ''GpsCodeBiasCorrection) instance BinaryBit GpsCodeBiasCorrection where getBits _n = do _gpsCodeBiasCorrection_sat <- B.getWord8 6 _gpsCodeBiasCorrection_n <- B.getWord8 5 _gpsCodeBiasCorrection_codeBiases <- replicateM (fromIntegral _gpsCodeBiasCorrection_n) $ getBits 0 pure GpsCodeBiasCorrection {..} putBits _n GpsCodeBiasCorrection {..} = do B.putWord8 6 _gpsCodeBiasCorrection_sat B.putWord8 5 _gpsCodeBiasCorrection_n forM_ _gpsCodeBiasCorrection_codeBiases $ putBits 0 -- | GlonassCodeBiasCorrectionHeader. -- -- GLONASS code bias correction header. data GlonassCodeBiasCorrectionHeader = GlonassCodeBiasCorrectionHeader { _glonassCodeBiasCorrectionHeader_num :: Word16 -- ^ Message number. , _glonassCodeBiasCorrectionHeader_epochs :: Word32 -- ^ GLONASS epoch time. , _glonassCodeBiasCorrectionHeader_updateInterval :: Word8 -- ^ SSR update interval. , _glonassCodeBiasCorrectionHeader_multiple :: Bool -- ^ Multiple message indicator. , _glonassCodeBiasCorrectionHeader_iod :: Word8 -- ^ IOD SSR. , _glonassCodeBiasCorrectionHeader_provider :: Word16 -- ^ SSR provider id. , _glonassCodeBiasCorrectionHeader_solution :: Word8 -- ^ SSR solution id. , _glonassCodeBiasCorrectionHeader_n :: Word8 -- ^ Number of satellites. } deriving ( Show, Read, Eq ) $(makeLenses ''GlonassCodeBiasCorrectionHeader) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_glonassCodeBiasCorrectionHeader_" . stripPrefix "_glonassCodeBiasCorrectionHeader_"} ''GlonassCodeBiasCorrectionHeader) instance BinaryBit GlonassCodeBiasCorrectionHeader where getBits _n = do _glonassCodeBiasCorrectionHeader_num <- B.getWord16be 12 _glonassCodeBiasCorrectionHeader_epochs <- B.getWord32be 17 _glonassCodeBiasCorrectionHeader_updateInterval <- B.getWord8 4 _glonassCodeBiasCorrectionHeader_multiple <- B.getBool _glonassCodeBiasCorrectionHeader_iod <- B.getWord8 4 _glonassCodeBiasCorrectionHeader_provider <- B.getWord16be 16 _glonassCodeBiasCorrectionHeader_solution <- B.getWord8 4 _glonassCodeBiasCorrectionHeader_n <- B.getWord8 6 pure GlonassCodeBiasCorrectionHeader {..} putBits _n GlonassCodeBiasCorrectionHeader {..} = do B.putWord16be 12 _glonassCodeBiasCorrectionHeader_num B.putWord32be 17 _glonassCodeBiasCorrectionHeader_epochs B.putWord8 4 _glonassCodeBiasCorrectionHeader_updateInterval B.putBool _glonassCodeBiasCorrectionHeader_multiple B.putWord8 4 _glonassCodeBiasCorrectionHeader_iod B.putWord16be 16 _glonassCodeBiasCorrectionHeader_provider B.putWord8 4 _glonassCodeBiasCorrectionHeader_solution B.putWord8 6 _glonassCodeBiasCorrectionHeader_n -- | GlonassCodeBias. -- -- GLONASS code bias. data GlonassCodeBias = GlonassCodeBias { _glonassCodeBias_signal :: Word8 -- ^ GLONASS signal. , _glonassCodeBias_codeBias :: Int16 -- ^ GLONASS code bias. } deriving ( Show, Read, Eq ) $(makeLenses ''GlonassCodeBias) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_glonassCodeBias_" . stripPrefix "_glonassCodeBias_"} ''GlonassCodeBias) instance BinaryBit GlonassCodeBias where getBits _n = do _glonassCodeBias_signal <- B.getWord8 5 _glonassCodeBias_codeBias <- getInt16be 14 pure GlonassCodeBias {..} putBits _n GlonassCodeBias {..} = do B.putWord8 5 _glonassCodeBias_signal putInt16be 14 _glonassCodeBias_codeBias -- | GlonassCodeBiasCorrectionMessage. -- -- GLONASS code bias correction message. data GlonassCodeBiasCorrection = GlonassCodeBiasCorrection { _glonassCodeBiasCorrection_sat :: Word8 -- ^ GLONASS satellite id. , _glonassCodeBiasCorrection_n :: Word8 -- ^ Number of biases. , _glonassCodeBiasCorrection_codeBiases :: [GlonassCodeBias] -- ^ GLONASS code biases. } deriving ( Show, Read, Eq ) $(makeLenses ''GlonassCodeBiasCorrection) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_glonassCodeBiasCorrection_" . stripPrefix "_glonassCodeBiasCorrection_"} ''GlonassCodeBiasCorrection) instance BinaryBit GlonassCodeBiasCorrection where getBits _n = do _glonassCodeBiasCorrection_sat <- B.getWord8 5 _glonassCodeBiasCorrection_n <- B.getWord8 5 _glonassCodeBiasCorrection_codeBiases <- replicateM (fromIntegral _glonassCodeBiasCorrection_n) $ getBits 0 pure GlonassCodeBiasCorrection {..} putBits _n GlonassCodeBiasCorrection {..} = do B.putWord8 5 _glonassCodeBiasCorrection_sat B.putWord8 5 _glonassCodeBiasCorrection_n forM_ _glonassCodeBiasCorrection_codeBiases $ putBits 0 -- | GpsPhaseBiasCorrectionHeader. -- -- GPS phase bias correction header. data GpsPhaseBiasCorrectionHeader = GpsPhaseBiasCorrectionHeader { _gpsPhaseBiasCorrectionHeader_num :: Word16 -- ^ Message number. , _gpsPhaseBiasCorrectionHeader_epochs :: Word32 -- ^ GPS epoch time. , _gpsPhaseBiasCorrectionHeader_updateInterval :: Word8 -- ^ SSR update interval. , _gpsPhaseBiasCorrectionHeader_multiple :: Bool -- ^ Multiple message indicator. , _gpsPhaseBiasCorrectionHeader_iod :: Word8 -- ^ IOD SSR. , _gpsPhaseBiasCorrectionHeader_provider :: Word16 -- ^ SSR provider id. , _gpsPhaseBiasCorrectionHeader_solution :: Word8 -- ^ SSR solution id. , _gpsPhaseBiasCorrectionHeader_dispersive :: Bool -- ^ Dispersive Bias Consistency Indicator. , _gpsPhaseBiasCorrectionHeader_mw :: Bool -- ^ MW Consistency Indicator. , _gpsPhaseBiasCorrectionHeader_n :: Word8 -- ^ Number of satellites. } deriving ( Show, Read, Eq ) $(makeLenses ''GpsPhaseBiasCorrectionHeader) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsPhaseBiasCorrectionHeader_" . stripPrefix "_gpsPhaseBiasCorrectionHeader_"} ''GpsPhaseBiasCorrectionHeader) instance BinaryBit GpsPhaseBiasCorrectionHeader where getBits _n = do _gpsPhaseBiasCorrectionHeader_num <- B.getWord16be 12 _gpsPhaseBiasCorrectionHeader_epochs <- B.getWord32be 20 _gpsPhaseBiasCorrectionHeader_updateInterval <- B.getWord8 4 _gpsPhaseBiasCorrectionHeader_multiple <- B.getBool _gpsPhaseBiasCorrectionHeader_iod <- B.getWord8 4 _gpsPhaseBiasCorrectionHeader_provider <- B.getWord16be 16 _gpsPhaseBiasCorrectionHeader_solution <- B.getWord8 4 _gpsPhaseBiasCorrectionHeader_dispersive <- B.getBool _gpsPhaseBiasCorrectionHeader_mw <- B.getBool _gpsPhaseBiasCorrectionHeader_n <- B.getWord8 6 pure GpsPhaseBiasCorrectionHeader {..} putBits _n GpsPhaseBiasCorrectionHeader {..} = do B.putWord16be 12 _gpsPhaseBiasCorrectionHeader_num B.putWord32be 20 _gpsPhaseBiasCorrectionHeader_epochs B.putWord8 4 _gpsPhaseBiasCorrectionHeader_updateInterval B.putBool _gpsPhaseBiasCorrectionHeader_multiple B.putWord8 4 _gpsPhaseBiasCorrectionHeader_iod B.putWord16be 16 _gpsPhaseBiasCorrectionHeader_provider B.putWord8 4 _gpsPhaseBiasCorrectionHeader_solution B.putBool _gpsPhaseBiasCorrectionHeader_dispersive B.putBool _gpsPhaseBiasCorrectionHeader_mw B.putWord8 6 _gpsPhaseBiasCorrectionHeader_n -- | GpsPhaseBias. -- -- GPS phase bias. data GpsPhaseBias = GpsPhaseBias { _gpsPhaseBias_signal :: Word8 -- ^ GPS signal. , _gpsPhaseBias_integer :: Bool -- ^ Signal Integer Indicator. , _gpsPhaseBias_wideLaneInteger :: Word8 -- ^ Signals wide-lane integer indicator. , _gpsPhaseBias_discontinuityCounter :: Word8 -- ^ Signal Discontinuity Counter. , _gpsPhaseBias_phaseBias :: Int32 -- ^ GPS phase bias. } deriving ( Show, Read, Eq ) $(makeLenses ''GpsPhaseBias) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsPhaseBias_" . stripPrefix "_gpsPhaseBias_"} ''GpsPhaseBias) instance BinaryBit GpsPhaseBias where getBits _n = do _gpsPhaseBias_signal <- B.getWord8 5 _gpsPhaseBias_integer <- B.getBool _gpsPhaseBias_wideLaneInteger <- B.getWord8 2 _gpsPhaseBias_discontinuityCounter <- B.getWord8 4 _gpsPhaseBias_phaseBias <- getInt32be 20 pure GpsPhaseBias {..} putBits _n GpsPhaseBias {..} = do B.putWord8 5 _gpsPhaseBias_signal B.putBool _gpsPhaseBias_integer B.putWord8 2 _gpsPhaseBias_wideLaneInteger B.putWord8 4 _gpsPhaseBias_discontinuityCounter putInt32be 20 _gpsPhaseBias_phaseBias -- | GpsPhaseBiasCorrectionMessage. -- -- GPS phase bias correction message. data GpsPhaseBiasCorrection = GpsPhaseBiasCorrection { _gpsPhaseBiasCorrection_sat :: Word8 -- ^ GPS satellite id. , _gpsPhaseBiasCorrection_n :: Word8 -- ^ Number of biases. , _gpsPhaseBiasCorrection_yawAngle :: Word16 -- ^ Yaw angle. , _gpsPhaseBiasCorrection_yawRate :: Int8 -- ^ Yaw rate. , _gpsPhaseBiasCorrection_phaseBiases :: [GpsPhaseBias] -- ^ GPS phase biases. } deriving ( Show, Read, Eq ) $(makeLenses ''GpsPhaseBiasCorrection) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsPhaseBiasCorrection_" . stripPrefix "_gpsPhaseBiasCorrection_"} ''GpsPhaseBiasCorrection) instance BinaryBit GpsPhaseBiasCorrection where getBits _n = do _gpsPhaseBiasCorrection_sat <- B.getWord8 6 _gpsPhaseBiasCorrection_n <- B.getWord8 5 _gpsPhaseBiasCorrection_yawAngle <- B.getWord16be 9 _gpsPhaseBiasCorrection_yawRate <- getInt8 8 _gpsPhaseBiasCorrection_phaseBiases <- replicateM (fromIntegral _gpsPhaseBiasCorrection_n) $ getBits 0 pure GpsPhaseBiasCorrection {..} putBits _n GpsPhaseBiasCorrection {..} = do B.putWord8 6 _gpsPhaseBiasCorrection_sat B.putWord8 5 _gpsPhaseBiasCorrection_n B.putWord16be 9 _gpsPhaseBiasCorrection_yawAngle putInt8 8 _gpsPhaseBiasCorrection_yawRate forM_ _gpsPhaseBiasCorrection_phaseBiases $ putBits 0 -- | GlonassPhaseBiasCorrectionHeader. -- -- GLONASS phase bias correction header. data GlonassPhaseBiasCorrectionHeader = GlonassPhaseBiasCorrectionHeader { _glonassPhaseBiasCorrectionHeader_num :: Word16 -- ^ Message number. , _glonassPhaseBiasCorrectionHeader_epochs :: Word32 -- ^ GLONASS epoch time. , _glonassPhaseBiasCorrectionHeader_updateInterval :: Word8 -- ^ SSR update interval. , _glonassPhaseBiasCorrectionHeader_multiple :: Bool -- ^ Multiple message indicator. , _glonassPhaseBiasCorrectionHeader_iod :: Word8 -- ^ IOD SSR. , _glonassPhaseBiasCorrectionHeader_provider :: Word16 -- ^ SSR provider id. , _glonassPhaseBiasCorrectionHeader_solution :: Word8 -- ^ SSR solution id. , _glonassPhaseBiasCorrectionHeader_dispersive :: Bool -- ^ Dispersive Bias Consistency Indicator. , _glonassPhaseBiasCorrectionHeader_mw :: Bool -- ^ MW Consistency Indicator. , _glonassPhaseBiasCorrectionHeader_n :: Word8 -- ^ Number of satellites. } deriving ( Show, Read, Eq ) $(makeLenses ''GlonassPhaseBiasCorrectionHeader) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_glonassPhaseBiasCorrectionHeader_" . stripPrefix "_glonassPhaseBiasCorrectionHeader_"} ''GlonassPhaseBiasCorrectionHeader) instance BinaryBit GlonassPhaseBiasCorrectionHeader where getBits _n = do _glonassPhaseBiasCorrectionHeader_num <- B.getWord16be 12 _glonassPhaseBiasCorrectionHeader_epochs <- B.getWord32be 17 _glonassPhaseBiasCorrectionHeader_updateInterval <- B.getWord8 4 _glonassPhaseBiasCorrectionHeader_multiple <- B.getBool _glonassPhaseBiasCorrectionHeader_iod <- B.getWord8 4 _glonassPhaseBiasCorrectionHeader_provider <- B.getWord16be 16 _glonassPhaseBiasCorrectionHeader_solution <- B.getWord8 4 _glonassPhaseBiasCorrectionHeader_dispersive <- B.getBool _glonassPhaseBiasCorrectionHeader_mw <- B.getBool _glonassPhaseBiasCorrectionHeader_n <- B.getWord8 6 pure GlonassPhaseBiasCorrectionHeader {..} putBits _n GlonassPhaseBiasCorrectionHeader {..} = do B.putWord16be 12 _glonassPhaseBiasCorrectionHeader_num B.putWord32be 17 _glonassPhaseBiasCorrectionHeader_epochs B.putWord8 4 _glonassPhaseBiasCorrectionHeader_updateInterval B.putBool _glonassPhaseBiasCorrectionHeader_multiple B.putWord8 4 _glonassPhaseBiasCorrectionHeader_iod B.putWord16be 16 _glonassPhaseBiasCorrectionHeader_provider B.putWord8 4 _glonassPhaseBiasCorrectionHeader_solution B.putBool _glonassPhaseBiasCorrectionHeader_dispersive B.putBool _glonassPhaseBiasCorrectionHeader_mw B.putWord8 6 _glonassPhaseBiasCorrectionHeader_n -- | GlonassPhaseBias. -- -- GLONASS phase bias. data GlonassPhaseBias = GlonassPhaseBias { _glonassPhaseBias_signal :: Word8 -- ^ GLONASS signal. , _glonassPhaseBias_integer :: Bool -- ^ Signal Integer Indicator. , _glonassPhaseBias_wideLaneInteger :: Word8 -- ^ Signals wide-lane integer indicator. , _glonassPhaseBias_discontinuityCounter :: Word8 -- ^ Signal Discontinuity Counter. , _glonassPhaseBias_phaseBias :: Int32 -- ^ GLONASS phase bias. } deriving ( Show, Read, Eq ) $(makeLenses ''GlonassPhaseBias) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_glonassPhaseBias_" . stripPrefix "_glonassPhaseBias_"} ''GlonassPhaseBias) instance BinaryBit GlonassPhaseBias where getBits _n = do _glonassPhaseBias_signal <- B.getWord8 5 _glonassPhaseBias_integer <- B.getBool _glonassPhaseBias_wideLaneInteger <- B.getWord8 2 _glonassPhaseBias_discontinuityCounter <- B.getWord8 4 _glonassPhaseBias_phaseBias <- getInt32be 20 pure GlonassPhaseBias {..} putBits _n GlonassPhaseBias {..} = do B.putWord8 5 _glonassPhaseBias_signal B.putBool _glonassPhaseBias_integer B.putWord8 2 _glonassPhaseBias_wideLaneInteger B.putWord8 4 _glonassPhaseBias_discontinuityCounter putInt32be 20 _glonassPhaseBias_phaseBias -- | GlonassPhaseBiasCorrectionMessage. -- -- GLONASS phase bias correction message. data GlonassPhaseBiasCorrection = GlonassPhaseBiasCorrection { _glonassPhaseBiasCorrection_sat :: Word8 -- ^ GLONASS satellite id. , _glonassPhaseBiasCorrection_n :: Word8 -- ^ Number of biases. , _glonassPhaseBiasCorrection_yawAngle :: Word16 -- ^ Yaw angle. , _glonassPhaseBiasCorrection_yawRate :: Int8 -- ^ Yaw rate. , _glonassPhaseBiasCorrection_phaseBiases :: [GlonassPhaseBias] -- ^ GLONASS phase biases. } deriving ( Show, Read, Eq ) $(makeLenses ''GlonassPhaseBiasCorrection) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_glonassPhaseBiasCorrection_" . stripPrefix "_glonassPhaseBiasCorrection_"} ''GlonassPhaseBiasCorrection) instance BinaryBit GlonassPhaseBiasCorrection where getBits _n = do _glonassPhaseBiasCorrection_sat <- B.getWord8 5 _glonassPhaseBiasCorrection_n <- B.getWord8 5 _glonassPhaseBiasCorrection_yawAngle <- B.getWord16be 9 _glonassPhaseBiasCorrection_yawRate <- getInt8 8 _glonassPhaseBiasCorrection_phaseBiases <- replicateM (fromIntegral _glonassPhaseBiasCorrection_n) $ getBits 0 pure GlonassPhaseBiasCorrection {..} putBits _n GlonassPhaseBiasCorrection {..} = do B.putWord8 5 _glonassPhaseBiasCorrection_sat B.putWord8 5 _glonassPhaseBiasCorrection_n B.putWord16be 9 _glonassPhaseBiasCorrection_yawAngle putInt8 8 _glonassPhaseBiasCorrection_yawRate forM_ _glonassPhaseBiasCorrection_phaseBiases $ putBits 0 msg1057 :: Word16 msg1057 = 1057 -- | Msg 1057. -- -- RTCMv3 message 1057. data Msg1057 = Msg1057 { _msg1057_header :: GpsOrbitCorrectionHeader -- ^ GPS orbit correction header. , _msg1057_corrections :: [GpsOrbitCorrection] -- ^ GPS orbit corrections. } deriving ( Show, Read, Eq ) $(makeLenses ''Msg1057) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msg1057_" . stripPrefix "_msg1057_"} ''Msg1057) instance Binary Msg1057 where get = B.runBitGet $ do _msg1057_header <- getBits 0 _msg1057_corrections <- replicateM (fromIntegral $ _msg1057_header ^. gpsOrbitCorrectionHeader_n) $ getBits 0 pure Msg1057 {..} put Msg1057 {..} = B.runBitPut $ do putBits 0 _msg1057_header forM_ _msg1057_corrections $ putBits 0 $(deriveRTCM3 ''Msg1057) msg1058 :: Word16 msg1058 = 1058 -- | Msg 1058. -- -- RTCMv3 message 1058. data Msg1058 = Msg1058 { _msg1058_header :: GpsClockCorrectionHeader -- ^ GPS clock correction header. , _msg1058_corrections :: [GpsClockCorrection] -- ^ GPS clock corrections. } deriving ( Show, Read, Eq ) $(makeLenses ''Msg1058) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msg1058_" . stripPrefix "_msg1058_"} ''Msg1058) instance Binary Msg1058 where get = B.runBitGet $ do _msg1058_header <- getBits 0 _msg1058_corrections <- replicateM (fromIntegral $ _msg1058_header ^. gpsClockCorrectionHeader_n) $ getBits 0 pure Msg1058 {..} put Msg1058 {..} = B.runBitPut $ do putBits 0 _msg1058_header forM_ _msg1058_corrections $ putBits 0 $(deriveRTCM3 ''Msg1058) msg1063 :: Word16 msg1063 = 1063 -- | Msg 1063. -- -- RTCMv3 message 1063. data Msg1063 = Msg1063 { _msg1063_header :: GlonassOrbitCorrectionHeader -- ^ GLONASS orbit correction header. , _msg1063_corrections :: [GlonassOrbitCorrection] -- ^ GLONASS orbit corrections. } deriving ( Show, Read, Eq ) $(makeLenses ''Msg1063) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msg1063_" . stripPrefix "_msg1063_"} ''Msg1063) instance Binary Msg1063 where get = B.runBitGet $ do _msg1063_header <- getBits 0 _msg1063_corrections <- replicateM (fromIntegral $ _msg1063_header ^. glonassOrbitCorrectionHeader_n) $ getBits 0 pure Msg1063 {..} put Msg1063 {..} = B.runBitPut $ do putBits 0 _msg1063_header forM_ _msg1063_corrections $ putBits 0 $(deriveRTCM3 ''Msg1063) msg1064 :: Word16 msg1064 = 1064 -- | Msg 1064. -- -- RTCMv3 message 1064. data Msg1064 = Msg1064 { _msg1064_header :: GlonassClockCorrectionHeader -- ^ GLONASS clock correction header. , _msg1064_corrections :: [GlonassClockCorrection] -- ^ GLONASS clock corrections. } deriving ( Show, Read, Eq ) $(makeLenses ''Msg1064) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msg1064_" . stripPrefix "_msg1064_"} ''Msg1064) instance Binary Msg1064 where get = B.runBitGet $ do _msg1064_header <- getBits 0 _msg1064_corrections <- replicateM (fromIntegral $ _msg1064_header ^. glonassClockCorrectionHeader_n) $ getBits 0 pure Msg1064 {..} put Msg1064 {..} = B.runBitPut $ do putBits 0 _msg1064_header forM_ _msg1064_corrections $ putBits 0 $(deriveRTCM3 ''Msg1064) msg1060 :: Word16 msg1060 = 1060 -- | Msg 1060. -- -- RTCMv3 message 1060. data Msg1060 = Msg1060 { _msg1060_header :: GpsOrbitClockCorrectionHeader -- ^ GPS orbit correction header. , _msg1060_corrections :: [GpsOrbitClockCorrection] -- ^ GPS orbit corrections. } deriving ( Show, Read, Eq ) $(makeLenses ''Msg1060) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msg1060_" . stripPrefix "_msg1060_"} ''Msg1060) instance Binary Msg1060 where get = B.runBitGet $ do _msg1060_header <- getBits 0 _msg1060_corrections <- replicateM (fromIntegral $ _msg1060_header ^. gpsOrbitClockCorrectionHeader_n) $ getBits 0 pure Msg1060 {..} put Msg1060 {..} = B.runBitPut $ do putBits 0 _msg1060_header forM_ _msg1060_corrections $ putBits 0 $(deriveRTCM3 ''Msg1060) msg1066 :: Word16 msg1066 = 1066 -- | Msg 1066. -- -- RTCMv3 message 1066. data Msg1066 = Msg1066 { _msg1066_header :: GlonassOrbitClockCorrectionHeader -- ^ GLONASS orbit correction header. , _msg1066_corrections :: [GlonassOrbitClockCorrection] -- ^ GLONASS orbit corrections. } deriving ( Show, Read, Eq ) $(makeLenses ''Msg1066) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msg1066_" . stripPrefix "_msg1066_"} ''Msg1066) instance Binary Msg1066 where get = B.runBitGet $ do _msg1066_header <- getBits 0 _msg1066_corrections <- replicateM (fromIntegral $ _msg1066_header ^. glonassOrbitClockCorrectionHeader_n) $ getBits 0 pure Msg1066 {..} put Msg1066 {..} = B.runBitPut $ do putBits 0 _msg1066_header forM_ _msg1066_corrections $ putBits 0 $(deriveRTCM3 ''Msg1066) msg1059 :: Word16 msg1059 = 1059 -- | Msg 1059. -- -- RTCMv3 message 1059. data Msg1059 = Msg1059 { _msg1059_header :: GpsCodeBiasCorrectionHeader -- ^ GPS code bias correction header. , _msg1059_corrections :: [GpsCodeBiasCorrection] -- ^ GPS code bias corrections. } deriving ( Show, Read, Eq ) $(makeLenses ''Msg1059) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msg1059_" . stripPrefix "_msg1059_"} ''Msg1059) instance Binary Msg1059 where get = B.runBitGet $ do _msg1059_header <- getBits 0 _msg1059_corrections <- replicateM (fromIntegral $ _msg1059_header ^. gpsCodeBiasCorrectionHeader_n) $ getBits 0 pure Msg1059 {..} put Msg1059 {..} = B.runBitPut $ do putBits 0 _msg1059_header forM_ _msg1059_corrections $ putBits 0 $(deriveRTCM3 ''Msg1059) msg1065 :: Word16 msg1065 = 1065 -- | Msg 1065. -- -- RTCMv3 message 1065. data Msg1065 = Msg1065 { _msg1065_header :: GlonassCodeBiasCorrectionHeader -- ^ GLONASS code bias correction header. , _msg1065_corrections :: [GlonassCodeBiasCorrection] -- ^ GLONASS code bias corrections. } deriving ( Show, Read, Eq ) $(makeLenses ''Msg1065) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msg1065_" . stripPrefix "_msg1065_"} ''Msg1065) instance Binary Msg1065 where get = B.runBitGet $ do _msg1065_header <- getBits 0 _msg1065_corrections <- replicateM (fromIntegral $ _msg1065_header ^. glonassCodeBiasCorrectionHeader_n) $ getBits 0 pure Msg1065 {..} put Msg1065 {..} = B.runBitPut $ do putBits 0 _msg1065_header forM_ _msg1065_corrections $ putBits 0 $(deriveRTCM3 ''Msg1065) msg1265 :: Word16 msg1265 = 1265 -- | Msg 1265. -- -- RTCMv3 message 1265. data Msg1265 = Msg1265 { _msg1265_header :: GpsPhaseBiasCorrectionHeader -- ^ GPS phase bias correction header. , _msg1265_corrections :: [GpsPhaseBiasCorrection] -- ^ GPS phase bias corrections. } deriving ( Show, Read, Eq ) $(makeLenses ''Msg1265) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msg1265_" . stripPrefix "_msg1265_"} ''Msg1265) instance Binary Msg1265 where get = B.runBitGet $ do _msg1265_header <- getBits 0 _msg1265_corrections <- replicateM (fromIntegral $ _msg1265_header ^. gpsPhaseBiasCorrectionHeader_n) $ getBits 0 pure Msg1265 {..} put Msg1265 {..} = B.runBitPut $ do putBits 0 _msg1265_header forM_ _msg1265_corrections $ putBits 0 $(deriveRTCM3 ''Msg1265) msg1266 :: Word16 msg1266 = 1266 -- | Msg 1266. -- -- RTCMv3 message 1266. data Msg1266 = Msg1266 { _msg1266_header :: GlonassPhaseBiasCorrectionHeader -- ^ GLONASS phase bias correction header. , _msg1266_corrections :: [GlonassPhaseBiasCorrection] -- ^ GLONASS phase bias corrections. } deriving ( Show, Read, Eq ) $(makeLenses ''Msg1266) $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msg1266_" . stripPrefix "_msg1266_"} ''Msg1266) instance Binary Msg1266 where get = B.runBitGet $ do _msg1266_header <- getBits 0 _msg1266_corrections <- replicateM (fromIntegral $ _msg1266_header ^. glonassPhaseBiasCorrectionHeader_n) $ getBits 0 pure Msg1266 {..} put Msg1266 {..} = B.runBitPut $ do putBits 0 _msg1266_header forM_ _msg1266_corrections $ putBits 0 $(deriveRTCM3 ''Msg1266)