{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# LANGUAGE NoImplicitPrelude           #-}
{-# LANGUAGE TemplateHaskell             #-}
{-# LANGUAGE RecordWildCards             #-}

-- |
-- Module:      SwiftNav.SBP.Observation
-- Copyright:   Copyright (C) 2015-2021 Swift Navigation, Inc.
-- License:     MIT
-- Contact:     https://support.swiftnav.com
-- Stability:   experimental
-- Portability: portable
--
-- \< Satellite observation messages from the device. The SBP sender ID of 0
-- indicates remote observations from a GNSS base station, correction network,
-- or Skylark, Swift's cloud GNSS correction product. \>

module SwiftNav.SBP.Observation
  ( module SwiftNav.SBP.Observation
  ) where

import BasicPrelude
import Control.Lens
import Control.Monad.Loops
import Data.Binary
import Data.Binary.Get
import Data.Binary.IEEE754
import Data.Binary.Put
import Data.ByteString.Lazy    hiding (ByteString)
import Data.Int
import Data.Word
import SwiftNav.SBP.TH
import SwiftNav.SBP.Types
import SwiftNav.SBP.Gnss

{-# ANN module ("HLint: ignore Use camelCase"::String) #-}
{-# ANN module ("HLint: ignore Redundant do"::String) #-}
{-# ANN module ("HLint: ignore Use newtype instead of data"::String) #-}


-- | ObservationHeader.
--
-- Header of a GNSS observation message.
data ObservationHeader = ObservationHeader
  { ObservationHeader -> GpsTime
_observationHeader_t   :: !GpsTime
    -- ^ GNSS time of this observation
  , ObservationHeader -> Word8
_observationHeader_n_obs :: !Word8
    -- ^ Total number of observations. First nibble is the size of the sequence
    -- (n), second nibble is the zero-indexed counter (ith packet of n)
  } deriving ( Int -> ObservationHeader -> ShowS
[ObservationHeader] -> ShowS
ObservationHeader -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ObservationHeader] -> ShowS
$cshowList :: [ObservationHeader] -> ShowS
show :: ObservationHeader -> String
$cshow :: ObservationHeader -> String
showsPrec :: Int -> ObservationHeader -> ShowS
$cshowsPrec :: Int -> ObservationHeader -> ShowS
Show, ReadPrec [ObservationHeader]
ReadPrec ObservationHeader
Int -> ReadS ObservationHeader
ReadS [ObservationHeader]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ObservationHeader]
$creadListPrec :: ReadPrec [ObservationHeader]
readPrec :: ReadPrec ObservationHeader
$creadPrec :: ReadPrec ObservationHeader
readList :: ReadS [ObservationHeader]
$creadList :: ReadS [ObservationHeader]
readsPrec :: Int -> ReadS ObservationHeader
$creadsPrec :: Int -> ReadS ObservationHeader
Read, ObservationHeader -> ObservationHeader -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ObservationHeader -> ObservationHeader -> Bool
$c/= :: ObservationHeader -> ObservationHeader -> Bool
== :: ObservationHeader -> ObservationHeader -> Bool
$c== :: ObservationHeader -> ObservationHeader -> Bool
Eq )

instance Binary ObservationHeader where
  get :: Get ObservationHeader
get = do
    GpsTime
_observationHeader_t <- forall t. Binary t => Get t
get
    Word8
_observationHeader_n_obs <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure ObservationHeader {Word8
GpsTime
_observationHeader_n_obs :: Word8
_observationHeader_t :: GpsTime
_observationHeader_n_obs :: Word8
_observationHeader_t :: GpsTime
..}

  put :: ObservationHeader -> Put
put ObservationHeader {Word8
GpsTime
_observationHeader_n_obs :: Word8
_observationHeader_t :: GpsTime
_observationHeader_n_obs :: ObservationHeader -> Word8
_observationHeader_t :: ObservationHeader -> GpsTime
..} = do
    forall t. Binary t => t -> Put
put GpsTime
_observationHeader_t
    Word8 -> Put
putWord8 Word8
_observationHeader_n_obs

$(makeJSON "_observationHeader_" ''ObservationHeader)
$(makeLenses ''ObservationHeader)

-- | Doppler.
--
-- Doppler measurement in Hz represented as a 24-bit fixed point number with
-- Q16.8 layout, i.e. 16-bits of whole doppler and 8-bits of fractional
-- doppler. This doppler is defined as positive for approaching satellites.
data Doppler = Doppler
  { Doppler -> Int16
_doppler_i :: !Int16
    -- ^ Doppler whole Hz
  , Doppler -> Word8
_doppler_f :: !Word8
    -- ^ Doppler fractional part
  } deriving ( Int -> Doppler -> ShowS
[Doppler] -> ShowS
Doppler -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Doppler] -> ShowS
$cshowList :: [Doppler] -> ShowS
show :: Doppler -> String
$cshow :: Doppler -> String
showsPrec :: Int -> Doppler -> ShowS
$cshowsPrec :: Int -> Doppler -> ShowS
Show, ReadPrec [Doppler]
ReadPrec Doppler
Int -> ReadS Doppler
ReadS [Doppler]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Doppler]
$creadListPrec :: ReadPrec [Doppler]
readPrec :: ReadPrec Doppler
$creadPrec :: ReadPrec Doppler
readList :: ReadS [Doppler]
$creadList :: ReadS [Doppler]
readsPrec :: Int -> ReadS Doppler
$creadsPrec :: Int -> ReadS Doppler
Read, Doppler -> Doppler -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Doppler -> Doppler -> Bool
$c/= :: Doppler -> Doppler -> Bool
== :: Doppler -> Doppler -> Bool
$c== :: Doppler -> Doppler -> Bool
Eq )

instance Binary Doppler where
  get :: Get Doppler
get = do
    Int16
_doppler_i <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    Word8
_doppler_f <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure Doppler {Int16
Word8
_doppler_f :: Word8
_doppler_i :: Int16
_doppler_f :: Word8
_doppler_i :: Int16
..}

  put :: Doppler -> Put
put Doppler {Int16
Word8
_doppler_f :: Word8
_doppler_i :: Int16
_doppler_f :: Doppler -> Word8
_doppler_i :: Doppler -> Int16
..} = do
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_doppler_i
    Word8 -> Put
putWord8 Word8
_doppler_f

$(makeJSON "_doppler_" ''Doppler)
$(makeLenses ''Doppler)

-- | PackedObsContent.
--
-- Pseudorange and carrier phase observation for a satellite being tracked.
-- The observations are interoperable with 3rd party receivers and conform
-- with typical RTCM 3.1 message GPS/GLO observations.
--
-- Carrier phase observations are not guaranteed to be aligned to the RINEX 3
-- or RTCM 3.3 MSM reference signal and no 1/4 cycle adjustments are currently
-- performed.
data PackedObsContent = PackedObsContent
  { PackedObsContent -> Word32
_packedObsContent_P   :: !Word32
    -- ^ Pseudorange observation
  , PackedObsContent -> CarrierPhase
_packedObsContent_L   :: !CarrierPhase
    -- ^ Carrier phase observation with typical sign convention.
  , PackedObsContent -> Doppler
_packedObsContent_D   :: !Doppler
    -- ^ Doppler observation with typical sign convention.
  , PackedObsContent -> Word8
_packedObsContent_cn0 :: !Word8
    -- ^ Carrier-to-Noise density.  Zero implies invalid cn0.
  , PackedObsContent -> Word8
_packedObsContent_lock :: !Word8
    -- ^ Lock timer. This value gives an indication of the time for which a
    -- signal has maintained continuous phase lock. Whenever a signal has lost
    -- and regained lock, this value is reset to zero. It is encoded according
    -- to DF402 from the RTCM 10403.2 Amendment 2 specification.  Valid values
    -- range from 0 to 15 and the most significant nibble is reserved for
    -- future use.
  , PackedObsContent -> Word8
_packedObsContent_flags :: !Word8
    -- ^ Measurement status flags. A bit field of flags providing the status of
    -- this observation.  If this field is 0 it means only the Cn0 estimate
    -- for the signal is valid.
  , PackedObsContent -> GnssSignal
_packedObsContent_sid :: !GnssSignal
    -- ^ GNSS signal identifier (16 bit)
  } deriving ( Int -> PackedObsContent -> ShowS
[PackedObsContent] -> ShowS
PackedObsContent -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PackedObsContent] -> ShowS
$cshowList :: [PackedObsContent] -> ShowS
show :: PackedObsContent -> String
$cshow :: PackedObsContent -> String
showsPrec :: Int -> PackedObsContent -> ShowS
$cshowsPrec :: Int -> PackedObsContent -> ShowS
Show, ReadPrec [PackedObsContent]
ReadPrec PackedObsContent
Int -> ReadS PackedObsContent
ReadS [PackedObsContent]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PackedObsContent]
$creadListPrec :: ReadPrec [PackedObsContent]
readPrec :: ReadPrec PackedObsContent
$creadPrec :: ReadPrec PackedObsContent
readList :: ReadS [PackedObsContent]
$creadList :: ReadS [PackedObsContent]
readsPrec :: Int -> ReadS PackedObsContent
$creadsPrec :: Int -> ReadS PackedObsContent
Read, PackedObsContent -> PackedObsContent -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PackedObsContent -> PackedObsContent -> Bool
$c/= :: PackedObsContent -> PackedObsContent -> Bool
== :: PackedObsContent -> PackedObsContent -> Bool
$c== :: PackedObsContent -> PackedObsContent -> Bool
Eq )

instance Binary PackedObsContent where
  get :: Get PackedObsContent
get = do
    Word32
_packedObsContent_P <- Get Word32
getWord32le
    CarrierPhase
_packedObsContent_L <- forall t. Binary t => Get t
get
    Doppler
_packedObsContent_D <- forall t. Binary t => Get t
get
    Word8
_packedObsContent_cn0 <- Get Word8
getWord8
    Word8
_packedObsContent_lock <- Get Word8
getWord8
    Word8
_packedObsContent_flags <- Get Word8
getWord8
    GnssSignal
_packedObsContent_sid <- forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure PackedObsContent {Word8
Word32
GnssSignal
CarrierPhase
Doppler
_packedObsContent_sid :: GnssSignal
_packedObsContent_flags :: Word8
_packedObsContent_lock :: Word8
_packedObsContent_cn0 :: Word8
_packedObsContent_D :: Doppler
_packedObsContent_L :: CarrierPhase
_packedObsContent_P :: Word32
_packedObsContent_sid :: GnssSignal
_packedObsContent_flags :: Word8
_packedObsContent_lock :: Word8
_packedObsContent_cn0 :: Word8
_packedObsContent_D :: Doppler
_packedObsContent_L :: CarrierPhase
_packedObsContent_P :: Word32
..}

  put :: PackedObsContent -> Put
put PackedObsContent {Word8
Word32
GnssSignal
CarrierPhase
Doppler
_packedObsContent_sid :: GnssSignal
_packedObsContent_flags :: Word8
_packedObsContent_lock :: Word8
_packedObsContent_cn0 :: Word8
_packedObsContent_D :: Doppler
_packedObsContent_L :: CarrierPhase
_packedObsContent_P :: Word32
_packedObsContent_sid :: PackedObsContent -> GnssSignal
_packedObsContent_flags :: PackedObsContent -> Word8
_packedObsContent_lock :: PackedObsContent -> Word8
_packedObsContent_cn0 :: PackedObsContent -> Word8
_packedObsContent_D :: PackedObsContent -> Doppler
_packedObsContent_L :: PackedObsContent -> CarrierPhase
_packedObsContent_P :: PackedObsContent -> Word32
..} = do
    Word32 -> Put
putWord32le Word32
_packedObsContent_P
    forall t. Binary t => t -> Put
put CarrierPhase
_packedObsContent_L
    forall t. Binary t => t -> Put
put Doppler
_packedObsContent_D
    Word8 -> Put
putWord8 Word8
_packedObsContent_cn0
    Word8 -> Put
putWord8 Word8
_packedObsContent_lock
    Word8 -> Put
putWord8 Word8
_packedObsContent_flags
    forall t. Binary t => t -> Put
put GnssSignal
_packedObsContent_sid

$(makeJSON "_packedObsContent_" ''PackedObsContent)
$(makeLenses ''PackedObsContent)

-- | PackedOsrContent.
--
-- Pseudorange and carrier phase network corrections for a satellite signal.
data PackedOsrContent = PackedOsrContent
  { PackedOsrContent -> Word32
_packedOsrContent_P       :: !Word32
    -- ^ Pseudorange observation
  , PackedOsrContent -> CarrierPhase
_packedOsrContent_L       :: !CarrierPhase
    -- ^ Carrier phase observation with typical sign convention.
  , PackedOsrContent -> Word8
_packedOsrContent_lock    :: !Word8
    -- ^ Lock timer. This value gives an indication of the time for which a
    -- signal has maintained continuous phase lock. Whenever a signal has lost
    -- and regained lock, this value is reset to zero. It is encoded according
    -- to DF402 from the RTCM 10403.2 Amendment 2 specification.  Valid values
    -- range from 0 to 15 and the most significant nibble is reserved for
    -- future use.
  , PackedOsrContent -> Word8
_packedOsrContent_flags   :: !Word8
    -- ^ Correction flags.
  , PackedOsrContent -> GnssSignal
_packedOsrContent_sid     :: !GnssSignal
    -- ^ GNSS signal identifier (16 bit)
  , PackedOsrContent -> Word16
_packedOsrContent_iono_std :: !Word16
    -- ^ Slant ionospheric correction standard deviation
  , PackedOsrContent -> Word16
_packedOsrContent_tropo_std :: !Word16
    -- ^ Slant tropospheric correction standard deviation
  , PackedOsrContent -> Word16
_packedOsrContent_range_std :: !Word16
    -- ^ Orbit/clock/bias correction projected on range standard deviation
  } deriving ( Int -> PackedOsrContent -> ShowS
[PackedOsrContent] -> ShowS
PackedOsrContent -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PackedOsrContent] -> ShowS
$cshowList :: [PackedOsrContent] -> ShowS
show :: PackedOsrContent -> String
$cshow :: PackedOsrContent -> String
showsPrec :: Int -> PackedOsrContent -> ShowS
$cshowsPrec :: Int -> PackedOsrContent -> ShowS
Show, ReadPrec [PackedOsrContent]
ReadPrec PackedOsrContent
Int -> ReadS PackedOsrContent
ReadS [PackedOsrContent]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PackedOsrContent]
$creadListPrec :: ReadPrec [PackedOsrContent]
readPrec :: ReadPrec PackedOsrContent
$creadPrec :: ReadPrec PackedOsrContent
readList :: ReadS [PackedOsrContent]
$creadList :: ReadS [PackedOsrContent]
readsPrec :: Int -> ReadS PackedOsrContent
$creadsPrec :: Int -> ReadS PackedOsrContent
Read, PackedOsrContent -> PackedOsrContent -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PackedOsrContent -> PackedOsrContent -> Bool
$c/= :: PackedOsrContent -> PackedOsrContent -> Bool
== :: PackedOsrContent -> PackedOsrContent -> Bool
$c== :: PackedOsrContent -> PackedOsrContent -> Bool
Eq )

instance Binary PackedOsrContent where
  get :: Get PackedOsrContent
get = do
    Word32
_packedOsrContent_P <- Get Word32
getWord32le
    CarrierPhase
_packedOsrContent_L <- forall t. Binary t => Get t
get
    Word8
_packedOsrContent_lock <- Get Word8
getWord8
    Word8
_packedOsrContent_flags <- Get Word8
getWord8
    GnssSignal
_packedOsrContent_sid <- forall t. Binary t => Get t
get
    Word16
_packedOsrContent_iono_std <- Get Word16
getWord16le
    Word16
_packedOsrContent_tropo_std <- Get Word16
getWord16le
    Word16
_packedOsrContent_range_std <- Get Word16
getWord16le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure PackedOsrContent {Word8
Word16
Word32
GnssSignal
CarrierPhase
_packedOsrContent_range_std :: Word16
_packedOsrContent_tropo_std :: Word16
_packedOsrContent_iono_std :: Word16
_packedOsrContent_sid :: GnssSignal
_packedOsrContent_flags :: Word8
_packedOsrContent_lock :: Word8
_packedOsrContent_L :: CarrierPhase
_packedOsrContent_P :: Word32
_packedOsrContent_range_std :: Word16
_packedOsrContent_tropo_std :: Word16
_packedOsrContent_iono_std :: Word16
_packedOsrContent_sid :: GnssSignal
_packedOsrContent_flags :: Word8
_packedOsrContent_lock :: Word8
_packedOsrContent_L :: CarrierPhase
_packedOsrContent_P :: Word32
..}

  put :: PackedOsrContent -> Put
put PackedOsrContent {Word8
Word16
Word32
GnssSignal
CarrierPhase
_packedOsrContent_range_std :: Word16
_packedOsrContent_tropo_std :: Word16
_packedOsrContent_iono_std :: Word16
_packedOsrContent_sid :: GnssSignal
_packedOsrContent_flags :: Word8
_packedOsrContent_lock :: Word8
_packedOsrContent_L :: CarrierPhase
_packedOsrContent_P :: Word32
_packedOsrContent_range_std :: PackedOsrContent -> Word16
_packedOsrContent_tropo_std :: PackedOsrContent -> Word16
_packedOsrContent_iono_std :: PackedOsrContent -> Word16
_packedOsrContent_sid :: PackedOsrContent -> GnssSignal
_packedOsrContent_flags :: PackedOsrContent -> Word8
_packedOsrContent_lock :: PackedOsrContent -> Word8
_packedOsrContent_L :: PackedOsrContent -> CarrierPhase
_packedOsrContent_P :: PackedOsrContent -> Word32
..} = do
    Word32 -> Put
putWord32le Word32
_packedOsrContent_P
    forall t. Binary t => t -> Put
put CarrierPhase
_packedOsrContent_L
    Word8 -> Put
putWord8 Word8
_packedOsrContent_lock
    Word8 -> Put
putWord8 Word8
_packedOsrContent_flags
    forall t. Binary t => t -> Put
put GnssSignal
_packedOsrContent_sid
    Word16 -> Put
putWord16le Word16
_packedOsrContent_iono_std
    Word16 -> Put
putWord16le Word16
_packedOsrContent_tropo_std
    Word16 -> Put
putWord16le Word16
_packedOsrContent_range_std

$(makeJSON "_packedOsrContent_" ''PackedOsrContent)
$(makeLenses ''PackedOsrContent)

msgObs :: Word16
msgObs :: Word16
msgObs = Word16
0x004A

-- | SBP class for message MSG_OBS (0x004A).
--
-- The GPS observations message reports all the raw pseudorange and carrier
-- phase observations for the satellites being tracked by the device. Carrier
-- phase observation here is represented as a 40-bit fixed point number with
-- Q32.8 layout (i.e. 32-bits of whole cycles and 8-bits of fractional
-- cycles). The observations are be interoperable with 3rd party receivers and
-- conform with typical RTCMv3 GNSS observations.
data MsgObs = MsgObs
  { MsgObs -> ObservationHeader
_msgObs_header :: !ObservationHeader
    -- ^ Header of a GPS observation message
  , MsgObs -> [PackedObsContent]
_msgObs_obs  :: ![PackedObsContent]
    -- ^ Pseudorange and carrier phase observation for a satellite being
    -- tracked.
  } deriving ( Int -> MsgObs -> ShowS
[MsgObs] -> ShowS
MsgObs -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgObs] -> ShowS
$cshowList :: [MsgObs] -> ShowS
show :: MsgObs -> String
$cshow :: MsgObs -> String
showsPrec :: Int -> MsgObs -> ShowS
$cshowsPrec :: Int -> MsgObs -> ShowS
Show, ReadPrec [MsgObs]
ReadPrec MsgObs
Int -> ReadS MsgObs
ReadS [MsgObs]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgObs]
$creadListPrec :: ReadPrec [MsgObs]
readPrec :: ReadPrec MsgObs
$creadPrec :: ReadPrec MsgObs
readList :: ReadS [MsgObs]
$creadList :: ReadS [MsgObs]
readsPrec :: Int -> ReadS MsgObs
$creadsPrec :: Int -> ReadS MsgObs
Read, MsgObs -> MsgObs -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgObs -> MsgObs -> Bool
$c/= :: MsgObs -> MsgObs -> Bool
== :: MsgObs -> MsgObs -> Bool
$c== :: MsgObs -> MsgObs -> Bool
Eq )

instance Binary MsgObs where
  get :: Get MsgObs
get = do
    ObservationHeader
_msgObs_header <- forall t. Binary t => Get t
get
    [PackedObsContent]
_msgObs_obs <- forall (m :: * -> *) a. Monad m => m Bool -> m a -> m [a]
whileM (Bool -> Bool
not forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Bool
isEmpty) forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgObs {[PackedObsContent]
ObservationHeader
_msgObs_obs :: [PackedObsContent]
_msgObs_header :: ObservationHeader
_msgObs_obs :: [PackedObsContent]
_msgObs_header :: ObservationHeader
..}

  put :: MsgObs -> Put
put MsgObs {[PackedObsContent]
ObservationHeader
_msgObs_obs :: [PackedObsContent]
_msgObs_header :: ObservationHeader
_msgObs_obs :: MsgObs -> [PackedObsContent]
_msgObs_header :: MsgObs -> ObservationHeader
..} = do
    forall t. Binary t => t -> Put
put ObservationHeader
_msgObs_header
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ forall t. Binary t => t -> Put
put [PackedObsContent]
_msgObs_obs

$(makeSBP 'msgObs ''MsgObs)
$(makeJSON "_msgObs_" ''MsgObs)
$(makeLenses ''MsgObs)

msgBasePosLlh :: Word16
msgBasePosLlh :: Word16
msgBasePosLlh = Word16
0x0044

-- | SBP class for message MSG_BASE_POS_LLH (0x0044).
--
-- The base station position message is the position reported by the base
-- station itself. It is used for pseudo-absolute RTK positioning, and is
-- required to be a high-accuracy surveyed location of the base station. Any
-- error here will result in an error in the pseudo-absolute position output.
data MsgBasePosLlh = MsgBasePosLlh
  { MsgBasePosLlh -> Double
_msgBasePosLlh_lat  :: !Double
    -- ^ Latitude
  , MsgBasePosLlh -> Double
_msgBasePosLlh_lon  :: !Double
    -- ^ Longitude
  , MsgBasePosLlh -> Double
_msgBasePosLlh_height :: !Double
    -- ^ Height
  } deriving ( Int -> MsgBasePosLlh -> ShowS
[MsgBasePosLlh] -> ShowS
MsgBasePosLlh -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgBasePosLlh] -> ShowS
$cshowList :: [MsgBasePosLlh] -> ShowS
show :: MsgBasePosLlh -> String
$cshow :: MsgBasePosLlh -> String
showsPrec :: Int -> MsgBasePosLlh -> ShowS
$cshowsPrec :: Int -> MsgBasePosLlh -> ShowS
Show, ReadPrec [MsgBasePosLlh]
ReadPrec MsgBasePosLlh
Int -> ReadS MsgBasePosLlh
ReadS [MsgBasePosLlh]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgBasePosLlh]
$creadListPrec :: ReadPrec [MsgBasePosLlh]
readPrec :: ReadPrec MsgBasePosLlh
$creadPrec :: ReadPrec MsgBasePosLlh
readList :: ReadS [MsgBasePosLlh]
$creadList :: ReadS [MsgBasePosLlh]
readsPrec :: Int -> ReadS MsgBasePosLlh
$creadsPrec :: Int -> ReadS MsgBasePosLlh
Read, MsgBasePosLlh -> MsgBasePosLlh -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgBasePosLlh -> MsgBasePosLlh -> Bool
$c/= :: MsgBasePosLlh -> MsgBasePosLlh -> Bool
== :: MsgBasePosLlh -> MsgBasePosLlh -> Bool
$c== :: MsgBasePosLlh -> MsgBasePosLlh -> Bool
Eq )

instance Binary MsgBasePosLlh where
  get :: Get MsgBasePosLlh
get = do
    Double
_msgBasePosLlh_lat <- Get Double
getFloat64le
    Double
_msgBasePosLlh_lon <- Get Double
getFloat64le
    Double
_msgBasePosLlh_height <- Get Double
getFloat64le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgBasePosLlh {Double
_msgBasePosLlh_height :: Double
_msgBasePosLlh_lon :: Double
_msgBasePosLlh_lat :: Double
_msgBasePosLlh_height :: Double
_msgBasePosLlh_lon :: Double
_msgBasePosLlh_lat :: Double
..}

  put :: MsgBasePosLlh -> Put
put MsgBasePosLlh {Double
_msgBasePosLlh_height :: Double
_msgBasePosLlh_lon :: Double
_msgBasePosLlh_lat :: Double
_msgBasePosLlh_height :: MsgBasePosLlh -> Double
_msgBasePosLlh_lon :: MsgBasePosLlh -> Double
_msgBasePosLlh_lat :: MsgBasePosLlh -> Double
..} = do
    Double -> Put
putFloat64le Double
_msgBasePosLlh_lat
    Double -> Put
putFloat64le Double
_msgBasePosLlh_lon
    Double -> Put
putFloat64le Double
_msgBasePosLlh_height

$(makeSBP 'msgBasePosLlh ''MsgBasePosLlh)
$(makeJSON "_msgBasePosLlh_" ''MsgBasePosLlh)
$(makeLenses ''MsgBasePosLlh)

msgBasePosEcef :: Word16
msgBasePosEcef :: Word16
msgBasePosEcef = Word16
0x0048

-- | SBP class for message MSG_BASE_POS_ECEF (0x0048).
--
-- The base station position message is the position reported by the base
-- station itself in absolute Earth Centered Earth Fixed coordinates. It is
-- used for pseudo-absolute RTK positioning, and is required to be a high-
-- accuracy surveyed location of the base station. Any error here will result
-- in an error in the pseudo-absolute position output.
data MsgBasePosEcef = MsgBasePosEcef
  { MsgBasePosEcef -> Double
_msgBasePosEcef_x :: !Double
    -- ^ ECEF X coordinate
  , MsgBasePosEcef -> Double
_msgBasePosEcef_y :: !Double
    -- ^ ECEF Y coordinate
  , MsgBasePosEcef -> Double
_msgBasePosEcef_z :: !Double
    -- ^ ECEF Z coordinate
  } deriving ( Int -> MsgBasePosEcef -> ShowS
[MsgBasePosEcef] -> ShowS
MsgBasePosEcef -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgBasePosEcef] -> ShowS
$cshowList :: [MsgBasePosEcef] -> ShowS
show :: MsgBasePosEcef -> String
$cshow :: MsgBasePosEcef -> String
showsPrec :: Int -> MsgBasePosEcef -> ShowS
$cshowsPrec :: Int -> MsgBasePosEcef -> ShowS
Show, ReadPrec [MsgBasePosEcef]
ReadPrec MsgBasePosEcef
Int -> ReadS MsgBasePosEcef
ReadS [MsgBasePosEcef]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgBasePosEcef]
$creadListPrec :: ReadPrec [MsgBasePosEcef]
readPrec :: ReadPrec MsgBasePosEcef
$creadPrec :: ReadPrec MsgBasePosEcef
readList :: ReadS [MsgBasePosEcef]
$creadList :: ReadS [MsgBasePosEcef]
readsPrec :: Int -> ReadS MsgBasePosEcef
$creadsPrec :: Int -> ReadS MsgBasePosEcef
Read, MsgBasePosEcef -> MsgBasePosEcef -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgBasePosEcef -> MsgBasePosEcef -> Bool
$c/= :: MsgBasePosEcef -> MsgBasePosEcef -> Bool
== :: MsgBasePosEcef -> MsgBasePosEcef -> Bool
$c== :: MsgBasePosEcef -> MsgBasePosEcef -> Bool
Eq )

instance Binary MsgBasePosEcef where
  get :: Get MsgBasePosEcef
get = do
    Double
_msgBasePosEcef_x <- Get Double
getFloat64le
    Double
_msgBasePosEcef_y <- Get Double
getFloat64le
    Double
_msgBasePosEcef_z <- Get Double
getFloat64le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgBasePosEcef {Double
_msgBasePosEcef_z :: Double
_msgBasePosEcef_y :: Double
_msgBasePosEcef_x :: Double
_msgBasePosEcef_z :: Double
_msgBasePosEcef_y :: Double
_msgBasePosEcef_x :: Double
..}

  put :: MsgBasePosEcef -> Put
put MsgBasePosEcef {Double
_msgBasePosEcef_z :: Double
_msgBasePosEcef_y :: Double
_msgBasePosEcef_x :: Double
_msgBasePosEcef_z :: MsgBasePosEcef -> Double
_msgBasePosEcef_y :: MsgBasePosEcef -> Double
_msgBasePosEcef_x :: MsgBasePosEcef -> Double
..} = do
    Double -> Put
putFloat64le Double
_msgBasePosEcef_x
    Double -> Put
putFloat64le Double
_msgBasePosEcef_y
    Double -> Put
putFloat64le Double
_msgBasePosEcef_z

$(makeSBP 'msgBasePosEcef ''MsgBasePosEcef)
$(makeJSON "_msgBasePosEcef_" ''MsgBasePosEcef)
$(makeLenses ''MsgBasePosEcef)

data EphemerisCommonContent = EphemerisCommonContent
  { EphemerisCommonContent -> GnssSignal
_ephemerisCommonContent_sid        :: !GnssSignal
    -- ^ GNSS signal identifier (16 bit)
  , EphemerisCommonContent -> GpsTimeSec
_ephemerisCommonContent_toe        :: !GpsTimeSec
    -- ^ Time of Ephemerides
  , EphemerisCommonContent -> Float
_ephemerisCommonContent_ura        :: !Float
    -- ^ User Range Accuracy
  , EphemerisCommonContent -> Word32
_ephemerisCommonContent_fit_interval :: !Word32
    -- ^ Curve fit interval
  , EphemerisCommonContent -> Word8
_ephemerisCommonContent_valid      :: !Word8
    -- ^ Status of ephemeris, 1 = valid, 0 = invalid
  , EphemerisCommonContent -> Word8
_ephemerisCommonContent_health_bits :: !Word8
    -- ^ Satellite health status.
    -- GPS: ICD-GPS-200, chapter 20.3.3.3.1.4
    -- SBAS: 0 = valid, non-zero = invalid
    -- GLO: 0 = valid, non-zero = invalid
  } deriving ( Int -> EphemerisCommonContent -> ShowS
[EphemerisCommonContent] -> ShowS
EphemerisCommonContent -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EphemerisCommonContent] -> ShowS
$cshowList :: [EphemerisCommonContent] -> ShowS
show :: EphemerisCommonContent -> String
$cshow :: EphemerisCommonContent -> String
showsPrec :: Int -> EphemerisCommonContent -> ShowS
$cshowsPrec :: Int -> EphemerisCommonContent -> ShowS
Show, ReadPrec [EphemerisCommonContent]
ReadPrec EphemerisCommonContent
Int -> ReadS EphemerisCommonContent
ReadS [EphemerisCommonContent]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [EphemerisCommonContent]
$creadListPrec :: ReadPrec [EphemerisCommonContent]
readPrec :: ReadPrec EphemerisCommonContent
$creadPrec :: ReadPrec EphemerisCommonContent
readList :: ReadS [EphemerisCommonContent]
$creadList :: ReadS [EphemerisCommonContent]
readsPrec :: Int -> ReadS EphemerisCommonContent
$creadsPrec :: Int -> ReadS EphemerisCommonContent
Read, EphemerisCommonContent -> EphemerisCommonContent -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EphemerisCommonContent -> EphemerisCommonContent -> Bool
$c/= :: EphemerisCommonContent -> EphemerisCommonContent -> Bool
== :: EphemerisCommonContent -> EphemerisCommonContent -> Bool
$c== :: EphemerisCommonContent -> EphemerisCommonContent -> Bool
Eq )

instance Binary EphemerisCommonContent where
  get :: Get EphemerisCommonContent
get = do
    GnssSignal
_ephemerisCommonContent_sid <- forall t. Binary t => Get t
get
    GpsTimeSec
_ephemerisCommonContent_toe <- forall t. Binary t => Get t
get
    Float
_ephemerisCommonContent_ura <- Get Float
getFloat32le
    Word32
_ephemerisCommonContent_fit_interval <- Get Word32
getWord32le
    Word8
_ephemerisCommonContent_valid <- Get Word8
getWord8
    Word8
_ephemerisCommonContent_health_bits <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure EphemerisCommonContent {Float
Word8
Word32
GnssSignal
GpsTimeSec
_ephemerisCommonContent_health_bits :: Word8
_ephemerisCommonContent_valid :: Word8
_ephemerisCommonContent_fit_interval :: Word32
_ephemerisCommonContent_ura :: Float
_ephemerisCommonContent_toe :: GpsTimeSec
_ephemerisCommonContent_sid :: GnssSignal
_ephemerisCommonContent_health_bits :: Word8
_ephemerisCommonContent_valid :: Word8
_ephemerisCommonContent_fit_interval :: Word32
_ephemerisCommonContent_ura :: Float
_ephemerisCommonContent_toe :: GpsTimeSec
_ephemerisCommonContent_sid :: GnssSignal
..}

  put :: EphemerisCommonContent -> Put
put EphemerisCommonContent {Float
Word8
Word32
GnssSignal
GpsTimeSec
_ephemerisCommonContent_health_bits :: Word8
_ephemerisCommonContent_valid :: Word8
_ephemerisCommonContent_fit_interval :: Word32
_ephemerisCommonContent_ura :: Float
_ephemerisCommonContent_toe :: GpsTimeSec
_ephemerisCommonContent_sid :: GnssSignal
_ephemerisCommonContent_health_bits :: EphemerisCommonContent -> Word8
_ephemerisCommonContent_valid :: EphemerisCommonContent -> Word8
_ephemerisCommonContent_fit_interval :: EphemerisCommonContent -> Word32
_ephemerisCommonContent_ura :: EphemerisCommonContent -> Float
_ephemerisCommonContent_toe :: EphemerisCommonContent -> GpsTimeSec
_ephemerisCommonContent_sid :: EphemerisCommonContent -> GnssSignal
..} = do
    forall t. Binary t => t -> Put
put GnssSignal
_ephemerisCommonContent_sid
    forall t. Binary t => t -> Put
put GpsTimeSec
_ephemerisCommonContent_toe
    Float -> Put
putFloat32le Float
_ephemerisCommonContent_ura
    Word32 -> Put
putWord32le Word32
_ephemerisCommonContent_fit_interval
    Word8 -> Put
putWord8 Word8
_ephemerisCommonContent_valid
    Word8 -> Put
putWord8 Word8
_ephemerisCommonContent_health_bits

$(makeJSON "_ephemerisCommonContent_" ''EphemerisCommonContent)
$(makeLenses ''EphemerisCommonContent)

data EphemerisCommonContentDepB = EphemerisCommonContentDepB
  { EphemerisCommonContentDepB -> GnssSignal
_ephemerisCommonContentDepB_sid        :: !GnssSignal
    -- ^ GNSS signal identifier (16 bit)
  , EphemerisCommonContentDepB -> GpsTimeSec
_ephemerisCommonContentDepB_toe        :: !GpsTimeSec
    -- ^ Time of Ephemerides
  , EphemerisCommonContentDepB -> Double
_ephemerisCommonContentDepB_ura        :: !Double
    -- ^ User Range Accuracy
  , EphemerisCommonContentDepB -> Word32
_ephemerisCommonContentDepB_fit_interval :: !Word32
    -- ^ Curve fit interval
  , EphemerisCommonContentDepB -> Word8
_ephemerisCommonContentDepB_valid      :: !Word8
    -- ^ Status of ephemeris, 1 = valid, 0 = invalid
  , EphemerisCommonContentDepB -> Word8
_ephemerisCommonContentDepB_health_bits :: !Word8
    -- ^ Satellite health status.
    -- GPS: ICD-GPS-200, chapter 20.3.3.3.1.4
    -- Others: 0 = valid, non-zero = invalid
  } deriving ( Int -> EphemerisCommonContentDepB -> ShowS
[EphemerisCommonContentDepB] -> ShowS
EphemerisCommonContentDepB -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EphemerisCommonContentDepB] -> ShowS
$cshowList :: [EphemerisCommonContentDepB] -> ShowS
show :: EphemerisCommonContentDepB -> String
$cshow :: EphemerisCommonContentDepB -> String
showsPrec :: Int -> EphemerisCommonContentDepB -> ShowS
$cshowsPrec :: Int -> EphemerisCommonContentDepB -> ShowS
Show, ReadPrec [EphemerisCommonContentDepB]
ReadPrec EphemerisCommonContentDepB
Int -> ReadS EphemerisCommonContentDepB
ReadS [EphemerisCommonContentDepB]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [EphemerisCommonContentDepB]
$creadListPrec :: ReadPrec [EphemerisCommonContentDepB]
readPrec :: ReadPrec EphemerisCommonContentDepB
$creadPrec :: ReadPrec EphemerisCommonContentDepB
readList :: ReadS [EphemerisCommonContentDepB]
$creadList :: ReadS [EphemerisCommonContentDepB]
readsPrec :: Int -> ReadS EphemerisCommonContentDepB
$creadsPrec :: Int -> ReadS EphemerisCommonContentDepB
Read, EphemerisCommonContentDepB -> EphemerisCommonContentDepB -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EphemerisCommonContentDepB -> EphemerisCommonContentDepB -> Bool
$c/= :: EphemerisCommonContentDepB -> EphemerisCommonContentDepB -> Bool
== :: EphemerisCommonContentDepB -> EphemerisCommonContentDepB -> Bool
$c== :: EphemerisCommonContentDepB -> EphemerisCommonContentDepB -> Bool
Eq )

instance Binary EphemerisCommonContentDepB where
  get :: Get EphemerisCommonContentDepB
get = do
    GnssSignal
_ephemerisCommonContentDepB_sid <- forall t. Binary t => Get t
get
    GpsTimeSec
_ephemerisCommonContentDepB_toe <- forall t. Binary t => Get t
get
    Double
_ephemerisCommonContentDepB_ura <- Get Double
getFloat64le
    Word32
_ephemerisCommonContentDepB_fit_interval <- Get Word32
getWord32le
    Word8
_ephemerisCommonContentDepB_valid <- Get Word8
getWord8
    Word8
_ephemerisCommonContentDepB_health_bits <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure EphemerisCommonContentDepB {Double
Word8
Word32
GnssSignal
GpsTimeSec
_ephemerisCommonContentDepB_health_bits :: Word8
_ephemerisCommonContentDepB_valid :: Word8
_ephemerisCommonContentDepB_fit_interval :: Word32
_ephemerisCommonContentDepB_ura :: Double
_ephemerisCommonContentDepB_toe :: GpsTimeSec
_ephemerisCommonContentDepB_sid :: GnssSignal
_ephemerisCommonContentDepB_health_bits :: Word8
_ephemerisCommonContentDepB_valid :: Word8
_ephemerisCommonContentDepB_fit_interval :: Word32
_ephemerisCommonContentDepB_ura :: Double
_ephemerisCommonContentDepB_toe :: GpsTimeSec
_ephemerisCommonContentDepB_sid :: GnssSignal
..}

  put :: EphemerisCommonContentDepB -> Put
put EphemerisCommonContentDepB {Double
Word8
Word32
GnssSignal
GpsTimeSec
_ephemerisCommonContentDepB_health_bits :: Word8
_ephemerisCommonContentDepB_valid :: Word8
_ephemerisCommonContentDepB_fit_interval :: Word32
_ephemerisCommonContentDepB_ura :: Double
_ephemerisCommonContentDepB_toe :: GpsTimeSec
_ephemerisCommonContentDepB_sid :: GnssSignal
_ephemerisCommonContentDepB_health_bits :: EphemerisCommonContentDepB -> Word8
_ephemerisCommonContentDepB_valid :: EphemerisCommonContentDepB -> Word8
_ephemerisCommonContentDepB_fit_interval :: EphemerisCommonContentDepB -> Word32
_ephemerisCommonContentDepB_ura :: EphemerisCommonContentDepB -> Double
_ephemerisCommonContentDepB_toe :: EphemerisCommonContentDepB -> GpsTimeSec
_ephemerisCommonContentDepB_sid :: EphemerisCommonContentDepB -> GnssSignal
..} = do
    forall t. Binary t => t -> Put
put GnssSignal
_ephemerisCommonContentDepB_sid
    forall t. Binary t => t -> Put
put GpsTimeSec
_ephemerisCommonContentDepB_toe
    Double -> Put
putFloat64le Double
_ephemerisCommonContentDepB_ura
    Word32 -> Put
putWord32le Word32
_ephemerisCommonContentDepB_fit_interval
    Word8 -> Put
putWord8 Word8
_ephemerisCommonContentDepB_valid
    Word8 -> Put
putWord8 Word8
_ephemerisCommonContentDepB_health_bits

$(makeJSON "_ephemerisCommonContentDepB_" ''EphemerisCommonContentDepB)
$(makeLenses ''EphemerisCommonContentDepB)

data EphemerisCommonContentDepA = EphemerisCommonContentDepA
  { EphemerisCommonContentDepA -> GnssSignalDep
_ephemerisCommonContentDepA_sid        :: !GnssSignalDep
    -- ^ GNSS signal identifier
  , EphemerisCommonContentDepA -> GpsTimeDep
_ephemerisCommonContentDepA_toe        :: !GpsTimeDep
    -- ^ Time of Ephemerides
  , EphemerisCommonContentDepA -> Double
_ephemerisCommonContentDepA_ura        :: !Double
    -- ^ User Range Accuracy
  , EphemerisCommonContentDepA -> Word32
_ephemerisCommonContentDepA_fit_interval :: !Word32
    -- ^ Curve fit interval
  , EphemerisCommonContentDepA -> Word8
_ephemerisCommonContentDepA_valid      :: !Word8
    -- ^ Status of ephemeris, 1 = valid, 0 = invalid
  , EphemerisCommonContentDepA -> Word8
_ephemerisCommonContentDepA_health_bits :: !Word8
    -- ^ Satellite health status.
    -- GPS: ICD-GPS-200, chapter 20.3.3.3.1.4
    -- SBAS: 0 = valid, non-zero = invalid
    -- GLO: 0 = valid, non-zero = invalid
  } deriving ( Int -> EphemerisCommonContentDepA -> ShowS
[EphemerisCommonContentDepA] -> ShowS
EphemerisCommonContentDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EphemerisCommonContentDepA] -> ShowS
$cshowList :: [EphemerisCommonContentDepA] -> ShowS
show :: EphemerisCommonContentDepA -> String
$cshow :: EphemerisCommonContentDepA -> String
showsPrec :: Int -> EphemerisCommonContentDepA -> ShowS
$cshowsPrec :: Int -> EphemerisCommonContentDepA -> ShowS
Show, ReadPrec [EphemerisCommonContentDepA]
ReadPrec EphemerisCommonContentDepA
Int -> ReadS EphemerisCommonContentDepA
ReadS [EphemerisCommonContentDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [EphemerisCommonContentDepA]
$creadListPrec :: ReadPrec [EphemerisCommonContentDepA]
readPrec :: ReadPrec EphemerisCommonContentDepA
$creadPrec :: ReadPrec EphemerisCommonContentDepA
readList :: ReadS [EphemerisCommonContentDepA]
$creadList :: ReadS [EphemerisCommonContentDepA]
readsPrec :: Int -> ReadS EphemerisCommonContentDepA
$creadsPrec :: Int -> ReadS EphemerisCommonContentDepA
Read, EphemerisCommonContentDepA -> EphemerisCommonContentDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EphemerisCommonContentDepA -> EphemerisCommonContentDepA -> Bool
$c/= :: EphemerisCommonContentDepA -> EphemerisCommonContentDepA -> Bool
== :: EphemerisCommonContentDepA -> EphemerisCommonContentDepA -> Bool
$c== :: EphemerisCommonContentDepA -> EphemerisCommonContentDepA -> Bool
Eq )

instance Binary EphemerisCommonContentDepA where
  get :: Get EphemerisCommonContentDepA
get = do
    GnssSignalDep
_ephemerisCommonContentDepA_sid <- forall t. Binary t => Get t
get
    GpsTimeDep
_ephemerisCommonContentDepA_toe <- forall t. Binary t => Get t
get
    Double
_ephemerisCommonContentDepA_ura <- Get Double
getFloat64le
    Word32
_ephemerisCommonContentDepA_fit_interval <- Get Word32
getWord32le
    Word8
_ephemerisCommonContentDepA_valid <- Get Word8
getWord8
    Word8
_ephemerisCommonContentDepA_health_bits <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure EphemerisCommonContentDepA {Double
Word8
Word32
GnssSignalDep
GpsTimeDep
_ephemerisCommonContentDepA_health_bits :: Word8
_ephemerisCommonContentDepA_valid :: Word8
_ephemerisCommonContentDepA_fit_interval :: Word32
_ephemerisCommonContentDepA_ura :: Double
_ephemerisCommonContentDepA_toe :: GpsTimeDep
_ephemerisCommonContentDepA_sid :: GnssSignalDep
_ephemerisCommonContentDepA_health_bits :: Word8
_ephemerisCommonContentDepA_valid :: Word8
_ephemerisCommonContentDepA_fit_interval :: Word32
_ephemerisCommonContentDepA_ura :: Double
_ephemerisCommonContentDepA_toe :: GpsTimeDep
_ephemerisCommonContentDepA_sid :: GnssSignalDep
..}

  put :: EphemerisCommonContentDepA -> Put
put EphemerisCommonContentDepA {Double
Word8
Word32
GnssSignalDep
GpsTimeDep
_ephemerisCommonContentDepA_health_bits :: Word8
_ephemerisCommonContentDepA_valid :: Word8
_ephemerisCommonContentDepA_fit_interval :: Word32
_ephemerisCommonContentDepA_ura :: Double
_ephemerisCommonContentDepA_toe :: GpsTimeDep
_ephemerisCommonContentDepA_sid :: GnssSignalDep
_ephemerisCommonContentDepA_health_bits :: EphemerisCommonContentDepA -> Word8
_ephemerisCommonContentDepA_valid :: EphemerisCommonContentDepA -> Word8
_ephemerisCommonContentDepA_fit_interval :: EphemerisCommonContentDepA -> Word32
_ephemerisCommonContentDepA_ura :: EphemerisCommonContentDepA -> Double
_ephemerisCommonContentDepA_toe :: EphemerisCommonContentDepA -> GpsTimeDep
_ephemerisCommonContentDepA_sid :: EphemerisCommonContentDepA -> GnssSignalDep
..} = do
    forall t. Binary t => t -> Put
put GnssSignalDep
_ephemerisCommonContentDepA_sid
    forall t. Binary t => t -> Put
put GpsTimeDep
_ephemerisCommonContentDepA_toe
    Double -> Put
putFloat64le Double
_ephemerisCommonContentDepA_ura
    Word32 -> Put
putWord32le Word32
_ephemerisCommonContentDepA_fit_interval
    Word8 -> Put
putWord8 Word8
_ephemerisCommonContentDepA_valid
    Word8 -> Put
putWord8 Word8
_ephemerisCommonContentDepA_health_bits

$(makeJSON "_ephemerisCommonContentDepA_" ''EphemerisCommonContentDepA)
$(makeLenses ''EphemerisCommonContentDepA)

msgEphemerisGpsDepE :: Word16
msgEphemerisGpsDepE :: Word16
msgEphemerisGpsDepE = Word16
0x0081

-- | SBP class for message MSG_EPHEMERIS_GPS_DEP_E (0x0081).
--
-- The ephemeris message returns a set of satellite orbit parameters that is
-- used to calculate GPS satellite position, velocity, and clock offset.
-- Please see the Navstar GPS Space Segment/Navigation user interfaces (ICD-
-- GPS-200, Table 20-III) for more details.
data MsgEphemerisGpsDepE = MsgEphemerisGpsDepE
  { MsgEphemerisGpsDepE -> EphemerisCommonContentDepA
_msgEphemerisGpsDepE_common :: !EphemerisCommonContentDepA
    -- ^ Values common for all ephemeris types
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_tgd    :: !Double
    -- ^ Group delay differential between L1 and L2
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_c_rs   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the orbit radius
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_c_rc   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the orbit radius
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_c_uc   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_c_us   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_c_ic   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_c_is   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_dn     :: !Double
    -- ^ Mean motion difference
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_m0     :: !Double
    -- ^ Mean anomaly at reference time
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_ecc    :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_sqrta  :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_omega0 :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_w      :: !Double
    -- ^ Argument of perigee
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_inc    :: !Double
    -- ^ Inclination
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_inc_dot :: !Double
    -- ^ Inclination first derivative
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_af0    :: !Double
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_af1    :: !Double
    -- ^ Polynomial clock correction coefficient (clock drift)
  , MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_af2    :: !Double
    -- ^ Polynomial clock correction coefficient (rate of clock drift)
  , MsgEphemerisGpsDepE -> GpsTimeDep
_msgEphemerisGpsDepE_toc    :: !GpsTimeDep
    -- ^ Clock reference
  , MsgEphemerisGpsDepE -> Word8
_msgEphemerisGpsDepE_iode   :: !Word8
    -- ^ Issue of ephemeris data
  , MsgEphemerisGpsDepE -> Word16
_msgEphemerisGpsDepE_iodc   :: !Word16
    -- ^ Issue of clock data
  } deriving ( Int -> MsgEphemerisGpsDepE -> ShowS
[MsgEphemerisGpsDepE] -> ShowS
MsgEphemerisGpsDepE -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisGpsDepE] -> ShowS
$cshowList :: [MsgEphemerisGpsDepE] -> ShowS
show :: MsgEphemerisGpsDepE -> String
$cshow :: MsgEphemerisGpsDepE -> String
showsPrec :: Int -> MsgEphemerisGpsDepE -> ShowS
$cshowsPrec :: Int -> MsgEphemerisGpsDepE -> ShowS
Show, ReadPrec [MsgEphemerisGpsDepE]
ReadPrec MsgEphemerisGpsDepE
Int -> ReadS MsgEphemerisGpsDepE
ReadS [MsgEphemerisGpsDepE]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisGpsDepE]
$creadListPrec :: ReadPrec [MsgEphemerisGpsDepE]
readPrec :: ReadPrec MsgEphemerisGpsDepE
$creadPrec :: ReadPrec MsgEphemerisGpsDepE
readList :: ReadS [MsgEphemerisGpsDepE]
$creadList :: ReadS [MsgEphemerisGpsDepE]
readsPrec :: Int -> ReadS MsgEphemerisGpsDepE
$creadsPrec :: Int -> ReadS MsgEphemerisGpsDepE
Read, MsgEphemerisGpsDepE -> MsgEphemerisGpsDepE -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisGpsDepE -> MsgEphemerisGpsDepE -> Bool
$c/= :: MsgEphemerisGpsDepE -> MsgEphemerisGpsDepE -> Bool
== :: MsgEphemerisGpsDepE -> MsgEphemerisGpsDepE -> Bool
$c== :: MsgEphemerisGpsDepE -> MsgEphemerisGpsDepE -> Bool
Eq )

instance Binary MsgEphemerisGpsDepE where
  get :: Get MsgEphemerisGpsDepE
get = do
    EphemerisCommonContentDepA
_msgEphemerisGpsDepE_common <- forall t. Binary t => Get t
get
    Double
_msgEphemerisGpsDepE_tgd <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_c_rs <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_c_rc <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_c_uc <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_c_us <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_c_ic <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_c_is <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_dn <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_m0 <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_ecc <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_sqrta <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_omega0 <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_omegadot <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_w <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_inc <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_inc_dot <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_af0 <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_af1 <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepE_af2 <- Get Double
getFloat64le
    GpsTimeDep
_msgEphemerisGpsDepE_toc <- forall t. Binary t => Get t
get
    Word8
_msgEphemerisGpsDepE_iode <- Get Word8
getWord8
    Word16
_msgEphemerisGpsDepE_iodc <- Get Word16
getWord16le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisGpsDepE {Double
Word8
Word16
GpsTimeDep
EphemerisCommonContentDepA
_msgEphemerisGpsDepE_iodc :: Word16
_msgEphemerisGpsDepE_iode :: Word8
_msgEphemerisGpsDepE_toc :: GpsTimeDep
_msgEphemerisGpsDepE_af2 :: Double
_msgEphemerisGpsDepE_af1 :: Double
_msgEphemerisGpsDepE_af0 :: Double
_msgEphemerisGpsDepE_inc_dot :: Double
_msgEphemerisGpsDepE_inc :: Double
_msgEphemerisGpsDepE_w :: Double
_msgEphemerisGpsDepE_omegadot :: Double
_msgEphemerisGpsDepE_omega0 :: Double
_msgEphemerisGpsDepE_sqrta :: Double
_msgEphemerisGpsDepE_ecc :: Double
_msgEphemerisGpsDepE_m0 :: Double
_msgEphemerisGpsDepE_dn :: Double
_msgEphemerisGpsDepE_c_is :: Double
_msgEphemerisGpsDepE_c_ic :: Double
_msgEphemerisGpsDepE_c_us :: Double
_msgEphemerisGpsDepE_c_uc :: Double
_msgEphemerisGpsDepE_c_rc :: Double
_msgEphemerisGpsDepE_c_rs :: Double
_msgEphemerisGpsDepE_tgd :: Double
_msgEphemerisGpsDepE_common :: EphemerisCommonContentDepA
_msgEphemerisGpsDepE_iodc :: Word16
_msgEphemerisGpsDepE_iode :: Word8
_msgEphemerisGpsDepE_toc :: GpsTimeDep
_msgEphemerisGpsDepE_af2 :: Double
_msgEphemerisGpsDepE_af1 :: Double
_msgEphemerisGpsDepE_af0 :: Double
_msgEphemerisGpsDepE_inc_dot :: Double
_msgEphemerisGpsDepE_inc :: Double
_msgEphemerisGpsDepE_w :: Double
_msgEphemerisGpsDepE_omegadot :: Double
_msgEphemerisGpsDepE_omega0 :: Double
_msgEphemerisGpsDepE_sqrta :: Double
_msgEphemerisGpsDepE_ecc :: Double
_msgEphemerisGpsDepE_m0 :: Double
_msgEphemerisGpsDepE_dn :: Double
_msgEphemerisGpsDepE_c_is :: Double
_msgEphemerisGpsDepE_c_ic :: Double
_msgEphemerisGpsDepE_c_us :: Double
_msgEphemerisGpsDepE_c_uc :: Double
_msgEphemerisGpsDepE_c_rc :: Double
_msgEphemerisGpsDepE_c_rs :: Double
_msgEphemerisGpsDepE_tgd :: Double
_msgEphemerisGpsDepE_common :: EphemerisCommonContentDepA
..}

  put :: MsgEphemerisGpsDepE -> Put
put MsgEphemerisGpsDepE {Double
Word8
Word16
GpsTimeDep
EphemerisCommonContentDepA
_msgEphemerisGpsDepE_iodc :: Word16
_msgEphemerisGpsDepE_iode :: Word8
_msgEphemerisGpsDepE_toc :: GpsTimeDep
_msgEphemerisGpsDepE_af2 :: Double
_msgEphemerisGpsDepE_af1 :: Double
_msgEphemerisGpsDepE_af0 :: Double
_msgEphemerisGpsDepE_inc_dot :: Double
_msgEphemerisGpsDepE_inc :: Double
_msgEphemerisGpsDepE_w :: Double
_msgEphemerisGpsDepE_omegadot :: Double
_msgEphemerisGpsDepE_omega0 :: Double
_msgEphemerisGpsDepE_sqrta :: Double
_msgEphemerisGpsDepE_ecc :: Double
_msgEphemerisGpsDepE_m0 :: Double
_msgEphemerisGpsDepE_dn :: Double
_msgEphemerisGpsDepE_c_is :: Double
_msgEphemerisGpsDepE_c_ic :: Double
_msgEphemerisGpsDepE_c_us :: Double
_msgEphemerisGpsDepE_c_uc :: Double
_msgEphemerisGpsDepE_c_rc :: Double
_msgEphemerisGpsDepE_c_rs :: Double
_msgEphemerisGpsDepE_tgd :: Double
_msgEphemerisGpsDepE_common :: EphemerisCommonContentDepA
_msgEphemerisGpsDepE_iodc :: MsgEphemerisGpsDepE -> Word16
_msgEphemerisGpsDepE_iode :: MsgEphemerisGpsDepE -> Word8
_msgEphemerisGpsDepE_toc :: MsgEphemerisGpsDepE -> GpsTimeDep
_msgEphemerisGpsDepE_af2 :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_af1 :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_af0 :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_inc_dot :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_inc :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_w :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_omegadot :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_omega0 :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_sqrta :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_ecc :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_m0 :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_dn :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_c_is :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_c_ic :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_c_us :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_c_uc :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_c_rc :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_c_rs :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_tgd :: MsgEphemerisGpsDepE -> Double
_msgEphemerisGpsDepE_common :: MsgEphemerisGpsDepE -> EphemerisCommonContentDepA
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContentDepA
_msgEphemerisGpsDepE_common
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_tgd
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_c_rs
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_c_rc
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_c_uc
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_c_us
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_c_ic
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_c_is
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_dn
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_m0
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_ecc
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_sqrta
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_omega0
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_omegadot
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_w
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_inc
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_inc_dot
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_af0
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_af1
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepE_af2
    forall t. Binary t => t -> Put
put GpsTimeDep
_msgEphemerisGpsDepE_toc
    Word8 -> Put
putWord8 Word8
_msgEphemerisGpsDepE_iode
    Word16 -> Put
putWord16le Word16
_msgEphemerisGpsDepE_iodc

$(makeSBP 'msgEphemerisGpsDepE ''MsgEphemerisGpsDepE)
$(makeJSON "_msgEphemerisGpsDepE_" ''MsgEphemerisGpsDepE)
$(makeLenses ''MsgEphemerisGpsDepE)

msgEphemerisGpsDepF :: Word16
msgEphemerisGpsDepF :: Word16
msgEphemerisGpsDepF = Word16
0x0086

-- | SBP class for message MSG_EPHEMERIS_GPS_DEP_F (0x0086).
--
-- This observation message has been deprecated in favor of ephemeris message
-- using floats for size reduction.
data MsgEphemerisGpsDepF = MsgEphemerisGpsDepF
  { MsgEphemerisGpsDepF -> EphemerisCommonContentDepB
_msgEphemerisGpsDepF_common :: !EphemerisCommonContentDepB
    -- ^ Values common for all ephemeris types
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_tgd    :: !Double
    -- ^ Group delay differential between L1 and L2
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_c_rs   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the orbit radius
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_c_rc   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the orbit radius
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_c_uc   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_c_us   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_c_ic   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_c_is   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_dn     :: !Double
    -- ^ Mean motion difference
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_m0     :: !Double
    -- ^ Mean anomaly at reference time
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_ecc    :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_sqrta  :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_omega0 :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_w      :: !Double
    -- ^ Argument of perigee
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_inc    :: !Double
    -- ^ Inclination
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_inc_dot :: !Double
    -- ^ Inclination first derivative
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_af0    :: !Double
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_af1    :: !Double
    -- ^ Polynomial clock correction coefficient (clock drift)
  , MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_af2    :: !Double
    -- ^ Polynomial clock correction coefficient (rate of clock drift)
  , MsgEphemerisGpsDepF -> GpsTimeSec
_msgEphemerisGpsDepF_toc    :: !GpsTimeSec
    -- ^ Clock reference
  , MsgEphemerisGpsDepF -> Word8
_msgEphemerisGpsDepF_iode   :: !Word8
    -- ^ Issue of ephemeris data
  , MsgEphemerisGpsDepF -> Word16
_msgEphemerisGpsDepF_iodc   :: !Word16
    -- ^ Issue of clock data
  } deriving ( Int -> MsgEphemerisGpsDepF -> ShowS
[MsgEphemerisGpsDepF] -> ShowS
MsgEphemerisGpsDepF -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisGpsDepF] -> ShowS
$cshowList :: [MsgEphemerisGpsDepF] -> ShowS
show :: MsgEphemerisGpsDepF -> String
$cshow :: MsgEphemerisGpsDepF -> String
showsPrec :: Int -> MsgEphemerisGpsDepF -> ShowS
$cshowsPrec :: Int -> MsgEphemerisGpsDepF -> ShowS
Show, ReadPrec [MsgEphemerisGpsDepF]
ReadPrec MsgEphemerisGpsDepF
Int -> ReadS MsgEphemerisGpsDepF
ReadS [MsgEphemerisGpsDepF]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisGpsDepF]
$creadListPrec :: ReadPrec [MsgEphemerisGpsDepF]
readPrec :: ReadPrec MsgEphemerisGpsDepF
$creadPrec :: ReadPrec MsgEphemerisGpsDepF
readList :: ReadS [MsgEphemerisGpsDepF]
$creadList :: ReadS [MsgEphemerisGpsDepF]
readsPrec :: Int -> ReadS MsgEphemerisGpsDepF
$creadsPrec :: Int -> ReadS MsgEphemerisGpsDepF
Read, MsgEphemerisGpsDepF -> MsgEphemerisGpsDepF -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisGpsDepF -> MsgEphemerisGpsDepF -> Bool
$c/= :: MsgEphemerisGpsDepF -> MsgEphemerisGpsDepF -> Bool
== :: MsgEphemerisGpsDepF -> MsgEphemerisGpsDepF -> Bool
$c== :: MsgEphemerisGpsDepF -> MsgEphemerisGpsDepF -> Bool
Eq )

instance Binary MsgEphemerisGpsDepF where
  get :: Get MsgEphemerisGpsDepF
get = do
    EphemerisCommonContentDepB
_msgEphemerisGpsDepF_common <- forall t. Binary t => Get t
get
    Double
_msgEphemerisGpsDepF_tgd <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_c_rs <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_c_rc <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_c_uc <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_c_us <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_c_ic <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_c_is <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_dn <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_m0 <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_ecc <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_sqrta <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_omega0 <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_omegadot <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_w <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_inc <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_inc_dot <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_af0 <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_af1 <- Get Double
getFloat64le
    Double
_msgEphemerisGpsDepF_af2 <- Get Double
getFloat64le
    GpsTimeSec
_msgEphemerisGpsDepF_toc <- forall t. Binary t => Get t
get
    Word8
_msgEphemerisGpsDepF_iode <- Get Word8
getWord8
    Word16
_msgEphemerisGpsDepF_iodc <- Get Word16
getWord16le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisGpsDepF {Double
Word8
Word16
GpsTimeSec
EphemerisCommonContentDepB
_msgEphemerisGpsDepF_iodc :: Word16
_msgEphemerisGpsDepF_iode :: Word8
_msgEphemerisGpsDepF_toc :: GpsTimeSec
_msgEphemerisGpsDepF_af2 :: Double
_msgEphemerisGpsDepF_af1 :: Double
_msgEphemerisGpsDepF_af0 :: Double
_msgEphemerisGpsDepF_inc_dot :: Double
_msgEphemerisGpsDepF_inc :: Double
_msgEphemerisGpsDepF_w :: Double
_msgEphemerisGpsDepF_omegadot :: Double
_msgEphemerisGpsDepF_omega0 :: Double
_msgEphemerisGpsDepF_sqrta :: Double
_msgEphemerisGpsDepF_ecc :: Double
_msgEphemerisGpsDepF_m0 :: Double
_msgEphemerisGpsDepF_dn :: Double
_msgEphemerisGpsDepF_c_is :: Double
_msgEphemerisGpsDepF_c_ic :: Double
_msgEphemerisGpsDepF_c_us :: Double
_msgEphemerisGpsDepF_c_uc :: Double
_msgEphemerisGpsDepF_c_rc :: Double
_msgEphemerisGpsDepF_c_rs :: Double
_msgEphemerisGpsDepF_tgd :: Double
_msgEphemerisGpsDepF_common :: EphemerisCommonContentDepB
_msgEphemerisGpsDepF_iodc :: Word16
_msgEphemerisGpsDepF_iode :: Word8
_msgEphemerisGpsDepF_toc :: GpsTimeSec
_msgEphemerisGpsDepF_af2 :: Double
_msgEphemerisGpsDepF_af1 :: Double
_msgEphemerisGpsDepF_af0 :: Double
_msgEphemerisGpsDepF_inc_dot :: Double
_msgEphemerisGpsDepF_inc :: Double
_msgEphemerisGpsDepF_w :: Double
_msgEphemerisGpsDepF_omegadot :: Double
_msgEphemerisGpsDepF_omega0 :: Double
_msgEphemerisGpsDepF_sqrta :: Double
_msgEphemerisGpsDepF_ecc :: Double
_msgEphemerisGpsDepF_m0 :: Double
_msgEphemerisGpsDepF_dn :: Double
_msgEphemerisGpsDepF_c_is :: Double
_msgEphemerisGpsDepF_c_ic :: Double
_msgEphemerisGpsDepF_c_us :: Double
_msgEphemerisGpsDepF_c_uc :: Double
_msgEphemerisGpsDepF_c_rc :: Double
_msgEphemerisGpsDepF_c_rs :: Double
_msgEphemerisGpsDepF_tgd :: Double
_msgEphemerisGpsDepF_common :: EphemerisCommonContentDepB
..}

  put :: MsgEphemerisGpsDepF -> Put
put MsgEphemerisGpsDepF {Double
Word8
Word16
GpsTimeSec
EphemerisCommonContentDepB
_msgEphemerisGpsDepF_iodc :: Word16
_msgEphemerisGpsDepF_iode :: Word8
_msgEphemerisGpsDepF_toc :: GpsTimeSec
_msgEphemerisGpsDepF_af2 :: Double
_msgEphemerisGpsDepF_af1 :: Double
_msgEphemerisGpsDepF_af0 :: Double
_msgEphemerisGpsDepF_inc_dot :: Double
_msgEphemerisGpsDepF_inc :: Double
_msgEphemerisGpsDepF_w :: Double
_msgEphemerisGpsDepF_omegadot :: Double
_msgEphemerisGpsDepF_omega0 :: Double
_msgEphemerisGpsDepF_sqrta :: Double
_msgEphemerisGpsDepF_ecc :: Double
_msgEphemerisGpsDepF_m0 :: Double
_msgEphemerisGpsDepF_dn :: Double
_msgEphemerisGpsDepF_c_is :: Double
_msgEphemerisGpsDepF_c_ic :: Double
_msgEphemerisGpsDepF_c_us :: Double
_msgEphemerisGpsDepF_c_uc :: Double
_msgEphemerisGpsDepF_c_rc :: Double
_msgEphemerisGpsDepF_c_rs :: Double
_msgEphemerisGpsDepF_tgd :: Double
_msgEphemerisGpsDepF_common :: EphemerisCommonContentDepB
_msgEphemerisGpsDepF_iodc :: MsgEphemerisGpsDepF -> Word16
_msgEphemerisGpsDepF_iode :: MsgEphemerisGpsDepF -> Word8
_msgEphemerisGpsDepF_toc :: MsgEphemerisGpsDepF -> GpsTimeSec
_msgEphemerisGpsDepF_af2 :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_af1 :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_af0 :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_inc_dot :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_inc :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_w :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_omegadot :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_omega0 :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_sqrta :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_ecc :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_m0 :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_dn :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_c_is :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_c_ic :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_c_us :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_c_uc :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_c_rc :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_c_rs :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_tgd :: MsgEphemerisGpsDepF -> Double
_msgEphemerisGpsDepF_common :: MsgEphemerisGpsDepF -> EphemerisCommonContentDepB
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContentDepB
_msgEphemerisGpsDepF_common
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_tgd
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_c_rs
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_c_rc
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_c_uc
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_c_us
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_c_ic
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_c_is
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_dn
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_m0
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_ecc
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_sqrta
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_omega0
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_omegadot
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_w
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_inc
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_inc_dot
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_af0
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_af1
    Double -> Put
putFloat64le Double
_msgEphemerisGpsDepF_af2
    forall t. Binary t => t -> Put
put GpsTimeSec
_msgEphemerisGpsDepF_toc
    Word8 -> Put
putWord8 Word8
_msgEphemerisGpsDepF_iode
    Word16 -> Put
putWord16le Word16
_msgEphemerisGpsDepF_iodc

$(makeSBP 'msgEphemerisGpsDepF ''MsgEphemerisGpsDepF)
$(makeJSON "_msgEphemerisGpsDepF_" ''MsgEphemerisGpsDepF)
$(makeLenses ''MsgEphemerisGpsDepF)

msgEphemerisGps :: Word16
msgEphemerisGps :: Word16
msgEphemerisGps = Word16
0x008A

-- | SBP class for message MSG_EPHEMERIS_GPS (0x008A).
--
-- The ephemeris message returns a set of satellite orbit parameters that is
-- used to calculate GPS satellite position, velocity, and clock offset.
-- Please see the Navstar GPS Space Segment/Navigation user interfaces (ICD-
-- GPS-200, Table 20-III) for more details.
data MsgEphemerisGps = MsgEphemerisGps
  { MsgEphemerisGps -> EphemerisCommonContent
_msgEphemerisGps_common :: !EphemerisCommonContent
    -- ^ Values common for all ephemeris types
  , MsgEphemerisGps -> Float
_msgEphemerisGps_tgd    :: !Float
    -- ^ Group delay differential between L1 and L2
  , MsgEphemerisGps -> Float
_msgEphemerisGps_c_rs   :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the orbit radius
  , MsgEphemerisGps -> Float
_msgEphemerisGps_c_rc   :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the orbit radius
  , MsgEphemerisGps -> Float
_msgEphemerisGps_c_uc   :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisGps -> Float
_msgEphemerisGps_c_us   :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisGps -> Float
_msgEphemerisGps_c_ic   :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisGps -> Float
_msgEphemerisGps_c_is   :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisGps -> Double
_msgEphemerisGps_dn     :: !Double
    -- ^ Mean motion difference
  , MsgEphemerisGps -> Double
_msgEphemerisGps_m0     :: !Double
    -- ^ Mean anomaly at reference time
  , MsgEphemerisGps -> Double
_msgEphemerisGps_ecc    :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgEphemerisGps -> Double
_msgEphemerisGps_sqrta  :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgEphemerisGps -> Double
_msgEphemerisGps_omega0 :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgEphemerisGps -> Double
_msgEphemerisGps_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgEphemerisGps -> Double
_msgEphemerisGps_w      :: !Double
    -- ^ Argument of perigee
  , MsgEphemerisGps -> Double
_msgEphemerisGps_inc    :: !Double
    -- ^ Inclination
  , MsgEphemerisGps -> Double
_msgEphemerisGps_inc_dot :: !Double
    -- ^ Inclination first derivative
  , MsgEphemerisGps -> Float
_msgEphemerisGps_af0    :: !Float
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgEphemerisGps -> Float
_msgEphemerisGps_af1    :: !Float
    -- ^ Polynomial clock correction coefficient (clock drift)
  , MsgEphemerisGps -> Float
_msgEphemerisGps_af2    :: !Float
    -- ^ Polynomial clock correction coefficient (rate of clock drift)
  , MsgEphemerisGps -> GpsTimeSec
_msgEphemerisGps_toc    :: !GpsTimeSec
    -- ^ Clock reference
  , MsgEphemerisGps -> Word8
_msgEphemerisGps_iode   :: !Word8
    -- ^ Issue of ephemeris data
  , MsgEphemerisGps -> Word16
_msgEphemerisGps_iodc   :: !Word16
    -- ^ Issue of clock data
  } deriving ( Int -> MsgEphemerisGps -> ShowS
[MsgEphemerisGps] -> ShowS
MsgEphemerisGps -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisGps] -> ShowS
$cshowList :: [MsgEphemerisGps] -> ShowS
show :: MsgEphemerisGps -> String
$cshow :: MsgEphemerisGps -> String
showsPrec :: Int -> MsgEphemerisGps -> ShowS
$cshowsPrec :: Int -> MsgEphemerisGps -> ShowS
Show, ReadPrec [MsgEphemerisGps]
ReadPrec MsgEphemerisGps
Int -> ReadS MsgEphemerisGps
ReadS [MsgEphemerisGps]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisGps]
$creadListPrec :: ReadPrec [MsgEphemerisGps]
readPrec :: ReadPrec MsgEphemerisGps
$creadPrec :: ReadPrec MsgEphemerisGps
readList :: ReadS [MsgEphemerisGps]
$creadList :: ReadS [MsgEphemerisGps]
readsPrec :: Int -> ReadS MsgEphemerisGps
$creadsPrec :: Int -> ReadS MsgEphemerisGps
Read, MsgEphemerisGps -> MsgEphemerisGps -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisGps -> MsgEphemerisGps -> Bool
$c/= :: MsgEphemerisGps -> MsgEphemerisGps -> Bool
== :: MsgEphemerisGps -> MsgEphemerisGps -> Bool
$c== :: MsgEphemerisGps -> MsgEphemerisGps -> Bool
Eq )

instance Binary MsgEphemerisGps where
  get :: Get MsgEphemerisGps
get = do
    EphemerisCommonContent
_msgEphemerisGps_common <- forall t. Binary t => Get t
get
    Float
_msgEphemerisGps_tgd <- Get Float
getFloat32le
    Float
_msgEphemerisGps_c_rs <- Get Float
getFloat32le
    Float
_msgEphemerisGps_c_rc <- Get Float
getFloat32le
    Float
_msgEphemerisGps_c_uc <- Get Float
getFloat32le
    Float
_msgEphemerisGps_c_us <- Get Float
getFloat32le
    Float
_msgEphemerisGps_c_ic <- Get Float
getFloat32le
    Float
_msgEphemerisGps_c_is <- Get Float
getFloat32le
    Double
_msgEphemerisGps_dn <- Get Double
getFloat64le
    Double
_msgEphemerisGps_m0 <- Get Double
getFloat64le
    Double
_msgEphemerisGps_ecc <- Get Double
getFloat64le
    Double
_msgEphemerisGps_sqrta <- Get Double
getFloat64le
    Double
_msgEphemerisGps_omega0 <- Get Double
getFloat64le
    Double
_msgEphemerisGps_omegadot <- Get Double
getFloat64le
    Double
_msgEphemerisGps_w <- Get Double
getFloat64le
    Double
_msgEphemerisGps_inc <- Get Double
getFloat64le
    Double
_msgEphemerisGps_inc_dot <- Get Double
getFloat64le
    Float
_msgEphemerisGps_af0 <- Get Float
getFloat32le
    Float
_msgEphemerisGps_af1 <- Get Float
getFloat32le
    Float
_msgEphemerisGps_af2 <- Get Float
getFloat32le
    GpsTimeSec
_msgEphemerisGps_toc <- forall t. Binary t => Get t
get
    Word8
_msgEphemerisGps_iode <- Get Word8
getWord8
    Word16
_msgEphemerisGps_iodc <- Get Word16
getWord16le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisGps {Double
Float
Word8
Word16
GpsTimeSec
EphemerisCommonContent
_msgEphemerisGps_iodc :: Word16
_msgEphemerisGps_iode :: Word8
_msgEphemerisGps_toc :: GpsTimeSec
_msgEphemerisGps_af2 :: Float
_msgEphemerisGps_af1 :: Float
_msgEphemerisGps_af0 :: Float
_msgEphemerisGps_inc_dot :: Double
_msgEphemerisGps_inc :: Double
_msgEphemerisGps_w :: Double
_msgEphemerisGps_omegadot :: Double
_msgEphemerisGps_omega0 :: Double
_msgEphemerisGps_sqrta :: Double
_msgEphemerisGps_ecc :: Double
_msgEphemerisGps_m0 :: Double
_msgEphemerisGps_dn :: Double
_msgEphemerisGps_c_is :: Float
_msgEphemerisGps_c_ic :: Float
_msgEphemerisGps_c_us :: Float
_msgEphemerisGps_c_uc :: Float
_msgEphemerisGps_c_rc :: Float
_msgEphemerisGps_c_rs :: Float
_msgEphemerisGps_tgd :: Float
_msgEphemerisGps_common :: EphemerisCommonContent
_msgEphemerisGps_iodc :: Word16
_msgEphemerisGps_iode :: Word8
_msgEphemerisGps_toc :: GpsTimeSec
_msgEphemerisGps_af2 :: Float
_msgEphemerisGps_af1 :: Float
_msgEphemerisGps_af0 :: Float
_msgEphemerisGps_inc_dot :: Double
_msgEphemerisGps_inc :: Double
_msgEphemerisGps_w :: Double
_msgEphemerisGps_omegadot :: Double
_msgEphemerisGps_omega0 :: Double
_msgEphemerisGps_sqrta :: Double
_msgEphemerisGps_ecc :: Double
_msgEphemerisGps_m0 :: Double
_msgEphemerisGps_dn :: Double
_msgEphemerisGps_c_is :: Float
_msgEphemerisGps_c_ic :: Float
_msgEphemerisGps_c_us :: Float
_msgEphemerisGps_c_uc :: Float
_msgEphemerisGps_c_rc :: Float
_msgEphemerisGps_c_rs :: Float
_msgEphemerisGps_tgd :: Float
_msgEphemerisGps_common :: EphemerisCommonContent
..}

  put :: MsgEphemerisGps -> Put
put MsgEphemerisGps {Double
Float
Word8
Word16
GpsTimeSec
EphemerisCommonContent
_msgEphemerisGps_iodc :: Word16
_msgEphemerisGps_iode :: Word8
_msgEphemerisGps_toc :: GpsTimeSec
_msgEphemerisGps_af2 :: Float
_msgEphemerisGps_af1 :: Float
_msgEphemerisGps_af0 :: Float
_msgEphemerisGps_inc_dot :: Double
_msgEphemerisGps_inc :: Double
_msgEphemerisGps_w :: Double
_msgEphemerisGps_omegadot :: Double
_msgEphemerisGps_omega0 :: Double
_msgEphemerisGps_sqrta :: Double
_msgEphemerisGps_ecc :: Double
_msgEphemerisGps_m0 :: Double
_msgEphemerisGps_dn :: Double
_msgEphemerisGps_c_is :: Float
_msgEphemerisGps_c_ic :: Float
_msgEphemerisGps_c_us :: Float
_msgEphemerisGps_c_uc :: Float
_msgEphemerisGps_c_rc :: Float
_msgEphemerisGps_c_rs :: Float
_msgEphemerisGps_tgd :: Float
_msgEphemerisGps_common :: EphemerisCommonContent
_msgEphemerisGps_iodc :: MsgEphemerisGps -> Word16
_msgEphemerisGps_iode :: MsgEphemerisGps -> Word8
_msgEphemerisGps_toc :: MsgEphemerisGps -> GpsTimeSec
_msgEphemerisGps_af2 :: MsgEphemerisGps -> Float
_msgEphemerisGps_af1 :: MsgEphemerisGps -> Float
_msgEphemerisGps_af0 :: MsgEphemerisGps -> Float
_msgEphemerisGps_inc_dot :: MsgEphemerisGps -> Double
_msgEphemerisGps_inc :: MsgEphemerisGps -> Double
_msgEphemerisGps_w :: MsgEphemerisGps -> Double
_msgEphemerisGps_omegadot :: MsgEphemerisGps -> Double
_msgEphemerisGps_omega0 :: MsgEphemerisGps -> Double
_msgEphemerisGps_sqrta :: MsgEphemerisGps -> Double
_msgEphemerisGps_ecc :: MsgEphemerisGps -> Double
_msgEphemerisGps_m0 :: MsgEphemerisGps -> Double
_msgEphemerisGps_dn :: MsgEphemerisGps -> Double
_msgEphemerisGps_c_is :: MsgEphemerisGps -> Float
_msgEphemerisGps_c_ic :: MsgEphemerisGps -> Float
_msgEphemerisGps_c_us :: MsgEphemerisGps -> Float
_msgEphemerisGps_c_uc :: MsgEphemerisGps -> Float
_msgEphemerisGps_c_rc :: MsgEphemerisGps -> Float
_msgEphemerisGps_c_rs :: MsgEphemerisGps -> Float
_msgEphemerisGps_tgd :: MsgEphemerisGps -> Float
_msgEphemerisGps_common :: MsgEphemerisGps -> EphemerisCommonContent
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContent
_msgEphemerisGps_common
    Float -> Put
putFloat32le Float
_msgEphemerisGps_tgd
    Float -> Put
putFloat32le Float
_msgEphemerisGps_c_rs
    Float -> Put
putFloat32le Float
_msgEphemerisGps_c_rc
    Float -> Put
putFloat32le Float
_msgEphemerisGps_c_uc
    Float -> Put
putFloat32le Float
_msgEphemerisGps_c_us
    Float -> Put
putFloat32le Float
_msgEphemerisGps_c_ic
    Float -> Put
putFloat32le Float
_msgEphemerisGps_c_is
    Double -> Put
putFloat64le Double
_msgEphemerisGps_dn
    Double -> Put
putFloat64le Double
_msgEphemerisGps_m0
    Double -> Put
putFloat64le Double
_msgEphemerisGps_ecc
    Double -> Put
putFloat64le Double
_msgEphemerisGps_sqrta
    Double -> Put
putFloat64le Double
_msgEphemerisGps_omega0
    Double -> Put
putFloat64le Double
_msgEphemerisGps_omegadot
    Double -> Put
putFloat64le Double
_msgEphemerisGps_w
    Double -> Put
putFloat64le Double
_msgEphemerisGps_inc
    Double -> Put
putFloat64le Double
_msgEphemerisGps_inc_dot
    Float -> Put
putFloat32le Float
_msgEphemerisGps_af0
    Float -> Put
putFloat32le Float
_msgEphemerisGps_af1
    Float -> Put
putFloat32le Float
_msgEphemerisGps_af2
    forall t. Binary t => t -> Put
put GpsTimeSec
_msgEphemerisGps_toc
    Word8 -> Put
putWord8 Word8
_msgEphemerisGps_iode
    Word16 -> Put
putWord16le Word16
_msgEphemerisGps_iodc

$(makeSBP 'msgEphemerisGps ''MsgEphemerisGps)
$(makeJSON "_msgEphemerisGps_" ''MsgEphemerisGps)
$(makeLenses ''MsgEphemerisGps)

msgEphemerisQzss :: Word16
msgEphemerisQzss :: Word16
msgEphemerisQzss = Word16
0x008E

-- | SBP class for message MSG_EPHEMERIS_QZSS (0x008E).
--
-- The ephemeris message returns a set of satellite orbit parameters that is
-- used to calculate QZSS satellite position, velocity, and clock offset.
data MsgEphemerisQzss = MsgEphemerisQzss
  { MsgEphemerisQzss -> EphemerisCommonContent
_msgEphemerisQzss_common :: !EphemerisCommonContent
    -- ^ Values common for all ephemeris types
  , MsgEphemerisQzss -> Float
_msgEphemerisQzss_tgd    :: !Float
    -- ^ Group delay differential between L1 and L2
  , MsgEphemerisQzss -> Float
_msgEphemerisQzss_c_rs   :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the orbit radius
  , MsgEphemerisQzss -> Float
_msgEphemerisQzss_c_rc   :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the orbit radius
  , MsgEphemerisQzss -> Float
_msgEphemerisQzss_c_uc   :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisQzss -> Float
_msgEphemerisQzss_c_us   :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisQzss -> Float
_msgEphemerisQzss_c_ic   :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisQzss -> Float
_msgEphemerisQzss_c_is   :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisQzss -> Double
_msgEphemerisQzss_dn     :: !Double
    -- ^ Mean motion difference
  , MsgEphemerisQzss -> Double
_msgEphemerisQzss_m0     :: !Double
    -- ^ Mean anomaly at reference time
  , MsgEphemerisQzss -> Double
_msgEphemerisQzss_ecc    :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgEphemerisQzss -> Double
_msgEphemerisQzss_sqrta  :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgEphemerisQzss -> Double
_msgEphemerisQzss_omega0 :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgEphemerisQzss -> Double
_msgEphemerisQzss_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgEphemerisQzss -> Double
_msgEphemerisQzss_w      :: !Double
    -- ^ Argument of perigee
  , MsgEphemerisQzss -> Double
_msgEphemerisQzss_inc    :: !Double
    -- ^ Inclination
  , MsgEphemerisQzss -> Double
_msgEphemerisQzss_inc_dot :: !Double
    -- ^ Inclination first derivative
  , MsgEphemerisQzss -> Float
_msgEphemerisQzss_af0    :: !Float
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgEphemerisQzss -> Float
_msgEphemerisQzss_af1    :: !Float
    -- ^ Polynomial clock correction coefficient (clock drift)
  , MsgEphemerisQzss -> Float
_msgEphemerisQzss_af2    :: !Float
    -- ^ Polynomial clock correction coefficient (rate of clock drift)
  , MsgEphemerisQzss -> GpsTimeSec
_msgEphemerisQzss_toc    :: !GpsTimeSec
    -- ^ Clock reference
  , MsgEphemerisQzss -> Word8
_msgEphemerisQzss_iode   :: !Word8
    -- ^ Issue of ephemeris data
  , MsgEphemerisQzss -> Word16
_msgEphemerisQzss_iodc   :: !Word16
    -- ^ Issue of clock data
  } deriving ( Int -> MsgEphemerisQzss -> ShowS
[MsgEphemerisQzss] -> ShowS
MsgEphemerisQzss -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisQzss] -> ShowS
$cshowList :: [MsgEphemerisQzss] -> ShowS
show :: MsgEphemerisQzss -> String
$cshow :: MsgEphemerisQzss -> String
showsPrec :: Int -> MsgEphemerisQzss -> ShowS
$cshowsPrec :: Int -> MsgEphemerisQzss -> ShowS
Show, ReadPrec [MsgEphemerisQzss]
ReadPrec MsgEphemerisQzss
Int -> ReadS MsgEphemerisQzss
ReadS [MsgEphemerisQzss]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisQzss]
$creadListPrec :: ReadPrec [MsgEphemerisQzss]
readPrec :: ReadPrec MsgEphemerisQzss
$creadPrec :: ReadPrec MsgEphemerisQzss
readList :: ReadS [MsgEphemerisQzss]
$creadList :: ReadS [MsgEphemerisQzss]
readsPrec :: Int -> ReadS MsgEphemerisQzss
$creadsPrec :: Int -> ReadS MsgEphemerisQzss
Read, MsgEphemerisQzss -> MsgEphemerisQzss -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisQzss -> MsgEphemerisQzss -> Bool
$c/= :: MsgEphemerisQzss -> MsgEphemerisQzss -> Bool
== :: MsgEphemerisQzss -> MsgEphemerisQzss -> Bool
$c== :: MsgEphemerisQzss -> MsgEphemerisQzss -> Bool
Eq )

instance Binary MsgEphemerisQzss where
  get :: Get MsgEphemerisQzss
get = do
    EphemerisCommonContent
_msgEphemerisQzss_common <- forall t. Binary t => Get t
get
    Float
_msgEphemerisQzss_tgd <- Get Float
getFloat32le
    Float
_msgEphemerisQzss_c_rs <- Get Float
getFloat32le
    Float
_msgEphemerisQzss_c_rc <- Get Float
getFloat32le
    Float
_msgEphemerisQzss_c_uc <- Get Float
getFloat32le
    Float
_msgEphemerisQzss_c_us <- Get Float
getFloat32le
    Float
_msgEphemerisQzss_c_ic <- Get Float
getFloat32le
    Float
_msgEphemerisQzss_c_is <- Get Float
getFloat32le
    Double
_msgEphemerisQzss_dn <- Get Double
getFloat64le
    Double
_msgEphemerisQzss_m0 <- Get Double
getFloat64le
    Double
_msgEphemerisQzss_ecc <- Get Double
getFloat64le
    Double
_msgEphemerisQzss_sqrta <- Get Double
getFloat64le
    Double
_msgEphemerisQzss_omega0 <- Get Double
getFloat64le
    Double
_msgEphemerisQzss_omegadot <- Get Double
getFloat64le
    Double
_msgEphemerisQzss_w <- Get Double
getFloat64le
    Double
_msgEphemerisQzss_inc <- Get Double
getFloat64le
    Double
_msgEphemerisQzss_inc_dot <- Get Double
getFloat64le
    Float
_msgEphemerisQzss_af0 <- Get Float
getFloat32le
    Float
_msgEphemerisQzss_af1 <- Get Float
getFloat32le
    Float
_msgEphemerisQzss_af2 <- Get Float
getFloat32le
    GpsTimeSec
_msgEphemerisQzss_toc <- forall t. Binary t => Get t
get
    Word8
_msgEphemerisQzss_iode <- Get Word8
getWord8
    Word16
_msgEphemerisQzss_iodc <- Get Word16
getWord16le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisQzss {Double
Float
Word8
Word16
GpsTimeSec
EphemerisCommonContent
_msgEphemerisQzss_iodc :: Word16
_msgEphemerisQzss_iode :: Word8
_msgEphemerisQzss_toc :: GpsTimeSec
_msgEphemerisQzss_af2 :: Float
_msgEphemerisQzss_af1 :: Float
_msgEphemerisQzss_af0 :: Float
_msgEphemerisQzss_inc_dot :: Double
_msgEphemerisQzss_inc :: Double
_msgEphemerisQzss_w :: Double
_msgEphemerisQzss_omegadot :: Double
_msgEphemerisQzss_omega0 :: Double
_msgEphemerisQzss_sqrta :: Double
_msgEphemerisQzss_ecc :: Double
_msgEphemerisQzss_m0 :: Double
_msgEphemerisQzss_dn :: Double
_msgEphemerisQzss_c_is :: Float
_msgEphemerisQzss_c_ic :: Float
_msgEphemerisQzss_c_us :: Float
_msgEphemerisQzss_c_uc :: Float
_msgEphemerisQzss_c_rc :: Float
_msgEphemerisQzss_c_rs :: Float
_msgEphemerisQzss_tgd :: Float
_msgEphemerisQzss_common :: EphemerisCommonContent
_msgEphemerisQzss_iodc :: Word16
_msgEphemerisQzss_iode :: Word8
_msgEphemerisQzss_toc :: GpsTimeSec
_msgEphemerisQzss_af2 :: Float
_msgEphemerisQzss_af1 :: Float
_msgEphemerisQzss_af0 :: Float
_msgEphemerisQzss_inc_dot :: Double
_msgEphemerisQzss_inc :: Double
_msgEphemerisQzss_w :: Double
_msgEphemerisQzss_omegadot :: Double
_msgEphemerisQzss_omega0 :: Double
_msgEphemerisQzss_sqrta :: Double
_msgEphemerisQzss_ecc :: Double
_msgEphemerisQzss_m0 :: Double
_msgEphemerisQzss_dn :: Double
_msgEphemerisQzss_c_is :: Float
_msgEphemerisQzss_c_ic :: Float
_msgEphemerisQzss_c_us :: Float
_msgEphemerisQzss_c_uc :: Float
_msgEphemerisQzss_c_rc :: Float
_msgEphemerisQzss_c_rs :: Float
_msgEphemerisQzss_tgd :: Float
_msgEphemerisQzss_common :: EphemerisCommonContent
..}

  put :: MsgEphemerisQzss -> Put
put MsgEphemerisQzss {Double
Float
Word8
Word16
GpsTimeSec
EphemerisCommonContent
_msgEphemerisQzss_iodc :: Word16
_msgEphemerisQzss_iode :: Word8
_msgEphemerisQzss_toc :: GpsTimeSec
_msgEphemerisQzss_af2 :: Float
_msgEphemerisQzss_af1 :: Float
_msgEphemerisQzss_af0 :: Float
_msgEphemerisQzss_inc_dot :: Double
_msgEphemerisQzss_inc :: Double
_msgEphemerisQzss_w :: Double
_msgEphemerisQzss_omegadot :: Double
_msgEphemerisQzss_omega0 :: Double
_msgEphemerisQzss_sqrta :: Double
_msgEphemerisQzss_ecc :: Double
_msgEphemerisQzss_m0 :: Double
_msgEphemerisQzss_dn :: Double
_msgEphemerisQzss_c_is :: Float
_msgEphemerisQzss_c_ic :: Float
_msgEphemerisQzss_c_us :: Float
_msgEphemerisQzss_c_uc :: Float
_msgEphemerisQzss_c_rc :: Float
_msgEphemerisQzss_c_rs :: Float
_msgEphemerisQzss_tgd :: Float
_msgEphemerisQzss_common :: EphemerisCommonContent
_msgEphemerisQzss_iodc :: MsgEphemerisQzss -> Word16
_msgEphemerisQzss_iode :: MsgEphemerisQzss -> Word8
_msgEphemerisQzss_toc :: MsgEphemerisQzss -> GpsTimeSec
_msgEphemerisQzss_af2 :: MsgEphemerisQzss -> Float
_msgEphemerisQzss_af1 :: MsgEphemerisQzss -> Float
_msgEphemerisQzss_af0 :: MsgEphemerisQzss -> Float
_msgEphemerisQzss_inc_dot :: MsgEphemerisQzss -> Double
_msgEphemerisQzss_inc :: MsgEphemerisQzss -> Double
_msgEphemerisQzss_w :: MsgEphemerisQzss -> Double
_msgEphemerisQzss_omegadot :: MsgEphemerisQzss -> Double
_msgEphemerisQzss_omega0 :: MsgEphemerisQzss -> Double
_msgEphemerisQzss_sqrta :: MsgEphemerisQzss -> Double
_msgEphemerisQzss_ecc :: MsgEphemerisQzss -> Double
_msgEphemerisQzss_m0 :: MsgEphemerisQzss -> Double
_msgEphemerisQzss_dn :: MsgEphemerisQzss -> Double
_msgEphemerisQzss_c_is :: MsgEphemerisQzss -> Float
_msgEphemerisQzss_c_ic :: MsgEphemerisQzss -> Float
_msgEphemerisQzss_c_us :: MsgEphemerisQzss -> Float
_msgEphemerisQzss_c_uc :: MsgEphemerisQzss -> Float
_msgEphemerisQzss_c_rc :: MsgEphemerisQzss -> Float
_msgEphemerisQzss_c_rs :: MsgEphemerisQzss -> Float
_msgEphemerisQzss_tgd :: MsgEphemerisQzss -> Float
_msgEphemerisQzss_common :: MsgEphemerisQzss -> EphemerisCommonContent
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContent
_msgEphemerisQzss_common
    Float -> Put
putFloat32le Float
_msgEphemerisQzss_tgd
    Float -> Put
putFloat32le Float
_msgEphemerisQzss_c_rs
    Float -> Put
putFloat32le Float
_msgEphemerisQzss_c_rc
    Float -> Put
putFloat32le Float
_msgEphemerisQzss_c_uc
    Float -> Put
putFloat32le Float
_msgEphemerisQzss_c_us
    Float -> Put
putFloat32le Float
_msgEphemerisQzss_c_ic
    Float -> Put
putFloat32le Float
_msgEphemerisQzss_c_is
    Double -> Put
putFloat64le Double
_msgEphemerisQzss_dn
    Double -> Put
putFloat64le Double
_msgEphemerisQzss_m0
    Double -> Put
putFloat64le Double
_msgEphemerisQzss_ecc
    Double -> Put
putFloat64le Double
_msgEphemerisQzss_sqrta
    Double -> Put
putFloat64le Double
_msgEphemerisQzss_omega0
    Double -> Put
putFloat64le Double
_msgEphemerisQzss_omegadot
    Double -> Put
putFloat64le Double
_msgEphemerisQzss_w
    Double -> Put
putFloat64le Double
_msgEphemerisQzss_inc
    Double -> Put
putFloat64le Double
_msgEphemerisQzss_inc_dot
    Float -> Put
putFloat32le Float
_msgEphemerisQzss_af0
    Float -> Put
putFloat32le Float
_msgEphemerisQzss_af1
    Float -> Put
putFloat32le Float
_msgEphemerisQzss_af2
    forall t. Binary t => t -> Put
put GpsTimeSec
_msgEphemerisQzss_toc
    Word8 -> Put
putWord8 Word8
_msgEphemerisQzss_iode
    Word16 -> Put
putWord16le Word16
_msgEphemerisQzss_iodc

$(makeSBP 'msgEphemerisQzss ''MsgEphemerisQzss)
$(makeJSON "_msgEphemerisQzss_" ''MsgEphemerisQzss)
$(makeLenses ''MsgEphemerisQzss)

msgEphemerisBds :: Word16
msgEphemerisBds :: Word16
msgEphemerisBds = Word16
0x0089

-- | SBP class for message MSG_EPHEMERIS_BDS (0x0089).
--
-- The ephemeris message returns a set of satellite orbit parameters that is
-- used to calculate BDS satellite position, velocity, and clock offset.
-- Please see the BeiDou Navigation Satellite System SIS-ICD Version 2.1,
-- Table 5-9 for more details.
data MsgEphemerisBds = MsgEphemerisBds
  { MsgEphemerisBds -> EphemerisCommonContent
_msgEphemerisBds_common :: !EphemerisCommonContent
    -- ^ Values common for all ephemeris types
  , MsgEphemerisBds -> Float
_msgEphemerisBds_tgd1   :: !Float
    -- ^ Group delay differential for B1
  , MsgEphemerisBds -> Float
_msgEphemerisBds_tgd2   :: !Float
    -- ^ Group delay differential for B2
  , MsgEphemerisBds -> Float
_msgEphemerisBds_c_rs   :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the orbit radius
  , MsgEphemerisBds -> Float
_msgEphemerisBds_c_rc   :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the orbit radius
  , MsgEphemerisBds -> Float
_msgEphemerisBds_c_uc   :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisBds -> Float
_msgEphemerisBds_c_us   :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisBds -> Float
_msgEphemerisBds_c_ic   :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisBds -> Float
_msgEphemerisBds_c_is   :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisBds -> Double
_msgEphemerisBds_dn     :: !Double
    -- ^ Mean motion difference
  , MsgEphemerisBds -> Double
_msgEphemerisBds_m0     :: !Double
    -- ^ Mean anomaly at reference time
  , MsgEphemerisBds -> Double
_msgEphemerisBds_ecc    :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgEphemerisBds -> Double
_msgEphemerisBds_sqrta  :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgEphemerisBds -> Double
_msgEphemerisBds_omega0 :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgEphemerisBds -> Double
_msgEphemerisBds_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgEphemerisBds -> Double
_msgEphemerisBds_w      :: !Double
    -- ^ Argument of perigee
  , MsgEphemerisBds -> Double
_msgEphemerisBds_inc    :: !Double
    -- ^ Inclination
  , MsgEphemerisBds -> Double
_msgEphemerisBds_inc_dot :: !Double
    -- ^ Inclination first derivative
  , MsgEphemerisBds -> Double
_msgEphemerisBds_af0    :: !Double
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgEphemerisBds -> Float
_msgEphemerisBds_af1    :: !Float
    -- ^ Polynomial clock correction coefficient (clock drift)
  , MsgEphemerisBds -> Float
_msgEphemerisBds_af2    :: !Float
    -- ^ Polynomial clock correction coefficient (rate of clock drift)
  , MsgEphemerisBds -> GpsTimeSec
_msgEphemerisBds_toc    :: !GpsTimeSec
    -- ^ Clock reference
  , MsgEphemerisBds -> Word8
_msgEphemerisBds_iode   :: !Word8
    -- ^ Issue of ephemeris data
    -- Calculated from the navigation data parameter t_oe per RTCM/CSNO
    -- recommendation: IODE = mod (t_oe / 720, 240)
  , MsgEphemerisBds -> Word16
_msgEphemerisBds_iodc   :: !Word16
    -- ^ Issue of clock data
    -- Calculated from the navigation data parameter t_oe per RTCM/CSNO
    -- recommendation: IODE = mod (t_oc / 720, 240)
  } deriving ( Int -> MsgEphemerisBds -> ShowS
[MsgEphemerisBds] -> ShowS
MsgEphemerisBds -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisBds] -> ShowS
$cshowList :: [MsgEphemerisBds] -> ShowS
show :: MsgEphemerisBds -> String
$cshow :: MsgEphemerisBds -> String
showsPrec :: Int -> MsgEphemerisBds -> ShowS
$cshowsPrec :: Int -> MsgEphemerisBds -> ShowS
Show, ReadPrec [MsgEphemerisBds]
ReadPrec MsgEphemerisBds
Int -> ReadS MsgEphemerisBds
ReadS [MsgEphemerisBds]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisBds]
$creadListPrec :: ReadPrec [MsgEphemerisBds]
readPrec :: ReadPrec MsgEphemerisBds
$creadPrec :: ReadPrec MsgEphemerisBds
readList :: ReadS [MsgEphemerisBds]
$creadList :: ReadS [MsgEphemerisBds]
readsPrec :: Int -> ReadS MsgEphemerisBds
$creadsPrec :: Int -> ReadS MsgEphemerisBds
Read, MsgEphemerisBds -> MsgEphemerisBds -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisBds -> MsgEphemerisBds -> Bool
$c/= :: MsgEphemerisBds -> MsgEphemerisBds -> Bool
== :: MsgEphemerisBds -> MsgEphemerisBds -> Bool
$c== :: MsgEphemerisBds -> MsgEphemerisBds -> Bool
Eq )

instance Binary MsgEphemerisBds where
  get :: Get MsgEphemerisBds
get = do
    EphemerisCommonContent
_msgEphemerisBds_common <- forall t. Binary t => Get t
get
    Float
_msgEphemerisBds_tgd1 <- Get Float
getFloat32le
    Float
_msgEphemerisBds_tgd2 <- Get Float
getFloat32le
    Float
_msgEphemerisBds_c_rs <- Get Float
getFloat32le
    Float
_msgEphemerisBds_c_rc <- Get Float
getFloat32le
    Float
_msgEphemerisBds_c_uc <- Get Float
getFloat32le
    Float
_msgEphemerisBds_c_us <- Get Float
getFloat32le
    Float
_msgEphemerisBds_c_ic <- Get Float
getFloat32le
    Float
_msgEphemerisBds_c_is <- Get Float
getFloat32le
    Double
_msgEphemerisBds_dn <- Get Double
getFloat64le
    Double
_msgEphemerisBds_m0 <- Get Double
getFloat64le
    Double
_msgEphemerisBds_ecc <- Get Double
getFloat64le
    Double
_msgEphemerisBds_sqrta <- Get Double
getFloat64le
    Double
_msgEphemerisBds_omega0 <- Get Double
getFloat64le
    Double
_msgEphemerisBds_omegadot <- Get Double
getFloat64le
    Double
_msgEphemerisBds_w <- Get Double
getFloat64le
    Double
_msgEphemerisBds_inc <- Get Double
getFloat64le
    Double
_msgEphemerisBds_inc_dot <- Get Double
getFloat64le
    Double
_msgEphemerisBds_af0 <- Get Double
getFloat64le
    Float
_msgEphemerisBds_af1 <- Get Float
getFloat32le
    Float
_msgEphemerisBds_af2 <- Get Float
getFloat32le
    GpsTimeSec
_msgEphemerisBds_toc <- forall t. Binary t => Get t
get
    Word8
_msgEphemerisBds_iode <- Get Word8
getWord8
    Word16
_msgEphemerisBds_iodc <- Get Word16
getWord16le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisBds {Double
Float
Word8
Word16
GpsTimeSec
EphemerisCommonContent
_msgEphemerisBds_iodc :: Word16
_msgEphemerisBds_iode :: Word8
_msgEphemerisBds_toc :: GpsTimeSec
_msgEphemerisBds_af2 :: Float
_msgEphemerisBds_af1 :: Float
_msgEphemerisBds_af0 :: Double
_msgEphemerisBds_inc_dot :: Double
_msgEphemerisBds_inc :: Double
_msgEphemerisBds_w :: Double
_msgEphemerisBds_omegadot :: Double
_msgEphemerisBds_omega0 :: Double
_msgEphemerisBds_sqrta :: Double
_msgEphemerisBds_ecc :: Double
_msgEphemerisBds_m0 :: Double
_msgEphemerisBds_dn :: Double
_msgEphemerisBds_c_is :: Float
_msgEphemerisBds_c_ic :: Float
_msgEphemerisBds_c_us :: Float
_msgEphemerisBds_c_uc :: Float
_msgEphemerisBds_c_rc :: Float
_msgEphemerisBds_c_rs :: Float
_msgEphemerisBds_tgd2 :: Float
_msgEphemerisBds_tgd1 :: Float
_msgEphemerisBds_common :: EphemerisCommonContent
_msgEphemerisBds_iodc :: Word16
_msgEphemerisBds_iode :: Word8
_msgEphemerisBds_toc :: GpsTimeSec
_msgEphemerisBds_af2 :: Float
_msgEphemerisBds_af1 :: Float
_msgEphemerisBds_af0 :: Double
_msgEphemerisBds_inc_dot :: Double
_msgEphemerisBds_inc :: Double
_msgEphemerisBds_w :: Double
_msgEphemerisBds_omegadot :: Double
_msgEphemerisBds_omega0 :: Double
_msgEphemerisBds_sqrta :: Double
_msgEphemerisBds_ecc :: Double
_msgEphemerisBds_m0 :: Double
_msgEphemerisBds_dn :: Double
_msgEphemerisBds_c_is :: Float
_msgEphemerisBds_c_ic :: Float
_msgEphemerisBds_c_us :: Float
_msgEphemerisBds_c_uc :: Float
_msgEphemerisBds_c_rc :: Float
_msgEphemerisBds_c_rs :: Float
_msgEphemerisBds_tgd2 :: Float
_msgEphemerisBds_tgd1 :: Float
_msgEphemerisBds_common :: EphemerisCommonContent
..}

  put :: MsgEphemerisBds -> Put
put MsgEphemerisBds {Double
Float
Word8
Word16
GpsTimeSec
EphemerisCommonContent
_msgEphemerisBds_iodc :: Word16
_msgEphemerisBds_iode :: Word8
_msgEphemerisBds_toc :: GpsTimeSec
_msgEphemerisBds_af2 :: Float
_msgEphemerisBds_af1 :: Float
_msgEphemerisBds_af0 :: Double
_msgEphemerisBds_inc_dot :: Double
_msgEphemerisBds_inc :: Double
_msgEphemerisBds_w :: Double
_msgEphemerisBds_omegadot :: Double
_msgEphemerisBds_omega0 :: Double
_msgEphemerisBds_sqrta :: Double
_msgEphemerisBds_ecc :: Double
_msgEphemerisBds_m0 :: Double
_msgEphemerisBds_dn :: Double
_msgEphemerisBds_c_is :: Float
_msgEphemerisBds_c_ic :: Float
_msgEphemerisBds_c_us :: Float
_msgEphemerisBds_c_uc :: Float
_msgEphemerisBds_c_rc :: Float
_msgEphemerisBds_c_rs :: Float
_msgEphemerisBds_tgd2 :: Float
_msgEphemerisBds_tgd1 :: Float
_msgEphemerisBds_common :: EphemerisCommonContent
_msgEphemerisBds_iodc :: MsgEphemerisBds -> Word16
_msgEphemerisBds_iode :: MsgEphemerisBds -> Word8
_msgEphemerisBds_toc :: MsgEphemerisBds -> GpsTimeSec
_msgEphemerisBds_af2 :: MsgEphemerisBds -> Float
_msgEphemerisBds_af1 :: MsgEphemerisBds -> Float
_msgEphemerisBds_af0 :: MsgEphemerisBds -> Double
_msgEphemerisBds_inc_dot :: MsgEphemerisBds -> Double
_msgEphemerisBds_inc :: MsgEphemerisBds -> Double
_msgEphemerisBds_w :: MsgEphemerisBds -> Double
_msgEphemerisBds_omegadot :: MsgEphemerisBds -> Double
_msgEphemerisBds_omega0 :: MsgEphemerisBds -> Double
_msgEphemerisBds_sqrta :: MsgEphemerisBds -> Double
_msgEphemerisBds_ecc :: MsgEphemerisBds -> Double
_msgEphemerisBds_m0 :: MsgEphemerisBds -> Double
_msgEphemerisBds_dn :: MsgEphemerisBds -> Double
_msgEphemerisBds_c_is :: MsgEphemerisBds -> Float
_msgEphemerisBds_c_ic :: MsgEphemerisBds -> Float
_msgEphemerisBds_c_us :: MsgEphemerisBds -> Float
_msgEphemerisBds_c_uc :: MsgEphemerisBds -> Float
_msgEphemerisBds_c_rc :: MsgEphemerisBds -> Float
_msgEphemerisBds_c_rs :: MsgEphemerisBds -> Float
_msgEphemerisBds_tgd2 :: MsgEphemerisBds -> Float
_msgEphemerisBds_tgd1 :: MsgEphemerisBds -> Float
_msgEphemerisBds_common :: MsgEphemerisBds -> EphemerisCommonContent
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContent
_msgEphemerisBds_common
    Float -> Put
putFloat32le Float
_msgEphemerisBds_tgd1
    Float -> Put
putFloat32le Float
_msgEphemerisBds_tgd2
    Float -> Put
putFloat32le Float
_msgEphemerisBds_c_rs
    Float -> Put
putFloat32le Float
_msgEphemerisBds_c_rc
    Float -> Put
putFloat32le Float
_msgEphemerisBds_c_uc
    Float -> Put
putFloat32le Float
_msgEphemerisBds_c_us
    Float -> Put
putFloat32le Float
_msgEphemerisBds_c_ic
    Float -> Put
putFloat32le Float
_msgEphemerisBds_c_is
    Double -> Put
putFloat64le Double
_msgEphemerisBds_dn
    Double -> Put
putFloat64le Double
_msgEphemerisBds_m0
    Double -> Put
putFloat64le Double
_msgEphemerisBds_ecc
    Double -> Put
putFloat64le Double
_msgEphemerisBds_sqrta
    Double -> Put
putFloat64le Double
_msgEphemerisBds_omega0
    Double -> Put
putFloat64le Double
_msgEphemerisBds_omegadot
    Double -> Put
putFloat64le Double
_msgEphemerisBds_w
    Double -> Put
putFloat64le Double
_msgEphemerisBds_inc
    Double -> Put
putFloat64le Double
_msgEphemerisBds_inc_dot
    Double -> Put
putFloat64le Double
_msgEphemerisBds_af0
    Float -> Put
putFloat32le Float
_msgEphemerisBds_af1
    Float -> Put
putFloat32le Float
_msgEphemerisBds_af2
    forall t. Binary t => t -> Put
put GpsTimeSec
_msgEphemerisBds_toc
    Word8 -> Put
putWord8 Word8
_msgEphemerisBds_iode
    Word16 -> Put
putWord16le Word16
_msgEphemerisBds_iodc

$(makeSBP 'msgEphemerisBds ''MsgEphemerisBds)
$(makeJSON "_msgEphemerisBds_" ''MsgEphemerisBds)
$(makeLenses ''MsgEphemerisBds)

msgEphemerisGalDepA :: Word16
msgEphemerisGalDepA :: Word16
msgEphemerisGalDepA = Word16
0x0095

-- | SBP class for message MSG_EPHEMERIS_GAL_DEP_A (0x0095).
--
-- This observation message has been deprecated in favor of an ephemeris
-- message with explicit source of NAV data.
data MsgEphemerisGalDepA = MsgEphemerisGalDepA
  { MsgEphemerisGalDepA -> EphemerisCommonContent
_msgEphemerisGalDepA_common  :: !EphemerisCommonContent
    -- ^ Values common for all ephemeris types
  , MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_bgd_e1e5a :: !Float
    -- ^ E1-E5a Broadcast Group Delay
  , MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_bgd_e1e5b :: !Float
    -- ^ E1-E5b Broadcast Group Delay
  , MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_c_rs    :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the orbit radius
  , MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_c_rc    :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the orbit radius
  , MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_c_uc    :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_c_us    :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_c_ic    :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_c_is    :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_dn      :: !Double
    -- ^ Mean motion difference
  , MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_m0      :: !Double
    -- ^ Mean anomaly at reference time
  , MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_ecc     :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_sqrta   :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_omega0  :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_w       :: !Double
    -- ^ Argument of perigee
  , MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_inc     :: !Double
    -- ^ Inclination
  , MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_inc_dot :: !Double
    -- ^ Inclination first derivative
  , MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_af0     :: !Double
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_af1     :: !Double
    -- ^ Polynomial clock correction coefficient (clock drift)
  , MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_af2     :: !Float
    -- ^ Polynomial clock correction coefficient (rate of clock drift)
  , MsgEphemerisGalDepA -> GpsTimeSec
_msgEphemerisGalDepA_toc     :: !GpsTimeSec
    -- ^ Clock reference
  , MsgEphemerisGalDepA -> Word16
_msgEphemerisGalDepA_iode    :: !Word16
    -- ^ Issue of data (IODnav)
  , MsgEphemerisGalDepA -> Word16
_msgEphemerisGalDepA_iodc    :: !Word16
    -- ^ Issue of data (IODnav). Always equal to iode
  } deriving ( Int -> MsgEphemerisGalDepA -> ShowS
[MsgEphemerisGalDepA] -> ShowS
MsgEphemerisGalDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisGalDepA] -> ShowS
$cshowList :: [MsgEphemerisGalDepA] -> ShowS
show :: MsgEphemerisGalDepA -> String
$cshow :: MsgEphemerisGalDepA -> String
showsPrec :: Int -> MsgEphemerisGalDepA -> ShowS
$cshowsPrec :: Int -> MsgEphemerisGalDepA -> ShowS
Show, ReadPrec [MsgEphemerisGalDepA]
ReadPrec MsgEphemerisGalDepA
Int -> ReadS MsgEphemerisGalDepA
ReadS [MsgEphemerisGalDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisGalDepA]
$creadListPrec :: ReadPrec [MsgEphemerisGalDepA]
readPrec :: ReadPrec MsgEphemerisGalDepA
$creadPrec :: ReadPrec MsgEphemerisGalDepA
readList :: ReadS [MsgEphemerisGalDepA]
$creadList :: ReadS [MsgEphemerisGalDepA]
readsPrec :: Int -> ReadS MsgEphemerisGalDepA
$creadsPrec :: Int -> ReadS MsgEphemerisGalDepA
Read, MsgEphemerisGalDepA -> MsgEphemerisGalDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisGalDepA -> MsgEphemerisGalDepA -> Bool
$c/= :: MsgEphemerisGalDepA -> MsgEphemerisGalDepA -> Bool
== :: MsgEphemerisGalDepA -> MsgEphemerisGalDepA -> Bool
$c== :: MsgEphemerisGalDepA -> MsgEphemerisGalDepA -> Bool
Eq )

instance Binary MsgEphemerisGalDepA where
  get :: Get MsgEphemerisGalDepA
get = do
    EphemerisCommonContent
_msgEphemerisGalDepA_common <- forall t. Binary t => Get t
get
    Float
_msgEphemerisGalDepA_bgd_e1e5a <- Get Float
getFloat32le
    Float
_msgEphemerisGalDepA_bgd_e1e5b <- Get Float
getFloat32le
    Float
_msgEphemerisGalDepA_c_rs <- Get Float
getFloat32le
    Float
_msgEphemerisGalDepA_c_rc <- Get Float
getFloat32le
    Float
_msgEphemerisGalDepA_c_uc <- Get Float
getFloat32le
    Float
_msgEphemerisGalDepA_c_us <- Get Float
getFloat32le
    Float
_msgEphemerisGalDepA_c_ic <- Get Float
getFloat32le
    Float
_msgEphemerisGalDepA_c_is <- Get Float
getFloat32le
    Double
_msgEphemerisGalDepA_dn <- Get Double
getFloat64le
    Double
_msgEphemerisGalDepA_m0 <- Get Double
getFloat64le
    Double
_msgEphemerisGalDepA_ecc <- Get Double
getFloat64le
    Double
_msgEphemerisGalDepA_sqrta <- Get Double
getFloat64le
    Double
_msgEphemerisGalDepA_omega0 <- Get Double
getFloat64le
    Double
_msgEphemerisGalDepA_omegadot <- Get Double
getFloat64le
    Double
_msgEphemerisGalDepA_w <- Get Double
getFloat64le
    Double
_msgEphemerisGalDepA_inc <- Get Double
getFloat64le
    Double
_msgEphemerisGalDepA_inc_dot <- Get Double
getFloat64le
    Double
_msgEphemerisGalDepA_af0 <- Get Double
getFloat64le
    Double
_msgEphemerisGalDepA_af1 <- Get Double
getFloat64le
    Float
_msgEphemerisGalDepA_af2 <- Get Float
getFloat32le
    GpsTimeSec
_msgEphemerisGalDepA_toc <- forall t. Binary t => Get t
get
    Word16
_msgEphemerisGalDepA_iode <- Get Word16
getWord16le
    Word16
_msgEphemerisGalDepA_iodc <- Get Word16
getWord16le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisGalDepA {Double
Float
Word16
GpsTimeSec
EphemerisCommonContent
_msgEphemerisGalDepA_iodc :: Word16
_msgEphemerisGalDepA_iode :: Word16
_msgEphemerisGalDepA_toc :: GpsTimeSec
_msgEphemerisGalDepA_af2 :: Float
_msgEphemerisGalDepA_af1 :: Double
_msgEphemerisGalDepA_af0 :: Double
_msgEphemerisGalDepA_inc_dot :: Double
_msgEphemerisGalDepA_inc :: Double
_msgEphemerisGalDepA_w :: Double
_msgEphemerisGalDepA_omegadot :: Double
_msgEphemerisGalDepA_omega0 :: Double
_msgEphemerisGalDepA_sqrta :: Double
_msgEphemerisGalDepA_ecc :: Double
_msgEphemerisGalDepA_m0 :: Double
_msgEphemerisGalDepA_dn :: Double
_msgEphemerisGalDepA_c_is :: Float
_msgEphemerisGalDepA_c_ic :: Float
_msgEphemerisGalDepA_c_us :: Float
_msgEphemerisGalDepA_c_uc :: Float
_msgEphemerisGalDepA_c_rc :: Float
_msgEphemerisGalDepA_c_rs :: Float
_msgEphemerisGalDepA_bgd_e1e5b :: Float
_msgEphemerisGalDepA_bgd_e1e5a :: Float
_msgEphemerisGalDepA_common :: EphemerisCommonContent
_msgEphemerisGalDepA_iodc :: Word16
_msgEphemerisGalDepA_iode :: Word16
_msgEphemerisGalDepA_toc :: GpsTimeSec
_msgEphemerisGalDepA_af2 :: Float
_msgEphemerisGalDepA_af1 :: Double
_msgEphemerisGalDepA_af0 :: Double
_msgEphemerisGalDepA_inc_dot :: Double
_msgEphemerisGalDepA_inc :: Double
_msgEphemerisGalDepA_w :: Double
_msgEphemerisGalDepA_omegadot :: Double
_msgEphemerisGalDepA_omega0 :: Double
_msgEphemerisGalDepA_sqrta :: Double
_msgEphemerisGalDepA_ecc :: Double
_msgEphemerisGalDepA_m0 :: Double
_msgEphemerisGalDepA_dn :: Double
_msgEphemerisGalDepA_c_is :: Float
_msgEphemerisGalDepA_c_ic :: Float
_msgEphemerisGalDepA_c_us :: Float
_msgEphemerisGalDepA_c_uc :: Float
_msgEphemerisGalDepA_c_rc :: Float
_msgEphemerisGalDepA_c_rs :: Float
_msgEphemerisGalDepA_bgd_e1e5b :: Float
_msgEphemerisGalDepA_bgd_e1e5a :: Float
_msgEphemerisGalDepA_common :: EphemerisCommonContent
..}

  put :: MsgEphemerisGalDepA -> Put
put MsgEphemerisGalDepA {Double
Float
Word16
GpsTimeSec
EphemerisCommonContent
_msgEphemerisGalDepA_iodc :: Word16
_msgEphemerisGalDepA_iode :: Word16
_msgEphemerisGalDepA_toc :: GpsTimeSec
_msgEphemerisGalDepA_af2 :: Float
_msgEphemerisGalDepA_af1 :: Double
_msgEphemerisGalDepA_af0 :: Double
_msgEphemerisGalDepA_inc_dot :: Double
_msgEphemerisGalDepA_inc :: Double
_msgEphemerisGalDepA_w :: Double
_msgEphemerisGalDepA_omegadot :: Double
_msgEphemerisGalDepA_omega0 :: Double
_msgEphemerisGalDepA_sqrta :: Double
_msgEphemerisGalDepA_ecc :: Double
_msgEphemerisGalDepA_m0 :: Double
_msgEphemerisGalDepA_dn :: Double
_msgEphemerisGalDepA_c_is :: Float
_msgEphemerisGalDepA_c_ic :: Float
_msgEphemerisGalDepA_c_us :: Float
_msgEphemerisGalDepA_c_uc :: Float
_msgEphemerisGalDepA_c_rc :: Float
_msgEphemerisGalDepA_c_rs :: Float
_msgEphemerisGalDepA_bgd_e1e5b :: Float
_msgEphemerisGalDepA_bgd_e1e5a :: Float
_msgEphemerisGalDepA_common :: EphemerisCommonContent
_msgEphemerisGalDepA_iodc :: MsgEphemerisGalDepA -> Word16
_msgEphemerisGalDepA_iode :: MsgEphemerisGalDepA -> Word16
_msgEphemerisGalDepA_toc :: MsgEphemerisGalDepA -> GpsTimeSec
_msgEphemerisGalDepA_af2 :: MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_af1 :: MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_af0 :: MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_inc_dot :: MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_inc :: MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_w :: MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_omegadot :: MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_omega0 :: MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_sqrta :: MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_ecc :: MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_m0 :: MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_dn :: MsgEphemerisGalDepA -> Double
_msgEphemerisGalDepA_c_is :: MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_c_ic :: MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_c_us :: MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_c_uc :: MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_c_rc :: MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_c_rs :: MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_bgd_e1e5b :: MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_bgd_e1e5a :: MsgEphemerisGalDepA -> Float
_msgEphemerisGalDepA_common :: MsgEphemerisGalDepA -> EphemerisCommonContent
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContent
_msgEphemerisGalDepA_common
    Float -> Put
putFloat32le Float
_msgEphemerisGalDepA_bgd_e1e5a
    Float -> Put
putFloat32le Float
_msgEphemerisGalDepA_bgd_e1e5b
    Float -> Put
putFloat32le Float
_msgEphemerisGalDepA_c_rs
    Float -> Put
putFloat32le Float
_msgEphemerisGalDepA_c_rc
    Float -> Put
putFloat32le Float
_msgEphemerisGalDepA_c_uc
    Float -> Put
putFloat32le Float
_msgEphemerisGalDepA_c_us
    Float -> Put
putFloat32le Float
_msgEphemerisGalDepA_c_ic
    Float -> Put
putFloat32le Float
_msgEphemerisGalDepA_c_is
    Double -> Put
putFloat64le Double
_msgEphemerisGalDepA_dn
    Double -> Put
putFloat64le Double
_msgEphemerisGalDepA_m0
    Double -> Put
putFloat64le Double
_msgEphemerisGalDepA_ecc
    Double -> Put
putFloat64le Double
_msgEphemerisGalDepA_sqrta
    Double -> Put
putFloat64le Double
_msgEphemerisGalDepA_omega0
    Double -> Put
putFloat64le Double
_msgEphemerisGalDepA_omegadot
    Double -> Put
putFloat64le Double
_msgEphemerisGalDepA_w
    Double -> Put
putFloat64le Double
_msgEphemerisGalDepA_inc
    Double -> Put
putFloat64le Double
_msgEphemerisGalDepA_inc_dot
    Double -> Put
putFloat64le Double
_msgEphemerisGalDepA_af0
    Double -> Put
putFloat64le Double
_msgEphemerisGalDepA_af1
    Float -> Put
putFloat32le Float
_msgEphemerisGalDepA_af2
    forall t. Binary t => t -> Put
put GpsTimeSec
_msgEphemerisGalDepA_toc
    Word16 -> Put
putWord16le Word16
_msgEphemerisGalDepA_iode
    Word16 -> Put
putWord16le Word16
_msgEphemerisGalDepA_iodc

$(makeSBP 'msgEphemerisGalDepA ''MsgEphemerisGalDepA)
$(makeJSON "_msgEphemerisGalDepA_" ''MsgEphemerisGalDepA)
$(makeLenses ''MsgEphemerisGalDepA)

msgEphemerisGal :: Word16
msgEphemerisGal :: Word16
msgEphemerisGal = Word16
0x008D

-- | SBP class for message MSG_EPHEMERIS_GAL (0x008D).
--
-- The ephemeris message returns a set of satellite orbit parameters that is
-- used to calculate Galileo satellite position, velocity, and clock offset.
-- Please see the Signal In Space ICD OS SIS ICD, Issue 1.3, December 2016 for
-- more details.
data MsgEphemerisGal = MsgEphemerisGal
  { MsgEphemerisGal -> EphemerisCommonContent
_msgEphemerisGal_common  :: !EphemerisCommonContent
    -- ^ Values common for all ephemeris types
  , MsgEphemerisGal -> Float
_msgEphemerisGal_bgd_e1e5a :: !Float
    -- ^ E1-E5a Broadcast Group Delay
  , MsgEphemerisGal -> Float
_msgEphemerisGal_bgd_e1e5b :: !Float
    -- ^ E1-E5b Broadcast Group Delay
  , MsgEphemerisGal -> Float
_msgEphemerisGal_c_rs    :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the orbit radius
  , MsgEphemerisGal -> Float
_msgEphemerisGal_c_rc    :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the orbit radius
  , MsgEphemerisGal -> Float
_msgEphemerisGal_c_uc    :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisGal -> Float
_msgEphemerisGal_c_us    :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisGal -> Float
_msgEphemerisGal_c_ic    :: !Float
    -- ^ Amplitude of the cosine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisGal -> Float
_msgEphemerisGal_c_is    :: !Float
    -- ^ Amplitude of the sine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisGal -> Double
_msgEphemerisGal_dn      :: !Double
    -- ^ Mean motion difference
  , MsgEphemerisGal -> Double
_msgEphemerisGal_m0      :: !Double
    -- ^ Mean anomaly at reference time
  , MsgEphemerisGal -> Double
_msgEphemerisGal_ecc     :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgEphemerisGal -> Double
_msgEphemerisGal_sqrta   :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgEphemerisGal -> Double
_msgEphemerisGal_omega0  :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgEphemerisGal -> Double
_msgEphemerisGal_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgEphemerisGal -> Double
_msgEphemerisGal_w       :: !Double
    -- ^ Argument of perigee
  , MsgEphemerisGal -> Double
_msgEphemerisGal_inc     :: !Double
    -- ^ Inclination
  , MsgEphemerisGal -> Double
_msgEphemerisGal_inc_dot :: !Double
    -- ^ Inclination first derivative
  , MsgEphemerisGal -> Double
_msgEphemerisGal_af0     :: !Double
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgEphemerisGal -> Double
_msgEphemerisGal_af1     :: !Double
    -- ^ Polynomial clock correction coefficient (clock drift)
  , MsgEphemerisGal -> Float
_msgEphemerisGal_af2     :: !Float
    -- ^ Polynomial clock correction coefficient (rate of clock drift)
  , MsgEphemerisGal -> GpsTimeSec
_msgEphemerisGal_toc     :: !GpsTimeSec
    -- ^ Clock reference
  , MsgEphemerisGal -> Word16
_msgEphemerisGal_iode    :: !Word16
    -- ^ Issue of data (IODnav)
  , MsgEphemerisGal -> Word16
_msgEphemerisGal_iodc    :: !Word16
    -- ^ Issue of data (IODnav). Always equal to iode
  , MsgEphemerisGal -> Word8
_msgEphemerisGal_source  :: !Word8
    -- ^ 0=I/NAV, 1=F/NAV
  } deriving ( Int -> MsgEphemerisGal -> ShowS
[MsgEphemerisGal] -> ShowS
MsgEphemerisGal -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisGal] -> ShowS
$cshowList :: [MsgEphemerisGal] -> ShowS
show :: MsgEphemerisGal -> String
$cshow :: MsgEphemerisGal -> String
showsPrec :: Int -> MsgEphemerisGal -> ShowS
$cshowsPrec :: Int -> MsgEphemerisGal -> ShowS
Show, ReadPrec [MsgEphemerisGal]
ReadPrec MsgEphemerisGal
Int -> ReadS MsgEphemerisGal
ReadS [MsgEphemerisGal]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisGal]
$creadListPrec :: ReadPrec [MsgEphemerisGal]
readPrec :: ReadPrec MsgEphemerisGal
$creadPrec :: ReadPrec MsgEphemerisGal
readList :: ReadS [MsgEphemerisGal]
$creadList :: ReadS [MsgEphemerisGal]
readsPrec :: Int -> ReadS MsgEphemerisGal
$creadsPrec :: Int -> ReadS MsgEphemerisGal
Read, MsgEphemerisGal -> MsgEphemerisGal -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisGal -> MsgEphemerisGal -> Bool
$c/= :: MsgEphemerisGal -> MsgEphemerisGal -> Bool
== :: MsgEphemerisGal -> MsgEphemerisGal -> Bool
$c== :: MsgEphemerisGal -> MsgEphemerisGal -> Bool
Eq )

instance Binary MsgEphemerisGal where
  get :: Get MsgEphemerisGal
get = do
    EphemerisCommonContent
_msgEphemerisGal_common <- forall t. Binary t => Get t
get
    Float
_msgEphemerisGal_bgd_e1e5a <- Get Float
getFloat32le
    Float
_msgEphemerisGal_bgd_e1e5b <- Get Float
getFloat32le
    Float
_msgEphemerisGal_c_rs <- Get Float
getFloat32le
    Float
_msgEphemerisGal_c_rc <- Get Float
getFloat32le
    Float
_msgEphemerisGal_c_uc <- Get Float
getFloat32le
    Float
_msgEphemerisGal_c_us <- Get Float
getFloat32le
    Float
_msgEphemerisGal_c_ic <- Get Float
getFloat32le
    Float
_msgEphemerisGal_c_is <- Get Float
getFloat32le
    Double
_msgEphemerisGal_dn <- Get Double
getFloat64le
    Double
_msgEphemerisGal_m0 <- Get Double
getFloat64le
    Double
_msgEphemerisGal_ecc <- Get Double
getFloat64le
    Double
_msgEphemerisGal_sqrta <- Get Double
getFloat64le
    Double
_msgEphemerisGal_omega0 <- Get Double
getFloat64le
    Double
_msgEphemerisGal_omegadot <- Get Double
getFloat64le
    Double
_msgEphemerisGal_w <- Get Double
getFloat64le
    Double
_msgEphemerisGal_inc <- Get Double
getFloat64le
    Double
_msgEphemerisGal_inc_dot <- Get Double
getFloat64le
    Double
_msgEphemerisGal_af0 <- Get Double
getFloat64le
    Double
_msgEphemerisGal_af1 <- Get Double
getFloat64le
    Float
_msgEphemerisGal_af2 <- Get Float
getFloat32le
    GpsTimeSec
_msgEphemerisGal_toc <- forall t. Binary t => Get t
get
    Word16
_msgEphemerisGal_iode <- Get Word16
getWord16le
    Word16
_msgEphemerisGal_iodc <- Get Word16
getWord16le
    Word8
_msgEphemerisGal_source <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisGal {Double
Float
Word8
Word16
GpsTimeSec
EphemerisCommonContent
_msgEphemerisGal_source :: Word8
_msgEphemerisGal_iodc :: Word16
_msgEphemerisGal_iode :: Word16
_msgEphemerisGal_toc :: GpsTimeSec
_msgEphemerisGal_af2 :: Float
_msgEphemerisGal_af1 :: Double
_msgEphemerisGal_af0 :: Double
_msgEphemerisGal_inc_dot :: Double
_msgEphemerisGal_inc :: Double
_msgEphemerisGal_w :: Double
_msgEphemerisGal_omegadot :: Double
_msgEphemerisGal_omega0 :: Double
_msgEphemerisGal_sqrta :: Double
_msgEphemerisGal_ecc :: Double
_msgEphemerisGal_m0 :: Double
_msgEphemerisGal_dn :: Double
_msgEphemerisGal_c_is :: Float
_msgEphemerisGal_c_ic :: Float
_msgEphemerisGal_c_us :: Float
_msgEphemerisGal_c_uc :: Float
_msgEphemerisGal_c_rc :: Float
_msgEphemerisGal_c_rs :: Float
_msgEphemerisGal_bgd_e1e5b :: Float
_msgEphemerisGal_bgd_e1e5a :: Float
_msgEphemerisGal_common :: EphemerisCommonContent
_msgEphemerisGal_source :: Word8
_msgEphemerisGal_iodc :: Word16
_msgEphemerisGal_iode :: Word16
_msgEphemerisGal_toc :: GpsTimeSec
_msgEphemerisGal_af2 :: Float
_msgEphemerisGal_af1 :: Double
_msgEphemerisGal_af0 :: Double
_msgEphemerisGal_inc_dot :: Double
_msgEphemerisGal_inc :: Double
_msgEphemerisGal_w :: Double
_msgEphemerisGal_omegadot :: Double
_msgEphemerisGal_omega0 :: Double
_msgEphemerisGal_sqrta :: Double
_msgEphemerisGal_ecc :: Double
_msgEphemerisGal_m0 :: Double
_msgEphemerisGal_dn :: Double
_msgEphemerisGal_c_is :: Float
_msgEphemerisGal_c_ic :: Float
_msgEphemerisGal_c_us :: Float
_msgEphemerisGal_c_uc :: Float
_msgEphemerisGal_c_rc :: Float
_msgEphemerisGal_c_rs :: Float
_msgEphemerisGal_bgd_e1e5b :: Float
_msgEphemerisGal_bgd_e1e5a :: Float
_msgEphemerisGal_common :: EphemerisCommonContent
..}

  put :: MsgEphemerisGal -> Put
put MsgEphemerisGal {Double
Float
Word8
Word16
GpsTimeSec
EphemerisCommonContent
_msgEphemerisGal_source :: Word8
_msgEphemerisGal_iodc :: Word16
_msgEphemerisGal_iode :: Word16
_msgEphemerisGal_toc :: GpsTimeSec
_msgEphemerisGal_af2 :: Float
_msgEphemerisGal_af1 :: Double
_msgEphemerisGal_af0 :: Double
_msgEphemerisGal_inc_dot :: Double
_msgEphemerisGal_inc :: Double
_msgEphemerisGal_w :: Double
_msgEphemerisGal_omegadot :: Double
_msgEphemerisGal_omega0 :: Double
_msgEphemerisGal_sqrta :: Double
_msgEphemerisGal_ecc :: Double
_msgEphemerisGal_m0 :: Double
_msgEphemerisGal_dn :: Double
_msgEphemerisGal_c_is :: Float
_msgEphemerisGal_c_ic :: Float
_msgEphemerisGal_c_us :: Float
_msgEphemerisGal_c_uc :: Float
_msgEphemerisGal_c_rc :: Float
_msgEphemerisGal_c_rs :: Float
_msgEphemerisGal_bgd_e1e5b :: Float
_msgEphemerisGal_bgd_e1e5a :: Float
_msgEphemerisGal_common :: EphemerisCommonContent
_msgEphemerisGal_source :: MsgEphemerisGal -> Word8
_msgEphemerisGal_iodc :: MsgEphemerisGal -> Word16
_msgEphemerisGal_iode :: MsgEphemerisGal -> Word16
_msgEphemerisGal_toc :: MsgEphemerisGal -> GpsTimeSec
_msgEphemerisGal_af2 :: MsgEphemerisGal -> Float
_msgEphemerisGal_af1 :: MsgEphemerisGal -> Double
_msgEphemerisGal_af0 :: MsgEphemerisGal -> Double
_msgEphemerisGal_inc_dot :: MsgEphemerisGal -> Double
_msgEphemerisGal_inc :: MsgEphemerisGal -> Double
_msgEphemerisGal_w :: MsgEphemerisGal -> Double
_msgEphemerisGal_omegadot :: MsgEphemerisGal -> Double
_msgEphemerisGal_omega0 :: MsgEphemerisGal -> Double
_msgEphemerisGal_sqrta :: MsgEphemerisGal -> Double
_msgEphemerisGal_ecc :: MsgEphemerisGal -> Double
_msgEphemerisGal_m0 :: MsgEphemerisGal -> Double
_msgEphemerisGal_dn :: MsgEphemerisGal -> Double
_msgEphemerisGal_c_is :: MsgEphemerisGal -> Float
_msgEphemerisGal_c_ic :: MsgEphemerisGal -> Float
_msgEphemerisGal_c_us :: MsgEphemerisGal -> Float
_msgEphemerisGal_c_uc :: MsgEphemerisGal -> Float
_msgEphemerisGal_c_rc :: MsgEphemerisGal -> Float
_msgEphemerisGal_c_rs :: MsgEphemerisGal -> Float
_msgEphemerisGal_bgd_e1e5b :: MsgEphemerisGal -> Float
_msgEphemerisGal_bgd_e1e5a :: MsgEphemerisGal -> Float
_msgEphemerisGal_common :: MsgEphemerisGal -> EphemerisCommonContent
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContent
_msgEphemerisGal_common
    Float -> Put
putFloat32le Float
_msgEphemerisGal_bgd_e1e5a
    Float -> Put
putFloat32le Float
_msgEphemerisGal_bgd_e1e5b
    Float -> Put
putFloat32le Float
_msgEphemerisGal_c_rs
    Float -> Put
putFloat32le Float
_msgEphemerisGal_c_rc
    Float -> Put
putFloat32le Float
_msgEphemerisGal_c_uc
    Float -> Put
putFloat32le Float
_msgEphemerisGal_c_us
    Float -> Put
putFloat32le Float
_msgEphemerisGal_c_ic
    Float -> Put
putFloat32le Float
_msgEphemerisGal_c_is
    Double -> Put
putFloat64le Double
_msgEphemerisGal_dn
    Double -> Put
putFloat64le Double
_msgEphemerisGal_m0
    Double -> Put
putFloat64le Double
_msgEphemerisGal_ecc
    Double -> Put
putFloat64le Double
_msgEphemerisGal_sqrta
    Double -> Put
putFloat64le Double
_msgEphemerisGal_omega0
    Double -> Put
putFloat64le Double
_msgEphemerisGal_omegadot
    Double -> Put
putFloat64le Double
_msgEphemerisGal_w
    Double -> Put
putFloat64le Double
_msgEphemerisGal_inc
    Double -> Put
putFloat64le Double
_msgEphemerisGal_inc_dot
    Double -> Put
putFloat64le Double
_msgEphemerisGal_af0
    Double -> Put
putFloat64le Double
_msgEphemerisGal_af1
    Float -> Put
putFloat32le Float
_msgEphemerisGal_af2
    forall t. Binary t => t -> Put
put GpsTimeSec
_msgEphemerisGal_toc
    Word16 -> Put
putWord16le Word16
_msgEphemerisGal_iode
    Word16 -> Put
putWord16le Word16
_msgEphemerisGal_iodc
    Word8 -> Put
putWord8 Word8
_msgEphemerisGal_source

$(makeSBP 'msgEphemerisGal ''MsgEphemerisGal)
$(makeJSON "_msgEphemerisGal_" ''MsgEphemerisGal)
$(makeLenses ''MsgEphemerisGal)

msgEphemerisSbasDepA :: Word16
msgEphemerisSbasDepA :: Word16
msgEphemerisSbasDepA = Word16
0x0082

data MsgEphemerisSbasDepA = MsgEphemerisSbasDepA
  { MsgEphemerisSbasDepA -> EphemerisCommonContentDepA
_msgEphemerisSbasDepA_common :: !EphemerisCommonContentDepA
    -- ^ Values common for all ephemeris types
  , MsgEphemerisSbasDepA -> [Double]
_msgEphemerisSbasDepA_pos  :: ![Double]
    -- ^ Position of the GEO at time toe
  , MsgEphemerisSbasDepA -> [Double]
_msgEphemerisSbasDepA_vel  :: ![Double]
    -- ^ Velocity of the GEO at time toe
  , MsgEphemerisSbasDepA -> [Double]
_msgEphemerisSbasDepA_acc  :: ![Double]
    -- ^ Acceleration of the GEO at time toe
  , MsgEphemerisSbasDepA -> Double
_msgEphemerisSbasDepA_a_gf0 :: !Double
    -- ^ Time offset of the GEO clock w.r.t. SBAS Network Time
  , MsgEphemerisSbasDepA -> Double
_msgEphemerisSbasDepA_a_gf1 :: !Double
    -- ^ Drift of the GEO clock w.r.t. SBAS Network Time
  } deriving ( Int -> MsgEphemerisSbasDepA -> ShowS
[MsgEphemerisSbasDepA] -> ShowS
MsgEphemerisSbasDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisSbasDepA] -> ShowS
$cshowList :: [MsgEphemerisSbasDepA] -> ShowS
show :: MsgEphemerisSbasDepA -> String
$cshow :: MsgEphemerisSbasDepA -> String
showsPrec :: Int -> MsgEphemerisSbasDepA -> ShowS
$cshowsPrec :: Int -> MsgEphemerisSbasDepA -> ShowS
Show, ReadPrec [MsgEphemerisSbasDepA]
ReadPrec MsgEphemerisSbasDepA
Int -> ReadS MsgEphemerisSbasDepA
ReadS [MsgEphemerisSbasDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisSbasDepA]
$creadListPrec :: ReadPrec [MsgEphemerisSbasDepA]
readPrec :: ReadPrec MsgEphemerisSbasDepA
$creadPrec :: ReadPrec MsgEphemerisSbasDepA
readList :: ReadS [MsgEphemerisSbasDepA]
$creadList :: ReadS [MsgEphemerisSbasDepA]
readsPrec :: Int -> ReadS MsgEphemerisSbasDepA
$creadsPrec :: Int -> ReadS MsgEphemerisSbasDepA
Read, MsgEphemerisSbasDepA -> MsgEphemerisSbasDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisSbasDepA -> MsgEphemerisSbasDepA -> Bool
$c/= :: MsgEphemerisSbasDepA -> MsgEphemerisSbasDepA -> Bool
== :: MsgEphemerisSbasDepA -> MsgEphemerisSbasDepA -> Bool
$c== :: MsgEphemerisSbasDepA -> MsgEphemerisSbasDepA -> Bool
Eq )

instance Binary MsgEphemerisSbasDepA where
  get :: Get MsgEphemerisSbasDepA
get = do
    EphemerisCommonContentDepA
_msgEphemerisSbasDepA_common <- forall t. Binary t => Get t
get
    [Double]
_msgEphemerisSbasDepA_pos <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisSbasDepA_vel <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisSbasDepA_acc <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    Double
_msgEphemerisSbasDepA_a_gf0 <- Get Double
getFloat64le
    Double
_msgEphemerisSbasDepA_a_gf1 <- Get Double
getFloat64le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisSbasDepA {Double
[Double]
EphemerisCommonContentDepA
_msgEphemerisSbasDepA_a_gf1 :: Double
_msgEphemerisSbasDepA_a_gf0 :: Double
_msgEphemerisSbasDepA_acc :: [Double]
_msgEphemerisSbasDepA_vel :: [Double]
_msgEphemerisSbasDepA_pos :: [Double]
_msgEphemerisSbasDepA_common :: EphemerisCommonContentDepA
_msgEphemerisSbasDepA_a_gf1 :: Double
_msgEphemerisSbasDepA_a_gf0 :: Double
_msgEphemerisSbasDepA_acc :: [Double]
_msgEphemerisSbasDepA_vel :: [Double]
_msgEphemerisSbasDepA_pos :: [Double]
_msgEphemerisSbasDepA_common :: EphemerisCommonContentDepA
..}

  put :: MsgEphemerisSbasDepA -> Put
put MsgEphemerisSbasDepA {Double
[Double]
EphemerisCommonContentDepA
_msgEphemerisSbasDepA_a_gf1 :: Double
_msgEphemerisSbasDepA_a_gf0 :: Double
_msgEphemerisSbasDepA_acc :: [Double]
_msgEphemerisSbasDepA_vel :: [Double]
_msgEphemerisSbasDepA_pos :: [Double]
_msgEphemerisSbasDepA_common :: EphemerisCommonContentDepA
_msgEphemerisSbasDepA_a_gf1 :: MsgEphemerisSbasDepA -> Double
_msgEphemerisSbasDepA_a_gf0 :: MsgEphemerisSbasDepA -> Double
_msgEphemerisSbasDepA_acc :: MsgEphemerisSbasDepA -> [Double]
_msgEphemerisSbasDepA_vel :: MsgEphemerisSbasDepA -> [Double]
_msgEphemerisSbasDepA_pos :: MsgEphemerisSbasDepA -> [Double]
_msgEphemerisSbasDepA_common :: MsgEphemerisSbasDepA -> EphemerisCommonContentDepA
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContentDepA
_msgEphemerisSbasDepA_common
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisSbasDepA_pos
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisSbasDepA_vel
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisSbasDepA_acc
    Double -> Put
putFloat64le Double
_msgEphemerisSbasDepA_a_gf0
    Double -> Put
putFloat64le Double
_msgEphemerisSbasDepA_a_gf1

$(makeSBP 'msgEphemerisSbasDepA ''MsgEphemerisSbasDepA)
$(makeJSON "_msgEphemerisSbasDepA_" ''MsgEphemerisSbasDepA)
$(makeLenses ''MsgEphemerisSbasDepA)

msgEphemerisGloDepA :: Word16
msgEphemerisGloDepA :: Word16
msgEphemerisGloDepA = Word16
0x0083

-- | SBP class for message MSG_EPHEMERIS_GLO_DEP_A (0x0083).
--
-- The ephemeris message returns a set of satellite orbit parameters that is
-- used to calculate GLO satellite position, velocity, and clock offset.
-- Please see the GLO ICD 5.1 "Table 4.5 Characteristics of words of immediate
-- information (ephemeris parameters)" for more details.
data MsgEphemerisGloDepA = MsgEphemerisGloDepA
  { MsgEphemerisGloDepA -> EphemerisCommonContentDepA
_msgEphemerisGloDepA_common :: !EphemerisCommonContentDepA
    -- ^ Values common for all ephemeris types
  , MsgEphemerisGloDepA -> Double
_msgEphemerisGloDepA_gamma :: !Double
    -- ^ Relative deviation of predicted carrier frequency from nominal
  , MsgEphemerisGloDepA -> Double
_msgEphemerisGloDepA_tau  :: !Double
    -- ^ Correction to the SV time
  , MsgEphemerisGloDepA -> [Double]
_msgEphemerisGloDepA_pos  :: ![Double]
    -- ^ Position of the SV at tb in PZ-90.02 coordinates system
  , MsgEphemerisGloDepA -> [Double]
_msgEphemerisGloDepA_vel  :: ![Double]
    -- ^ Velocity vector of the SV at tb in PZ-90.02 coordinates system
  , MsgEphemerisGloDepA -> [Double]
_msgEphemerisGloDepA_acc  :: ![Double]
    -- ^ Acceleration vector of the SV at tb in PZ-90.02 coordinates sys
  } deriving ( Int -> MsgEphemerisGloDepA -> ShowS
[MsgEphemerisGloDepA] -> ShowS
MsgEphemerisGloDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisGloDepA] -> ShowS
$cshowList :: [MsgEphemerisGloDepA] -> ShowS
show :: MsgEphemerisGloDepA -> String
$cshow :: MsgEphemerisGloDepA -> String
showsPrec :: Int -> MsgEphemerisGloDepA -> ShowS
$cshowsPrec :: Int -> MsgEphemerisGloDepA -> ShowS
Show, ReadPrec [MsgEphemerisGloDepA]
ReadPrec MsgEphemerisGloDepA
Int -> ReadS MsgEphemerisGloDepA
ReadS [MsgEphemerisGloDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisGloDepA]
$creadListPrec :: ReadPrec [MsgEphemerisGloDepA]
readPrec :: ReadPrec MsgEphemerisGloDepA
$creadPrec :: ReadPrec MsgEphemerisGloDepA
readList :: ReadS [MsgEphemerisGloDepA]
$creadList :: ReadS [MsgEphemerisGloDepA]
readsPrec :: Int -> ReadS MsgEphemerisGloDepA
$creadsPrec :: Int -> ReadS MsgEphemerisGloDepA
Read, MsgEphemerisGloDepA -> MsgEphemerisGloDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisGloDepA -> MsgEphemerisGloDepA -> Bool
$c/= :: MsgEphemerisGloDepA -> MsgEphemerisGloDepA -> Bool
== :: MsgEphemerisGloDepA -> MsgEphemerisGloDepA -> Bool
$c== :: MsgEphemerisGloDepA -> MsgEphemerisGloDepA -> Bool
Eq )

instance Binary MsgEphemerisGloDepA where
  get :: Get MsgEphemerisGloDepA
get = do
    EphemerisCommonContentDepA
_msgEphemerisGloDepA_common <- forall t. Binary t => Get t
get
    Double
_msgEphemerisGloDepA_gamma <- Get Double
getFloat64le
    Double
_msgEphemerisGloDepA_tau <- Get Double
getFloat64le
    [Double]
_msgEphemerisGloDepA_pos <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisGloDepA_vel <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisGloDepA_acc <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisGloDepA {Double
[Double]
EphemerisCommonContentDepA
_msgEphemerisGloDepA_acc :: [Double]
_msgEphemerisGloDepA_vel :: [Double]
_msgEphemerisGloDepA_pos :: [Double]
_msgEphemerisGloDepA_tau :: Double
_msgEphemerisGloDepA_gamma :: Double
_msgEphemerisGloDepA_common :: EphemerisCommonContentDepA
_msgEphemerisGloDepA_acc :: [Double]
_msgEphemerisGloDepA_vel :: [Double]
_msgEphemerisGloDepA_pos :: [Double]
_msgEphemerisGloDepA_tau :: Double
_msgEphemerisGloDepA_gamma :: Double
_msgEphemerisGloDepA_common :: EphemerisCommonContentDepA
..}

  put :: MsgEphemerisGloDepA -> Put
put MsgEphemerisGloDepA {Double
[Double]
EphemerisCommonContentDepA
_msgEphemerisGloDepA_acc :: [Double]
_msgEphemerisGloDepA_vel :: [Double]
_msgEphemerisGloDepA_pos :: [Double]
_msgEphemerisGloDepA_tau :: Double
_msgEphemerisGloDepA_gamma :: Double
_msgEphemerisGloDepA_common :: EphemerisCommonContentDepA
_msgEphemerisGloDepA_acc :: MsgEphemerisGloDepA -> [Double]
_msgEphemerisGloDepA_vel :: MsgEphemerisGloDepA -> [Double]
_msgEphemerisGloDepA_pos :: MsgEphemerisGloDepA -> [Double]
_msgEphemerisGloDepA_tau :: MsgEphemerisGloDepA -> Double
_msgEphemerisGloDepA_gamma :: MsgEphemerisGloDepA -> Double
_msgEphemerisGloDepA_common :: MsgEphemerisGloDepA -> EphemerisCommonContentDepA
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContentDepA
_msgEphemerisGloDepA_common
    Double -> Put
putFloat64le Double
_msgEphemerisGloDepA_gamma
    Double -> Put
putFloat64le Double
_msgEphemerisGloDepA_tau
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGloDepA_pos
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGloDepA_vel
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGloDepA_acc

$(makeSBP 'msgEphemerisGloDepA ''MsgEphemerisGloDepA)
$(makeJSON "_msgEphemerisGloDepA_" ''MsgEphemerisGloDepA)
$(makeLenses ''MsgEphemerisGloDepA)

msgEphemerisSbasDepB :: Word16
msgEphemerisSbasDepB :: Word16
msgEphemerisSbasDepB = Word16
0x0084

-- | SBP class for message MSG_EPHEMERIS_SBAS_DEP_B (0x0084).
--
-- This observation message has been deprecated in favor of ephemeris message
-- using floats for size reduction.
data MsgEphemerisSbasDepB = MsgEphemerisSbasDepB
  { MsgEphemerisSbasDepB -> EphemerisCommonContentDepB
_msgEphemerisSbasDepB_common :: !EphemerisCommonContentDepB
    -- ^ Values common for all ephemeris types
  , MsgEphemerisSbasDepB -> [Double]
_msgEphemerisSbasDepB_pos  :: ![Double]
    -- ^ Position of the GEO at time toe
  , MsgEphemerisSbasDepB -> [Double]
_msgEphemerisSbasDepB_vel  :: ![Double]
    -- ^ Velocity of the GEO at time toe
  , MsgEphemerisSbasDepB -> [Double]
_msgEphemerisSbasDepB_acc  :: ![Double]
    -- ^ Acceleration of the GEO at time toe
  , MsgEphemerisSbasDepB -> Double
_msgEphemerisSbasDepB_a_gf0 :: !Double
    -- ^ Time offset of the GEO clock w.r.t. SBAS Network Time
  , MsgEphemerisSbasDepB -> Double
_msgEphemerisSbasDepB_a_gf1 :: !Double
    -- ^ Drift of the GEO clock w.r.t. SBAS Network Time
  } deriving ( Int -> MsgEphemerisSbasDepB -> ShowS
[MsgEphemerisSbasDepB] -> ShowS
MsgEphemerisSbasDepB -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisSbasDepB] -> ShowS
$cshowList :: [MsgEphemerisSbasDepB] -> ShowS
show :: MsgEphemerisSbasDepB -> String
$cshow :: MsgEphemerisSbasDepB -> String
showsPrec :: Int -> MsgEphemerisSbasDepB -> ShowS
$cshowsPrec :: Int -> MsgEphemerisSbasDepB -> ShowS
Show, ReadPrec [MsgEphemerisSbasDepB]
ReadPrec MsgEphemerisSbasDepB
Int -> ReadS MsgEphemerisSbasDepB
ReadS [MsgEphemerisSbasDepB]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisSbasDepB]
$creadListPrec :: ReadPrec [MsgEphemerisSbasDepB]
readPrec :: ReadPrec MsgEphemerisSbasDepB
$creadPrec :: ReadPrec MsgEphemerisSbasDepB
readList :: ReadS [MsgEphemerisSbasDepB]
$creadList :: ReadS [MsgEphemerisSbasDepB]
readsPrec :: Int -> ReadS MsgEphemerisSbasDepB
$creadsPrec :: Int -> ReadS MsgEphemerisSbasDepB
Read, MsgEphemerisSbasDepB -> MsgEphemerisSbasDepB -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisSbasDepB -> MsgEphemerisSbasDepB -> Bool
$c/= :: MsgEphemerisSbasDepB -> MsgEphemerisSbasDepB -> Bool
== :: MsgEphemerisSbasDepB -> MsgEphemerisSbasDepB -> Bool
$c== :: MsgEphemerisSbasDepB -> MsgEphemerisSbasDepB -> Bool
Eq )

instance Binary MsgEphemerisSbasDepB where
  get :: Get MsgEphemerisSbasDepB
get = do
    EphemerisCommonContentDepB
_msgEphemerisSbasDepB_common <- forall t. Binary t => Get t
get
    [Double]
_msgEphemerisSbasDepB_pos <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisSbasDepB_vel <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisSbasDepB_acc <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    Double
_msgEphemerisSbasDepB_a_gf0 <- Get Double
getFloat64le
    Double
_msgEphemerisSbasDepB_a_gf1 <- Get Double
getFloat64le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisSbasDepB {Double
[Double]
EphemerisCommonContentDepB
_msgEphemerisSbasDepB_a_gf1 :: Double
_msgEphemerisSbasDepB_a_gf0 :: Double
_msgEphemerisSbasDepB_acc :: [Double]
_msgEphemerisSbasDepB_vel :: [Double]
_msgEphemerisSbasDepB_pos :: [Double]
_msgEphemerisSbasDepB_common :: EphemerisCommonContentDepB
_msgEphemerisSbasDepB_a_gf1 :: Double
_msgEphemerisSbasDepB_a_gf0 :: Double
_msgEphemerisSbasDepB_acc :: [Double]
_msgEphemerisSbasDepB_vel :: [Double]
_msgEphemerisSbasDepB_pos :: [Double]
_msgEphemerisSbasDepB_common :: EphemerisCommonContentDepB
..}

  put :: MsgEphemerisSbasDepB -> Put
put MsgEphemerisSbasDepB {Double
[Double]
EphemerisCommonContentDepB
_msgEphemerisSbasDepB_a_gf1 :: Double
_msgEphemerisSbasDepB_a_gf0 :: Double
_msgEphemerisSbasDepB_acc :: [Double]
_msgEphemerisSbasDepB_vel :: [Double]
_msgEphemerisSbasDepB_pos :: [Double]
_msgEphemerisSbasDepB_common :: EphemerisCommonContentDepB
_msgEphemerisSbasDepB_a_gf1 :: MsgEphemerisSbasDepB -> Double
_msgEphemerisSbasDepB_a_gf0 :: MsgEphemerisSbasDepB -> Double
_msgEphemerisSbasDepB_acc :: MsgEphemerisSbasDepB -> [Double]
_msgEphemerisSbasDepB_vel :: MsgEphemerisSbasDepB -> [Double]
_msgEphemerisSbasDepB_pos :: MsgEphemerisSbasDepB -> [Double]
_msgEphemerisSbasDepB_common :: MsgEphemerisSbasDepB -> EphemerisCommonContentDepB
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContentDepB
_msgEphemerisSbasDepB_common
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisSbasDepB_pos
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisSbasDepB_vel
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisSbasDepB_acc
    Double -> Put
putFloat64le Double
_msgEphemerisSbasDepB_a_gf0
    Double -> Put
putFloat64le Double
_msgEphemerisSbasDepB_a_gf1

$(makeSBP 'msgEphemerisSbasDepB ''MsgEphemerisSbasDepB)
$(makeJSON "_msgEphemerisSbasDepB_" ''MsgEphemerisSbasDepB)
$(makeLenses ''MsgEphemerisSbasDepB)

msgEphemerisSbas :: Word16
msgEphemerisSbas :: Word16
msgEphemerisSbas = Word16
0x008C

data MsgEphemerisSbas = MsgEphemerisSbas
  { MsgEphemerisSbas -> EphemerisCommonContent
_msgEphemerisSbas_common :: !EphemerisCommonContent
    -- ^ Values common for all ephemeris types
  , MsgEphemerisSbas -> [Double]
_msgEphemerisSbas_pos  :: ![Double]
    -- ^ Position of the GEO at time toe
  , MsgEphemerisSbas -> [Float]
_msgEphemerisSbas_vel  :: ![Float]
    -- ^ Velocity of the GEO at time toe
  , MsgEphemerisSbas -> [Float]
_msgEphemerisSbas_acc  :: ![Float]
    -- ^ Acceleration of the GEO at time toe
  , MsgEphemerisSbas -> Float
_msgEphemerisSbas_a_gf0 :: !Float
    -- ^ Time offset of the GEO clock w.r.t. SBAS Network Time
  , MsgEphemerisSbas -> Float
_msgEphemerisSbas_a_gf1 :: !Float
    -- ^ Drift of the GEO clock w.r.t. SBAS Network Time
  } deriving ( Int -> MsgEphemerisSbas -> ShowS
[MsgEphemerisSbas] -> ShowS
MsgEphemerisSbas -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisSbas] -> ShowS
$cshowList :: [MsgEphemerisSbas] -> ShowS
show :: MsgEphemerisSbas -> String
$cshow :: MsgEphemerisSbas -> String
showsPrec :: Int -> MsgEphemerisSbas -> ShowS
$cshowsPrec :: Int -> MsgEphemerisSbas -> ShowS
Show, ReadPrec [MsgEphemerisSbas]
ReadPrec MsgEphemerisSbas
Int -> ReadS MsgEphemerisSbas
ReadS [MsgEphemerisSbas]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisSbas]
$creadListPrec :: ReadPrec [MsgEphemerisSbas]
readPrec :: ReadPrec MsgEphemerisSbas
$creadPrec :: ReadPrec MsgEphemerisSbas
readList :: ReadS [MsgEphemerisSbas]
$creadList :: ReadS [MsgEphemerisSbas]
readsPrec :: Int -> ReadS MsgEphemerisSbas
$creadsPrec :: Int -> ReadS MsgEphemerisSbas
Read, MsgEphemerisSbas -> MsgEphemerisSbas -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisSbas -> MsgEphemerisSbas -> Bool
$c/= :: MsgEphemerisSbas -> MsgEphemerisSbas -> Bool
== :: MsgEphemerisSbas -> MsgEphemerisSbas -> Bool
$c== :: MsgEphemerisSbas -> MsgEphemerisSbas -> Bool
Eq )

instance Binary MsgEphemerisSbas where
  get :: Get MsgEphemerisSbas
get = do
    EphemerisCommonContent
_msgEphemerisSbas_common <- forall t. Binary t => Get t
get
    [Double]
_msgEphemerisSbas_pos <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Float]
_msgEphemerisSbas_vel <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Float
getFloat32le
    [Float]
_msgEphemerisSbas_acc <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Float
getFloat32le
    Float
_msgEphemerisSbas_a_gf0 <- Get Float
getFloat32le
    Float
_msgEphemerisSbas_a_gf1 <- Get Float
getFloat32le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisSbas {Float
[Double]
[Float]
EphemerisCommonContent
_msgEphemerisSbas_a_gf1 :: Float
_msgEphemerisSbas_a_gf0 :: Float
_msgEphemerisSbas_acc :: [Float]
_msgEphemerisSbas_vel :: [Float]
_msgEphemerisSbas_pos :: [Double]
_msgEphemerisSbas_common :: EphemerisCommonContent
_msgEphemerisSbas_a_gf1 :: Float
_msgEphemerisSbas_a_gf0 :: Float
_msgEphemerisSbas_acc :: [Float]
_msgEphemerisSbas_vel :: [Float]
_msgEphemerisSbas_pos :: [Double]
_msgEphemerisSbas_common :: EphemerisCommonContent
..}

  put :: MsgEphemerisSbas -> Put
put MsgEphemerisSbas {Float
[Double]
[Float]
EphemerisCommonContent
_msgEphemerisSbas_a_gf1 :: Float
_msgEphemerisSbas_a_gf0 :: Float
_msgEphemerisSbas_acc :: [Float]
_msgEphemerisSbas_vel :: [Float]
_msgEphemerisSbas_pos :: [Double]
_msgEphemerisSbas_common :: EphemerisCommonContent
_msgEphemerisSbas_a_gf1 :: MsgEphemerisSbas -> Float
_msgEphemerisSbas_a_gf0 :: MsgEphemerisSbas -> Float
_msgEphemerisSbas_acc :: MsgEphemerisSbas -> [Float]
_msgEphemerisSbas_vel :: MsgEphemerisSbas -> [Float]
_msgEphemerisSbas_pos :: MsgEphemerisSbas -> [Double]
_msgEphemerisSbas_common :: MsgEphemerisSbas -> EphemerisCommonContent
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContent
_msgEphemerisSbas_common
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisSbas_pos
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Float -> Put
putFloat32le [Float]
_msgEphemerisSbas_vel
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Float -> Put
putFloat32le [Float]
_msgEphemerisSbas_acc
    Float -> Put
putFloat32le Float
_msgEphemerisSbas_a_gf0
    Float -> Put
putFloat32le Float
_msgEphemerisSbas_a_gf1

$(makeSBP 'msgEphemerisSbas ''MsgEphemerisSbas)
$(makeJSON "_msgEphemerisSbas_" ''MsgEphemerisSbas)
$(makeLenses ''MsgEphemerisSbas)

msgEphemerisGloDepB :: Word16
msgEphemerisGloDepB :: Word16
msgEphemerisGloDepB = Word16
0x0085

-- | SBP class for message MSG_EPHEMERIS_GLO_DEP_B (0x0085).
--
-- The ephemeris message returns a set of satellite orbit parameters that is
-- used to calculate GLO satellite position, velocity, and clock offset.
-- Please see the GLO ICD 5.1 "Table 4.5 Characteristics of words of immediate
-- information (ephemeris parameters)" for more details.
data MsgEphemerisGloDepB = MsgEphemerisGloDepB
  { MsgEphemerisGloDepB -> EphemerisCommonContentDepB
_msgEphemerisGloDepB_common :: !EphemerisCommonContentDepB
    -- ^ Values common for all ephemeris types
  , MsgEphemerisGloDepB -> Double
_msgEphemerisGloDepB_gamma :: !Double
    -- ^ Relative deviation of predicted carrier frequency from nominal
  , MsgEphemerisGloDepB -> Double
_msgEphemerisGloDepB_tau  :: !Double
    -- ^ Correction to the SV time
  , MsgEphemerisGloDepB -> [Double]
_msgEphemerisGloDepB_pos  :: ![Double]
    -- ^ Position of the SV at tb in PZ-90.02 coordinates system
  , MsgEphemerisGloDepB -> [Double]
_msgEphemerisGloDepB_vel  :: ![Double]
    -- ^ Velocity vector of the SV at tb in PZ-90.02 coordinates system
  , MsgEphemerisGloDepB -> [Double]
_msgEphemerisGloDepB_acc  :: ![Double]
    -- ^ Acceleration vector of the SV at tb in PZ-90.02 coordinates sys
  } deriving ( Int -> MsgEphemerisGloDepB -> ShowS
[MsgEphemerisGloDepB] -> ShowS
MsgEphemerisGloDepB -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisGloDepB] -> ShowS
$cshowList :: [MsgEphemerisGloDepB] -> ShowS
show :: MsgEphemerisGloDepB -> String
$cshow :: MsgEphemerisGloDepB -> String
showsPrec :: Int -> MsgEphemerisGloDepB -> ShowS
$cshowsPrec :: Int -> MsgEphemerisGloDepB -> ShowS
Show, ReadPrec [MsgEphemerisGloDepB]
ReadPrec MsgEphemerisGloDepB
Int -> ReadS MsgEphemerisGloDepB
ReadS [MsgEphemerisGloDepB]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisGloDepB]
$creadListPrec :: ReadPrec [MsgEphemerisGloDepB]
readPrec :: ReadPrec MsgEphemerisGloDepB
$creadPrec :: ReadPrec MsgEphemerisGloDepB
readList :: ReadS [MsgEphemerisGloDepB]
$creadList :: ReadS [MsgEphemerisGloDepB]
readsPrec :: Int -> ReadS MsgEphemerisGloDepB
$creadsPrec :: Int -> ReadS MsgEphemerisGloDepB
Read, MsgEphemerisGloDepB -> MsgEphemerisGloDepB -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisGloDepB -> MsgEphemerisGloDepB -> Bool
$c/= :: MsgEphemerisGloDepB -> MsgEphemerisGloDepB -> Bool
== :: MsgEphemerisGloDepB -> MsgEphemerisGloDepB -> Bool
$c== :: MsgEphemerisGloDepB -> MsgEphemerisGloDepB -> Bool
Eq )

instance Binary MsgEphemerisGloDepB where
  get :: Get MsgEphemerisGloDepB
get = do
    EphemerisCommonContentDepB
_msgEphemerisGloDepB_common <- forall t. Binary t => Get t
get
    Double
_msgEphemerisGloDepB_gamma <- Get Double
getFloat64le
    Double
_msgEphemerisGloDepB_tau <- Get Double
getFloat64le
    [Double]
_msgEphemerisGloDepB_pos <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisGloDepB_vel <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisGloDepB_acc <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisGloDepB {Double
[Double]
EphemerisCommonContentDepB
_msgEphemerisGloDepB_acc :: [Double]
_msgEphemerisGloDepB_vel :: [Double]
_msgEphemerisGloDepB_pos :: [Double]
_msgEphemerisGloDepB_tau :: Double
_msgEphemerisGloDepB_gamma :: Double
_msgEphemerisGloDepB_common :: EphemerisCommonContentDepB
_msgEphemerisGloDepB_acc :: [Double]
_msgEphemerisGloDepB_vel :: [Double]
_msgEphemerisGloDepB_pos :: [Double]
_msgEphemerisGloDepB_tau :: Double
_msgEphemerisGloDepB_gamma :: Double
_msgEphemerisGloDepB_common :: EphemerisCommonContentDepB
..}

  put :: MsgEphemerisGloDepB -> Put
put MsgEphemerisGloDepB {Double
[Double]
EphemerisCommonContentDepB
_msgEphemerisGloDepB_acc :: [Double]
_msgEphemerisGloDepB_vel :: [Double]
_msgEphemerisGloDepB_pos :: [Double]
_msgEphemerisGloDepB_tau :: Double
_msgEphemerisGloDepB_gamma :: Double
_msgEphemerisGloDepB_common :: EphemerisCommonContentDepB
_msgEphemerisGloDepB_acc :: MsgEphemerisGloDepB -> [Double]
_msgEphemerisGloDepB_vel :: MsgEphemerisGloDepB -> [Double]
_msgEphemerisGloDepB_pos :: MsgEphemerisGloDepB -> [Double]
_msgEphemerisGloDepB_tau :: MsgEphemerisGloDepB -> Double
_msgEphemerisGloDepB_gamma :: MsgEphemerisGloDepB -> Double
_msgEphemerisGloDepB_common :: MsgEphemerisGloDepB -> EphemerisCommonContentDepB
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContentDepB
_msgEphemerisGloDepB_common
    Double -> Put
putFloat64le Double
_msgEphemerisGloDepB_gamma
    Double -> Put
putFloat64le Double
_msgEphemerisGloDepB_tau
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGloDepB_pos
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGloDepB_vel
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGloDepB_acc

$(makeSBP 'msgEphemerisGloDepB ''MsgEphemerisGloDepB)
$(makeJSON "_msgEphemerisGloDepB_" ''MsgEphemerisGloDepB)
$(makeLenses ''MsgEphemerisGloDepB)

msgEphemerisGloDepC :: Word16
msgEphemerisGloDepC :: Word16
msgEphemerisGloDepC = Word16
0x0087

-- | SBP class for message MSG_EPHEMERIS_GLO_DEP_C (0x0087).
--
-- The ephemeris message returns a set of satellite orbit parameters that is
-- used to calculate GLO satellite position, velocity, and clock offset.
-- Please see the GLO ICD 5.1 "Table 4.5 Characteristics of words of immediate
-- information (ephemeris parameters)" for more details.
data MsgEphemerisGloDepC = MsgEphemerisGloDepC
  { MsgEphemerisGloDepC -> EphemerisCommonContentDepB
_msgEphemerisGloDepC_common :: !EphemerisCommonContentDepB
    -- ^ Values common for all ephemeris types
  , MsgEphemerisGloDepC -> Double
_msgEphemerisGloDepC_gamma :: !Double
    -- ^ Relative deviation of predicted carrier frequency from nominal
  , MsgEphemerisGloDepC -> Double
_msgEphemerisGloDepC_tau  :: !Double
    -- ^ Correction to the SV time
  , MsgEphemerisGloDepC -> Double
_msgEphemerisGloDepC_d_tau :: !Double
    -- ^ Equipment delay between L1 and L2
  , MsgEphemerisGloDepC -> [Double]
_msgEphemerisGloDepC_pos  :: ![Double]
    -- ^ Position of the SV at tb in PZ-90.02 coordinates system
  , MsgEphemerisGloDepC -> [Double]
_msgEphemerisGloDepC_vel  :: ![Double]
    -- ^ Velocity vector of the SV at tb in PZ-90.02 coordinates system
  , MsgEphemerisGloDepC -> [Double]
_msgEphemerisGloDepC_acc  :: ![Double]
    -- ^ Acceleration vector of the SV at tb in PZ-90.02 coordinates sys
  , MsgEphemerisGloDepC -> Word8
_msgEphemerisGloDepC_fcn  :: !Word8
    -- ^ Frequency slot. FCN+8 (that is [1..14]). 0 or 0xFF for invalid
  } deriving ( Int -> MsgEphemerisGloDepC -> ShowS
[MsgEphemerisGloDepC] -> ShowS
MsgEphemerisGloDepC -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisGloDepC] -> ShowS
$cshowList :: [MsgEphemerisGloDepC] -> ShowS
show :: MsgEphemerisGloDepC -> String
$cshow :: MsgEphemerisGloDepC -> String
showsPrec :: Int -> MsgEphemerisGloDepC -> ShowS
$cshowsPrec :: Int -> MsgEphemerisGloDepC -> ShowS
Show, ReadPrec [MsgEphemerisGloDepC]
ReadPrec MsgEphemerisGloDepC
Int -> ReadS MsgEphemerisGloDepC
ReadS [MsgEphemerisGloDepC]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisGloDepC]
$creadListPrec :: ReadPrec [MsgEphemerisGloDepC]
readPrec :: ReadPrec MsgEphemerisGloDepC
$creadPrec :: ReadPrec MsgEphemerisGloDepC
readList :: ReadS [MsgEphemerisGloDepC]
$creadList :: ReadS [MsgEphemerisGloDepC]
readsPrec :: Int -> ReadS MsgEphemerisGloDepC
$creadsPrec :: Int -> ReadS MsgEphemerisGloDepC
Read, MsgEphemerisGloDepC -> MsgEphemerisGloDepC -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisGloDepC -> MsgEphemerisGloDepC -> Bool
$c/= :: MsgEphemerisGloDepC -> MsgEphemerisGloDepC -> Bool
== :: MsgEphemerisGloDepC -> MsgEphemerisGloDepC -> Bool
$c== :: MsgEphemerisGloDepC -> MsgEphemerisGloDepC -> Bool
Eq )

instance Binary MsgEphemerisGloDepC where
  get :: Get MsgEphemerisGloDepC
get = do
    EphemerisCommonContentDepB
_msgEphemerisGloDepC_common <- forall t. Binary t => Get t
get
    Double
_msgEphemerisGloDepC_gamma <- Get Double
getFloat64le
    Double
_msgEphemerisGloDepC_tau <- Get Double
getFloat64le
    Double
_msgEphemerisGloDepC_d_tau <- Get Double
getFloat64le
    [Double]
_msgEphemerisGloDepC_pos <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisGloDepC_vel <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisGloDepC_acc <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    Word8
_msgEphemerisGloDepC_fcn <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisGloDepC {Double
[Double]
Word8
EphemerisCommonContentDepB
_msgEphemerisGloDepC_fcn :: Word8
_msgEphemerisGloDepC_acc :: [Double]
_msgEphemerisGloDepC_vel :: [Double]
_msgEphemerisGloDepC_pos :: [Double]
_msgEphemerisGloDepC_d_tau :: Double
_msgEphemerisGloDepC_tau :: Double
_msgEphemerisGloDepC_gamma :: Double
_msgEphemerisGloDepC_common :: EphemerisCommonContentDepB
_msgEphemerisGloDepC_fcn :: Word8
_msgEphemerisGloDepC_acc :: [Double]
_msgEphemerisGloDepC_vel :: [Double]
_msgEphemerisGloDepC_pos :: [Double]
_msgEphemerisGloDepC_d_tau :: Double
_msgEphemerisGloDepC_tau :: Double
_msgEphemerisGloDepC_gamma :: Double
_msgEphemerisGloDepC_common :: EphemerisCommonContentDepB
..}

  put :: MsgEphemerisGloDepC -> Put
put MsgEphemerisGloDepC {Double
[Double]
Word8
EphemerisCommonContentDepB
_msgEphemerisGloDepC_fcn :: Word8
_msgEphemerisGloDepC_acc :: [Double]
_msgEphemerisGloDepC_vel :: [Double]
_msgEphemerisGloDepC_pos :: [Double]
_msgEphemerisGloDepC_d_tau :: Double
_msgEphemerisGloDepC_tau :: Double
_msgEphemerisGloDepC_gamma :: Double
_msgEphemerisGloDepC_common :: EphemerisCommonContentDepB
_msgEphemerisGloDepC_fcn :: MsgEphemerisGloDepC -> Word8
_msgEphemerisGloDepC_acc :: MsgEphemerisGloDepC -> [Double]
_msgEphemerisGloDepC_vel :: MsgEphemerisGloDepC -> [Double]
_msgEphemerisGloDepC_pos :: MsgEphemerisGloDepC -> [Double]
_msgEphemerisGloDepC_d_tau :: MsgEphemerisGloDepC -> Double
_msgEphemerisGloDepC_tau :: MsgEphemerisGloDepC -> Double
_msgEphemerisGloDepC_gamma :: MsgEphemerisGloDepC -> Double
_msgEphemerisGloDepC_common :: MsgEphemerisGloDepC -> EphemerisCommonContentDepB
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContentDepB
_msgEphemerisGloDepC_common
    Double -> Put
putFloat64le Double
_msgEphemerisGloDepC_gamma
    Double -> Put
putFloat64le Double
_msgEphemerisGloDepC_tau
    Double -> Put
putFloat64le Double
_msgEphemerisGloDepC_d_tau
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGloDepC_pos
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGloDepC_vel
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGloDepC_acc
    Word8 -> Put
putWord8 Word8
_msgEphemerisGloDepC_fcn

$(makeSBP 'msgEphemerisGloDepC ''MsgEphemerisGloDepC)
$(makeJSON "_msgEphemerisGloDepC_" ''MsgEphemerisGloDepC)
$(makeLenses ''MsgEphemerisGloDepC)

msgEphemerisGloDepD :: Word16
msgEphemerisGloDepD :: Word16
msgEphemerisGloDepD = Word16
0x0088

-- | SBP class for message MSG_EPHEMERIS_GLO_DEP_D (0x0088).
--
-- This observation message has been deprecated in favor of ephemeris message
-- using floats for size reduction.
data MsgEphemerisGloDepD = MsgEphemerisGloDepD
  { MsgEphemerisGloDepD -> EphemerisCommonContentDepB
_msgEphemerisGloDepD_common :: !EphemerisCommonContentDepB
    -- ^ Values common for all ephemeris types
  , MsgEphemerisGloDepD -> Double
_msgEphemerisGloDepD_gamma :: !Double
    -- ^ Relative deviation of predicted carrier frequency from nominal
  , MsgEphemerisGloDepD -> Double
_msgEphemerisGloDepD_tau  :: !Double
    -- ^ Correction to the SV time
  , MsgEphemerisGloDepD -> Double
_msgEphemerisGloDepD_d_tau :: !Double
    -- ^ Equipment delay between L1 and L2
  , MsgEphemerisGloDepD -> [Double]
_msgEphemerisGloDepD_pos  :: ![Double]
    -- ^ Position of the SV at tb in PZ-90.02 coordinates system
  , MsgEphemerisGloDepD -> [Double]
_msgEphemerisGloDepD_vel  :: ![Double]
    -- ^ Velocity vector of the SV at tb in PZ-90.02 coordinates system
  , MsgEphemerisGloDepD -> [Double]
_msgEphemerisGloDepD_acc  :: ![Double]
    -- ^ Acceleration vector of the SV at tb in PZ-90.02 coordinates sys
  , MsgEphemerisGloDepD -> Word8
_msgEphemerisGloDepD_fcn  :: !Word8
    -- ^ Frequency slot. FCN+8 (that is [1..14]). 0 or 0xFF for invalid
  , MsgEphemerisGloDepD -> Word8
_msgEphemerisGloDepD_iod  :: !Word8
    -- ^ Issue of data. Equal to the 7 bits of the immediate data word t_b
  } deriving ( Int -> MsgEphemerisGloDepD -> ShowS
[MsgEphemerisGloDepD] -> ShowS
MsgEphemerisGloDepD -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisGloDepD] -> ShowS
$cshowList :: [MsgEphemerisGloDepD] -> ShowS
show :: MsgEphemerisGloDepD -> String
$cshow :: MsgEphemerisGloDepD -> String
showsPrec :: Int -> MsgEphemerisGloDepD -> ShowS
$cshowsPrec :: Int -> MsgEphemerisGloDepD -> ShowS
Show, ReadPrec [MsgEphemerisGloDepD]
ReadPrec MsgEphemerisGloDepD
Int -> ReadS MsgEphemerisGloDepD
ReadS [MsgEphemerisGloDepD]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisGloDepD]
$creadListPrec :: ReadPrec [MsgEphemerisGloDepD]
readPrec :: ReadPrec MsgEphemerisGloDepD
$creadPrec :: ReadPrec MsgEphemerisGloDepD
readList :: ReadS [MsgEphemerisGloDepD]
$creadList :: ReadS [MsgEphemerisGloDepD]
readsPrec :: Int -> ReadS MsgEphemerisGloDepD
$creadsPrec :: Int -> ReadS MsgEphemerisGloDepD
Read, MsgEphemerisGloDepD -> MsgEphemerisGloDepD -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisGloDepD -> MsgEphemerisGloDepD -> Bool
$c/= :: MsgEphemerisGloDepD -> MsgEphemerisGloDepD -> Bool
== :: MsgEphemerisGloDepD -> MsgEphemerisGloDepD -> Bool
$c== :: MsgEphemerisGloDepD -> MsgEphemerisGloDepD -> Bool
Eq )

instance Binary MsgEphemerisGloDepD where
  get :: Get MsgEphemerisGloDepD
get = do
    EphemerisCommonContentDepB
_msgEphemerisGloDepD_common <- forall t. Binary t => Get t
get
    Double
_msgEphemerisGloDepD_gamma <- Get Double
getFloat64le
    Double
_msgEphemerisGloDepD_tau <- Get Double
getFloat64le
    Double
_msgEphemerisGloDepD_d_tau <- Get Double
getFloat64le
    [Double]
_msgEphemerisGloDepD_pos <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisGloDepD_vel <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisGloDepD_acc <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    Word8
_msgEphemerisGloDepD_fcn <- Get Word8
getWord8
    Word8
_msgEphemerisGloDepD_iod <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisGloDepD {Double
[Double]
Word8
EphemerisCommonContentDepB
_msgEphemerisGloDepD_iod :: Word8
_msgEphemerisGloDepD_fcn :: Word8
_msgEphemerisGloDepD_acc :: [Double]
_msgEphemerisGloDepD_vel :: [Double]
_msgEphemerisGloDepD_pos :: [Double]
_msgEphemerisGloDepD_d_tau :: Double
_msgEphemerisGloDepD_tau :: Double
_msgEphemerisGloDepD_gamma :: Double
_msgEphemerisGloDepD_common :: EphemerisCommonContentDepB
_msgEphemerisGloDepD_iod :: Word8
_msgEphemerisGloDepD_fcn :: Word8
_msgEphemerisGloDepD_acc :: [Double]
_msgEphemerisGloDepD_vel :: [Double]
_msgEphemerisGloDepD_pos :: [Double]
_msgEphemerisGloDepD_d_tau :: Double
_msgEphemerisGloDepD_tau :: Double
_msgEphemerisGloDepD_gamma :: Double
_msgEphemerisGloDepD_common :: EphemerisCommonContentDepB
..}

  put :: MsgEphemerisGloDepD -> Put
put MsgEphemerisGloDepD {Double
[Double]
Word8
EphemerisCommonContentDepB
_msgEphemerisGloDepD_iod :: Word8
_msgEphemerisGloDepD_fcn :: Word8
_msgEphemerisGloDepD_acc :: [Double]
_msgEphemerisGloDepD_vel :: [Double]
_msgEphemerisGloDepD_pos :: [Double]
_msgEphemerisGloDepD_d_tau :: Double
_msgEphemerisGloDepD_tau :: Double
_msgEphemerisGloDepD_gamma :: Double
_msgEphemerisGloDepD_common :: EphemerisCommonContentDepB
_msgEphemerisGloDepD_iod :: MsgEphemerisGloDepD -> Word8
_msgEphemerisGloDepD_fcn :: MsgEphemerisGloDepD -> Word8
_msgEphemerisGloDepD_acc :: MsgEphemerisGloDepD -> [Double]
_msgEphemerisGloDepD_vel :: MsgEphemerisGloDepD -> [Double]
_msgEphemerisGloDepD_pos :: MsgEphemerisGloDepD -> [Double]
_msgEphemerisGloDepD_d_tau :: MsgEphemerisGloDepD -> Double
_msgEphemerisGloDepD_tau :: MsgEphemerisGloDepD -> Double
_msgEphemerisGloDepD_gamma :: MsgEphemerisGloDepD -> Double
_msgEphemerisGloDepD_common :: MsgEphemerisGloDepD -> EphemerisCommonContentDepB
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContentDepB
_msgEphemerisGloDepD_common
    Double -> Put
putFloat64le Double
_msgEphemerisGloDepD_gamma
    Double -> Put
putFloat64le Double
_msgEphemerisGloDepD_tau
    Double -> Put
putFloat64le Double
_msgEphemerisGloDepD_d_tau
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGloDepD_pos
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGloDepD_vel
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGloDepD_acc
    Word8 -> Put
putWord8 Word8
_msgEphemerisGloDepD_fcn
    Word8 -> Put
putWord8 Word8
_msgEphemerisGloDepD_iod

$(makeSBP 'msgEphemerisGloDepD ''MsgEphemerisGloDepD)
$(makeJSON "_msgEphemerisGloDepD_" ''MsgEphemerisGloDepD)
$(makeLenses ''MsgEphemerisGloDepD)

msgEphemerisGlo :: Word16
msgEphemerisGlo :: Word16
msgEphemerisGlo = Word16
0x008B

-- | SBP class for message MSG_EPHEMERIS_GLO (0x008B).
--
-- The ephemeris message returns a set of satellite orbit parameters that is
-- used to calculate GLO satellite position, velocity, and clock offset.
-- Please see the GLO ICD 5.1 "Table 4.5 Characteristics of words of immediate
-- information (ephemeris parameters)" for more details.
data MsgEphemerisGlo = MsgEphemerisGlo
  { MsgEphemerisGlo -> EphemerisCommonContent
_msgEphemerisGlo_common :: !EphemerisCommonContent
    -- ^ Values common for all ephemeris types
  , MsgEphemerisGlo -> Float
_msgEphemerisGlo_gamma :: !Float
    -- ^ Relative deviation of predicted carrier frequency from nominal
  , MsgEphemerisGlo -> Float
_msgEphemerisGlo_tau  :: !Float
    -- ^ Correction to the SV time
  , MsgEphemerisGlo -> Float
_msgEphemerisGlo_d_tau :: !Float
    -- ^ Equipment delay between L1 and L2
  , MsgEphemerisGlo -> [Double]
_msgEphemerisGlo_pos  :: ![Double]
    -- ^ Position of the SV at tb in PZ-90.02 coordinates system
  , MsgEphemerisGlo -> [Double]
_msgEphemerisGlo_vel  :: ![Double]
    -- ^ Velocity vector of the SV at tb in PZ-90.02 coordinates system
  , MsgEphemerisGlo -> [Float]
_msgEphemerisGlo_acc  :: ![Float]
    -- ^ Acceleration vector of the SV at tb in PZ-90.02 coordinates sys
  , MsgEphemerisGlo -> Word8
_msgEphemerisGlo_fcn  :: !Word8
    -- ^ Frequency slot. FCN+8 (that is [1..14]). 0 or 0xFF for invalid
  , MsgEphemerisGlo -> Word8
_msgEphemerisGlo_iod  :: !Word8
    -- ^ Issue of data. Equal to the 7 bits of the immediate data word t_b
  } deriving ( Int -> MsgEphemerisGlo -> ShowS
[MsgEphemerisGlo] -> ShowS
MsgEphemerisGlo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisGlo] -> ShowS
$cshowList :: [MsgEphemerisGlo] -> ShowS
show :: MsgEphemerisGlo -> String
$cshow :: MsgEphemerisGlo -> String
showsPrec :: Int -> MsgEphemerisGlo -> ShowS
$cshowsPrec :: Int -> MsgEphemerisGlo -> ShowS
Show, ReadPrec [MsgEphemerisGlo]
ReadPrec MsgEphemerisGlo
Int -> ReadS MsgEphemerisGlo
ReadS [MsgEphemerisGlo]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisGlo]
$creadListPrec :: ReadPrec [MsgEphemerisGlo]
readPrec :: ReadPrec MsgEphemerisGlo
$creadPrec :: ReadPrec MsgEphemerisGlo
readList :: ReadS [MsgEphemerisGlo]
$creadList :: ReadS [MsgEphemerisGlo]
readsPrec :: Int -> ReadS MsgEphemerisGlo
$creadsPrec :: Int -> ReadS MsgEphemerisGlo
Read, MsgEphemerisGlo -> MsgEphemerisGlo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisGlo -> MsgEphemerisGlo -> Bool
$c/= :: MsgEphemerisGlo -> MsgEphemerisGlo -> Bool
== :: MsgEphemerisGlo -> MsgEphemerisGlo -> Bool
$c== :: MsgEphemerisGlo -> MsgEphemerisGlo -> Bool
Eq )

instance Binary MsgEphemerisGlo where
  get :: Get MsgEphemerisGlo
get = do
    EphemerisCommonContent
_msgEphemerisGlo_common <- forall t. Binary t => Get t
get
    Float
_msgEphemerisGlo_gamma <- Get Float
getFloat32le
    Float
_msgEphemerisGlo_tau <- Get Float
getFloat32le
    Float
_msgEphemerisGlo_d_tau <- Get Float
getFloat32le
    [Double]
_msgEphemerisGlo_pos <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Double]
_msgEphemerisGlo_vel <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Double
getFloat64le
    [Float]
_msgEphemerisGlo_acc <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 Get Float
getFloat32le
    Word8
_msgEphemerisGlo_fcn <- Get Word8
getWord8
    Word8
_msgEphemerisGlo_iod <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisGlo {Float
[Double]
[Float]
Word8
EphemerisCommonContent
_msgEphemerisGlo_iod :: Word8
_msgEphemerisGlo_fcn :: Word8
_msgEphemerisGlo_acc :: [Float]
_msgEphemerisGlo_vel :: [Double]
_msgEphemerisGlo_pos :: [Double]
_msgEphemerisGlo_d_tau :: Float
_msgEphemerisGlo_tau :: Float
_msgEphemerisGlo_gamma :: Float
_msgEphemerisGlo_common :: EphemerisCommonContent
_msgEphemerisGlo_iod :: Word8
_msgEphemerisGlo_fcn :: Word8
_msgEphemerisGlo_acc :: [Float]
_msgEphemerisGlo_vel :: [Double]
_msgEphemerisGlo_pos :: [Double]
_msgEphemerisGlo_d_tau :: Float
_msgEphemerisGlo_tau :: Float
_msgEphemerisGlo_gamma :: Float
_msgEphemerisGlo_common :: EphemerisCommonContent
..}

  put :: MsgEphemerisGlo -> Put
put MsgEphemerisGlo {Float
[Double]
[Float]
Word8
EphemerisCommonContent
_msgEphemerisGlo_iod :: Word8
_msgEphemerisGlo_fcn :: Word8
_msgEphemerisGlo_acc :: [Float]
_msgEphemerisGlo_vel :: [Double]
_msgEphemerisGlo_pos :: [Double]
_msgEphemerisGlo_d_tau :: Float
_msgEphemerisGlo_tau :: Float
_msgEphemerisGlo_gamma :: Float
_msgEphemerisGlo_common :: EphemerisCommonContent
_msgEphemerisGlo_iod :: MsgEphemerisGlo -> Word8
_msgEphemerisGlo_fcn :: MsgEphemerisGlo -> Word8
_msgEphemerisGlo_acc :: MsgEphemerisGlo -> [Float]
_msgEphemerisGlo_vel :: MsgEphemerisGlo -> [Double]
_msgEphemerisGlo_pos :: MsgEphemerisGlo -> [Double]
_msgEphemerisGlo_d_tau :: MsgEphemerisGlo -> Float
_msgEphemerisGlo_tau :: MsgEphemerisGlo -> Float
_msgEphemerisGlo_gamma :: MsgEphemerisGlo -> Float
_msgEphemerisGlo_common :: MsgEphemerisGlo -> EphemerisCommonContent
..} = do
    forall t. Binary t => t -> Put
put EphemerisCommonContent
_msgEphemerisGlo_common
    Float -> Put
putFloat32le Float
_msgEphemerisGlo_gamma
    Float -> Put
putFloat32le Float
_msgEphemerisGlo_tau
    Float -> Put
putFloat32le Float
_msgEphemerisGlo_d_tau
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGlo_pos
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Double -> Put
putFloat64le [Double]
_msgEphemerisGlo_vel
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ Float -> Put
putFloat32le [Float]
_msgEphemerisGlo_acc
    Word8 -> Put
putWord8 Word8
_msgEphemerisGlo_fcn
    Word8 -> Put
putWord8 Word8
_msgEphemerisGlo_iod

$(makeSBP 'msgEphemerisGlo ''MsgEphemerisGlo)
$(makeJSON "_msgEphemerisGlo_" ''MsgEphemerisGlo)
$(makeLenses ''MsgEphemerisGlo)

msgEphemerisDepD :: Word16
msgEphemerisDepD :: Word16
msgEphemerisDepD = Word16
0x0080

-- | SBP class for message MSG_EPHEMERIS_DEP_D (0x0080).
--
-- The ephemeris message returns a set of satellite orbit parameters that is
-- used to calculate GPS satellite position, velocity, and clock offset.
-- Please see the Navstar GPS Space Segment/Navigation user interfaces (ICD-
-- GPS-200, Table 20-III) for more details.
data MsgEphemerisDepD = MsgEphemerisDepD
  { MsgEphemerisDepD -> Double
_msgEphemerisDepD_tgd    :: !Double
    -- ^ Group delay differential between L1 and L2
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_c_rs   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the orbit radius
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_c_rc   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the orbit radius
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_c_uc   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_c_us   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_c_ic   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_c_is   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_dn     :: !Double
    -- ^ Mean motion difference
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_m0     :: !Double
    -- ^ Mean anomaly at reference time
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_ecc    :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_sqrta  :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_omega0 :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_w      :: !Double
    -- ^ Argument of perigee
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_inc    :: !Double
    -- ^ Inclination
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_inc_dot :: !Double
    -- ^ Inclination first derivative
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_af0    :: !Double
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_af1    :: !Double
    -- ^ Polynomial clock correction coefficient (clock drift)
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_af2    :: !Double
    -- ^ Polynomial clock correction coefficient (rate of clock drift)
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_toe_tow :: !Double
    -- ^ Time of week
  , MsgEphemerisDepD -> Word16
_msgEphemerisDepD_toe_wn :: !Word16
    -- ^ Week number
  , MsgEphemerisDepD -> Double
_msgEphemerisDepD_toc_tow :: !Double
    -- ^ Clock reference time of week
  , MsgEphemerisDepD -> Word16
_msgEphemerisDepD_toc_wn :: !Word16
    -- ^ Clock reference week number
  , MsgEphemerisDepD -> Word8
_msgEphemerisDepD_valid  :: !Word8
    -- ^ Is valid?
  , MsgEphemerisDepD -> Word8
_msgEphemerisDepD_healthy :: !Word8
    -- ^ Satellite is healthy?
  , MsgEphemerisDepD -> GnssSignalDep
_msgEphemerisDepD_sid    :: !GnssSignalDep
    -- ^ GNSS signal identifier
  , MsgEphemerisDepD -> Word8
_msgEphemerisDepD_iode   :: !Word8
    -- ^ Issue of ephemeris data
  , MsgEphemerisDepD -> Word16
_msgEphemerisDepD_iodc   :: !Word16
    -- ^ Issue of clock data
  , MsgEphemerisDepD -> Word32
_msgEphemerisDepD_reserved :: !Word32
    -- ^ Reserved field
  } deriving ( Int -> MsgEphemerisDepD -> ShowS
[MsgEphemerisDepD] -> ShowS
MsgEphemerisDepD -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisDepD] -> ShowS
$cshowList :: [MsgEphemerisDepD] -> ShowS
show :: MsgEphemerisDepD -> String
$cshow :: MsgEphemerisDepD -> String
showsPrec :: Int -> MsgEphemerisDepD -> ShowS
$cshowsPrec :: Int -> MsgEphemerisDepD -> ShowS
Show, ReadPrec [MsgEphemerisDepD]
ReadPrec MsgEphemerisDepD
Int -> ReadS MsgEphemerisDepD
ReadS [MsgEphemerisDepD]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisDepD]
$creadListPrec :: ReadPrec [MsgEphemerisDepD]
readPrec :: ReadPrec MsgEphemerisDepD
$creadPrec :: ReadPrec MsgEphemerisDepD
readList :: ReadS [MsgEphemerisDepD]
$creadList :: ReadS [MsgEphemerisDepD]
readsPrec :: Int -> ReadS MsgEphemerisDepD
$creadsPrec :: Int -> ReadS MsgEphemerisDepD
Read, MsgEphemerisDepD -> MsgEphemerisDepD -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisDepD -> MsgEphemerisDepD -> Bool
$c/= :: MsgEphemerisDepD -> MsgEphemerisDepD -> Bool
== :: MsgEphemerisDepD -> MsgEphemerisDepD -> Bool
$c== :: MsgEphemerisDepD -> MsgEphemerisDepD -> Bool
Eq )

instance Binary MsgEphemerisDepD where
  get :: Get MsgEphemerisDepD
get = do
    Double
_msgEphemerisDepD_tgd <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_c_rs <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_c_rc <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_c_uc <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_c_us <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_c_ic <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_c_is <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_dn <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_m0 <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_ecc <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_sqrta <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_omega0 <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_omegadot <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_w <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_inc <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_inc_dot <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_af0 <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_af1 <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_af2 <- Get Double
getFloat64le
    Double
_msgEphemerisDepD_toe_tow <- Get Double
getFloat64le
    Word16
_msgEphemerisDepD_toe_wn <- Get Word16
getWord16le
    Double
_msgEphemerisDepD_toc_tow <- Get Double
getFloat64le
    Word16
_msgEphemerisDepD_toc_wn <- Get Word16
getWord16le
    Word8
_msgEphemerisDepD_valid <- Get Word8
getWord8
    Word8
_msgEphemerisDepD_healthy <- Get Word8
getWord8
    GnssSignalDep
_msgEphemerisDepD_sid <- forall t. Binary t => Get t
get
    Word8
_msgEphemerisDepD_iode <- Get Word8
getWord8
    Word16
_msgEphemerisDepD_iodc <- Get Word16
getWord16le
    Word32
_msgEphemerisDepD_reserved <- Get Word32
getWord32le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisDepD {Double
Word8
Word16
Word32
GnssSignalDep
_msgEphemerisDepD_reserved :: Word32
_msgEphemerisDepD_iodc :: Word16
_msgEphemerisDepD_iode :: Word8
_msgEphemerisDepD_sid :: GnssSignalDep
_msgEphemerisDepD_healthy :: Word8
_msgEphemerisDepD_valid :: Word8
_msgEphemerisDepD_toc_wn :: Word16
_msgEphemerisDepD_toc_tow :: Double
_msgEphemerisDepD_toe_wn :: Word16
_msgEphemerisDepD_toe_tow :: Double
_msgEphemerisDepD_af2 :: Double
_msgEphemerisDepD_af1 :: Double
_msgEphemerisDepD_af0 :: Double
_msgEphemerisDepD_inc_dot :: Double
_msgEphemerisDepD_inc :: Double
_msgEphemerisDepD_w :: Double
_msgEphemerisDepD_omegadot :: Double
_msgEphemerisDepD_omega0 :: Double
_msgEphemerisDepD_sqrta :: Double
_msgEphemerisDepD_ecc :: Double
_msgEphemerisDepD_m0 :: Double
_msgEphemerisDepD_dn :: Double
_msgEphemerisDepD_c_is :: Double
_msgEphemerisDepD_c_ic :: Double
_msgEphemerisDepD_c_us :: Double
_msgEphemerisDepD_c_uc :: Double
_msgEphemerisDepD_c_rc :: Double
_msgEphemerisDepD_c_rs :: Double
_msgEphemerisDepD_tgd :: Double
_msgEphemerisDepD_reserved :: Word32
_msgEphemerisDepD_iodc :: Word16
_msgEphemerisDepD_iode :: Word8
_msgEphemerisDepD_sid :: GnssSignalDep
_msgEphemerisDepD_healthy :: Word8
_msgEphemerisDepD_valid :: Word8
_msgEphemerisDepD_toc_wn :: Word16
_msgEphemerisDepD_toc_tow :: Double
_msgEphemerisDepD_toe_wn :: Word16
_msgEphemerisDepD_toe_tow :: Double
_msgEphemerisDepD_af2 :: Double
_msgEphemerisDepD_af1 :: Double
_msgEphemerisDepD_af0 :: Double
_msgEphemerisDepD_inc_dot :: Double
_msgEphemerisDepD_inc :: Double
_msgEphemerisDepD_w :: Double
_msgEphemerisDepD_omegadot :: Double
_msgEphemerisDepD_omega0 :: Double
_msgEphemerisDepD_sqrta :: Double
_msgEphemerisDepD_ecc :: Double
_msgEphemerisDepD_m0 :: Double
_msgEphemerisDepD_dn :: Double
_msgEphemerisDepD_c_is :: Double
_msgEphemerisDepD_c_ic :: Double
_msgEphemerisDepD_c_us :: Double
_msgEphemerisDepD_c_uc :: Double
_msgEphemerisDepD_c_rc :: Double
_msgEphemerisDepD_c_rs :: Double
_msgEphemerisDepD_tgd :: Double
..}

  put :: MsgEphemerisDepD -> Put
put MsgEphemerisDepD {Double
Word8
Word16
Word32
GnssSignalDep
_msgEphemerisDepD_reserved :: Word32
_msgEphemerisDepD_iodc :: Word16
_msgEphemerisDepD_iode :: Word8
_msgEphemerisDepD_sid :: GnssSignalDep
_msgEphemerisDepD_healthy :: Word8
_msgEphemerisDepD_valid :: Word8
_msgEphemerisDepD_toc_wn :: Word16
_msgEphemerisDepD_toc_tow :: Double
_msgEphemerisDepD_toe_wn :: Word16
_msgEphemerisDepD_toe_tow :: Double
_msgEphemerisDepD_af2 :: Double
_msgEphemerisDepD_af1 :: Double
_msgEphemerisDepD_af0 :: Double
_msgEphemerisDepD_inc_dot :: Double
_msgEphemerisDepD_inc :: Double
_msgEphemerisDepD_w :: Double
_msgEphemerisDepD_omegadot :: Double
_msgEphemerisDepD_omega0 :: Double
_msgEphemerisDepD_sqrta :: Double
_msgEphemerisDepD_ecc :: Double
_msgEphemerisDepD_m0 :: Double
_msgEphemerisDepD_dn :: Double
_msgEphemerisDepD_c_is :: Double
_msgEphemerisDepD_c_ic :: Double
_msgEphemerisDepD_c_us :: Double
_msgEphemerisDepD_c_uc :: Double
_msgEphemerisDepD_c_rc :: Double
_msgEphemerisDepD_c_rs :: Double
_msgEphemerisDepD_tgd :: Double
_msgEphemerisDepD_reserved :: MsgEphemerisDepD -> Word32
_msgEphemerisDepD_iodc :: MsgEphemerisDepD -> Word16
_msgEphemerisDepD_iode :: MsgEphemerisDepD -> Word8
_msgEphemerisDepD_sid :: MsgEphemerisDepD -> GnssSignalDep
_msgEphemerisDepD_healthy :: MsgEphemerisDepD -> Word8
_msgEphemerisDepD_valid :: MsgEphemerisDepD -> Word8
_msgEphemerisDepD_toc_wn :: MsgEphemerisDepD -> Word16
_msgEphemerisDepD_toc_tow :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_toe_wn :: MsgEphemerisDepD -> Word16
_msgEphemerisDepD_toe_tow :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_af2 :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_af1 :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_af0 :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_inc_dot :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_inc :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_w :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_omegadot :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_omega0 :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_sqrta :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_ecc :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_m0 :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_dn :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_c_is :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_c_ic :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_c_us :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_c_uc :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_c_rc :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_c_rs :: MsgEphemerisDepD -> Double
_msgEphemerisDepD_tgd :: MsgEphemerisDepD -> Double
..} = do
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_tgd
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_c_rs
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_c_rc
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_c_uc
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_c_us
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_c_ic
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_c_is
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_dn
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_m0
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_ecc
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_sqrta
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_omega0
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_omegadot
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_w
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_inc
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_inc_dot
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_af0
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_af1
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_af2
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_toe_tow
    Word16 -> Put
putWord16le Word16
_msgEphemerisDepD_toe_wn
    Double -> Put
putFloat64le Double
_msgEphemerisDepD_toc_tow
    Word16 -> Put
putWord16le Word16
_msgEphemerisDepD_toc_wn
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepD_valid
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepD_healthy
    forall t. Binary t => t -> Put
put GnssSignalDep
_msgEphemerisDepD_sid
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepD_iode
    Word16 -> Put
putWord16le Word16
_msgEphemerisDepD_iodc
    Word32 -> Put
putWord32le Word32
_msgEphemerisDepD_reserved

$(makeSBP 'msgEphemerisDepD ''MsgEphemerisDepD)
$(makeJSON "_msgEphemerisDepD_" ''MsgEphemerisDepD)
$(makeLenses ''MsgEphemerisDepD)

msgEphemerisDepA :: Word16
msgEphemerisDepA :: Word16
msgEphemerisDepA = Word16
0x001A

-- | SBP class for message MSG_EPHEMERIS_DEP_A (0x001A).
--
-- Deprecated.
data MsgEphemerisDepA = MsgEphemerisDepA
  { MsgEphemerisDepA -> Double
_msgEphemerisDepA_tgd    :: !Double
    -- ^ Group delay differential between L1 and L2
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_c_rs   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the orbit radius
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_c_rc   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the orbit radius
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_c_uc   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_c_us   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_c_ic   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_c_is   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_dn     :: !Double
    -- ^ Mean motion difference
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_m0     :: !Double
    -- ^ Mean anomaly at reference time
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_ecc    :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_sqrta  :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_omega0 :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_w      :: !Double
    -- ^ Argument of perigee
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_inc    :: !Double
    -- ^ Inclination
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_inc_dot :: !Double
    -- ^ Inclination first derivative
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_af0    :: !Double
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_af1    :: !Double
    -- ^ Polynomial clock correction coefficient (clock drift)
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_af2    :: !Double
    -- ^ Polynomial clock correction coefficient (rate of clock drift)
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_toe_tow :: !Double
    -- ^ Time of week
  , MsgEphemerisDepA -> Word16
_msgEphemerisDepA_toe_wn :: !Word16
    -- ^ Week number
  , MsgEphemerisDepA -> Double
_msgEphemerisDepA_toc_tow :: !Double
    -- ^ Clock reference time of week
  , MsgEphemerisDepA -> Word16
_msgEphemerisDepA_toc_wn :: !Word16
    -- ^ Clock reference week number
  , MsgEphemerisDepA -> Word8
_msgEphemerisDepA_valid  :: !Word8
    -- ^ Is valid?
  , MsgEphemerisDepA -> Word8
_msgEphemerisDepA_healthy :: !Word8
    -- ^ Satellite is healthy?
  , MsgEphemerisDepA -> Word8
_msgEphemerisDepA_prn    :: !Word8
    -- ^ PRN being tracked
  } deriving ( Int -> MsgEphemerisDepA -> ShowS
[MsgEphemerisDepA] -> ShowS
MsgEphemerisDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisDepA] -> ShowS
$cshowList :: [MsgEphemerisDepA] -> ShowS
show :: MsgEphemerisDepA -> String
$cshow :: MsgEphemerisDepA -> String
showsPrec :: Int -> MsgEphemerisDepA -> ShowS
$cshowsPrec :: Int -> MsgEphemerisDepA -> ShowS
Show, ReadPrec [MsgEphemerisDepA]
ReadPrec MsgEphemerisDepA
Int -> ReadS MsgEphemerisDepA
ReadS [MsgEphemerisDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisDepA]
$creadListPrec :: ReadPrec [MsgEphemerisDepA]
readPrec :: ReadPrec MsgEphemerisDepA
$creadPrec :: ReadPrec MsgEphemerisDepA
readList :: ReadS [MsgEphemerisDepA]
$creadList :: ReadS [MsgEphemerisDepA]
readsPrec :: Int -> ReadS MsgEphemerisDepA
$creadsPrec :: Int -> ReadS MsgEphemerisDepA
Read, MsgEphemerisDepA -> MsgEphemerisDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisDepA -> MsgEphemerisDepA -> Bool
$c/= :: MsgEphemerisDepA -> MsgEphemerisDepA -> Bool
== :: MsgEphemerisDepA -> MsgEphemerisDepA -> Bool
$c== :: MsgEphemerisDepA -> MsgEphemerisDepA -> Bool
Eq )

instance Binary MsgEphemerisDepA where
  get :: Get MsgEphemerisDepA
get = do
    Double
_msgEphemerisDepA_tgd <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_c_rs <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_c_rc <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_c_uc <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_c_us <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_c_ic <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_c_is <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_dn <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_m0 <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_ecc <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_sqrta <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_omega0 <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_omegadot <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_w <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_inc <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_inc_dot <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_af0 <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_af1 <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_af2 <- Get Double
getFloat64le
    Double
_msgEphemerisDepA_toe_tow <- Get Double
getFloat64le
    Word16
_msgEphemerisDepA_toe_wn <- Get Word16
getWord16le
    Double
_msgEphemerisDepA_toc_tow <- Get Double
getFloat64le
    Word16
_msgEphemerisDepA_toc_wn <- Get Word16
getWord16le
    Word8
_msgEphemerisDepA_valid <- Get Word8
getWord8
    Word8
_msgEphemerisDepA_healthy <- Get Word8
getWord8
    Word8
_msgEphemerisDepA_prn <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisDepA {Double
Word8
Word16
_msgEphemerisDepA_prn :: Word8
_msgEphemerisDepA_healthy :: Word8
_msgEphemerisDepA_valid :: Word8
_msgEphemerisDepA_toc_wn :: Word16
_msgEphemerisDepA_toc_tow :: Double
_msgEphemerisDepA_toe_wn :: Word16
_msgEphemerisDepA_toe_tow :: Double
_msgEphemerisDepA_af2 :: Double
_msgEphemerisDepA_af1 :: Double
_msgEphemerisDepA_af0 :: Double
_msgEphemerisDepA_inc_dot :: Double
_msgEphemerisDepA_inc :: Double
_msgEphemerisDepA_w :: Double
_msgEphemerisDepA_omegadot :: Double
_msgEphemerisDepA_omega0 :: Double
_msgEphemerisDepA_sqrta :: Double
_msgEphemerisDepA_ecc :: Double
_msgEphemerisDepA_m0 :: Double
_msgEphemerisDepA_dn :: Double
_msgEphemerisDepA_c_is :: Double
_msgEphemerisDepA_c_ic :: Double
_msgEphemerisDepA_c_us :: Double
_msgEphemerisDepA_c_uc :: Double
_msgEphemerisDepA_c_rc :: Double
_msgEphemerisDepA_c_rs :: Double
_msgEphemerisDepA_tgd :: Double
_msgEphemerisDepA_prn :: Word8
_msgEphemerisDepA_healthy :: Word8
_msgEphemerisDepA_valid :: Word8
_msgEphemerisDepA_toc_wn :: Word16
_msgEphemerisDepA_toc_tow :: Double
_msgEphemerisDepA_toe_wn :: Word16
_msgEphemerisDepA_toe_tow :: Double
_msgEphemerisDepA_af2 :: Double
_msgEphemerisDepA_af1 :: Double
_msgEphemerisDepA_af0 :: Double
_msgEphemerisDepA_inc_dot :: Double
_msgEphemerisDepA_inc :: Double
_msgEphemerisDepA_w :: Double
_msgEphemerisDepA_omegadot :: Double
_msgEphemerisDepA_omega0 :: Double
_msgEphemerisDepA_sqrta :: Double
_msgEphemerisDepA_ecc :: Double
_msgEphemerisDepA_m0 :: Double
_msgEphemerisDepA_dn :: Double
_msgEphemerisDepA_c_is :: Double
_msgEphemerisDepA_c_ic :: Double
_msgEphemerisDepA_c_us :: Double
_msgEphemerisDepA_c_uc :: Double
_msgEphemerisDepA_c_rc :: Double
_msgEphemerisDepA_c_rs :: Double
_msgEphemerisDepA_tgd :: Double
..}

  put :: MsgEphemerisDepA -> Put
put MsgEphemerisDepA {Double
Word8
Word16
_msgEphemerisDepA_prn :: Word8
_msgEphemerisDepA_healthy :: Word8
_msgEphemerisDepA_valid :: Word8
_msgEphemerisDepA_toc_wn :: Word16
_msgEphemerisDepA_toc_tow :: Double
_msgEphemerisDepA_toe_wn :: Word16
_msgEphemerisDepA_toe_tow :: Double
_msgEphemerisDepA_af2 :: Double
_msgEphemerisDepA_af1 :: Double
_msgEphemerisDepA_af0 :: Double
_msgEphemerisDepA_inc_dot :: Double
_msgEphemerisDepA_inc :: Double
_msgEphemerisDepA_w :: Double
_msgEphemerisDepA_omegadot :: Double
_msgEphemerisDepA_omega0 :: Double
_msgEphemerisDepA_sqrta :: Double
_msgEphemerisDepA_ecc :: Double
_msgEphemerisDepA_m0 :: Double
_msgEphemerisDepA_dn :: Double
_msgEphemerisDepA_c_is :: Double
_msgEphemerisDepA_c_ic :: Double
_msgEphemerisDepA_c_us :: Double
_msgEphemerisDepA_c_uc :: Double
_msgEphemerisDepA_c_rc :: Double
_msgEphemerisDepA_c_rs :: Double
_msgEphemerisDepA_tgd :: Double
_msgEphemerisDepA_prn :: MsgEphemerisDepA -> Word8
_msgEphemerisDepA_healthy :: MsgEphemerisDepA -> Word8
_msgEphemerisDepA_valid :: MsgEphemerisDepA -> Word8
_msgEphemerisDepA_toc_wn :: MsgEphemerisDepA -> Word16
_msgEphemerisDepA_toc_tow :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_toe_wn :: MsgEphemerisDepA -> Word16
_msgEphemerisDepA_toe_tow :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_af2 :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_af1 :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_af0 :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_inc_dot :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_inc :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_w :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_omegadot :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_omega0 :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_sqrta :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_ecc :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_m0 :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_dn :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_c_is :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_c_ic :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_c_us :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_c_uc :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_c_rc :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_c_rs :: MsgEphemerisDepA -> Double
_msgEphemerisDepA_tgd :: MsgEphemerisDepA -> Double
..} = do
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_tgd
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_c_rs
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_c_rc
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_c_uc
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_c_us
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_c_ic
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_c_is
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_dn
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_m0
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_ecc
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_sqrta
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_omega0
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_omegadot
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_w
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_inc
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_inc_dot
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_af0
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_af1
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_af2
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_toe_tow
    Word16 -> Put
putWord16le Word16
_msgEphemerisDepA_toe_wn
    Double -> Put
putFloat64le Double
_msgEphemerisDepA_toc_tow
    Word16 -> Put
putWord16le Word16
_msgEphemerisDepA_toc_wn
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepA_valid
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepA_healthy
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepA_prn

$(makeSBP 'msgEphemerisDepA ''MsgEphemerisDepA)
$(makeJSON "_msgEphemerisDepA_" ''MsgEphemerisDepA)
$(makeLenses ''MsgEphemerisDepA)

msgEphemerisDepB :: Word16
msgEphemerisDepB :: Word16
msgEphemerisDepB = Word16
0x0046

-- | SBP class for message MSG_EPHEMERIS_DEP_B (0x0046).
--
-- Deprecated.
data MsgEphemerisDepB = MsgEphemerisDepB
  { MsgEphemerisDepB -> Double
_msgEphemerisDepB_tgd    :: !Double
    -- ^ Group delay differential between L1 and L2
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_c_rs   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the orbit radius
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_c_rc   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the orbit radius
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_c_uc   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_c_us   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_c_ic   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_c_is   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_dn     :: !Double
    -- ^ Mean motion difference
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_m0     :: !Double
    -- ^ Mean anomaly at reference time
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_ecc    :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_sqrta  :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_omega0 :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_w      :: !Double
    -- ^ Argument of perigee
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_inc    :: !Double
    -- ^ Inclination
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_inc_dot :: !Double
    -- ^ Inclination first derivative
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_af0    :: !Double
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_af1    :: !Double
    -- ^ Polynomial clock correction coefficient (clock drift)
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_af2    :: !Double
    -- ^ Polynomial clock correction coefficient (rate of clock drift)
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_toe_tow :: !Double
    -- ^ Time of week
  , MsgEphemerisDepB -> Word16
_msgEphemerisDepB_toe_wn :: !Word16
    -- ^ Week number
  , MsgEphemerisDepB -> Double
_msgEphemerisDepB_toc_tow :: !Double
    -- ^ Clock reference time of week
  , MsgEphemerisDepB -> Word16
_msgEphemerisDepB_toc_wn :: !Word16
    -- ^ Clock reference week number
  , MsgEphemerisDepB -> Word8
_msgEphemerisDepB_valid  :: !Word8
    -- ^ Is valid?
  , MsgEphemerisDepB -> Word8
_msgEphemerisDepB_healthy :: !Word8
    -- ^ Satellite is healthy?
  , MsgEphemerisDepB -> Word8
_msgEphemerisDepB_prn    :: !Word8
    -- ^ PRN being tracked
  , MsgEphemerisDepB -> Word8
_msgEphemerisDepB_iode   :: !Word8
    -- ^ Issue of ephemeris data
  } deriving ( Int -> MsgEphemerisDepB -> ShowS
[MsgEphemerisDepB] -> ShowS
MsgEphemerisDepB -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisDepB] -> ShowS
$cshowList :: [MsgEphemerisDepB] -> ShowS
show :: MsgEphemerisDepB -> String
$cshow :: MsgEphemerisDepB -> String
showsPrec :: Int -> MsgEphemerisDepB -> ShowS
$cshowsPrec :: Int -> MsgEphemerisDepB -> ShowS
Show, ReadPrec [MsgEphemerisDepB]
ReadPrec MsgEphemerisDepB
Int -> ReadS MsgEphemerisDepB
ReadS [MsgEphemerisDepB]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisDepB]
$creadListPrec :: ReadPrec [MsgEphemerisDepB]
readPrec :: ReadPrec MsgEphemerisDepB
$creadPrec :: ReadPrec MsgEphemerisDepB
readList :: ReadS [MsgEphemerisDepB]
$creadList :: ReadS [MsgEphemerisDepB]
readsPrec :: Int -> ReadS MsgEphemerisDepB
$creadsPrec :: Int -> ReadS MsgEphemerisDepB
Read, MsgEphemerisDepB -> MsgEphemerisDepB -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisDepB -> MsgEphemerisDepB -> Bool
$c/= :: MsgEphemerisDepB -> MsgEphemerisDepB -> Bool
== :: MsgEphemerisDepB -> MsgEphemerisDepB -> Bool
$c== :: MsgEphemerisDepB -> MsgEphemerisDepB -> Bool
Eq )

instance Binary MsgEphemerisDepB where
  get :: Get MsgEphemerisDepB
get = do
    Double
_msgEphemerisDepB_tgd <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_c_rs <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_c_rc <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_c_uc <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_c_us <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_c_ic <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_c_is <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_dn <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_m0 <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_ecc <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_sqrta <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_omega0 <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_omegadot <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_w <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_inc <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_inc_dot <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_af0 <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_af1 <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_af2 <- Get Double
getFloat64le
    Double
_msgEphemerisDepB_toe_tow <- Get Double
getFloat64le
    Word16
_msgEphemerisDepB_toe_wn <- Get Word16
getWord16le
    Double
_msgEphemerisDepB_toc_tow <- Get Double
getFloat64le
    Word16
_msgEphemerisDepB_toc_wn <- Get Word16
getWord16le
    Word8
_msgEphemerisDepB_valid <- Get Word8
getWord8
    Word8
_msgEphemerisDepB_healthy <- Get Word8
getWord8
    Word8
_msgEphemerisDepB_prn <- Get Word8
getWord8
    Word8
_msgEphemerisDepB_iode <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisDepB {Double
Word8
Word16
_msgEphemerisDepB_iode :: Word8
_msgEphemerisDepB_prn :: Word8
_msgEphemerisDepB_healthy :: Word8
_msgEphemerisDepB_valid :: Word8
_msgEphemerisDepB_toc_wn :: Word16
_msgEphemerisDepB_toc_tow :: Double
_msgEphemerisDepB_toe_wn :: Word16
_msgEphemerisDepB_toe_tow :: Double
_msgEphemerisDepB_af2 :: Double
_msgEphemerisDepB_af1 :: Double
_msgEphemerisDepB_af0 :: Double
_msgEphemerisDepB_inc_dot :: Double
_msgEphemerisDepB_inc :: Double
_msgEphemerisDepB_w :: Double
_msgEphemerisDepB_omegadot :: Double
_msgEphemerisDepB_omega0 :: Double
_msgEphemerisDepB_sqrta :: Double
_msgEphemerisDepB_ecc :: Double
_msgEphemerisDepB_m0 :: Double
_msgEphemerisDepB_dn :: Double
_msgEphemerisDepB_c_is :: Double
_msgEphemerisDepB_c_ic :: Double
_msgEphemerisDepB_c_us :: Double
_msgEphemerisDepB_c_uc :: Double
_msgEphemerisDepB_c_rc :: Double
_msgEphemerisDepB_c_rs :: Double
_msgEphemerisDepB_tgd :: Double
_msgEphemerisDepB_iode :: Word8
_msgEphemerisDepB_prn :: Word8
_msgEphemerisDepB_healthy :: Word8
_msgEphemerisDepB_valid :: Word8
_msgEphemerisDepB_toc_wn :: Word16
_msgEphemerisDepB_toc_tow :: Double
_msgEphemerisDepB_toe_wn :: Word16
_msgEphemerisDepB_toe_tow :: Double
_msgEphemerisDepB_af2 :: Double
_msgEphemerisDepB_af1 :: Double
_msgEphemerisDepB_af0 :: Double
_msgEphemerisDepB_inc_dot :: Double
_msgEphemerisDepB_inc :: Double
_msgEphemerisDepB_w :: Double
_msgEphemerisDepB_omegadot :: Double
_msgEphemerisDepB_omega0 :: Double
_msgEphemerisDepB_sqrta :: Double
_msgEphemerisDepB_ecc :: Double
_msgEphemerisDepB_m0 :: Double
_msgEphemerisDepB_dn :: Double
_msgEphemerisDepB_c_is :: Double
_msgEphemerisDepB_c_ic :: Double
_msgEphemerisDepB_c_us :: Double
_msgEphemerisDepB_c_uc :: Double
_msgEphemerisDepB_c_rc :: Double
_msgEphemerisDepB_c_rs :: Double
_msgEphemerisDepB_tgd :: Double
..}

  put :: MsgEphemerisDepB -> Put
put MsgEphemerisDepB {Double
Word8
Word16
_msgEphemerisDepB_iode :: Word8
_msgEphemerisDepB_prn :: Word8
_msgEphemerisDepB_healthy :: Word8
_msgEphemerisDepB_valid :: Word8
_msgEphemerisDepB_toc_wn :: Word16
_msgEphemerisDepB_toc_tow :: Double
_msgEphemerisDepB_toe_wn :: Word16
_msgEphemerisDepB_toe_tow :: Double
_msgEphemerisDepB_af2 :: Double
_msgEphemerisDepB_af1 :: Double
_msgEphemerisDepB_af0 :: Double
_msgEphemerisDepB_inc_dot :: Double
_msgEphemerisDepB_inc :: Double
_msgEphemerisDepB_w :: Double
_msgEphemerisDepB_omegadot :: Double
_msgEphemerisDepB_omega0 :: Double
_msgEphemerisDepB_sqrta :: Double
_msgEphemerisDepB_ecc :: Double
_msgEphemerisDepB_m0 :: Double
_msgEphemerisDepB_dn :: Double
_msgEphemerisDepB_c_is :: Double
_msgEphemerisDepB_c_ic :: Double
_msgEphemerisDepB_c_us :: Double
_msgEphemerisDepB_c_uc :: Double
_msgEphemerisDepB_c_rc :: Double
_msgEphemerisDepB_c_rs :: Double
_msgEphemerisDepB_tgd :: Double
_msgEphemerisDepB_iode :: MsgEphemerisDepB -> Word8
_msgEphemerisDepB_prn :: MsgEphemerisDepB -> Word8
_msgEphemerisDepB_healthy :: MsgEphemerisDepB -> Word8
_msgEphemerisDepB_valid :: MsgEphemerisDepB -> Word8
_msgEphemerisDepB_toc_wn :: MsgEphemerisDepB -> Word16
_msgEphemerisDepB_toc_tow :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_toe_wn :: MsgEphemerisDepB -> Word16
_msgEphemerisDepB_toe_tow :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_af2 :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_af1 :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_af0 :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_inc_dot :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_inc :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_w :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_omegadot :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_omega0 :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_sqrta :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_ecc :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_m0 :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_dn :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_c_is :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_c_ic :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_c_us :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_c_uc :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_c_rc :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_c_rs :: MsgEphemerisDepB -> Double
_msgEphemerisDepB_tgd :: MsgEphemerisDepB -> Double
..} = do
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_tgd
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_c_rs
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_c_rc
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_c_uc
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_c_us
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_c_ic
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_c_is
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_dn
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_m0
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_ecc
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_sqrta
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_omega0
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_omegadot
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_w
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_inc
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_inc_dot
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_af0
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_af1
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_af2
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_toe_tow
    Word16 -> Put
putWord16le Word16
_msgEphemerisDepB_toe_wn
    Double -> Put
putFloat64le Double
_msgEphemerisDepB_toc_tow
    Word16 -> Put
putWord16le Word16
_msgEphemerisDepB_toc_wn
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepB_valid
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepB_healthy
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepB_prn
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepB_iode

$(makeSBP 'msgEphemerisDepB ''MsgEphemerisDepB)
$(makeJSON "_msgEphemerisDepB_" ''MsgEphemerisDepB)
$(makeLenses ''MsgEphemerisDepB)

msgEphemerisDepC :: Word16
msgEphemerisDepC :: Word16
msgEphemerisDepC = Word16
0x0047

-- | SBP class for message MSG_EPHEMERIS_DEP_C (0x0047).
--
-- The ephemeris message returns a set of satellite orbit parameters that is
-- used to calculate GPS satellite position, velocity, and clock offset.
-- Please see the Navstar GPS Space Segment/Navigation user interfaces (ICD-
-- GPS-200, Table 20-III) for more details.
data MsgEphemerisDepC = MsgEphemerisDepC
  { MsgEphemerisDepC -> Double
_msgEphemerisDepC_tgd    :: !Double
    -- ^ Group delay differential between L1 and L2
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_c_rs   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the orbit radius
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_c_rc   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the orbit radius
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_c_uc   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_c_us   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the argument of
    -- latitude
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_c_ic   :: !Double
    -- ^ Amplitude of the cosine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_c_is   :: !Double
    -- ^ Amplitude of the sine harmonic correction term to the angle of
    -- inclination
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_dn     :: !Double
    -- ^ Mean motion difference
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_m0     :: !Double
    -- ^ Mean anomaly at reference time
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_ecc    :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_sqrta  :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_omega0 :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_w      :: !Double
    -- ^ Argument of perigee
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_inc    :: !Double
    -- ^ Inclination
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_inc_dot :: !Double
    -- ^ Inclination first derivative
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_af0    :: !Double
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_af1    :: !Double
    -- ^ Polynomial clock correction coefficient (clock drift)
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_af2    :: !Double
    -- ^ Polynomial clock correction coefficient (rate of clock drift)
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_toe_tow :: !Double
    -- ^ Time of week
  , MsgEphemerisDepC -> Word16
_msgEphemerisDepC_toe_wn :: !Word16
    -- ^ Week number
  , MsgEphemerisDepC -> Double
_msgEphemerisDepC_toc_tow :: !Double
    -- ^ Clock reference time of week
  , MsgEphemerisDepC -> Word16
_msgEphemerisDepC_toc_wn :: !Word16
    -- ^ Clock reference week number
  , MsgEphemerisDepC -> Word8
_msgEphemerisDepC_valid  :: !Word8
    -- ^ Is valid?
  , MsgEphemerisDepC -> Word8
_msgEphemerisDepC_healthy :: !Word8
    -- ^ Satellite is healthy?
  , MsgEphemerisDepC -> GnssSignalDep
_msgEphemerisDepC_sid    :: !GnssSignalDep
    -- ^ GNSS signal identifier
  , MsgEphemerisDepC -> Word8
_msgEphemerisDepC_iode   :: !Word8
    -- ^ Issue of ephemeris data
  , MsgEphemerisDepC -> Word16
_msgEphemerisDepC_iodc   :: !Word16
    -- ^ Issue of clock data
  , MsgEphemerisDepC -> Word32
_msgEphemerisDepC_reserved :: !Word32
    -- ^ Reserved field
  } deriving ( Int -> MsgEphemerisDepC -> ShowS
[MsgEphemerisDepC] -> ShowS
MsgEphemerisDepC -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgEphemerisDepC] -> ShowS
$cshowList :: [MsgEphemerisDepC] -> ShowS
show :: MsgEphemerisDepC -> String
$cshow :: MsgEphemerisDepC -> String
showsPrec :: Int -> MsgEphemerisDepC -> ShowS
$cshowsPrec :: Int -> MsgEphemerisDepC -> ShowS
Show, ReadPrec [MsgEphemerisDepC]
ReadPrec MsgEphemerisDepC
Int -> ReadS MsgEphemerisDepC
ReadS [MsgEphemerisDepC]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgEphemerisDepC]
$creadListPrec :: ReadPrec [MsgEphemerisDepC]
readPrec :: ReadPrec MsgEphemerisDepC
$creadPrec :: ReadPrec MsgEphemerisDepC
readList :: ReadS [MsgEphemerisDepC]
$creadList :: ReadS [MsgEphemerisDepC]
readsPrec :: Int -> ReadS MsgEphemerisDepC
$creadsPrec :: Int -> ReadS MsgEphemerisDepC
Read, MsgEphemerisDepC -> MsgEphemerisDepC -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgEphemerisDepC -> MsgEphemerisDepC -> Bool
$c/= :: MsgEphemerisDepC -> MsgEphemerisDepC -> Bool
== :: MsgEphemerisDepC -> MsgEphemerisDepC -> Bool
$c== :: MsgEphemerisDepC -> MsgEphemerisDepC -> Bool
Eq )

instance Binary MsgEphemerisDepC where
  get :: Get MsgEphemerisDepC
get = do
    Double
_msgEphemerisDepC_tgd <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_c_rs <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_c_rc <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_c_uc <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_c_us <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_c_ic <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_c_is <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_dn <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_m0 <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_ecc <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_sqrta <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_omega0 <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_omegadot <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_w <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_inc <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_inc_dot <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_af0 <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_af1 <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_af2 <- Get Double
getFloat64le
    Double
_msgEphemerisDepC_toe_tow <- Get Double
getFloat64le
    Word16
_msgEphemerisDepC_toe_wn <- Get Word16
getWord16le
    Double
_msgEphemerisDepC_toc_tow <- Get Double
getFloat64le
    Word16
_msgEphemerisDepC_toc_wn <- Get Word16
getWord16le
    Word8
_msgEphemerisDepC_valid <- Get Word8
getWord8
    Word8
_msgEphemerisDepC_healthy <- Get Word8
getWord8
    GnssSignalDep
_msgEphemerisDepC_sid <- forall t. Binary t => Get t
get
    Word8
_msgEphemerisDepC_iode <- Get Word8
getWord8
    Word16
_msgEphemerisDepC_iodc <- Get Word16
getWord16le
    Word32
_msgEphemerisDepC_reserved <- Get Word32
getWord32le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgEphemerisDepC {Double
Word8
Word16
Word32
GnssSignalDep
_msgEphemerisDepC_reserved :: Word32
_msgEphemerisDepC_iodc :: Word16
_msgEphemerisDepC_iode :: Word8
_msgEphemerisDepC_sid :: GnssSignalDep
_msgEphemerisDepC_healthy :: Word8
_msgEphemerisDepC_valid :: Word8
_msgEphemerisDepC_toc_wn :: Word16
_msgEphemerisDepC_toc_tow :: Double
_msgEphemerisDepC_toe_wn :: Word16
_msgEphemerisDepC_toe_tow :: Double
_msgEphemerisDepC_af2 :: Double
_msgEphemerisDepC_af1 :: Double
_msgEphemerisDepC_af0 :: Double
_msgEphemerisDepC_inc_dot :: Double
_msgEphemerisDepC_inc :: Double
_msgEphemerisDepC_w :: Double
_msgEphemerisDepC_omegadot :: Double
_msgEphemerisDepC_omega0 :: Double
_msgEphemerisDepC_sqrta :: Double
_msgEphemerisDepC_ecc :: Double
_msgEphemerisDepC_m0 :: Double
_msgEphemerisDepC_dn :: Double
_msgEphemerisDepC_c_is :: Double
_msgEphemerisDepC_c_ic :: Double
_msgEphemerisDepC_c_us :: Double
_msgEphemerisDepC_c_uc :: Double
_msgEphemerisDepC_c_rc :: Double
_msgEphemerisDepC_c_rs :: Double
_msgEphemerisDepC_tgd :: Double
_msgEphemerisDepC_reserved :: Word32
_msgEphemerisDepC_iodc :: Word16
_msgEphemerisDepC_iode :: Word8
_msgEphemerisDepC_sid :: GnssSignalDep
_msgEphemerisDepC_healthy :: Word8
_msgEphemerisDepC_valid :: Word8
_msgEphemerisDepC_toc_wn :: Word16
_msgEphemerisDepC_toc_tow :: Double
_msgEphemerisDepC_toe_wn :: Word16
_msgEphemerisDepC_toe_tow :: Double
_msgEphemerisDepC_af2 :: Double
_msgEphemerisDepC_af1 :: Double
_msgEphemerisDepC_af0 :: Double
_msgEphemerisDepC_inc_dot :: Double
_msgEphemerisDepC_inc :: Double
_msgEphemerisDepC_w :: Double
_msgEphemerisDepC_omegadot :: Double
_msgEphemerisDepC_omega0 :: Double
_msgEphemerisDepC_sqrta :: Double
_msgEphemerisDepC_ecc :: Double
_msgEphemerisDepC_m0 :: Double
_msgEphemerisDepC_dn :: Double
_msgEphemerisDepC_c_is :: Double
_msgEphemerisDepC_c_ic :: Double
_msgEphemerisDepC_c_us :: Double
_msgEphemerisDepC_c_uc :: Double
_msgEphemerisDepC_c_rc :: Double
_msgEphemerisDepC_c_rs :: Double
_msgEphemerisDepC_tgd :: Double
..}

  put :: MsgEphemerisDepC -> Put
put MsgEphemerisDepC {Double
Word8
Word16
Word32
GnssSignalDep
_msgEphemerisDepC_reserved :: Word32
_msgEphemerisDepC_iodc :: Word16
_msgEphemerisDepC_iode :: Word8
_msgEphemerisDepC_sid :: GnssSignalDep
_msgEphemerisDepC_healthy :: Word8
_msgEphemerisDepC_valid :: Word8
_msgEphemerisDepC_toc_wn :: Word16
_msgEphemerisDepC_toc_tow :: Double
_msgEphemerisDepC_toe_wn :: Word16
_msgEphemerisDepC_toe_tow :: Double
_msgEphemerisDepC_af2 :: Double
_msgEphemerisDepC_af1 :: Double
_msgEphemerisDepC_af0 :: Double
_msgEphemerisDepC_inc_dot :: Double
_msgEphemerisDepC_inc :: Double
_msgEphemerisDepC_w :: Double
_msgEphemerisDepC_omegadot :: Double
_msgEphemerisDepC_omega0 :: Double
_msgEphemerisDepC_sqrta :: Double
_msgEphemerisDepC_ecc :: Double
_msgEphemerisDepC_m0 :: Double
_msgEphemerisDepC_dn :: Double
_msgEphemerisDepC_c_is :: Double
_msgEphemerisDepC_c_ic :: Double
_msgEphemerisDepC_c_us :: Double
_msgEphemerisDepC_c_uc :: Double
_msgEphemerisDepC_c_rc :: Double
_msgEphemerisDepC_c_rs :: Double
_msgEphemerisDepC_tgd :: Double
_msgEphemerisDepC_reserved :: MsgEphemerisDepC -> Word32
_msgEphemerisDepC_iodc :: MsgEphemerisDepC -> Word16
_msgEphemerisDepC_iode :: MsgEphemerisDepC -> Word8
_msgEphemerisDepC_sid :: MsgEphemerisDepC -> GnssSignalDep
_msgEphemerisDepC_healthy :: MsgEphemerisDepC -> Word8
_msgEphemerisDepC_valid :: MsgEphemerisDepC -> Word8
_msgEphemerisDepC_toc_wn :: MsgEphemerisDepC -> Word16
_msgEphemerisDepC_toc_tow :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_toe_wn :: MsgEphemerisDepC -> Word16
_msgEphemerisDepC_toe_tow :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_af2 :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_af1 :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_af0 :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_inc_dot :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_inc :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_w :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_omegadot :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_omega0 :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_sqrta :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_ecc :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_m0 :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_dn :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_c_is :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_c_ic :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_c_us :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_c_uc :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_c_rc :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_c_rs :: MsgEphemerisDepC -> Double
_msgEphemerisDepC_tgd :: MsgEphemerisDepC -> Double
..} = do
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_tgd
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_c_rs
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_c_rc
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_c_uc
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_c_us
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_c_ic
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_c_is
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_dn
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_m0
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_ecc
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_sqrta
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_omega0
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_omegadot
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_w
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_inc
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_inc_dot
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_af0
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_af1
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_af2
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_toe_tow
    Word16 -> Put
putWord16le Word16
_msgEphemerisDepC_toe_wn
    Double -> Put
putFloat64le Double
_msgEphemerisDepC_toc_tow
    Word16 -> Put
putWord16le Word16
_msgEphemerisDepC_toc_wn
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepC_valid
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepC_healthy
    forall t. Binary t => t -> Put
put GnssSignalDep
_msgEphemerisDepC_sid
    Word8 -> Put
putWord8 Word8
_msgEphemerisDepC_iode
    Word16 -> Put
putWord16le Word16
_msgEphemerisDepC_iodc
    Word32 -> Put
putWord32le Word32
_msgEphemerisDepC_reserved

$(makeSBP 'msgEphemerisDepC ''MsgEphemerisDepC)
$(makeJSON "_msgEphemerisDepC_" ''MsgEphemerisDepC)
$(makeLenses ''MsgEphemerisDepC)

-- | ObservationHeaderDep.
--
-- Header of a GPS observation message.
data ObservationHeaderDep = ObservationHeaderDep
  { ObservationHeaderDep -> GpsTimeDep
_observationHeaderDep_t   :: !GpsTimeDep
    -- ^ GPS time of this observation
  , ObservationHeaderDep -> Word8
_observationHeaderDep_n_obs :: !Word8
    -- ^ Total number of observations. First nibble is the size of the sequence
    -- (n), second nibble is the zero-indexed counter (ith packet of n)
  } deriving ( Int -> ObservationHeaderDep -> ShowS
[ObservationHeaderDep] -> ShowS
ObservationHeaderDep -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ObservationHeaderDep] -> ShowS
$cshowList :: [ObservationHeaderDep] -> ShowS
show :: ObservationHeaderDep -> String
$cshow :: ObservationHeaderDep -> String
showsPrec :: Int -> ObservationHeaderDep -> ShowS
$cshowsPrec :: Int -> ObservationHeaderDep -> ShowS
Show, ReadPrec [ObservationHeaderDep]
ReadPrec ObservationHeaderDep
Int -> ReadS ObservationHeaderDep
ReadS [ObservationHeaderDep]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ObservationHeaderDep]
$creadListPrec :: ReadPrec [ObservationHeaderDep]
readPrec :: ReadPrec ObservationHeaderDep
$creadPrec :: ReadPrec ObservationHeaderDep
readList :: ReadS [ObservationHeaderDep]
$creadList :: ReadS [ObservationHeaderDep]
readsPrec :: Int -> ReadS ObservationHeaderDep
$creadsPrec :: Int -> ReadS ObservationHeaderDep
Read, ObservationHeaderDep -> ObservationHeaderDep -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ObservationHeaderDep -> ObservationHeaderDep -> Bool
$c/= :: ObservationHeaderDep -> ObservationHeaderDep -> Bool
== :: ObservationHeaderDep -> ObservationHeaderDep -> Bool
$c== :: ObservationHeaderDep -> ObservationHeaderDep -> Bool
Eq )

instance Binary ObservationHeaderDep where
  get :: Get ObservationHeaderDep
get = do
    GpsTimeDep
_observationHeaderDep_t <- forall t. Binary t => Get t
get
    Word8
_observationHeaderDep_n_obs <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure ObservationHeaderDep {Word8
GpsTimeDep
_observationHeaderDep_n_obs :: Word8
_observationHeaderDep_t :: GpsTimeDep
_observationHeaderDep_n_obs :: Word8
_observationHeaderDep_t :: GpsTimeDep
..}

  put :: ObservationHeaderDep -> Put
put ObservationHeaderDep {Word8
GpsTimeDep
_observationHeaderDep_n_obs :: Word8
_observationHeaderDep_t :: GpsTimeDep
_observationHeaderDep_n_obs :: ObservationHeaderDep -> Word8
_observationHeaderDep_t :: ObservationHeaderDep -> GpsTimeDep
..} = do
    forall t. Binary t => t -> Put
put GpsTimeDep
_observationHeaderDep_t
    Word8 -> Put
putWord8 Word8
_observationHeaderDep_n_obs

$(makeJSON "_observationHeaderDep_" ''ObservationHeaderDep)
$(makeLenses ''ObservationHeaderDep)

-- | CarrierPhaseDepA.
--
-- Carrier phase measurement in cycles represented as a 40-bit fixed point
-- number with Q32.8 layout, i.e. 32-bits of whole cycles and 8-bits of
-- fractional cycles. This has the opposite sign convention than a typical GPS
-- receiver and the phase has the opposite sign as the pseudorange.
data CarrierPhaseDepA = CarrierPhaseDepA
  { CarrierPhaseDepA -> Int32
_carrierPhaseDepA_i :: !Int32
    -- ^ Carrier phase whole cycles
  , CarrierPhaseDepA -> Word8
_carrierPhaseDepA_f :: !Word8
    -- ^ Carrier phase fractional part
  } deriving ( Int -> CarrierPhaseDepA -> ShowS
[CarrierPhaseDepA] -> ShowS
CarrierPhaseDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CarrierPhaseDepA] -> ShowS
$cshowList :: [CarrierPhaseDepA] -> ShowS
show :: CarrierPhaseDepA -> String
$cshow :: CarrierPhaseDepA -> String
showsPrec :: Int -> CarrierPhaseDepA -> ShowS
$cshowsPrec :: Int -> CarrierPhaseDepA -> ShowS
Show, ReadPrec [CarrierPhaseDepA]
ReadPrec CarrierPhaseDepA
Int -> ReadS CarrierPhaseDepA
ReadS [CarrierPhaseDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CarrierPhaseDepA]
$creadListPrec :: ReadPrec [CarrierPhaseDepA]
readPrec :: ReadPrec CarrierPhaseDepA
$creadPrec :: ReadPrec CarrierPhaseDepA
readList :: ReadS [CarrierPhaseDepA]
$creadList :: ReadS [CarrierPhaseDepA]
readsPrec :: Int -> ReadS CarrierPhaseDepA
$creadsPrec :: Int -> ReadS CarrierPhaseDepA
Read, CarrierPhaseDepA -> CarrierPhaseDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CarrierPhaseDepA -> CarrierPhaseDepA -> Bool
$c/= :: CarrierPhaseDepA -> CarrierPhaseDepA -> Bool
== :: CarrierPhaseDepA -> CarrierPhaseDepA -> Bool
$c== :: CarrierPhaseDepA -> CarrierPhaseDepA -> Bool
Eq )

instance Binary CarrierPhaseDepA where
  get :: Get CarrierPhaseDepA
get = do
    Int32
_carrierPhaseDepA_i <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word32
getWord32le)
    Word8
_carrierPhaseDepA_f <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure CarrierPhaseDepA {Int32
Word8
_carrierPhaseDepA_f :: Word8
_carrierPhaseDepA_i :: Int32
_carrierPhaseDepA_f :: Word8
_carrierPhaseDepA_i :: Int32
..}

  put :: CarrierPhaseDepA -> Put
put CarrierPhaseDepA {Int32
Word8
_carrierPhaseDepA_f :: Word8
_carrierPhaseDepA_i :: Int32
_carrierPhaseDepA_f :: CarrierPhaseDepA -> Word8
_carrierPhaseDepA_i :: CarrierPhaseDepA -> Int32
..} = do
    (Word32 -> Put
putWord32le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int32
_carrierPhaseDepA_i
    Word8 -> Put
putWord8 Word8
_carrierPhaseDepA_f

$(makeJSON "_carrierPhaseDepA_" ''CarrierPhaseDepA)
$(makeLenses ''CarrierPhaseDepA)

-- | PackedObsContentDepA.
--
-- Deprecated.
data PackedObsContentDepA = PackedObsContentDepA
  { PackedObsContentDepA -> Word32
_packedObsContentDepA_P  :: !Word32
    -- ^ Pseudorange observation
  , PackedObsContentDepA -> CarrierPhaseDepA
_packedObsContentDepA_L  :: !CarrierPhaseDepA
    -- ^ Carrier phase observation with opposite sign from typical convention
  , PackedObsContentDepA -> Word8
_packedObsContentDepA_cn0 :: !Word8
    -- ^ Carrier-to-Noise density
  , PackedObsContentDepA -> Word16
_packedObsContentDepA_lock :: !Word16
    -- ^ Lock indicator. This value changes whenever a satellite signal has lost
    -- and regained lock, indicating that the carrier phase ambiguity may have
    -- changed.
  , PackedObsContentDepA -> Word8
_packedObsContentDepA_prn :: !Word8
    -- ^ PRN-1 identifier of the satellite signal
  } deriving ( Int -> PackedObsContentDepA -> ShowS
[PackedObsContentDepA] -> ShowS
PackedObsContentDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PackedObsContentDepA] -> ShowS
$cshowList :: [PackedObsContentDepA] -> ShowS
show :: PackedObsContentDepA -> String
$cshow :: PackedObsContentDepA -> String
showsPrec :: Int -> PackedObsContentDepA -> ShowS
$cshowsPrec :: Int -> PackedObsContentDepA -> ShowS
Show, ReadPrec [PackedObsContentDepA]
ReadPrec PackedObsContentDepA
Int -> ReadS PackedObsContentDepA
ReadS [PackedObsContentDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PackedObsContentDepA]
$creadListPrec :: ReadPrec [PackedObsContentDepA]
readPrec :: ReadPrec PackedObsContentDepA
$creadPrec :: ReadPrec PackedObsContentDepA
readList :: ReadS [PackedObsContentDepA]
$creadList :: ReadS [PackedObsContentDepA]
readsPrec :: Int -> ReadS PackedObsContentDepA
$creadsPrec :: Int -> ReadS PackedObsContentDepA
Read, PackedObsContentDepA -> PackedObsContentDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PackedObsContentDepA -> PackedObsContentDepA -> Bool
$c/= :: PackedObsContentDepA -> PackedObsContentDepA -> Bool
== :: PackedObsContentDepA -> PackedObsContentDepA -> Bool
$c== :: PackedObsContentDepA -> PackedObsContentDepA -> Bool
Eq )

instance Binary PackedObsContentDepA where
  get :: Get PackedObsContentDepA
get = do
    Word32
_packedObsContentDepA_P <- Get Word32
getWord32le
    CarrierPhaseDepA
_packedObsContentDepA_L <- forall t. Binary t => Get t
get
    Word8
_packedObsContentDepA_cn0 <- Get Word8
getWord8
    Word16
_packedObsContentDepA_lock <- Get Word16
getWord16le
    Word8
_packedObsContentDepA_prn <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure PackedObsContentDepA {Word8
Word16
Word32
CarrierPhaseDepA
_packedObsContentDepA_prn :: Word8
_packedObsContentDepA_lock :: Word16
_packedObsContentDepA_cn0 :: Word8
_packedObsContentDepA_L :: CarrierPhaseDepA
_packedObsContentDepA_P :: Word32
_packedObsContentDepA_prn :: Word8
_packedObsContentDepA_lock :: Word16
_packedObsContentDepA_cn0 :: Word8
_packedObsContentDepA_L :: CarrierPhaseDepA
_packedObsContentDepA_P :: Word32
..}

  put :: PackedObsContentDepA -> Put
put PackedObsContentDepA {Word8
Word16
Word32
CarrierPhaseDepA
_packedObsContentDepA_prn :: Word8
_packedObsContentDepA_lock :: Word16
_packedObsContentDepA_cn0 :: Word8
_packedObsContentDepA_L :: CarrierPhaseDepA
_packedObsContentDepA_P :: Word32
_packedObsContentDepA_prn :: PackedObsContentDepA -> Word8
_packedObsContentDepA_lock :: PackedObsContentDepA -> Word16
_packedObsContentDepA_cn0 :: PackedObsContentDepA -> Word8
_packedObsContentDepA_L :: PackedObsContentDepA -> CarrierPhaseDepA
_packedObsContentDepA_P :: PackedObsContentDepA -> Word32
..} = do
    Word32 -> Put
putWord32le Word32
_packedObsContentDepA_P
    forall t. Binary t => t -> Put
put CarrierPhaseDepA
_packedObsContentDepA_L
    Word8 -> Put
putWord8 Word8
_packedObsContentDepA_cn0
    Word16 -> Put
putWord16le Word16
_packedObsContentDepA_lock
    Word8 -> Put
putWord8 Word8
_packedObsContentDepA_prn

$(makeJSON "_packedObsContentDepA_" ''PackedObsContentDepA)
$(makeLenses ''PackedObsContentDepA)

-- | PackedObsContentDepB.
--
-- Pseudorange and carrier phase observation for a satellite being tracked.
-- Pseudoranges are referenced to a nominal pseudorange.
data PackedObsContentDepB = PackedObsContentDepB
  { PackedObsContentDepB -> Word32
_packedObsContentDepB_P  :: !Word32
    -- ^ Pseudorange observation
  , PackedObsContentDepB -> CarrierPhaseDepA
_packedObsContentDepB_L  :: !CarrierPhaseDepA
    -- ^ Carrier phase observation with opposite sign from typical convention.
  , PackedObsContentDepB -> Word8
_packedObsContentDepB_cn0 :: !Word8
    -- ^ Carrier-to-Noise density
  , PackedObsContentDepB -> Word16
_packedObsContentDepB_lock :: !Word16
    -- ^ Lock indicator. This value changes whenever a satellite signal has lost
    -- and regained lock, indicating that the carrier phase ambiguity may have
    -- changed.
  , PackedObsContentDepB -> GnssSignalDep
_packedObsContentDepB_sid :: !GnssSignalDep
    -- ^ GNSS signal identifier
  } deriving ( Int -> PackedObsContentDepB -> ShowS
[PackedObsContentDepB] -> ShowS
PackedObsContentDepB -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PackedObsContentDepB] -> ShowS
$cshowList :: [PackedObsContentDepB] -> ShowS
show :: PackedObsContentDepB -> String
$cshow :: PackedObsContentDepB -> String
showsPrec :: Int -> PackedObsContentDepB -> ShowS
$cshowsPrec :: Int -> PackedObsContentDepB -> ShowS
Show, ReadPrec [PackedObsContentDepB]
ReadPrec PackedObsContentDepB
Int -> ReadS PackedObsContentDepB
ReadS [PackedObsContentDepB]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PackedObsContentDepB]
$creadListPrec :: ReadPrec [PackedObsContentDepB]
readPrec :: ReadPrec PackedObsContentDepB
$creadPrec :: ReadPrec PackedObsContentDepB
readList :: ReadS [PackedObsContentDepB]
$creadList :: ReadS [PackedObsContentDepB]
readsPrec :: Int -> ReadS PackedObsContentDepB
$creadsPrec :: Int -> ReadS PackedObsContentDepB
Read, PackedObsContentDepB -> PackedObsContentDepB -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PackedObsContentDepB -> PackedObsContentDepB -> Bool
$c/= :: PackedObsContentDepB -> PackedObsContentDepB -> Bool
== :: PackedObsContentDepB -> PackedObsContentDepB -> Bool
$c== :: PackedObsContentDepB -> PackedObsContentDepB -> Bool
Eq )

instance Binary PackedObsContentDepB where
  get :: Get PackedObsContentDepB
get = do
    Word32
_packedObsContentDepB_P <- Get Word32
getWord32le
    CarrierPhaseDepA
_packedObsContentDepB_L <- forall t. Binary t => Get t
get
    Word8
_packedObsContentDepB_cn0 <- Get Word8
getWord8
    Word16
_packedObsContentDepB_lock <- Get Word16
getWord16le
    GnssSignalDep
_packedObsContentDepB_sid <- forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure PackedObsContentDepB {Word8
Word16
Word32
GnssSignalDep
CarrierPhaseDepA
_packedObsContentDepB_sid :: GnssSignalDep
_packedObsContentDepB_lock :: Word16
_packedObsContentDepB_cn0 :: Word8
_packedObsContentDepB_L :: CarrierPhaseDepA
_packedObsContentDepB_P :: Word32
_packedObsContentDepB_sid :: GnssSignalDep
_packedObsContentDepB_lock :: Word16
_packedObsContentDepB_cn0 :: Word8
_packedObsContentDepB_L :: CarrierPhaseDepA
_packedObsContentDepB_P :: Word32
..}

  put :: PackedObsContentDepB -> Put
put PackedObsContentDepB {Word8
Word16
Word32
GnssSignalDep
CarrierPhaseDepA
_packedObsContentDepB_sid :: GnssSignalDep
_packedObsContentDepB_lock :: Word16
_packedObsContentDepB_cn0 :: Word8
_packedObsContentDepB_L :: CarrierPhaseDepA
_packedObsContentDepB_P :: Word32
_packedObsContentDepB_sid :: PackedObsContentDepB -> GnssSignalDep
_packedObsContentDepB_lock :: PackedObsContentDepB -> Word16
_packedObsContentDepB_cn0 :: PackedObsContentDepB -> Word8
_packedObsContentDepB_L :: PackedObsContentDepB -> CarrierPhaseDepA
_packedObsContentDepB_P :: PackedObsContentDepB -> Word32
..} = do
    Word32 -> Put
putWord32le Word32
_packedObsContentDepB_P
    forall t. Binary t => t -> Put
put CarrierPhaseDepA
_packedObsContentDepB_L
    Word8 -> Put
putWord8 Word8
_packedObsContentDepB_cn0
    Word16 -> Put
putWord16le Word16
_packedObsContentDepB_lock
    forall t. Binary t => t -> Put
put GnssSignalDep
_packedObsContentDepB_sid

$(makeJSON "_packedObsContentDepB_" ''PackedObsContentDepB)
$(makeLenses ''PackedObsContentDepB)

-- | PackedObsContentDepC.
--
-- Pseudorange and carrier phase observation for a satellite being tracked.
-- The observations are be interoperable with 3rd party receivers and conform
-- with typical RTCMv3 GNSS observations.
data PackedObsContentDepC = PackedObsContentDepC
  { PackedObsContentDepC -> Word32
_packedObsContentDepC_P  :: !Word32
    -- ^ Pseudorange observation
  , PackedObsContentDepC -> CarrierPhase
_packedObsContentDepC_L  :: !CarrierPhase
    -- ^ Carrier phase observation with typical sign convention.
  , PackedObsContentDepC -> Word8
_packedObsContentDepC_cn0 :: !Word8
    -- ^ Carrier-to-Noise density
  , PackedObsContentDepC -> Word16
_packedObsContentDepC_lock :: !Word16
    -- ^ Lock indicator. This value changes whenever a satellite signal has lost
    -- and regained lock, indicating that the carrier phase ambiguity may have
    -- changed.
  , PackedObsContentDepC -> GnssSignalDep
_packedObsContentDepC_sid :: !GnssSignalDep
    -- ^ GNSS signal identifier
  } deriving ( Int -> PackedObsContentDepC -> ShowS
[PackedObsContentDepC] -> ShowS
PackedObsContentDepC -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PackedObsContentDepC] -> ShowS
$cshowList :: [PackedObsContentDepC] -> ShowS
show :: PackedObsContentDepC -> String
$cshow :: PackedObsContentDepC -> String
showsPrec :: Int -> PackedObsContentDepC -> ShowS
$cshowsPrec :: Int -> PackedObsContentDepC -> ShowS
Show, ReadPrec [PackedObsContentDepC]
ReadPrec PackedObsContentDepC
Int -> ReadS PackedObsContentDepC
ReadS [PackedObsContentDepC]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PackedObsContentDepC]
$creadListPrec :: ReadPrec [PackedObsContentDepC]
readPrec :: ReadPrec PackedObsContentDepC
$creadPrec :: ReadPrec PackedObsContentDepC
readList :: ReadS [PackedObsContentDepC]
$creadList :: ReadS [PackedObsContentDepC]
readsPrec :: Int -> ReadS PackedObsContentDepC
$creadsPrec :: Int -> ReadS PackedObsContentDepC
Read, PackedObsContentDepC -> PackedObsContentDepC -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PackedObsContentDepC -> PackedObsContentDepC -> Bool
$c/= :: PackedObsContentDepC -> PackedObsContentDepC -> Bool
== :: PackedObsContentDepC -> PackedObsContentDepC -> Bool
$c== :: PackedObsContentDepC -> PackedObsContentDepC -> Bool
Eq )

instance Binary PackedObsContentDepC where
  get :: Get PackedObsContentDepC
get = do
    Word32
_packedObsContentDepC_P <- Get Word32
getWord32le
    CarrierPhase
_packedObsContentDepC_L <- forall t. Binary t => Get t
get
    Word8
_packedObsContentDepC_cn0 <- Get Word8
getWord8
    Word16
_packedObsContentDepC_lock <- Get Word16
getWord16le
    GnssSignalDep
_packedObsContentDepC_sid <- forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure PackedObsContentDepC {Word8
Word16
Word32
GnssSignalDep
CarrierPhase
_packedObsContentDepC_sid :: GnssSignalDep
_packedObsContentDepC_lock :: Word16
_packedObsContentDepC_cn0 :: Word8
_packedObsContentDepC_L :: CarrierPhase
_packedObsContentDepC_P :: Word32
_packedObsContentDepC_sid :: GnssSignalDep
_packedObsContentDepC_lock :: Word16
_packedObsContentDepC_cn0 :: Word8
_packedObsContentDepC_L :: CarrierPhase
_packedObsContentDepC_P :: Word32
..}

  put :: PackedObsContentDepC -> Put
put PackedObsContentDepC {Word8
Word16
Word32
GnssSignalDep
CarrierPhase
_packedObsContentDepC_sid :: GnssSignalDep
_packedObsContentDepC_lock :: Word16
_packedObsContentDepC_cn0 :: Word8
_packedObsContentDepC_L :: CarrierPhase
_packedObsContentDepC_P :: Word32
_packedObsContentDepC_sid :: PackedObsContentDepC -> GnssSignalDep
_packedObsContentDepC_lock :: PackedObsContentDepC -> Word16
_packedObsContentDepC_cn0 :: PackedObsContentDepC -> Word8
_packedObsContentDepC_L :: PackedObsContentDepC -> CarrierPhase
_packedObsContentDepC_P :: PackedObsContentDepC -> Word32
..} = do
    Word32 -> Put
putWord32le Word32
_packedObsContentDepC_P
    forall t. Binary t => t -> Put
put CarrierPhase
_packedObsContentDepC_L
    Word8 -> Put
putWord8 Word8
_packedObsContentDepC_cn0
    Word16 -> Put
putWord16le Word16
_packedObsContentDepC_lock
    forall t. Binary t => t -> Put
put GnssSignalDep
_packedObsContentDepC_sid

$(makeJSON "_packedObsContentDepC_" ''PackedObsContentDepC)
$(makeLenses ''PackedObsContentDepC)

msgObsDepA :: Word16
msgObsDepA :: Word16
msgObsDepA = Word16
0x0045

-- | SBP class for message MSG_OBS_DEP_A (0x0045).
--
-- Deprecated.
data MsgObsDepA = MsgObsDepA
  { MsgObsDepA -> ObservationHeaderDep
_msgObsDepA_header :: !ObservationHeaderDep
    -- ^ Header of a GPS observation message
  , MsgObsDepA -> [PackedObsContentDepA]
_msgObsDepA_obs  :: ![PackedObsContentDepA]
    -- ^ Pseudorange and carrier phase observation for a satellite being
    -- tracked.
  } deriving ( Int -> MsgObsDepA -> ShowS
[MsgObsDepA] -> ShowS
MsgObsDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgObsDepA] -> ShowS
$cshowList :: [MsgObsDepA] -> ShowS
show :: MsgObsDepA -> String
$cshow :: MsgObsDepA -> String
showsPrec :: Int -> MsgObsDepA -> ShowS
$cshowsPrec :: Int -> MsgObsDepA -> ShowS
Show, ReadPrec [MsgObsDepA]
ReadPrec MsgObsDepA
Int -> ReadS MsgObsDepA
ReadS [MsgObsDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgObsDepA]
$creadListPrec :: ReadPrec [MsgObsDepA]
readPrec :: ReadPrec MsgObsDepA
$creadPrec :: ReadPrec MsgObsDepA
readList :: ReadS [MsgObsDepA]
$creadList :: ReadS [MsgObsDepA]
readsPrec :: Int -> ReadS MsgObsDepA
$creadsPrec :: Int -> ReadS MsgObsDepA
Read, MsgObsDepA -> MsgObsDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgObsDepA -> MsgObsDepA -> Bool
$c/= :: MsgObsDepA -> MsgObsDepA -> Bool
== :: MsgObsDepA -> MsgObsDepA -> Bool
$c== :: MsgObsDepA -> MsgObsDepA -> Bool
Eq )

instance Binary MsgObsDepA where
  get :: Get MsgObsDepA
get = do
    ObservationHeaderDep
_msgObsDepA_header <- forall t. Binary t => Get t
get
    [PackedObsContentDepA]
_msgObsDepA_obs <- forall (m :: * -> *) a. Monad m => m Bool -> m a -> m [a]
whileM (Bool -> Bool
not forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Bool
isEmpty) forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgObsDepA {[PackedObsContentDepA]
ObservationHeaderDep
_msgObsDepA_obs :: [PackedObsContentDepA]
_msgObsDepA_header :: ObservationHeaderDep
_msgObsDepA_obs :: [PackedObsContentDepA]
_msgObsDepA_header :: ObservationHeaderDep
..}

  put :: MsgObsDepA -> Put
put MsgObsDepA {[PackedObsContentDepA]
ObservationHeaderDep
_msgObsDepA_obs :: [PackedObsContentDepA]
_msgObsDepA_header :: ObservationHeaderDep
_msgObsDepA_obs :: MsgObsDepA -> [PackedObsContentDepA]
_msgObsDepA_header :: MsgObsDepA -> ObservationHeaderDep
..} = do
    forall t. Binary t => t -> Put
put ObservationHeaderDep
_msgObsDepA_header
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ forall t. Binary t => t -> Put
put [PackedObsContentDepA]
_msgObsDepA_obs

$(makeSBP 'msgObsDepA ''MsgObsDepA)
$(makeJSON "_msgObsDepA_" ''MsgObsDepA)
$(makeLenses ''MsgObsDepA)

msgObsDepB :: Word16
msgObsDepB :: Word16
msgObsDepB = Word16
0x0043

-- | SBP class for message MSG_OBS_DEP_B (0x0043).
--
-- This observation message has been deprecated in favor of observations that
-- are more interoperable. This message should be used for observations
-- referenced to a nominal pseudorange which are not interoperable with most
-- 3rd party GNSS receivers or typical RTCMv3 observations.
data MsgObsDepB = MsgObsDepB
  { MsgObsDepB -> ObservationHeaderDep
_msgObsDepB_header :: !ObservationHeaderDep
    -- ^ Header of a GPS observation message
  , MsgObsDepB -> [PackedObsContentDepB]
_msgObsDepB_obs  :: ![PackedObsContentDepB]
    -- ^ Pseudorange and carrier phase observation for a satellite being
    -- tracked.
  } deriving ( Int -> MsgObsDepB -> ShowS
[MsgObsDepB] -> ShowS
MsgObsDepB -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgObsDepB] -> ShowS
$cshowList :: [MsgObsDepB] -> ShowS
show :: MsgObsDepB -> String
$cshow :: MsgObsDepB -> String
showsPrec :: Int -> MsgObsDepB -> ShowS
$cshowsPrec :: Int -> MsgObsDepB -> ShowS
Show, ReadPrec [MsgObsDepB]
ReadPrec MsgObsDepB
Int -> ReadS MsgObsDepB
ReadS [MsgObsDepB]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgObsDepB]
$creadListPrec :: ReadPrec [MsgObsDepB]
readPrec :: ReadPrec MsgObsDepB
$creadPrec :: ReadPrec MsgObsDepB
readList :: ReadS [MsgObsDepB]
$creadList :: ReadS [MsgObsDepB]
readsPrec :: Int -> ReadS MsgObsDepB
$creadsPrec :: Int -> ReadS MsgObsDepB
Read, MsgObsDepB -> MsgObsDepB -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgObsDepB -> MsgObsDepB -> Bool
$c/= :: MsgObsDepB -> MsgObsDepB -> Bool
== :: MsgObsDepB -> MsgObsDepB -> Bool
$c== :: MsgObsDepB -> MsgObsDepB -> Bool
Eq )

instance Binary MsgObsDepB where
  get :: Get MsgObsDepB
get = do
    ObservationHeaderDep
_msgObsDepB_header <- forall t. Binary t => Get t
get
    [PackedObsContentDepB]
_msgObsDepB_obs <- forall (m :: * -> *) a. Monad m => m Bool -> m a -> m [a]
whileM (Bool -> Bool
not forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Bool
isEmpty) forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgObsDepB {[PackedObsContentDepB]
ObservationHeaderDep
_msgObsDepB_obs :: [PackedObsContentDepB]
_msgObsDepB_header :: ObservationHeaderDep
_msgObsDepB_obs :: [PackedObsContentDepB]
_msgObsDepB_header :: ObservationHeaderDep
..}

  put :: MsgObsDepB -> Put
put MsgObsDepB {[PackedObsContentDepB]
ObservationHeaderDep
_msgObsDepB_obs :: [PackedObsContentDepB]
_msgObsDepB_header :: ObservationHeaderDep
_msgObsDepB_obs :: MsgObsDepB -> [PackedObsContentDepB]
_msgObsDepB_header :: MsgObsDepB -> ObservationHeaderDep
..} = do
    forall t. Binary t => t -> Put
put ObservationHeaderDep
_msgObsDepB_header
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ forall t. Binary t => t -> Put
put [PackedObsContentDepB]
_msgObsDepB_obs

$(makeSBP 'msgObsDepB ''MsgObsDepB)
$(makeJSON "_msgObsDepB_" ''MsgObsDepB)
$(makeLenses ''MsgObsDepB)

msgObsDepC :: Word16
msgObsDepC :: Word16
msgObsDepC = Word16
0x0049

-- | SBP class for message MSG_OBS_DEP_C (0x0049).
--
-- The GPS observations message reports all the raw pseudorange and carrier
-- phase observations for the satellites being tracked by the device. Carrier
-- phase observation here is represented as a 40-bit fixed point number with
-- Q32.8 layout (i.e. 32-bits of whole cycles and 8-bits of fractional
-- cycles). The observations are interoperable with 3rd party receivers and
-- conform with typical RTCMv3 GNSS observations.
data MsgObsDepC = MsgObsDepC
  { MsgObsDepC -> ObservationHeaderDep
_msgObsDepC_header :: !ObservationHeaderDep
    -- ^ Header of a GPS observation message
  , MsgObsDepC -> [PackedObsContentDepC]
_msgObsDepC_obs  :: ![PackedObsContentDepC]
    -- ^ Pseudorange and carrier phase observation for a satellite being
    -- tracked.
  } deriving ( Int -> MsgObsDepC -> ShowS
[MsgObsDepC] -> ShowS
MsgObsDepC -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgObsDepC] -> ShowS
$cshowList :: [MsgObsDepC] -> ShowS
show :: MsgObsDepC -> String
$cshow :: MsgObsDepC -> String
showsPrec :: Int -> MsgObsDepC -> ShowS
$cshowsPrec :: Int -> MsgObsDepC -> ShowS
Show, ReadPrec [MsgObsDepC]
ReadPrec MsgObsDepC
Int -> ReadS MsgObsDepC
ReadS [MsgObsDepC]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgObsDepC]
$creadListPrec :: ReadPrec [MsgObsDepC]
readPrec :: ReadPrec MsgObsDepC
$creadPrec :: ReadPrec MsgObsDepC
readList :: ReadS [MsgObsDepC]
$creadList :: ReadS [MsgObsDepC]
readsPrec :: Int -> ReadS MsgObsDepC
$creadsPrec :: Int -> ReadS MsgObsDepC
Read, MsgObsDepC -> MsgObsDepC -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgObsDepC -> MsgObsDepC -> Bool
$c/= :: MsgObsDepC -> MsgObsDepC -> Bool
== :: MsgObsDepC -> MsgObsDepC -> Bool
$c== :: MsgObsDepC -> MsgObsDepC -> Bool
Eq )

instance Binary MsgObsDepC where
  get :: Get MsgObsDepC
get = do
    ObservationHeaderDep
_msgObsDepC_header <- forall t. Binary t => Get t
get
    [PackedObsContentDepC]
_msgObsDepC_obs <- forall (m :: * -> *) a. Monad m => m Bool -> m a -> m [a]
whileM (Bool -> Bool
not forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Bool
isEmpty) forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgObsDepC {[PackedObsContentDepC]
ObservationHeaderDep
_msgObsDepC_obs :: [PackedObsContentDepC]
_msgObsDepC_header :: ObservationHeaderDep
_msgObsDepC_obs :: [PackedObsContentDepC]
_msgObsDepC_header :: ObservationHeaderDep
..}

  put :: MsgObsDepC -> Put
put MsgObsDepC {[PackedObsContentDepC]
ObservationHeaderDep
_msgObsDepC_obs :: [PackedObsContentDepC]
_msgObsDepC_header :: ObservationHeaderDep
_msgObsDepC_obs :: MsgObsDepC -> [PackedObsContentDepC]
_msgObsDepC_header :: MsgObsDepC -> ObservationHeaderDep
..} = do
    forall t. Binary t => t -> Put
put ObservationHeaderDep
_msgObsDepC_header
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ forall t. Binary t => t -> Put
put [PackedObsContentDepC]
_msgObsDepC_obs

$(makeSBP 'msgObsDepC ''MsgObsDepC)
$(makeJSON "_msgObsDepC_" ''MsgObsDepC)
$(makeLenses ''MsgObsDepC)

msgIono :: Word16
msgIono :: Word16
msgIono = Word16
0x0090

-- | SBP class for message MSG_IONO (0x0090).
--
-- The ionospheric parameters which allow the "L1 only" or "L2 only" user to
-- utilize the ionospheric model for computation of the ionospheric delay.
-- Please see ICD-GPS-200 (Chapter 20.3.3.5.1.7) for more details.
data MsgIono = MsgIono
  { MsgIono -> GpsTimeSec
_msgIono_t_nmct :: !GpsTimeSec
    -- ^ Navigation Message Correction Table Validity Time
  , MsgIono -> Double
_msgIono_a0   :: !Double
  , MsgIono -> Double
_msgIono_a1   :: !Double
  , MsgIono -> Double
_msgIono_a2   :: !Double
  , MsgIono -> Double
_msgIono_a3   :: !Double
  , MsgIono -> Double
_msgIono_b0   :: !Double
  , MsgIono -> Double
_msgIono_b1   :: !Double
  , MsgIono -> Double
_msgIono_b2   :: !Double
  , MsgIono -> Double
_msgIono_b3   :: !Double
  } deriving ( Int -> MsgIono -> ShowS
[MsgIono] -> ShowS
MsgIono -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgIono] -> ShowS
$cshowList :: [MsgIono] -> ShowS
show :: MsgIono -> String
$cshow :: MsgIono -> String
showsPrec :: Int -> MsgIono -> ShowS
$cshowsPrec :: Int -> MsgIono -> ShowS
Show, ReadPrec [MsgIono]
ReadPrec MsgIono
Int -> ReadS MsgIono
ReadS [MsgIono]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgIono]
$creadListPrec :: ReadPrec [MsgIono]
readPrec :: ReadPrec MsgIono
$creadPrec :: ReadPrec MsgIono
readList :: ReadS [MsgIono]
$creadList :: ReadS [MsgIono]
readsPrec :: Int -> ReadS MsgIono
$creadsPrec :: Int -> ReadS MsgIono
Read, MsgIono -> MsgIono -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgIono -> MsgIono -> Bool
$c/= :: MsgIono -> MsgIono -> Bool
== :: MsgIono -> MsgIono -> Bool
$c== :: MsgIono -> MsgIono -> Bool
Eq )

instance Binary MsgIono where
  get :: Get MsgIono
get = do
    GpsTimeSec
_msgIono_t_nmct <- forall t. Binary t => Get t
get
    Double
_msgIono_a0 <- Get Double
getFloat64le
    Double
_msgIono_a1 <- Get Double
getFloat64le
    Double
_msgIono_a2 <- Get Double
getFloat64le
    Double
_msgIono_a3 <- Get Double
getFloat64le
    Double
_msgIono_b0 <- Get Double
getFloat64le
    Double
_msgIono_b1 <- Get Double
getFloat64le
    Double
_msgIono_b2 <- Get Double
getFloat64le
    Double
_msgIono_b3 <- Get Double
getFloat64le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgIono {Double
GpsTimeSec
_msgIono_b3 :: Double
_msgIono_b2 :: Double
_msgIono_b1 :: Double
_msgIono_b0 :: Double
_msgIono_a3 :: Double
_msgIono_a2 :: Double
_msgIono_a1 :: Double
_msgIono_a0 :: Double
_msgIono_t_nmct :: GpsTimeSec
_msgIono_b3 :: Double
_msgIono_b2 :: Double
_msgIono_b1 :: Double
_msgIono_b0 :: Double
_msgIono_a3 :: Double
_msgIono_a2 :: Double
_msgIono_a1 :: Double
_msgIono_a0 :: Double
_msgIono_t_nmct :: GpsTimeSec
..}

  put :: MsgIono -> Put
put MsgIono {Double
GpsTimeSec
_msgIono_b3 :: Double
_msgIono_b2 :: Double
_msgIono_b1 :: Double
_msgIono_b0 :: Double
_msgIono_a3 :: Double
_msgIono_a2 :: Double
_msgIono_a1 :: Double
_msgIono_a0 :: Double
_msgIono_t_nmct :: GpsTimeSec
_msgIono_b3 :: MsgIono -> Double
_msgIono_b2 :: MsgIono -> Double
_msgIono_b1 :: MsgIono -> Double
_msgIono_b0 :: MsgIono -> Double
_msgIono_a3 :: MsgIono -> Double
_msgIono_a2 :: MsgIono -> Double
_msgIono_a1 :: MsgIono -> Double
_msgIono_a0 :: MsgIono -> Double
_msgIono_t_nmct :: MsgIono -> GpsTimeSec
..} = do
    forall t. Binary t => t -> Put
put GpsTimeSec
_msgIono_t_nmct
    Double -> Put
putFloat64le Double
_msgIono_a0
    Double -> Put
putFloat64le Double
_msgIono_a1
    Double -> Put
putFloat64le Double
_msgIono_a2
    Double -> Put
putFloat64le Double
_msgIono_a3
    Double -> Put
putFloat64le Double
_msgIono_b0
    Double -> Put
putFloat64le Double
_msgIono_b1
    Double -> Put
putFloat64le Double
_msgIono_b2
    Double -> Put
putFloat64le Double
_msgIono_b3

$(makeSBP 'msgIono ''MsgIono)
$(makeJSON "_msgIono_" ''MsgIono)
$(makeLenses ''MsgIono)

msgSvConfigurationGpsDep :: Word16
msgSvConfigurationGpsDep :: Word16
msgSvConfigurationGpsDep = Word16
0x0091

-- | SBP class for message MSG_SV_CONFIGURATION_GPS_DEP (0x0091).
--
-- Please see ICD-GPS-200 (Chapter 20.3.3.5.1.4) for more details.
data MsgSvConfigurationGpsDep = MsgSvConfigurationGpsDep
  { MsgSvConfigurationGpsDep -> GpsTimeSec
_msgSvConfigurationGpsDep_t_nmct :: !GpsTimeSec
    -- ^ Navigation Message Correction Table Validity Time
  , MsgSvConfigurationGpsDep -> Word32
_msgSvConfigurationGpsDep_l2c_mask :: !Word32
    -- ^ L2C capability mask, SV32 bit being MSB, SV1 bit being LSB
  } deriving ( Int -> MsgSvConfigurationGpsDep -> ShowS
[MsgSvConfigurationGpsDep] -> ShowS
MsgSvConfigurationGpsDep -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgSvConfigurationGpsDep] -> ShowS
$cshowList :: [MsgSvConfigurationGpsDep] -> ShowS
show :: MsgSvConfigurationGpsDep -> String
$cshow :: MsgSvConfigurationGpsDep -> String
showsPrec :: Int -> MsgSvConfigurationGpsDep -> ShowS
$cshowsPrec :: Int -> MsgSvConfigurationGpsDep -> ShowS
Show, ReadPrec [MsgSvConfigurationGpsDep]
ReadPrec MsgSvConfigurationGpsDep
Int -> ReadS MsgSvConfigurationGpsDep
ReadS [MsgSvConfigurationGpsDep]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgSvConfigurationGpsDep]
$creadListPrec :: ReadPrec [MsgSvConfigurationGpsDep]
readPrec :: ReadPrec MsgSvConfigurationGpsDep
$creadPrec :: ReadPrec MsgSvConfigurationGpsDep
readList :: ReadS [MsgSvConfigurationGpsDep]
$creadList :: ReadS [MsgSvConfigurationGpsDep]
readsPrec :: Int -> ReadS MsgSvConfigurationGpsDep
$creadsPrec :: Int -> ReadS MsgSvConfigurationGpsDep
Read, MsgSvConfigurationGpsDep -> MsgSvConfigurationGpsDep -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgSvConfigurationGpsDep -> MsgSvConfigurationGpsDep -> Bool
$c/= :: MsgSvConfigurationGpsDep -> MsgSvConfigurationGpsDep -> Bool
== :: MsgSvConfigurationGpsDep -> MsgSvConfigurationGpsDep -> Bool
$c== :: MsgSvConfigurationGpsDep -> MsgSvConfigurationGpsDep -> Bool
Eq )

instance Binary MsgSvConfigurationGpsDep where
  get :: Get MsgSvConfigurationGpsDep
get = do
    GpsTimeSec
_msgSvConfigurationGpsDep_t_nmct <- forall t. Binary t => Get t
get
    Word32
_msgSvConfigurationGpsDep_l2c_mask <- Get Word32
getWord32le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgSvConfigurationGpsDep {Word32
GpsTimeSec
_msgSvConfigurationGpsDep_l2c_mask :: Word32
_msgSvConfigurationGpsDep_t_nmct :: GpsTimeSec
_msgSvConfigurationGpsDep_l2c_mask :: Word32
_msgSvConfigurationGpsDep_t_nmct :: GpsTimeSec
..}

  put :: MsgSvConfigurationGpsDep -> Put
put MsgSvConfigurationGpsDep {Word32
GpsTimeSec
_msgSvConfigurationGpsDep_l2c_mask :: Word32
_msgSvConfigurationGpsDep_t_nmct :: GpsTimeSec
_msgSvConfigurationGpsDep_l2c_mask :: MsgSvConfigurationGpsDep -> Word32
_msgSvConfigurationGpsDep_t_nmct :: MsgSvConfigurationGpsDep -> GpsTimeSec
..} = do
    forall t. Binary t => t -> Put
put GpsTimeSec
_msgSvConfigurationGpsDep_t_nmct
    Word32 -> Put
putWord32le Word32
_msgSvConfigurationGpsDep_l2c_mask

$(makeSBP 'msgSvConfigurationGpsDep ''MsgSvConfigurationGpsDep)
$(makeJSON "_msgSvConfigurationGpsDep_" ''MsgSvConfigurationGpsDep)
$(makeLenses ''MsgSvConfigurationGpsDep)

data GnssCapb = GnssCapb
  { GnssCapb -> Word64
_gnssCapb_gps_active :: !Word64
    -- ^ GPS SV active mask
  , GnssCapb -> Word64
_gnssCapb_gps_l2c   :: !Word64
    -- ^ GPS L2C active mask
  , GnssCapb -> Word64
_gnssCapb_gps_l5    :: !Word64
    -- ^ GPS L5 active mask
  , GnssCapb -> Word32
_gnssCapb_glo_active :: !Word32
    -- ^ GLO active mask
  , GnssCapb -> Word32
_gnssCapb_glo_l2of  :: !Word32
    -- ^ GLO L2OF active mask
  , GnssCapb -> Word32
_gnssCapb_glo_l3    :: !Word32
    -- ^ GLO L3 active mask
  , GnssCapb -> Word64
_gnssCapb_sbas_active :: !Word64
    -- ^ SBAS active mask (PRNs 120..158, AN 7/62.2.2-18/18 Table B-23,
    -- https://www.caat.or.th/wp-content/uploads/2018/03/SL-2018.18.E-1.pdf)
  , GnssCapb -> Word64
_gnssCapb_sbas_l5   :: !Word64
    -- ^ SBAS L5 active mask (PRNs 120..158, AN 7/62.2.2-18/18 Table B-23,
    -- https://www.caat.or.th/wp-content/uploads/2018/03/SL-2018.18.E-1.pdf)
  , GnssCapb -> Word64
_gnssCapb_bds_active :: !Word64
    -- ^ BDS active mask
  , GnssCapb -> Word64
_gnssCapb_bds_d2nav :: !Word64
    -- ^ BDS D2NAV active mask
  , GnssCapb -> Word64
_gnssCapb_bds_b2    :: !Word64
    -- ^ BDS B2 active mask
  , GnssCapb -> Word64
_gnssCapb_bds_b2a   :: !Word64
    -- ^ BDS B2A active mask
  , GnssCapb -> Word32
_gnssCapb_qzss_active :: !Word32
    -- ^ QZSS active mask
  , GnssCapb -> Word64
_gnssCapb_gal_active :: !Word64
    -- ^ GAL active mask
  , GnssCapb -> Word64
_gnssCapb_gal_e5    :: !Word64
    -- ^ GAL E5 active mask
  } deriving ( Int -> GnssCapb -> ShowS
[GnssCapb] -> ShowS
GnssCapb -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GnssCapb] -> ShowS
$cshowList :: [GnssCapb] -> ShowS
show :: GnssCapb -> String
$cshow :: GnssCapb -> String
showsPrec :: Int -> GnssCapb -> ShowS
$cshowsPrec :: Int -> GnssCapb -> ShowS
Show, ReadPrec [GnssCapb]
ReadPrec GnssCapb
Int -> ReadS GnssCapb
ReadS [GnssCapb]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GnssCapb]
$creadListPrec :: ReadPrec [GnssCapb]
readPrec :: ReadPrec GnssCapb
$creadPrec :: ReadPrec GnssCapb
readList :: ReadS [GnssCapb]
$creadList :: ReadS [GnssCapb]
readsPrec :: Int -> ReadS GnssCapb
$creadsPrec :: Int -> ReadS GnssCapb
Read, GnssCapb -> GnssCapb -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GnssCapb -> GnssCapb -> Bool
$c/= :: GnssCapb -> GnssCapb -> Bool
== :: GnssCapb -> GnssCapb -> Bool
$c== :: GnssCapb -> GnssCapb -> Bool
Eq )

instance Binary GnssCapb where
  get :: Get GnssCapb
get = do
    Word64
_gnssCapb_gps_active <- Get Word64
getWord64le
    Word64
_gnssCapb_gps_l2c <- Get Word64
getWord64le
    Word64
_gnssCapb_gps_l5 <- Get Word64
getWord64le
    Word32
_gnssCapb_glo_active <- Get Word32
getWord32le
    Word32
_gnssCapb_glo_l2of <- Get Word32
getWord32le
    Word32
_gnssCapb_glo_l3 <- Get Word32
getWord32le
    Word64
_gnssCapb_sbas_active <- Get Word64
getWord64le
    Word64
_gnssCapb_sbas_l5 <- Get Word64
getWord64le
    Word64
_gnssCapb_bds_active <- Get Word64
getWord64le
    Word64
_gnssCapb_bds_d2nav <- Get Word64
getWord64le
    Word64
_gnssCapb_bds_b2 <- Get Word64
getWord64le
    Word64
_gnssCapb_bds_b2a <- Get Word64
getWord64le
    Word32
_gnssCapb_qzss_active <- Get Word32
getWord32le
    Word64
_gnssCapb_gal_active <- Get Word64
getWord64le
    Word64
_gnssCapb_gal_e5 <- Get Word64
getWord64le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure GnssCapb {Word32
Word64
_gnssCapb_gal_e5 :: Word64
_gnssCapb_gal_active :: Word64
_gnssCapb_qzss_active :: Word32
_gnssCapb_bds_b2a :: Word64
_gnssCapb_bds_b2 :: Word64
_gnssCapb_bds_d2nav :: Word64
_gnssCapb_bds_active :: Word64
_gnssCapb_sbas_l5 :: Word64
_gnssCapb_sbas_active :: Word64
_gnssCapb_glo_l3 :: Word32
_gnssCapb_glo_l2of :: Word32
_gnssCapb_glo_active :: Word32
_gnssCapb_gps_l5 :: Word64
_gnssCapb_gps_l2c :: Word64
_gnssCapb_gps_active :: Word64
_gnssCapb_gal_e5 :: Word64
_gnssCapb_gal_active :: Word64
_gnssCapb_qzss_active :: Word32
_gnssCapb_bds_b2a :: Word64
_gnssCapb_bds_b2 :: Word64
_gnssCapb_bds_d2nav :: Word64
_gnssCapb_bds_active :: Word64
_gnssCapb_sbas_l5 :: Word64
_gnssCapb_sbas_active :: Word64
_gnssCapb_glo_l3 :: Word32
_gnssCapb_glo_l2of :: Word32
_gnssCapb_glo_active :: Word32
_gnssCapb_gps_l5 :: Word64
_gnssCapb_gps_l2c :: Word64
_gnssCapb_gps_active :: Word64
..}

  put :: GnssCapb -> Put
put GnssCapb {Word32
Word64
_gnssCapb_gal_e5 :: Word64
_gnssCapb_gal_active :: Word64
_gnssCapb_qzss_active :: Word32
_gnssCapb_bds_b2a :: Word64
_gnssCapb_bds_b2 :: Word64
_gnssCapb_bds_d2nav :: Word64
_gnssCapb_bds_active :: Word64
_gnssCapb_sbas_l5 :: Word64
_gnssCapb_sbas_active :: Word64
_gnssCapb_glo_l3 :: Word32
_gnssCapb_glo_l2of :: Word32
_gnssCapb_glo_active :: Word32
_gnssCapb_gps_l5 :: Word64
_gnssCapb_gps_l2c :: Word64
_gnssCapb_gps_active :: Word64
_gnssCapb_gal_e5 :: GnssCapb -> Word64
_gnssCapb_gal_active :: GnssCapb -> Word64
_gnssCapb_qzss_active :: GnssCapb -> Word32
_gnssCapb_bds_b2a :: GnssCapb -> Word64
_gnssCapb_bds_b2 :: GnssCapb -> Word64
_gnssCapb_bds_d2nav :: GnssCapb -> Word64
_gnssCapb_bds_active :: GnssCapb -> Word64
_gnssCapb_sbas_l5 :: GnssCapb -> Word64
_gnssCapb_sbas_active :: GnssCapb -> Word64
_gnssCapb_glo_l3 :: GnssCapb -> Word32
_gnssCapb_glo_l2of :: GnssCapb -> Word32
_gnssCapb_glo_active :: GnssCapb -> Word32
_gnssCapb_gps_l5 :: GnssCapb -> Word64
_gnssCapb_gps_l2c :: GnssCapb -> Word64
_gnssCapb_gps_active :: GnssCapb -> Word64
..} = do
    Word64 -> Put
putWord64le Word64
_gnssCapb_gps_active
    Word64 -> Put
putWord64le Word64
_gnssCapb_gps_l2c
    Word64 -> Put
putWord64le Word64
_gnssCapb_gps_l5
    Word32 -> Put
putWord32le Word32
_gnssCapb_glo_active
    Word32 -> Put
putWord32le Word32
_gnssCapb_glo_l2of
    Word32 -> Put
putWord32le Word32
_gnssCapb_glo_l3
    Word64 -> Put
putWord64le Word64
_gnssCapb_sbas_active
    Word64 -> Put
putWord64le Word64
_gnssCapb_sbas_l5
    Word64 -> Put
putWord64le Word64
_gnssCapb_bds_active
    Word64 -> Put
putWord64le Word64
_gnssCapb_bds_d2nav
    Word64 -> Put
putWord64le Word64
_gnssCapb_bds_b2
    Word64 -> Put
putWord64le Word64
_gnssCapb_bds_b2a
    Word32 -> Put
putWord32le Word32
_gnssCapb_qzss_active
    Word64 -> Put
putWord64le Word64
_gnssCapb_gal_active
    Word64 -> Put
putWord64le Word64
_gnssCapb_gal_e5

$(makeJSON "_gnssCapb_" ''GnssCapb)
$(makeLenses ''GnssCapb)

msgGnssCapb :: Word16
msgGnssCapb :: Word16
msgGnssCapb = Word16
0x0096

data MsgGnssCapb = MsgGnssCapb
  { MsgGnssCapb -> GpsTimeSec
_msgGnssCapb_t_nmct :: !GpsTimeSec
    -- ^ Navigation Message Correction Table Validity Time
  , MsgGnssCapb -> GnssCapb
_msgGnssCapb_gc   :: !GnssCapb
    -- ^ GNSS capabilities masks
  } deriving ( Int -> MsgGnssCapb -> ShowS
[MsgGnssCapb] -> ShowS
MsgGnssCapb -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgGnssCapb] -> ShowS
$cshowList :: [MsgGnssCapb] -> ShowS
show :: MsgGnssCapb -> String
$cshow :: MsgGnssCapb -> String
showsPrec :: Int -> MsgGnssCapb -> ShowS
$cshowsPrec :: Int -> MsgGnssCapb -> ShowS
Show, ReadPrec [MsgGnssCapb]
ReadPrec MsgGnssCapb
Int -> ReadS MsgGnssCapb
ReadS [MsgGnssCapb]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgGnssCapb]
$creadListPrec :: ReadPrec [MsgGnssCapb]
readPrec :: ReadPrec MsgGnssCapb
$creadPrec :: ReadPrec MsgGnssCapb
readList :: ReadS [MsgGnssCapb]
$creadList :: ReadS [MsgGnssCapb]
readsPrec :: Int -> ReadS MsgGnssCapb
$creadsPrec :: Int -> ReadS MsgGnssCapb
Read, MsgGnssCapb -> MsgGnssCapb -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgGnssCapb -> MsgGnssCapb -> Bool
$c/= :: MsgGnssCapb -> MsgGnssCapb -> Bool
== :: MsgGnssCapb -> MsgGnssCapb -> Bool
$c== :: MsgGnssCapb -> MsgGnssCapb -> Bool
Eq )

instance Binary MsgGnssCapb where
  get :: Get MsgGnssCapb
get = do
    GpsTimeSec
_msgGnssCapb_t_nmct <- forall t. Binary t => Get t
get
    GnssCapb
_msgGnssCapb_gc <- forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgGnssCapb {GpsTimeSec
GnssCapb
_msgGnssCapb_gc :: GnssCapb
_msgGnssCapb_t_nmct :: GpsTimeSec
_msgGnssCapb_gc :: GnssCapb
_msgGnssCapb_t_nmct :: GpsTimeSec
..}

  put :: MsgGnssCapb -> Put
put MsgGnssCapb {GpsTimeSec
GnssCapb
_msgGnssCapb_gc :: GnssCapb
_msgGnssCapb_t_nmct :: GpsTimeSec
_msgGnssCapb_gc :: MsgGnssCapb -> GnssCapb
_msgGnssCapb_t_nmct :: MsgGnssCapb -> GpsTimeSec
..} = do
    forall t. Binary t => t -> Put
put GpsTimeSec
_msgGnssCapb_t_nmct
    forall t. Binary t => t -> Put
put GnssCapb
_msgGnssCapb_gc

$(makeSBP 'msgGnssCapb ''MsgGnssCapb)
$(makeJSON "_msgGnssCapb_" ''MsgGnssCapb)
$(makeLenses ''MsgGnssCapb)

msgGroupDelayDepA :: Word16
msgGroupDelayDepA :: Word16
msgGroupDelayDepA = Word16
0x0092

-- | SBP class for message MSG_GROUP_DELAY_DEP_A (0x0092).
--
-- Please see ICD-GPS-200 (30.3.3.3.1.1) for more details.
data MsgGroupDelayDepA = MsgGroupDelayDepA
  { MsgGroupDelayDepA -> GpsTimeDep
_msgGroupDelayDepA_t_op   :: !GpsTimeDep
    -- ^ Data Predict Time of Week
  , MsgGroupDelayDepA -> Word8
_msgGroupDelayDepA_prn    :: !Word8
    -- ^ Satellite number
  , MsgGroupDelayDepA -> Word8
_msgGroupDelayDepA_valid  :: !Word8
    -- ^ bit-field indicating validity of the values, LSB indicating tgd
    -- validity etc. 1 = value is valid, 0 = value is not valid.
  , MsgGroupDelayDepA -> Int16
_msgGroupDelayDepA_tgd    :: !Int16
  , MsgGroupDelayDepA -> Int16
_msgGroupDelayDepA_isc_l1ca :: !Int16
  , MsgGroupDelayDepA -> Int16
_msgGroupDelayDepA_isc_l2c :: !Int16
  } deriving ( Int -> MsgGroupDelayDepA -> ShowS
[MsgGroupDelayDepA] -> ShowS
MsgGroupDelayDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgGroupDelayDepA] -> ShowS
$cshowList :: [MsgGroupDelayDepA] -> ShowS
show :: MsgGroupDelayDepA -> String
$cshow :: MsgGroupDelayDepA -> String
showsPrec :: Int -> MsgGroupDelayDepA -> ShowS
$cshowsPrec :: Int -> MsgGroupDelayDepA -> ShowS
Show, ReadPrec [MsgGroupDelayDepA]
ReadPrec MsgGroupDelayDepA
Int -> ReadS MsgGroupDelayDepA
ReadS [MsgGroupDelayDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgGroupDelayDepA]
$creadListPrec :: ReadPrec [MsgGroupDelayDepA]
readPrec :: ReadPrec MsgGroupDelayDepA
$creadPrec :: ReadPrec MsgGroupDelayDepA
readList :: ReadS [MsgGroupDelayDepA]
$creadList :: ReadS [MsgGroupDelayDepA]
readsPrec :: Int -> ReadS MsgGroupDelayDepA
$creadsPrec :: Int -> ReadS MsgGroupDelayDepA
Read, MsgGroupDelayDepA -> MsgGroupDelayDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgGroupDelayDepA -> MsgGroupDelayDepA -> Bool
$c/= :: MsgGroupDelayDepA -> MsgGroupDelayDepA -> Bool
== :: MsgGroupDelayDepA -> MsgGroupDelayDepA -> Bool
$c== :: MsgGroupDelayDepA -> MsgGroupDelayDepA -> Bool
Eq )

instance Binary MsgGroupDelayDepA where
  get :: Get MsgGroupDelayDepA
get = do
    GpsTimeDep
_msgGroupDelayDepA_t_op <- forall t. Binary t => Get t
get
    Word8
_msgGroupDelayDepA_prn <- Get Word8
getWord8
    Word8
_msgGroupDelayDepA_valid <- Get Word8
getWord8
    Int16
_msgGroupDelayDepA_tgd <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    Int16
_msgGroupDelayDepA_isc_l1ca <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    Int16
_msgGroupDelayDepA_isc_l2c <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgGroupDelayDepA {Int16
Word8
GpsTimeDep
_msgGroupDelayDepA_isc_l2c :: Int16
_msgGroupDelayDepA_isc_l1ca :: Int16
_msgGroupDelayDepA_tgd :: Int16
_msgGroupDelayDepA_valid :: Word8
_msgGroupDelayDepA_prn :: Word8
_msgGroupDelayDepA_t_op :: GpsTimeDep
_msgGroupDelayDepA_isc_l2c :: Int16
_msgGroupDelayDepA_isc_l1ca :: Int16
_msgGroupDelayDepA_tgd :: Int16
_msgGroupDelayDepA_valid :: Word8
_msgGroupDelayDepA_prn :: Word8
_msgGroupDelayDepA_t_op :: GpsTimeDep
..}

  put :: MsgGroupDelayDepA -> Put
put MsgGroupDelayDepA {Int16
Word8
GpsTimeDep
_msgGroupDelayDepA_isc_l2c :: Int16
_msgGroupDelayDepA_isc_l1ca :: Int16
_msgGroupDelayDepA_tgd :: Int16
_msgGroupDelayDepA_valid :: Word8
_msgGroupDelayDepA_prn :: Word8
_msgGroupDelayDepA_t_op :: GpsTimeDep
_msgGroupDelayDepA_isc_l2c :: MsgGroupDelayDepA -> Int16
_msgGroupDelayDepA_isc_l1ca :: MsgGroupDelayDepA -> Int16
_msgGroupDelayDepA_tgd :: MsgGroupDelayDepA -> Int16
_msgGroupDelayDepA_valid :: MsgGroupDelayDepA -> Word8
_msgGroupDelayDepA_prn :: MsgGroupDelayDepA -> Word8
_msgGroupDelayDepA_t_op :: MsgGroupDelayDepA -> GpsTimeDep
..} = do
    forall t. Binary t => t -> Put
put GpsTimeDep
_msgGroupDelayDepA_t_op
    Word8 -> Put
putWord8 Word8
_msgGroupDelayDepA_prn
    Word8 -> Put
putWord8 Word8
_msgGroupDelayDepA_valid
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGroupDelayDepA_tgd
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGroupDelayDepA_isc_l1ca
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGroupDelayDepA_isc_l2c

$(makeSBP 'msgGroupDelayDepA ''MsgGroupDelayDepA)
$(makeJSON "_msgGroupDelayDepA_" ''MsgGroupDelayDepA)
$(makeLenses ''MsgGroupDelayDepA)

msgGroupDelayDepB :: Word16
msgGroupDelayDepB :: Word16
msgGroupDelayDepB = Word16
0x0093

-- | SBP class for message MSG_GROUP_DELAY_DEP_B (0x0093).
--
-- Please see ICD-GPS-200 (30.3.3.3.1.1) for more details.
data MsgGroupDelayDepB = MsgGroupDelayDepB
  { MsgGroupDelayDepB -> GpsTimeSec
_msgGroupDelayDepB_t_op   :: !GpsTimeSec
    -- ^ Data Predict Time of Week
  , MsgGroupDelayDepB -> GnssSignalDep
_msgGroupDelayDepB_sid    :: !GnssSignalDep
    -- ^ GNSS signal identifier
  , MsgGroupDelayDepB -> Word8
_msgGroupDelayDepB_valid  :: !Word8
    -- ^ bit-field indicating validity of the values, LSB indicating tgd
    -- validity etc. 1 = value is valid, 0 = value is not valid.
  , MsgGroupDelayDepB -> Int16
_msgGroupDelayDepB_tgd    :: !Int16
  , MsgGroupDelayDepB -> Int16
_msgGroupDelayDepB_isc_l1ca :: !Int16
  , MsgGroupDelayDepB -> Int16
_msgGroupDelayDepB_isc_l2c :: !Int16
  } deriving ( Int -> MsgGroupDelayDepB -> ShowS
[MsgGroupDelayDepB] -> ShowS
MsgGroupDelayDepB -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgGroupDelayDepB] -> ShowS
$cshowList :: [MsgGroupDelayDepB] -> ShowS
show :: MsgGroupDelayDepB -> String
$cshow :: MsgGroupDelayDepB -> String
showsPrec :: Int -> MsgGroupDelayDepB -> ShowS
$cshowsPrec :: Int -> MsgGroupDelayDepB -> ShowS
Show, ReadPrec [MsgGroupDelayDepB]
ReadPrec MsgGroupDelayDepB
Int -> ReadS MsgGroupDelayDepB
ReadS [MsgGroupDelayDepB]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgGroupDelayDepB]
$creadListPrec :: ReadPrec [MsgGroupDelayDepB]
readPrec :: ReadPrec MsgGroupDelayDepB
$creadPrec :: ReadPrec MsgGroupDelayDepB
readList :: ReadS [MsgGroupDelayDepB]
$creadList :: ReadS [MsgGroupDelayDepB]
readsPrec :: Int -> ReadS MsgGroupDelayDepB
$creadsPrec :: Int -> ReadS MsgGroupDelayDepB
Read, MsgGroupDelayDepB -> MsgGroupDelayDepB -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgGroupDelayDepB -> MsgGroupDelayDepB -> Bool
$c/= :: MsgGroupDelayDepB -> MsgGroupDelayDepB -> Bool
== :: MsgGroupDelayDepB -> MsgGroupDelayDepB -> Bool
$c== :: MsgGroupDelayDepB -> MsgGroupDelayDepB -> Bool
Eq )

instance Binary MsgGroupDelayDepB where
  get :: Get MsgGroupDelayDepB
get = do
    GpsTimeSec
_msgGroupDelayDepB_t_op <- forall t. Binary t => Get t
get
    GnssSignalDep
_msgGroupDelayDepB_sid <- forall t. Binary t => Get t
get
    Word8
_msgGroupDelayDepB_valid <- Get Word8
getWord8
    Int16
_msgGroupDelayDepB_tgd <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    Int16
_msgGroupDelayDepB_isc_l1ca <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    Int16
_msgGroupDelayDepB_isc_l2c <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgGroupDelayDepB {Int16
Word8
GnssSignalDep
GpsTimeSec
_msgGroupDelayDepB_isc_l2c :: Int16
_msgGroupDelayDepB_isc_l1ca :: Int16
_msgGroupDelayDepB_tgd :: Int16
_msgGroupDelayDepB_valid :: Word8
_msgGroupDelayDepB_sid :: GnssSignalDep
_msgGroupDelayDepB_t_op :: GpsTimeSec
_msgGroupDelayDepB_isc_l2c :: Int16
_msgGroupDelayDepB_isc_l1ca :: Int16
_msgGroupDelayDepB_tgd :: Int16
_msgGroupDelayDepB_valid :: Word8
_msgGroupDelayDepB_sid :: GnssSignalDep
_msgGroupDelayDepB_t_op :: GpsTimeSec
..}

  put :: MsgGroupDelayDepB -> Put
put MsgGroupDelayDepB {Int16
Word8
GnssSignalDep
GpsTimeSec
_msgGroupDelayDepB_isc_l2c :: Int16
_msgGroupDelayDepB_isc_l1ca :: Int16
_msgGroupDelayDepB_tgd :: Int16
_msgGroupDelayDepB_valid :: Word8
_msgGroupDelayDepB_sid :: GnssSignalDep
_msgGroupDelayDepB_t_op :: GpsTimeSec
_msgGroupDelayDepB_isc_l2c :: MsgGroupDelayDepB -> Int16
_msgGroupDelayDepB_isc_l1ca :: MsgGroupDelayDepB -> Int16
_msgGroupDelayDepB_tgd :: MsgGroupDelayDepB -> Int16
_msgGroupDelayDepB_valid :: MsgGroupDelayDepB -> Word8
_msgGroupDelayDepB_sid :: MsgGroupDelayDepB -> GnssSignalDep
_msgGroupDelayDepB_t_op :: MsgGroupDelayDepB -> GpsTimeSec
..} = do
    forall t. Binary t => t -> Put
put GpsTimeSec
_msgGroupDelayDepB_t_op
    forall t. Binary t => t -> Put
put GnssSignalDep
_msgGroupDelayDepB_sid
    Word8 -> Put
putWord8 Word8
_msgGroupDelayDepB_valid
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGroupDelayDepB_tgd
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGroupDelayDepB_isc_l1ca
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGroupDelayDepB_isc_l2c

$(makeSBP 'msgGroupDelayDepB ''MsgGroupDelayDepB)
$(makeJSON "_msgGroupDelayDepB_" ''MsgGroupDelayDepB)
$(makeLenses ''MsgGroupDelayDepB)

msgGroupDelay :: Word16
msgGroupDelay :: Word16
msgGroupDelay = Word16
0x0094

-- | SBP class for message MSG_GROUP_DELAY (0x0094).
--
-- Please see ICD-GPS-200 (30.3.3.3.1.1) for more details.
data MsgGroupDelay = MsgGroupDelay
  { MsgGroupDelay -> GpsTimeSec
_msgGroupDelay_t_op   :: !GpsTimeSec
    -- ^ Data Predict Time of Week
  , MsgGroupDelay -> GnssSignal
_msgGroupDelay_sid    :: !GnssSignal
    -- ^ GNSS signal identifier
  , MsgGroupDelay -> Word8
_msgGroupDelay_valid  :: !Word8
    -- ^ bit-field indicating validity of the values, LSB indicating tgd
    -- validity etc. 1 = value is valid, 0 = value is not valid.
  , MsgGroupDelay -> Int16
_msgGroupDelay_tgd    :: !Int16
  , MsgGroupDelay -> Int16
_msgGroupDelay_isc_l1ca :: !Int16
  , MsgGroupDelay -> Int16
_msgGroupDelay_isc_l2c :: !Int16
  } deriving ( Int -> MsgGroupDelay -> ShowS
[MsgGroupDelay] -> ShowS
MsgGroupDelay -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgGroupDelay] -> ShowS
$cshowList :: [MsgGroupDelay] -> ShowS
show :: MsgGroupDelay -> String
$cshow :: MsgGroupDelay -> String
showsPrec :: Int -> MsgGroupDelay -> ShowS
$cshowsPrec :: Int -> MsgGroupDelay -> ShowS
Show, ReadPrec [MsgGroupDelay]
ReadPrec MsgGroupDelay
Int -> ReadS MsgGroupDelay
ReadS [MsgGroupDelay]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgGroupDelay]
$creadListPrec :: ReadPrec [MsgGroupDelay]
readPrec :: ReadPrec MsgGroupDelay
$creadPrec :: ReadPrec MsgGroupDelay
readList :: ReadS [MsgGroupDelay]
$creadList :: ReadS [MsgGroupDelay]
readsPrec :: Int -> ReadS MsgGroupDelay
$creadsPrec :: Int -> ReadS MsgGroupDelay
Read, MsgGroupDelay -> MsgGroupDelay -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgGroupDelay -> MsgGroupDelay -> Bool
$c/= :: MsgGroupDelay -> MsgGroupDelay -> Bool
== :: MsgGroupDelay -> MsgGroupDelay -> Bool
$c== :: MsgGroupDelay -> MsgGroupDelay -> Bool
Eq )

instance Binary MsgGroupDelay where
  get :: Get MsgGroupDelay
get = do
    GpsTimeSec
_msgGroupDelay_t_op <- forall t. Binary t => Get t
get
    GnssSignal
_msgGroupDelay_sid <- forall t. Binary t => Get t
get
    Word8
_msgGroupDelay_valid <- Get Word8
getWord8
    Int16
_msgGroupDelay_tgd <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    Int16
_msgGroupDelay_isc_l1ca <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    Int16
_msgGroupDelay_isc_l2c <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgGroupDelay {Int16
Word8
GnssSignal
GpsTimeSec
_msgGroupDelay_isc_l2c :: Int16
_msgGroupDelay_isc_l1ca :: Int16
_msgGroupDelay_tgd :: Int16
_msgGroupDelay_valid :: Word8
_msgGroupDelay_sid :: GnssSignal
_msgGroupDelay_t_op :: GpsTimeSec
_msgGroupDelay_isc_l2c :: Int16
_msgGroupDelay_isc_l1ca :: Int16
_msgGroupDelay_tgd :: Int16
_msgGroupDelay_valid :: Word8
_msgGroupDelay_sid :: GnssSignal
_msgGroupDelay_t_op :: GpsTimeSec
..}

  put :: MsgGroupDelay -> Put
put MsgGroupDelay {Int16
Word8
GnssSignal
GpsTimeSec
_msgGroupDelay_isc_l2c :: Int16
_msgGroupDelay_isc_l1ca :: Int16
_msgGroupDelay_tgd :: Int16
_msgGroupDelay_valid :: Word8
_msgGroupDelay_sid :: GnssSignal
_msgGroupDelay_t_op :: GpsTimeSec
_msgGroupDelay_isc_l2c :: MsgGroupDelay -> Int16
_msgGroupDelay_isc_l1ca :: MsgGroupDelay -> Int16
_msgGroupDelay_tgd :: MsgGroupDelay -> Int16
_msgGroupDelay_valid :: MsgGroupDelay -> Word8
_msgGroupDelay_sid :: MsgGroupDelay -> GnssSignal
_msgGroupDelay_t_op :: MsgGroupDelay -> GpsTimeSec
..} = do
    forall t. Binary t => t -> Put
put GpsTimeSec
_msgGroupDelay_t_op
    forall t. Binary t => t -> Put
put GnssSignal
_msgGroupDelay_sid
    Word8 -> Put
putWord8 Word8
_msgGroupDelay_valid
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGroupDelay_tgd
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGroupDelay_isc_l1ca
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGroupDelay_isc_l2c

$(makeSBP 'msgGroupDelay ''MsgGroupDelay)
$(makeJSON "_msgGroupDelay_" ''MsgGroupDelay)
$(makeLenses ''MsgGroupDelay)

data AlmanacCommonContent = AlmanacCommonContent
  { AlmanacCommonContent -> GnssSignal
_almanacCommonContent_sid        :: !GnssSignal
    -- ^ GNSS signal identifier
  , AlmanacCommonContent -> GpsTimeSec
_almanacCommonContent_toa        :: !GpsTimeSec
    -- ^ Reference time of almanac
  , AlmanacCommonContent -> Double
_almanacCommonContent_ura        :: !Double
    -- ^ User Range Accuracy
  , AlmanacCommonContent -> Word32
_almanacCommonContent_fit_interval :: !Word32
    -- ^ Curve fit interval
  , AlmanacCommonContent -> Word8
_almanacCommonContent_valid      :: !Word8
    -- ^ Status of almanac, 1 = valid, 0 = invalid
  , AlmanacCommonContent -> Word8
_almanacCommonContent_health_bits :: !Word8
    -- ^ Satellite health status for GPS:
    --   - bits 5-7: NAV data health status. See IS-GPS-200H
    --     Table 20-VII: NAV Data Health Indications.
    --   - bits 0-4: Signal health status. See IS-GPS-200H
    --     Table 20-VIII. Codes for Health of SV Signal
    --     Components.
    -- Satellite health status for GLO (see GLO ICD 5.1 table 5.1 for
    -- details):
    --   - bit 0: C(n), "unhealthy" flag that is transmitted within
    --     non-immediate data and indicates overall constellation status
    --     at the moment of almanac uploading.
    --     '0' indicates malfunction of n-satellite.
    --     '1' indicates that n-satellite is operational.
    --   - bit 1: Bn(ln), '0' indicates the satellite is operational
    --     and suitable for navigation.
  } deriving ( Int -> AlmanacCommonContent -> ShowS
[AlmanacCommonContent] -> ShowS
AlmanacCommonContent -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AlmanacCommonContent] -> ShowS
$cshowList :: [AlmanacCommonContent] -> ShowS
show :: AlmanacCommonContent -> String
$cshow :: AlmanacCommonContent -> String
showsPrec :: Int -> AlmanacCommonContent -> ShowS
$cshowsPrec :: Int -> AlmanacCommonContent -> ShowS
Show, ReadPrec [AlmanacCommonContent]
ReadPrec AlmanacCommonContent
Int -> ReadS AlmanacCommonContent
ReadS [AlmanacCommonContent]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AlmanacCommonContent]
$creadListPrec :: ReadPrec [AlmanacCommonContent]
readPrec :: ReadPrec AlmanacCommonContent
$creadPrec :: ReadPrec AlmanacCommonContent
readList :: ReadS [AlmanacCommonContent]
$creadList :: ReadS [AlmanacCommonContent]
readsPrec :: Int -> ReadS AlmanacCommonContent
$creadsPrec :: Int -> ReadS AlmanacCommonContent
Read, AlmanacCommonContent -> AlmanacCommonContent -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AlmanacCommonContent -> AlmanacCommonContent -> Bool
$c/= :: AlmanacCommonContent -> AlmanacCommonContent -> Bool
== :: AlmanacCommonContent -> AlmanacCommonContent -> Bool
$c== :: AlmanacCommonContent -> AlmanacCommonContent -> Bool
Eq )

instance Binary AlmanacCommonContent where
  get :: Get AlmanacCommonContent
get = do
    GnssSignal
_almanacCommonContent_sid <- forall t. Binary t => Get t
get
    GpsTimeSec
_almanacCommonContent_toa <- forall t. Binary t => Get t
get
    Double
_almanacCommonContent_ura <- Get Double
getFloat64le
    Word32
_almanacCommonContent_fit_interval <- Get Word32
getWord32le
    Word8
_almanacCommonContent_valid <- Get Word8
getWord8
    Word8
_almanacCommonContent_health_bits <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure AlmanacCommonContent {Double
Word8
Word32
GnssSignal
GpsTimeSec
_almanacCommonContent_health_bits :: Word8
_almanacCommonContent_valid :: Word8
_almanacCommonContent_fit_interval :: Word32
_almanacCommonContent_ura :: Double
_almanacCommonContent_toa :: GpsTimeSec
_almanacCommonContent_sid :: GnssSignal
_almanacCommonContent_health_bits :: Word8
_almanacCommonContent_valid :: Word8
_almanacCommonContent_fit_interval :: Word32
_almanacCommonContent_ura :: Double
_almanacCommonContent_toa :: GpsTimeSec
_almanacCommonContent_sid :: GnssSignal
..}

  put :: AlmanacCommonContent -> Put
put AlmanacCommonContent {Double
Word8
Word32
GnssSignal
GpsTimeSec
_almanacCommonContent_health_bits :: Word8
_almanacCommonContent_valid :: Word8
_almanacCommonContent_fit_interval :: Word32
_almanacCommonContent_ura :: Double
_almanacCommonContent_toa :: GpsTimeSec
_almanacCommonContent_sid :: GnssSignal
_almanacCommonContent_health_bits :: AlmanacCommonContent -> Word8
_almanacCommonContent_valid :: AlmanacCommonContent -> Word8
_almanacCommonContent_fit_interval :: AlmanacCommonContent -> Word32
_almanacCommonContent_ura :: AlmanacCommonContent -> Double
_almanacCommonContent_toa :: AlmanacCommonContent -> GpsTimeSec
_almanacCommonContent_sid :: AlmanacCommonContent -> GnssSignal
..} = do
    forall t. Binary t => t -> Put
put GnssSignal
_almanacCommonContent_sid
    forall t. Binary t => t -> Put
put GpsTimeSec
_almanacCommonContent_toa
    Double -> Put
putFloat64le Double
_almanacCommonContent_ura
    Word32 -> Put
putWord32le Word32
_almanacCommonContent_fit_interval
    Word8 -> Put
putWord8 Word8
_almanacCommonContent_valid
    Word8 -> Put
putWord8 Word8
_almanacCommonContent_health_bits

$(makeJSON "_almanacCommonContent_" ''AlmanacCommonContent)
$(makeLenses ''AlmanacCommonContent)

data AlmanacCommonContentDep = AlmanacCommonContentDep
  { AlmanacCommonContentDep -> GnssSignalDep
_almanacCommonContentDep_sid        :: !GnssSignalDep
    -- ^ GNSS signal identifier
  , AlmanacCommonContentDep -> GpsTimeSec
_almanacCommonContentDep_toa        :: !GpsTimeSec
    -- ^ Reference time of almanac
  , AlmanacCommonContentDep -> Double
_almanacCommonContentDep_ura        :: !Double
    -- ^ User Range Accuracy
  , AlmanacCommonContentDep -> Word32
_almanacCommonContentDep_fit_interval :: !Word32
    -- ^ Curve fit interval
  , AlmanacCommonContentDep -> Word8
_almanacCommonContentDep_valid      :: !Word8
    -- ^ Status of almanac, 1 = valid, 0 = invalid
  , AlmanacCommonContentDep -> Word8
_almanacCommonContentDep_health_bits :: !Word8
    -- ^ Satellite health status for GPS:
    --   - bits 5-7: NAV data health status. See IS-GPS-200H
    --     Table 20-VII: NAV Data Health Indications.
    --   - bits 0-4: Signal health status. See IS-GPS-200H
    --     Table 20-VIII. Codes for Health of SV Signal
    --     Components.
    -- Satellite health status for GLO (see GLO ICD 5.1 table 5.1 for
    -- details):
    --   - bit 0: C(n), "unhealthy" flag that is transmitted within
    --     non-immediate data and indicates overall constellation status
    --     at the moment of almanac uploading.
    --     '0' indicates malfunction of n-satellite.
    --     '1' indicates that n-satellite is operational.
    --   - bit 1: Bn(ln), '0' indicates the satellite is operational
    --     and suitable for navigation.
  } deriving ( Int -> AlmanacCommonContentDep -> ShowS
[AlmanacCommonContentDep] -> ShowS
AlmanacCommonContentDep -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AlmanacCommonContentDep] -> ShowS
$cshowList :: [AlmanacCommonContentDep] -> ShowS
show :: AlmanacCommonContentDep -> String
$cshow :: AlmanacCommonContentDep -> String
showsPrec :: Int -> AlmanacCommonContentDep -> ShowS
$cshowsPrec :: Int -> AlmanacCommonContentDep -> ShowS
Show, ReadPrec [AlmanacCommonContentDep]
ReadPrec AlmanacCommonContentDep
Int -> ReadS AlmanacCommonContentDep
ReadS [AlmanacCommonContentDep]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AlmanacCommonContentDep]
$creadListPrec :: ReadPrec [AlmanacCommonContentDep]
readPrec :: ReadPrec AlmanacCommonContentDep
$creadPrec :: ReadPrec AlmanacCommonContentDep
readList :: ReadS [AlmanacCommonContentDep]
$creadList :: ReadS [AlmanacCommonContentDep]
readsPrec :: Int -> ReadS AlmanacCommonContentDep
$creadsPrec :: Int -> ReadS AlmanacCommonContentDep
Read, AlmanacCommonContentDep -> AlmanacCommonContentDep -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AlmanacCommonContentDep -> AlmanacCommonContentDep -> Bool
$c/= :: AlmanacCommonContentDep -> AlmanacCommonContentDep -> Bool
== :: AlmanacCommonContentDep -> AlmanacCommonContentDep -> Bool
$c== :: AlmanacCommonContentDep -> AlmanacCommonContentDep -> Bool
Eq )

instance Binary AlmanacCommonContentDep where
  get :: Get AlmanacCommonContentDep
get = do
    GnssSignalDep
_almanacCommonContentDep_sid <- forall t. Binary t => Get t
get
    GpsTimeSec
_almanacCommonContentDep_toa <- forall t. Binary t => Get t
get
    Double
_almanacCommonContentDep_ura <- Get Double
getFloat64le
    Word32
_almanacCommonContentDep_fit_interval <- Get Word32
getWord32le
    Word8
_almanacCommonContentDep_valid <- Get Word8
getWord8
    Word8
_almanacCommonContentDep_health_bits <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure AlmanacCommonContentDep {Double
Word8
Word32
GnssSignalDep
GpsTimeSec
_almanacCommonContentDep_health_bits :: Word8
_almanacCommonContentDep_valid :: Word8
_almanacCommonContentDep_fit_interval :: Word32
_almanacCommonContentDep_ura :: Double
_almanacCommonContentDep_toa :: GpsTimeSec
_almanacCommonContentDep_sid :: GnssSignalDep
_almanacCommonContentDep_health_bits :: Word8
_almanacCommonContentDep_valid :: Word8
_almanacCommonContentDep_fit_interval :: Word32
_almanacCommonContentDep_ura :: Double
_almanacCommonContentDep_toa :: GpsTimeSec
_almanacCommonContentDep_sid :: GnssSignalDep
..}

  put :: AlmanacCommonContentDep -> Put
put AlmanacCommonContentDep {Double
Word8
Word32
GnssSignalDep
GpsTimeSec
_almanacCommonContentDep_health_bits :: Word8
_almanacCommonContentDep_valid :: Word8
_almanacCommonContentDep_fit_interval :: Word32
_almanacCommonContentDep_ura :: Double
_almanacCommonContentDep_toa :: GpsTimeSec
_almanacCommonContentDep_sid :: GnssSignalDep
_almanacCommonContentDep_health_bits :: AlmanacCommonContentDep -> Word8
_almanacCommonContentDep_valid :: AlmanacCommonContentDep -> Word8
_almanacCommonContentDep_fit_interval :: AlmanacCommonContentDep -> Word32
_almanacCommonContentDep_ura :: AlmanacCommonContentDep -> Double
_almanacCommonContentDep_toa :: AlmanacCommonContentDep -> GpsTimeSec
_almanacCommonContentDep_sid :: AlmanacCommonContentDep -> GnssSignalDep
..} = do
    forall t. Binary t => t -> Put
put GnssSignalDep
_almanacCommonContentDep_sid
    forall t. Binary t => t -> Put
put GpsTimeSec
_almanacCommonContentDep_toa
    Double -> Put
putFloat64le Double
_almanacCommonContentDep_ura
    Word32 -> Put
putWord32le Word32
_almanacCommonContentDep_fit_interval
    Word8 -> Put
putWord8 Word8
_almanacCommonContentDep_valid
    Word8 -> Put
putWord8 Word8
_almanacCommonContentDep_health_bits

$(makeJSON "_almanacCommonContentDep_" ''AlmanacCommonContentDep)
$(makeLenses ''AlmanacCommonContentDep)

msgAlmanacGpsDep :: Word16
msgAlmanacGpsDep :: Word16
msgAlmanacGpsDep = Word16
0x0070

-- | SBP class for message MSG_ALMANAC_GPS_DEP (0x0070).
--
-- The almanac message returns a set of satellite orbit parameters. Almanac
-- data is not very precise and is considered valid for up to several months.
-- Please see the Navstar GPS Space Segment/Navigation user interfaces (ICD-
-- GPS-200, Chapter 20.3.3.5.1.2 Almanac Data) for more details.
data MsgAlmanacGpsDep = MsgAlmanacGpsDep
  { MsgAlmanacGpsDep -> AlmanacCommonContentDep
_msgAlmanacGpsDep_common :: !AlmanacCommonContentDep
    -- ^ Values common for all almanac types
  , MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_m0     :: !Double
    -- ^ Mean anomaly at reference time
  , MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_ecc    :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_sqrta  :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_omega0 :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_w      :: !Double
    -- ^ Argument of perigee
  , MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_inc    :: !Double
    -- ^ Inclination
  , MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_af0    :: !Double
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_af1    :: !Double
    -- ^ Polynomial clock correction coefficient (clock drift)
  } deriving ( Int -> MsgAlmanacGpsDep -> ShowS
[MsgAlmanacGpsDep] -> ShowS
MsgAlmanacGpsDep -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgAlmanacGpsDep] -> ShowS
$cshowList :: [MsgAlmanacGpsDep] -> ShowS
show :: MsgAlmanacGpsDep -> String
$cshow :: MsgAlmanacGpsDep -> String
showsPrec :: Int -> MsgAlmanacGpsDep -> ShowS
$cshowsPrec :: Int -> MsgAlmanacGpsDep -> ShowS
Show, ReadPrec [MsgAlmanacGpsDep]
ReadPrec MsgAlmanacGpsDep
Int -> ReadS MsgAlmanacGpsDep
ReadS [MsgAlmanacGpsDep]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgAlmanacGpsDep]
$creadListPrec :: ReadPrec [MsgAlmanacGpsDep]
readPrec :: ReadPrec MsgAlmanacGpsDep
$creadPrec :: ReadPrec MsgAlmanacGpsDep
readList :: ReadS [MsgAlmanacGpsDep]
$creadList :: ReadS [MsgAlmanacGpsDep]
readsPrec :: Int -> ReadS MsgAlmanacGpsDep
$creadsPrec :: Int -> ReadS MsgAlmanacGpsDep
Read, MsgAlmanacGpsDep -> MsgAlmanacGpsDep -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgAlmanacGpsDep -> MsgAlmanacGpsDep -> Bool
$c/= :: MsgAlmanacGpsDep -> MsgAlmanacGpsDep -> Bool
== :: MsgAlmanacGpsDep -> MsgAlmanacGpsDep -> Bool
$c== :: MsgAlmanacGpsDep -> MsgAlmanacGpsDep -> Bool
Eq )

instance Binary MsgAlmanacGpsDep where
  get :: Get MsgAlmanacGpsDep
get = do
    AlmanacCommonContentDep
_msgAlmanacGpsDep_common <- forall t. Binary t => Get t
get
    Double
_msgAlmanacGpsDep_m0 <- Get Double
getFloat64le
    Double
_msgAlmanacGpsDep_ecc <- Get Double
getFloat64le
    Double
_msgAlmanacGpsDep_sqrta <- Get Double
getFloat64le
    Double
_msgAlmanacGpsDep_omega0 <- Get Double
getFloat64le
    Double
_msgAlmanacGpsDep_omegadot <- Get Double
getFloat64le
    Double
_msgAlmanacGpsDep_w <- Get Double
getFloat64le
    Double
_msgAlmanacGpsDep_inc <- Get Double
getFloat64le
    Double
_msgAlmanacGpsDep_af0 <- Get Double
getFloat64le
    Double
_msgAlmanacGpsDep_af1 <- Get Double
getFloat64le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgAlmanacGpsDep {Double
AlmanacCommonContentDep
_msgAlmanacGpsDep_af1 :: Double
_msgAlmanacGpsDep_af0 :: Double
_msgAlmanacGpsDep_inc :: Double
_msgAlmanacGpsDep_w :: Double
_msgAlmanacGpsDep_omegadot :: Double
_msgAlmanacGpsDep_omega0 :: Double
_msgAlmanacGpsDep_sqrta :: Double
_msgAlmanacGpsDep_ecc :: Double
_msgAlmanacGpsDep_m0 :: Double
_msgAlmanacGpsDep_common :: AlmanacCommonContentDep
_msgAlmanacGpsDep_af1 :: Double
_msgAlmanacGpsDep_af0 :: Double
_msgAlmanacGpsDep_inc :: Double
_msgAlmanacGpsDep_w :: Double
_msgAlmanacGpsDep_omegadot :: Double
_msgAlmanacGpsDep_omega0 :: Double
_msgAlmanacGpsDep_sqrta :: Double
_msgAlmanacGpsDep_ecc :: Double
_msgAlmanacGpsDep_m0 :: Double
_msgAlmanacGpsDep_common :: AlmanacCommonContentDep
..}

  put :: MsgAlmanacGpsDep -> Put
put MsgAlmanacGpsDep {Double
AlmanacCommonContentDep
_msgAlmanacGpsDep_af1 :: Double
_msgAlmanacGpsDep_af0 :: Double
_msgAlmanacGpsDep_inc :: Double
_msgAlmanacGpsDep_w :: Double
_msgAlmanacGpsDep_omegadot :: Double
_msgAlmanacGpsDep_omega0 :: Double
_msgAlmanacGpsDep_sqrta :: Double
_msgAlmanacGpsDep_ecc :: Double
_msgAlmanacGpsDep_m0 :: Double
_msgAlmanacGpsDep_common :: AlmanacCommonContentDep
_msgAlmanacGpsDep_af1 :: MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_af0 :: MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_inc :: MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_w :: MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_omegadot :: MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_omega0 :: MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_sqrta :: MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_ecc :: MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_m0 :: MsgAlmanacGpsDep -> Double
_msgAlmanacGpsDep_common :: MsgAlmanacGpsDep -> AlmanacCommonContentDep
..} = do
    forall t. Binary t => t -> Put
put AlmanacCommonContentDep
_msgAlmanacGpsDep_common
    Double -> Put
putFloat64le Double
_msgAlmanacGpsDep_m0
    Double -> Put
putFloat64le Double
_msgAlmanacGpsDep_ecc
    Double -> Put
putFloat64le Double
_msgAlmanacGpsDep_sqrta
    Double -> Put
putFloat64le Double
_msgAlmanacGpsDep_omega0
    Double -> Put
putFloat64le Double
_msgAlmanacGpsDep_omegadot
    Double -> Put
putFloat64le Double
_msgAlmanacGpsDep_w
    Double -> Put
putFloat64le Double
_msgAlmanacGpsDep_inc
    Double -> Put
putFloat64le Double
_msgAlmanacGpsDep_af0
    Double -> Put
putFloat64le Double
_msgAlmanacGpsDep_af1

$(makeSBP 'msgAlmanacGpsDep ''MsgAlmanacGpsDep)
$(makeJSON "_msgAlmanacGpsDep_" ''MsgAlmanacGpsDep)
$(makeLenses ''MsgAlmanacGpsDep)

msgAlmanacGps :: Word16
msgAlmanacGps :: Word16
msgAlmanacGps = Word16
0x0072

-- | SBP class for message MSG_ALMANAC_GPS (0x0072).
--
-- The almanac message returns a set of satellite orbit parameters. Almanac
-- data is not very precise and is considered valid for up to several months.
-- Please see the Navstar GPS Space Segment/Navigation user interfaces (ICD-
-- GPS-200, Chapter 20.3.3.5.1.2 Almanac Data) for more details.
data MsgAlmanacGps = MsgAlmanacGps
  { MsgAlmanacGps -> AlmanacCommonContent
_msgAlmanacGps_common :: !AlmanacCommonContent
    -- ^ Values common for all almanac types
  , MsgAlmanacGps -> Double
_msgAlmanacGps_m0     :: !Double
    -- ^ Mean anomaly at reference time
  , MsgAlmanacGps -> Double
_msgAlmanacGps_ecc    :: !Double
    -- ^ Eccentricity of satellite orbit
  , MsgAlmanacGps -> Double
_msgAlmanacGps_sqrta  :: !Double
    -- ^ Square root of the semi-major axis of orbit
  , MsgAlmanacGps -> Double
_msgAlmanacGps_omega0 :: !Double
    -- ^ Longitude of ascending node of orbit plane at weekly epoch
  , MsgAlmanacGps -> Double
_msgAlmanacGps_omegadot :: !Double
    -- ^ Rate of right ascension
  , MsgAlmanacGps -> Double
_msgAlmanacGps_w      :: !Double
    -- ^ Argument of perigee
  , MsgAlmanacGps -> Double
_msgAlmanacGps_inc    :: !Double
    -- ^ Inclination
  , MsgAlmanacGps -> Double
_msgAlmanacGps_af0    :: !Double
    -- ^ Polynomial clock correction coefficient (clock bias)
  , MsgAlmanacGps -> Double
_msgAlmanacGps_af1    :: !Double
    -- ^ Polynomial clock correction coefficient (clock drift)
  } deriving ( Int -> MsgAlmanacGps -> ShowS
[MsgAlmanacGps] -> ShowS
MsgAlmanacGps -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgAlmanacGps] -> ShowS
$cshowList :: [MsgAlmanacGps] -> ShowS
show :: MsgAlmanacGps -> String
$cshow :: MsgAlmanacGps -> String
showsPrec :: Int -> MsgAlmanacGps -> ShowS
$cshowsPrec :: Int -> MsgAlmanacGps -> ShowS
Show, ReadPrec [MsgAlmanacGps]
ReadPrec MsgAlmanacGps
Int -> ReadS MsgAlmanacGps
ReadS [MsgAlmanacGps]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgAlmanacGps]
$creadListPrec :: ReadPrec [MsgAlmanacGps]
readPrec :: ReadPrec MsgAlmanacGps
$creadPrec :: ReadPrec MsgAlmanacGps
readList :: ReadS [MsgAlmanacGps]
$creadList :: ReadS [MsgAlmanacGps]
readsPrec :: Int -> ReadS MsgAlmanacGps
$creadsPrec :: Int -> ReadS MsgAlmanacGps
Read, MsgAlmanacGps -> MsgAlmanacGps -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgAlmanacGps -> MsgAlmanacGps -> Bool
$c/= :: MsgAlmanacGps -> MsgAlmanacGps -> Bool
== :: MsgAlmanacGps -> MsgAlmanacGps -> Bool
$c== :: MsgAlmanacGps -> MsgAlmanacGps -> Bool
Eq )

instance Binary MsgAlmanacGps where
  get :: Get MsgAlmanacGps
get = do
    AlmanacCommonContent
_msgAlmanacGps_common <- forall t. Binary t => Get t
get
    Double
_msgAlmanacGps_m0 <- Get Double
getFloat64le
    Double
_msgAlmanacGps_ecc <- Get Double
getFloat64le
    Double
_msgAlmanacGps_sqrta <- Get Double
getFloat64le
    Double
_msgAlmanacGps_omega0 <- Get Double
getFloat64le
    Double
_msgAlmanacGps_omegadot <- Get Double
getFloat64le
    Double
_msgAlmanacGps_w <- Get Double
getFloat64le
    Double
_msgAlmanacGps_inc <- Get Double
getFloat64le
    Double
_msgAlmanacGps_af0 <- Get Double
getFloat64le
    Double
_msgAlmanacGps_af1 <- Get Double
getFloat64le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgAlmanacGps {Double
AlmanacCommonContent
_msgAlmanacGps_af1 :: Double
_msgAlmanacGps_af0 :: Double
_msgAlmanacGps_inc :: Double
_msgAlmanacGps_w :: Double
_msgAlmanacGps_omegadot :: Double
_msgAlmanacGps_omega0 :: Double
_msgAlmanacGps_sqrta :: Double
_msgAlmanacGps_ecc :: Double
_msgAlmanacGps_m0 :: Double
_msgAlmanacGps_common :: AlmanacCommonContent
_msgAlmanacGps_af1 :: Double
_msgAlmanacGps_af0 :: Double
_msgAlmanacGps_inc :: Double
_msgAlmanacGps_w :: Double
_msgAlmanacGps_omegadot :: Double
_msgAlmanacGps_omega0 :: Double
_msgAlmanacGps_sqrta :: Double
_msgAlmanacGps_ecc :: Double
_msgAlmanacGps_m0 :: Double
_msgAlmanacGps_common :: AlmanacCommonContent
..}

  put :: MsgAlmanacGps -> Put
put MsgAlmanacGps {Double
AlmanacCommonContent
_msgAlmanacGps_af1 :: Double
_msgAlmanacGps_af0 :: Double
_msgAlmanacGps_inc :: Double
_msgAlmanacGps_w :: Double
_msgAlmanacGps_omegadot :: Double
_msgAlmanacGps_omega0 :: Double
_msgAlmanacGps_sqrta :: Double
_msgAlmanacGps_ecc :: Double
_msgAlmanacGps_m0 :: Double
_msgAlmanacGps_common :: AlmanacCommonContent
_msgAlmanacGps_af1 :: MsgAlmanacGps -> Double
_msgAlmanacGps_af0 :: MsgAlmanacGps -> Double
_msgAlmanacGps_inc :: MsgAlmanacGps -> Double
_msgAlmanacGps_w :: MsgAlmanacGps -> Double
_msgAlmanacGps_omegadot :: MsgAlmanacGps -> Double
_msgAlmanacGps_omega0 :: MsgAlmanacGps -> Double
_msgAlmanacGps_sqrta :: MsgAlmanacGps -> Double
_msgAlmanacGps_ecc :: MsgAlmanacGps -> Double
_msgAlmanacGps_m0 :: MsgAlmanacGps -> Double
_msgAlmanacGps_common :: MsgAlmanacGps -> AlmanacCommonContent
..} = do
    forall t. Binary t => t -> Put
put AlmanacCommonContent
_msgAlmanacGps_common
    Double -> Put
putFloat64le Double
_msgAlmanacGps_m0
    Double -> Put
putFloat64le Double
_msgAlmanacGps_ecc
    Double -> Put
putFloat64le Double
_msgAlmanacGps_sqrta
    Double -> Put
putFloat64le Double
_msgAlmanacGps_omega0
    Double -> Put
putFloat64le Double
_msgAlmanacGps_omegadot
    Double -> Put
putFloat64le Double
_msgAlmanacGps_w
    Double -> Put
putFloat64le Double
_msgAlmanacGps_inc
    Double -> Put
putFloat64le Double
_msgAlmanacGps_af0
    Double -> Put
putFloat64le Double
_msgAlmanacGps_af1

$(makeSBP 'msgAlmanacGps ''MsgAlmanacGps)
$(makeJSON "_msgAlmanacGps_" ''MsgAlmanacGps)
$(makeLenses ''MsgAlmanacGps)

msgAlmanacGloDep :: Word16
msgAlmanacGloDep :: Word16
msgAlmanacGloDep = Word16
0x0071

-- | SBP class for message MSG_ALMANAC_GLO_DEP (0x0071).
--
-- The almanac message returns a set of satellite orbit parameters. Almanac
-- data is not very precise and is considered valid for up to several months.
-- Please see the GLO ICD 5.1 "Chapter 4.5 Non-immediate information and
-- almanac" for details.
data MsgAlmanacGloDep = MsgAlmanacGloDep
  { MsgAlmanacGloDep -> AlmanacCommonContentDep
_msgAlmanacGloDep_common    :: !AlmanacCommonContentDep
    -- ^ Values common for all almanac types
  , MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_lambda_na :: !Double
    -- ^ Longitude of the first ascending node of the orbit in PZ-90.02
    -- coordinate system
  , MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_t_lambda_na :: !Double
    -- ^ Time of the first ascending node passage
  , MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_i         :: !Double
    -- ^ Value of inclination at instant of t_lambda
  , MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_t         :: !Double
    -- ^ Value of Draconian period at instant of t_lambda
  , MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_t_dot     :: !Double
    -- ^ Rate of change of the Draconian period
  , MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_epsilon   :: !Double
    -- ^ Eccentricity at instant of t_lambda
  , MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_omega     :: !Double
    -- ^ Argument of perigee at instant of t_lambda
  } deriving ( Int -> MsgAlmanacGloDep -> ShowS
[MsgAlmanacGloDep] -> ShowS
MsgAlmanacGloDep -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgAlmanacGloDep] -> ShowS
$cshowList :: [MsgAlmanacGloDep] -> ShowS
show :: MsgAlmanacGloDep -> String
$cshow :: MsgAlmanacGloDep -> String
showsPrec :: Int -> MsgAlmanacGloDep -> ShowS
$cshowsPrec :: Int -> MsgAlmanacGloDep -> ShowS
Show, ReadPrec [MsgAlmanacGloDep]
ReadPrec MsgAlmanacGloDep
Int -> ReadS MsgAlmanacGloDep
ReadS [MsgAlmanacGloDep]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgAlmanacGloDep]
$creadListPrec :: ReadPrec [MsgAlmanacGloDep]
readPrec :: ReadPrec MsgAlmanacGloDep
$creadPrec :: ReadPrec MsgAlmanacGloDep
readList :: ReadS [MsgAlmanacGloDep]
$creadList :: ReadS [MsgAlmanacGloDep]
readsPrec :: Int -> ReadS MsgAlmanacGloDep
$creadsPrec :: Int -> ReadS MsgAlmanacGloDep
Read, MsgAlmanacGloDep -> MsgAlmanacGloDep -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgAlmanacGloDep -> MsgAlmanacGloDep -> Bool
$c/= :: MsgAlmanacGloDep -> MsgAlmanacGloDep -> Bool
== :: MsgAlmanacGloDep -> MsgAlmanacGloDep -> Bool
$c== :: MsgAlmanacGloDep -> MsgAlmanacGloDep -> Bool
Eq )

instance Binary MsgAlmanacGloDep where
  get :: Get MsgAlmanacGloDep
get = do
    AlmanacCommonContentDep
_msgAlmanacGloDep_common <- forall t. Binary t => Get t
get
    Double
_msgAlmanacGloDep_lambda_na <- Get Double
getFloat64le
    Double
_msgAlmanacGloDep_t_lambda_na <- Get Double
getFloat64le
    Double
_msgAlmanacGloDep_i <- Get Double
getFloat64le
    Double
_msgAlmanacGloDep_t <- Get Double
getFloat64le
    Double
_msgAlmanacGloDep_t_dot <- Get Double
getFloat64le
    Double
_msgAlmanacGloDep_epsilon <- Get Double
getFloat64le
    Double
_msgAlmanacGloDep_omega <- Get Double
getFloat64le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgAlmanacGloDep {Double
AlmanacCommonContentDep
_msgAlmanacGloDep_omega :: Double
_msgAlmanacGloDep_epsilon :: Double
_msgAlmanacGloDep_t_dot :: Double
_msgAlmanacGloDep_t :: Double
_msgAlmanacGloDep_i :: Double
_msgAlmanacGloDep_t_lambda_na :: Double
_msgAlmanacGloDep_lambda_na :: Double
_msgAlmanacGloDep_common :: AlmanacCommonContentDep
_msgAlmanacGloDep_omega :: Double
_msgAlmanacGloDep_epsilon :: Double
_msgAlmanacGloDep_t_dot :: Double
_msgAlmanacGloDep_t :: Double
_msgAlmanacGloDep_i :: Double
_msgAlmanacGloDep_t_lambda_na :: Double
_msgAlmanacGloDep_lambda_na :: Double
_msgAlmanacGloDep_common :: AlmanacCommonContentDep
..}

  put :: MsgAlmanacGloDep -> Put
put MsgAlmanacGloDep {Double
AlmanacCommonContentDep
_msgAlmanacGloDep_omega :: Double
_msgAlmanacGloDep_epsilon :: Double
_msgAlmanacGloDep_t_dot :: Double
_msgAlmanacGloDep_t :: Double
_msgAlmanacGloDep_i :: Double
_msgAlmanacGloDep_t_lambda_na :: Double
_msgAlmanacGloDep_lambda_na :: Double
_msgAlmanacGloDep_common :: AlmanacCommonContentDep
_msgAlmanacGloDep_omega :: MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_epsilon :: MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_t_dot :: MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_t :: MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_i :: MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_t_lambda_na :: MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_lambda_na :: MsgAlmanacGloDep -> Double
_msgAlmanacGloDep_common :: MsgAlmanacGloDep -> AlmanacCommonContentDep
..} = do
    forall t. Binary t => t -> Put
put AlmanacCommonContentDep
_msgAlmanacGloDep_common
    Double -> Put
putFloat64le Double
_msgAlmanacGloDep_lambda_na
    Double -> Put
putFloat64le Double
_msgAlmanacGloDep_t_lambda_na
    Double -> Put
putFloat64le Double
_msgAlmanacGloDep_i
    Double -> Put
putFloat64le Double
_msgAlmanacGloDep_t
    Double -> Put
putFloat64le Double
_msgAlmanacGloDep_t_dot
    Double -> Put
putFloat64le Double
_msgAlmanacGloDep_epsilon
    Double -> Put
putFloat64le Double
_msgAlmanacGloDep_omega

$(makeSBP 'msgAlmanacGloDep ''MsgAlmanacGloDep)
$(makeJSON "_msgAlmanacGloDep_" ''MsgAlmanacGloDep)
$(makeLenses ''MsgAlmanacGloDep)

msgAlmanacGlo :: Word16
msgAlmanacGlo :: Word16
msgAlmanacGlo = Word16
0x0073

-- | SBP class for message MSG_ALMANAC_GLO (0x0073).
--
-- The almanac message returns a set of satellite orbit parameters. Almanac
-- data is not very precise and is considered valid for up to several months.
-- Please see the GLO ICD 5.1 "Chapter 4.5 Non-immediate information and
-- almanac" for details.
data MsgAlmanacGlo = MsgAlmanacGlo
  { MsgAlmanacGlo -> AlmanacCommonContent
_msgAlmanacGlo_common    :: !AlmanacCommonContent
    -- ^ Values common for all almanac types
  , MsgAlmanacGlo -> Double
_msgAlmanacGlo_lambda_na :: !Double
    -- ^ Longitude of the first ascending node of the orbit in PZ-90.02
    -- coordinate system
  , MsgAlmanacGlo -> Double
_msgAlmanacGlo_t_lambda_na :: !Double
    -- ^ Time of the first ascending node passage
  , MsgAlmanacGlo -> Double
_msgAlmanacGlo_i         :: !Double
    -- ^ Value of inclination at instant of t_lambda
  , MsgAlmanacGlo -> Double
_msgAlmanacGlo_t         :: !Double
    -- ^ Value of Draconian period at instant of t_lambda
  , MsgAlmanacGlo -> Double
_msgAlmanacGlo_t_dot     :: !Double
    -- ^ Rate of change of the Draconian period
  , MsgAlmanacGlo -> Double
_msgAlmanacGlo_epsilon   :: !Double
    -- ^ Eccentricity at instant of t_lambda
  , MsgAlmanacGlo -> Double
_msgAlmanacGlo_omega     :: !Double
    -- ^ Argument of perigee at instant of t_lambda
  } deriving ( Int -> MsgAlmanacGlo -> ShowS
[MsgAlmanacGlo] -> ShowS
MsgAlmanacGlo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgAlmanacGlo] -> ShowS
$cshowList :: [MsgAlmanacGlo] -> ShowS
show :: MsgAlmanacGlo -> String
$cshow :: MsgAlmanacGlo -> String
showsPrec :: Int -> MsgAlmanacGlo -> ShowS
$cshowsPrec :: Int -> MsgAlmanacGlo -> ShowS
Show, ReadPrec [MsgAlmanacGlo]
ReadPrec MsgAlmanacGlo
Int -> ReadS MsgAlmanacGlo
ReadS [MsgAlmanacGlo]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgAlmanacGlo]
$creadListPrec :: ReadPrec [MsgAlmanacGlo]
readPrec :: ReadPrec MsgAlmanacGlo
$creadPrec :: ReadPrec MsgAlmanacGlo
readList :: ReadS [MsgAlmanacGlo]
$creadList :: ReadS [MsgAlmanacGlo]
readsPrec :: Int -> ReadS MsgAlmanacGlo
$creadsPrec :: Int -> ReadS MsgAlmanacGlo
Read, MsgAlmanacGlo -> MsgAlmanacGlo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgAlmanacGlo -> MsgAlmanacGlo -> Bool
$c/= :: MsgAlmanacGlo -> MsgAlmanacGlo -> Bool
== :: MsgAlmanacGlo -> MsgAlmanacGlo -> Bool
$c== :: MsgAlmanacGlo -> MsgAlmanacGlo -> Bool
Eq )

instance Binary MsgAlmanacGlo where
  get :: Get MsgAlmanacGlo
get = do
    AlmanacCommonContent
_msgAlmanacGlo_common <- forall t. Binary t => Get t
get
    Double
_msgAlmanacGlo_lambda_na <- Get Double
getFloat64le
    Double
_msgAlmanacGlo_t_lambda_na <- Get Double
getFloat64le
    Double
_msgAlmanacGlo_i <- Get Double
getFloat64le
    Double
_msgAlmanacGlo_t <- Get Double
getFloat64le
    Double
_msgAlmanacGlo_t_dot <- Get Double
getFloat64le
    Double
_msgAlmanacGlo_epsilon <- Get Double
getFloat64le
    Double
_msgAlmanacGlo_omega <- Get Double
getFloat64le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgAlmanacGlo {Double
AlmanacCommonContent
_msgAlmanacGlo_omega :: Double
_msgAlmanacGlo_epsilon :: Double
_msgAlmanacGlo_t_dot :: Double
_msgAlmanacGlo_t :: Double
_msgAlmanacGlo_i :: Double
_msgAlmanacGlo_t_lambda_na :: Double
_msgAlmanacGlo_lambda_na :: Double
_msgAlmanacGlo_common :: AlmanacCommonContent
_msgAlmanacGlo_omega :: Double
_msgAlmanacGlo_epsilon :: Double
_msgAlmanacGlo_t_dot :: Double
_msgAlmanacGlo_t :: Double
_msgAlmanacGlo_i :: Double
_msgAlmanacGlo_t_lambda_na :: Double
_msgAlmanacGlo_lambda_na :: Double
_msgAlmanacGlo_common :: AlmanacCommonContent
..}

  put :: MsgAlmanacGlo -> Put
put MsgAlmanacGlo {Double
AlmanacCommonContent
_msgAlmanacGlo_omega :: Double
_msgAlmanacGlo_epsilon :: Double
_msgAlmanacGlo_t_dot :: Double
_msgAlmanacGlo_t :: Double
_msgAlmanacGlo_i :: Double
_msgAlmanacGlo_t_lambda_na :: Double
_msgAlmanacGlo_lambda_na :: Double
_msgAlmanacGlo_common :: AlmanacCommonContent
_msgAlmanacGlo_omega :: MsgAlmanacGlo -> Double
_msgAlmanacGlo_epsilon :: MsgAlmanacGlo -> Double
_msgAlmanacGlo_t_dot :: MsgAlmanacGlo -> Double
_msgAlmanacGlo_t :: MsgAlmanacGlo -> Double
_msgAlmanacGlo_i :: MsgAlmanacGlo -> Double
_msgAlmanacGlo_t_lambda_na :: MsgAlmanacGlo -> Double
_msgAlmanacGlo_lambda_na :: MsgAlmanacGlo -> Double
_msgAlmanacGlo_common :: MsgAlmanacGlo -> AlmanacCommonContent
..} = do
    forall t. Binary t => t -> Put
put AlmanacCommonContent
_msgAlmanacGlo_common
    Double -> Put
putFloat64le Double
_msgAlmanacGlo_lambda_na
    Double -> Put
putFloat64le Double
_msgAlmanacGlo_t_lambda_na
    Double -> Put
putFloat64le Double
_msgAlmanacGlo_i
    Double -> Put
putFloat64le Double
_msgAlmanacGlo_t
    Double -> Put
putFloat64le Double
_msgAlmanacGlo_t_dot
    Double -> Put
putFloat64le Double
_msgAlmanacGlo_epsilon
    Double -> Put
putFloat64le Double
_msgAlmanacGlo_omega

$(makeSBP 'msgAlmanacGlo ''MsgAlmanacGlo)
$(makeJSON "_msgAlmanacGlo_" ''MsgAlmanacGlo)
$(makeLenses ''MsgAlmanacGlo)

msgGloBiases :: Word16
msgGloBiases :: Word16
msgGloBiases = Word16
0x0075

-- | SBP class for message MSG_GLO_BIASES (0x0075).
--
-- The GLONASS L1/L2 Code-Phase biases allows to perform GPS+GLONASS integer
-- ambiguity resolution for baselines with mixed receiver types (e.g. receiver
-- of different manufacturers).
data MsgGloBiases = MsgGloBiases
  { MsgGloBiases -> Word8
_msgGloBiases_mask    :: !Word8
    -- ^ GLONASS FDMA signals mask
  , MsgGloBiases -> Int16
_msgGloBiases_l1ca_bias :: !Int16
    -- ^ GLONASS L1 C/A Code-Phase Bias
  , MsgGloBiases -> Int16
_msgGloBiases_l1p_bias :: !Int16
    -- ^ GLONASS L1 P Code-Phase Bias
  , MsgGloBiases -> Int16
_msgGloBiases_l2ca_bias :: !Int16
    -- ^ GLONASS L2 C/A Code-Phase Bias
  , MsgGloBiases -> Int16
_msgGloBiases_l2p_bias :: !Int16
    -- ^ GLONASS L2 P Code-Phase Bias
  } deriving ( Int -> MsgGloBiases -> ShowS
[MsgGloBiases] -> ShowS
MsgGloBiases -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgGloBiases] -> ShowS
$cshowList :: [MsgGloBiases] -> ShowS
show :: MsgGloBiases -> String
$cshow :: MsgGloBiases -> String
showsPrec :: Int -> MsgGloBiases -> ShowS
$cshowsPrec :: Int -> MsgGloBiases -> ShowS
Show, ReadPrec [MsgGloBiases]
ReadPrec MsgGloBiases
Int -> ReadS MsgGloBiases
ReadS [MsgGloBiases]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgGloBiases]
$creadListPrec :: ReadPrec [MsgGloBiases]
readPrec :: ReadPrec MsgGloBiases
$creadPrec :: ReadPrec MsgGloBiases
readList :: ReadS [MsgGloBiases]
$creadList :: ReadS [MsgGloBiases]
readsPrec :: Int -> ReadS MsgGloBiases
$creadsPrec :: Int -> ReadS MsgGloBiases
Read, MsgGloBiases -> MsgGloBiases -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgGloBiases -> MsgGloBiases -> Bool
$c/= :: MsgGloBiases -> MsgGloBiases -> Bool
== :: MsgGloBiases -> MsgGloBiases -> Bool
$c== :: MsgGloBiases -> MsgGloBiases -> Bool
Eq )

instance Binary MsgGloBiases where
  get :: Get MsgGloBiases
get = do
    Word8
_msgGloBiases_mask <- Get Word8
getWord8
    Int16
_msgGloBiases_l1ca_bias <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    Int16
_msgGloBiases_l1p_bias <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    Int16
_msgGloBiases_l2ca_bias <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    Int16
_msgGloBiases_l2p_bias <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgGloBiases {Int16
Word8
_msgGloBiases_l2p_bias :: Int16
_msgGloBiases_l2ca_bias :: Int16
_msgGloBiases_l1p_bias :: Int16
_msgGloBiases_l1ca_bias :: Int16
_msgGloBiases_mask :: Word8
_msgGloBiases_l2p_bias :: Int16
_msgGloBiases_l2ca_bias :: Int16
_msgGloBiases_l1p_bias :: Int16
_msgGloBiases_l1ca_bias :: Int16
_msgGloBiases_mask :: Word8
..}

  put :: MsgGloBiases -> Put
put MsgGloBiases {Int16
Word8
_msgGloBiases_l2p_bias :: Int16
_msgGloBiases_l2ca_bias :: Int16
_msgGloBiases_l1p_bias :: Int16
_msgGloBiases_l1ca_bias :: Int16
_msgGloBiases_mask :: Word8
_msgGloBiases_l2p_bias :: MsgGloBiases -> Int16
_msgGloBiases_l2ca_bias :: MsgGloBiases -> Int16
_msgGloBiases_l1p_bias :: MsgGloBiases -> Int16
_msgGloBiases_l1ca_bias :: MsgGloBiases -> Int16
_msgGloBiases_mask :: MsgGloBiases -> Word8
..} = do
    Word8 -> Put
putWord8 Word8
_msgGloBiases_mask
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGloBiases_l1ca_bias
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGloBiases_l1p_bias
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGloBiases_l2ca_bias
    (Word16 -> Put
putWord16le forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int16
_msgGloBiases_l2p_bias

$(makeSBP 'msgGloBiases ''MsgGloBiases)
$(makeJSON "_msgGloBiases_" ''MsgGloBiases)
$(makeLenses ''MsgGloBiases)

-- | SvAzEl.
--
-- Satellite azimuth and elevation.
data SvAzEl = SvAzEl
  { SvAzEl -> GnssSignal
_svAzEl_sid :: !GnssSignal
    -- ^ GNSS signal identifier
  , SvAzEl -> Word8
_svAzEl_az :: !Word8
    -- ^ Azimuth angle (range 0..179)
  , SvAzEl -> Int8
_svAzEl_el :: !Int8
    -- ^ Elevation angle (range -90..90)
  } deriving ( Int -> SvAzEl -> ShowS
[SvAzEl] -> ShowS
SvAzEl -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SvAzEl] -> ShowS
$cshowList :: [SvAzEl] -> ShowS
show :: SvAzEl -> String
$cshow :: SvAzEl -> String
showsPrec :: Int -> SvAzEl -> ShowS
$cshowsPrec :: Int -> SvAzEl -> ShowS
Show, ReadPrec [SvAzEl]
ReadPrec SvAzEl
Int -> ReadS SvAzEl
ReadS [SvAzEl]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SvAzEl]
$creadListPrec :: ReadPrec [SvAzEl]
readPrec :: ReadPrec SvAzEl
$creadPrec :: ReadPrec SvAzEl
readList :: ReadS [SvAzEl]
$creadList :: ReadS [SvAzEl]
readsPrec :: Int -> ReadS SvAzEl
$creadsPrec :: Int -> ReadS SvAzEl
Read, SvAzEl -> SvAzEl -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SvAzEl -> SvAzEl -> Bool
$c/= :: SvAzEl -> SvAzEl -> Bool
== :: SvAzEl -> SvAzEl -> Bool
$c== :: SvAzEl -> SvAzEl -> Bool
Eq )

instance Binary SvAzEl where
  get :: Get SvAzEl
get = do
    GnssSignal
_svAzEl_sid <- forall t. Binary t => Get t
get
    Word8
_svAzEl_az <- Get Word8
getWord8
    Int8
_svAzEl_el <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word8
getWord8)
    forall (f :: * -> *) a. Applicative f => a -> f a
pure SvAzEl {Int8
Word8
GnssSignal
_svAzEl_el :: Int8
_svAzEl_az :: Word8
_svAzEl_sid :: GnssSignal
_svAzEl_el :: Int8
_svAzEl_az :: Word8
_svAzEl_sid :: GnssSignal
..}

  put :: SvAzEl -> Put
put SvAzEl {Int8
Word8
GnssSignal
_svAzEl_el :: Int8
_svAzEl_az :: Word8
_svAzEl_sid :: GnssSignal
_svAzEl_el :: SvAzEl -> Int8
_svAzEl_az :: SvAzEl -> Word8
_svAzEl_sid :: SvAzEl -> GnssSignal
..} = do
    forall t. Binary t => t -> Put
put GnssSignal
_svAzEl_sid
    Word8 -> Put
putWord8 Word8
_svAzEl_az
    (Word8 -> Put
putWord8 forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int8
_svAzEl_el

$(makeJSON "_svAzEl_" ''SvAzEl)
$(makeLenses ''SvAzEl)

msgSvAzEl :: Word16
msgSvAzEl :: Word16
msgSvAzEl = Word16
0x0097

-- | SBP class for message MSG_SV_AZ_EL (0x0097).
--
-- Azimuth and elevation angles of all the visible satellites that the device
-- does have ephemeris or almanac for.
data MsgSvAzEl = MsgSvAzEl
  { MsgSvAzEl -> [SvAzEl]
_msgSvAzEl_azel :: ![SvAzEl]
    -- ^ Azimuth and elevation per satellite
  } deriving ( Int -> MsgSvAzEl -> ShowS
[MsgSvAzEl] -> ShowS
MsgSvAzEl -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgSvAzEl] -> ShowS
$cshowList :: [MsgSvAzEl] -> ShowS
show :: MsgSvAzEl -> String
$cshow :: MsgSvAzEl -> String
showsPrec :: Int -> MsgSvAzEl -> ShowS
$cshowsPrec :: Int -> MsgSvAzEl -> ShowS
Show, ReadPrec [MsgSvAzEl]
ReadPrec MsgSvAzEl
Int -> ReadS MsgSvAzEl
ReadS [MsgSvAzEl]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgSvAzEl]
$creadListPrec :: ReadPrec [MsgSvAzEl]
readPrec :: ReadPrec MsgSvAzEl
$creadPrec :: ReadPrec MsgSvAzEl
readList :: ReadS [MsgSvAzEl]
$creadList :: ReadS [MsgSvAzEl]
readsPrec :: Int -> ReadS MsgSvAzEl
$creadsPrec :: Int -> ReadS MsgSvAzEl
Read, MsgSvAzEl -> MsgSvAzEl -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgSvAzEl -> MsgSvAzEl -> Bool
$c/= :: MsgSvAzEl -> MsgSvAzEl -> Bool
== :: MsgSvAzEl -> MsgSvAzEl -> Bool
$c== :: MsgSvAzEl -> MsgSvAzEl -> Bool
Eq )

instance Binary MsgSvAzEl where
  get :: Get MsgSvAzEl
get = do
    [SvAzEl]
_msgSvAzEl_azel <- forall (m :: * -> *) a. Monad m => m Bool -> m a -> m [a]
whileM (Bool -> Bool
not forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Bool
isEmpty) forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgSvAzEl {[SvAzEl]
_msgSvAzEl_azel :: [SvAzEl]
_msgSvAzEl_azel :: [SvAzEl]
..}

  put :: MsgSvAzEl -> Put
put MsgSvAzEl {[SvAzEl]
_msgSvAzEl_azel :: [SvAzEl]
_msgSvAzEl_azel :: MsgSvAzEl -> [SvAzEl]
..} = do
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ forall t. Binary t => t -> Put
put [SvAzEl]
_msgSvAzEl_azel

$(makeSBP 'msgSvAzEl ''MsgSvAzEl)
$(makeJSON "_msgSvAzEl_" ''MsgSvAzEl)
$(makeLenses ''MsgSvAzEl)

msgOsr :: Word16
msgOsr :: Word16
msgOsr = Word16
0x0640

-- | SBP class for message MSG_OSR (0x0640).
--
-- The OSR message contains network corrections in an observation-like format.
data MsgOsr = MsgOsr
  { MsgOsr -> ObservationHeader
_msgOsr_header :: !ObservationHeader
    -- ^ Header of a GPS observation message
  , MsgOsr -> [PackedOsrContent]
_msgOsr_obs  :: ![PackedOsrContent]
    -- ^ Network correction for a satellite signal.
  } deriving ( Int -> MsgOsr -> ShowS
[MsgOsr] -> ShowS
MsgOsr -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgOsr] -> ShowS
$cshowList :: [MsgOsr] -> ShowS
show :: MsgOsr -> String
$cshow :: MsgOsr -> String
showsPrec :: Int -> MsgOsr -> ShowS
$cshowsPrec :: Int -> MsgOsr -> ShowS
Show, ReadPrec [MsgOsr]
ReadPrec MsgOsr
Int -> ReadS MsgOsr
ReadS [MsgOsr]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgOsr]
$creadListPrec :: ReadPrec [MsgOsr]
readPrec :: ReadPrec MsgOsr
$creadPrec :: ReadPrec MsgOsr
readList :: ReadS [MsgOsr]
$creadList :: ReadS [MsgOsr]
readsPrec :: Int -> ReadS MsgOsr
$creadsPrec :: Int -> ReadS MsgOsr
Read, MsgOsr -> MsgOsr -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgOsr -> MsgOsr -> Bool
$c/= :: MsgOsr -> MsgOsr -> Bool
== :: MsgOsr -> MsgOsr -> Bool
$c== :: MsgOsr -> MsgOsr -> Bool
Eq )

instance Binary MsgOsr where
  get :: Get MsgOsr
get = do
    ObservationHeader
_msgOsr_header <- forall t. Binary t => Get t
get
    [PackedOsrContent]
_msgOsr_obs <- forall (m :: * -> *) a. Monad m => m Bool -> m a -> m [a]
whileM (Bool -> Bool
not forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Bool
isEmpty) forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgOsr {[PackedOsrContent]
ObservationHeader
_msgOsr_obs :: [PackedOsrContent]
_msgOsr_header :: ObservationHeader
_msgOsr_obs :: [PackedOsrContent]
_msgOsr_header :: ObservationHeader
..}

  put :: MsgOsr -> Put
put MsgOsr {[PackedOsrContent]
ObservationHeader
_msgOsr_obs :: [PackedOsrContent]
_msgOsr_header :: ObservationHeader
_msgOsr_obs :: MsgOsr -> [PackedOsrContent]
_msgOsr_header :: MsgOsr -> ObservationHeader
..} = do
    forall t. Binary t => t -> Put
put ObservationHeader
_msgOsr_header
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ forall t. Binary t => t -> Put
put [PackedOsrContent]
_msgOsr_obs

$(makeSBP 'msgOsr ''MsgOsr)
$(makeJSON "_msgOsr_" ''MsgOsr)
$(makeLenses ''MsgOsr)