module SwiftNav.SBP.Observation where
import BasicPrelude as P
import Control.Lens
import Control.Monad.Loops
import Data.Aeson.TH (defaultOptions, deriveJSON, fieldLabelModifier)
import Data.Binary
import Data.Binary.Get
import Data.Binary.IEEE754
import Data.Binary.Put
import Data.ByteString
import Data.ByteString.Lazy hiding (ByteString)
import Data.Int
import Data.Word
import SwiftNav.SBP.Encoding
import SwiftNav.SBP.TH
import SwiftNav.SBP.Types
import SwiftNav.SBP.Gnss
data ObservationHeader = ObservationHeader
{ _observationHeader_t :: !GpsTimeNano
, _observationHeader_n_obs :: !Word8
} deriving ( Show, Read, Eq )
instance Binary ObservationHeader where
get = do
_observationHeader_t <- get
_observationHeader_n_obs <- getWord8
return ObservationHeader {..}
put ObservationHeader {..} = do
put _observationHeader_t
putWord8 _observationHeader_n_obs
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_observationHeader_" . P.stripPrefix "_observationHeader_"}
''ObservationHeader)
$(makeLenses ''ObservationHeader)
data Doppler = Doppler
{ _doppler_i :: !Int16
, _doppler_f :: !Word8
} deriving ( Show, Read, Eq )
instance Binary Doppler where
get = do
_doppler_i <- fromIntegral <$> getWord16le
_doppler_f <- getWord8
return Doppler {..}
put Doppler {..} = do
putWord16le $ fromIntegral _doppler_i
putWord8 _doppler_f
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_doppler_" . P.stripPrefix "_doppler_"}
''Doppler)
$(makeLenses ''Doppler)
data PackedObsContent = PackedObsContent
{ _packedObsContent_P :: !Word32
, _packedObsContent_L :: !CarrierPhase
, _packedObsContent_D :: !Doppler
, _packedObsContent_cn0 :: !Word8
, _packedObsContent_lock :: !Word8
, _packedObsContent_flags :: !Word8
, _packedObsContent_sid :: !GnssSignal16
} deriving ( Show, Read, Eq )
instance Binary PackedObsContent where
get = do
_packedObsContent_P <- getWord32le
_packedObsContent_L <- get
_packedObsContent_D <- get
_packedObsContent_cn0 <- getWord8
_packedObsContent_lock <- getWord8
_packedObsContent_flags <- getWord8
_packedObsContent_sid <- get
return PackedObsContent {..}
put PackedObsContent {..} = do
putWord32le _packedObsContent_P
put _packedObsContent_L
put _packedObsContent_D
putWord8 _packedObsContent_cn0
putWord8 _packedObsContent_lock
putWord8 _packedObsContent_flags
put _packedObsContent_sid
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_packedObsContent_" . P.stripPrefix "_packedObsContent_"}
''PackedObsContent)
$(makeLenses ''PackedObsContent)
msgObs :: Word16
msgObs = 0x004A
data MsgObs = MsgObs
{ _msgObs_header :: !ObservationHeader
, _msgObs_obs :: ![PackedObsContent]
} deriving ( Show, Read, Eq )
instance Binary MsgObs where
get = do
_msgObs_header <- get
_msgObs_obs <- whileM (not <$> isEmpty) get
return MsgObs {..}
put MsgObs {..} = do
put _msgObs_header
mapM_ put _msgObs_obs
$(deriveSBP 'msgObs ''MsgObs)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgObs_" . P.stripPrefix "_msgObs_"}
''MsgObs)
$(makeLenses ''MsgObs)
msgBasePosLlh :: Word16
msgBasePosLlh = 0x0044
data MsgBasePosLlh = MsgBasePosLlh
{ _msgBasePosLlh_lat :: !Double
, _msgBasePosLlh_lon :: !Double
, _msgBasePosLlh_height :: !Double
} deriving ( Show, Read, Eq )
instance Binary MsgBasePosLlh where
get = do
_msgBasePosLlh_lat <- getFloat64le
_msgBasePosLlh_lon <- getFloat64le
_msgBasePosLlh_height <- getFloat64le
return MsgBasePosLlh {..}
put MsgBasePosLlh {..} = do
putFloat64le _msgBasePosLlh_lat
putFloat64le _msgBasePosLlh_lon
putFloat64le _msgBasePosLlh_height
$(deriveSBP 'msgBasePosLlh ''MsgBasePosLlh)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgBasePosLlh_" . P.stripPrefix "_msgBasePosLlh_"}
''MsgBasePosLlh)
$(makeLenses ''MsgBasePosLlh)
msgBasePosEcef :: Word16
msgBasePosEcef = 0x0048
data MsgBasePosEcef = MsgBasePosEcef
{ _msgBasePosEcef_x :: !Double
, _msgBasePosEcef_y :: !Double
, _msgBasePosEcef_z :: !Double
} deriving ( Show, Read, Eq )
instance Binary MsgBasePosEcef where
get = do
_msgBasePosEcef_x <- getFloat64le
_msgBasePosEcef_y <- getFloat64le
_msgBasePosEcef_z <- getFloat64le
return MsgBasePosEcef {..}
put MsgBasePosEcef {..} = do
putFloat64le _msgBasePosEcef_x
putFloat64le _msgBasePosEcef_y
putFloat64le _msgBasePosEcef_z
$(deriveSBP 'msgBasePosEcef ''MsgBasePosEcef)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgBasePosEcef_" . P.stripPrefix "_msgBasePosEcef_"}
''MsgBasePosEcef)
$(makeLenses ''MsgBasePosEcef)
data EphemerisCommonContent = EphemerisCommonContent
{ _ephemerisCommonContent_sid :: !GnssSignal16
, _ephemerisCommonContent_toe :: !GpsTimeSec
, _ephemerisCommonContent_ura :: !Double
, _ephemerisCommonContent_fit_interval :: !Word32
, _ephemerisCommonContent_valid :: !Word8
, _ephemerisCommonContent_health_bits :: !Word8
} deriving ( Show, Read, Eq )
instance Binary EphemerisCommonContent where
get = do
_ephemerisCommonContent_sid <- get
_ephemerisCommonContent_toe <- get
_ephemerisCommonContent_ura <- getFloat64le
_ephemerisCommonContent_fit_interval <- getWord32le
_ephemerisCommonContent_valid <- getWord8
_ephemerisCommonContent_health_bits <- getWord8
return EphemerisCommonContent {..}
put EphemerisCommonContent {..} = do
put _ephemerisCommonContent_sid
put _ephemerisCommonContent_toe
putFloat64le _ephemerisCommonContent_ura
putWord32le _ephemerisCommonContent_fit_interval
putWord8 _ephemerisCommonContent_valid
putWord8 _ephemerisCommonContent_health_bits
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_ephemerisCommonContent_" . P.stripPrefix "_ephemerisCommonContent_"}
''EphemerisCommonContent)
$(makeLenses ''EphemerisCommonContent)
data EphemerisCommonContentDepA = EphemerisCommonContentDepA
{ _ephemerisCommonContentDepA_sid :: !GnssSignal
, _ephemerisCommonContentDepA_toe :: !GpsTime
, _ephemerisCommonContentDepA_ura :: !Double
, _ephemerisCommonContentDepA_fit_interval :: !Word32
, _ephemerisCommonContentDepA_valid :: !Word8
, _ephemerisCommonContentDepA_health_bits :: !Word8
} deriving ( Show, Read, Eq )
instance Binary EphemerisCommonContentDepA where
get = do
_ephemerisCommonContentDepA_sid <- get
_ephemerisCommonContentDepA_toe <- get
_ephemerisCommonContentDepA_ura <- getFloat64le
_ephemerisCommonContentDepA_fit_interval <- getWord32le
_ephemerisCommonContentDepA_valid <- getWord8
_ephemerisCommonContentDepA_health_bits <- getWord8
return EphemerisCommonContentDepA {..}
put EphemerisCommonContentDepA {..} = do
put _ephemerisCommonContentDepA_sid
put _ephemerisCommonContentDepA_toe
putFloat64le _ephemerisCommonContentDepA_ura
putWord32le _ephemerisCommonContentDepA_fit_interval
putWord8 _ephemerisCommonContentDepA_valid
putWord8 _ephemerisCommonContentDepA_health_bits
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_ephemerisCommonContentDepA_" . P.stripPrefix "_ephemerisCommonContentDepA_"}
''EphemerisCommonContentDepA)
$(makeLenses ''EphemerisCommonContentDepA)
msgEphemerisGpsDepE :: Word16
msgEphemerisGpsDepE = 0x0081
data MsgEphemerisGpsDepE = MsgEphemerisGpsDepE
{ _msgEphemerisGpsDepE_common :: !EphemerisCommonContentDepA
, _msgEphemerisGpsDepE_tgd :: !Double
, _msgEphemerisGpsDepE_c_rs :: !Double
, _msgEphemerisGpsDepE_c_rc :: !Double
, _msgEphemerisGpsDepE_c_uc :: !Double
, _msgEphemerisGpsDepE_c_us :: !Double
, _msgEphemerisGpsDepE_c_ic :: !Double
, _msgEphemerisGpsDepE_c_is :: !Double
, _msgEphemerisGpsDepE_dn :: !Double
, _msgEphemerisGpsDepE_m0 :: !Double
, _msgEphemerisGpsDepE_ecc :: !Double
, _msgEphemerisGpsDepE_sqrta :: !Double
, _msgEphemerisGpsDepE_omega0 :: !Double
, _msgEphemerisGpsDepE_omegadot :: !Double
, _msgEphemerisGpsDepE_w :: !Double
, _msgEphemerisGpsDepE_inc :: !Double
, _msgEphemerisGpsDepE_inc_dot :: !Double
, _msgEphemerisGpsDepE_af0 :: !Double
, _msgEphemerisGpsDepE_af1 :: !Double
, _msgEphemerisGpsDepE_af2 :: !Double
, _msgEphemerisGpsDepE_toc :: !GpsTime
, _msgEphemerisGpsDepE_iode :: !Word8
, _msgEphemerisGpsDepE_iodc :: !Word16
} deriving ( Show, Read, Eq )
instance Binary MsgEphemerisGpsDepE where
get = do
_msgEphemerisGpsDepE_common <- get
_msgEphemerisGpsDepE_tgd <- getFloat64le
_msgEphemerisGpsDepE_c_rs <- getFloat64le
_msgEphemerisGpsDepE_c_rc <- getFloat64le
_msgEphemerisGpsDepE_c_uc <- getFloat64le
_msgEphemerisGpsDepE_c_us <- getFloat64le
_msgEphemerisGpsDepE_c_ic <- getFloat64le
_msgEphemerisGpsDepE_c_is <- getFloat64le
_msgEphemerisGpsDepE_dn <- getFloat64le
_msgEphemerisGpsDepE_m0 <- getFloat64le
_msgEphemerisGpsDepE_ecc <- getFloat64le
_msgEphemerisGpsDepE_sqrta <- getFloat64le
_msgEphemerisGpsDepE_omega0 <- getFloat64le
_msgEphemerisGpsDepE_omegadot <- getFloat64le
_msgEphemerisGpsDepE_w <- getFloat64le
_msgEphemerisGpsDepE_inc <- getFloat64le
_msgEphemerisGpsDepE_inc_dot <- getFloat64le
_msgEphemerisGpsDepE_af0 <- getFloat64le
_msgEphemerisGpsDepE_af1 <- getFloat64le
_msgEphemerisGpsDepE_af2 <- getFloat64le
_msgEphemerisGpsDepE_toc <- get
_msgEphemerisGpsDepE_iode <- getWord8
_msgEphemerisGpsDepE_iodc <- getWord16le
return MsgEphemerisGpsDepE {..}
put MsgEphemerisGpsDepE {..} = do
put _msgEphemerisGpsDepE_common
putFloat64le _msgEphemerisGpsDepE_tgd
putFloat64le _msgEphemerisGpsDepE_c_rs
putFloat64le _msgEphemerisGpsDepE_c_rc
putFloat64le _msgEphemerisGpsDepE_c_uc
putFloat64le _msgEphemerisGpsDepE_c_us
putFloat64le _msgEphemerisGpsDepE_c_ic
putFloat64le _msgEphemerisGpsDepE_c_is
putFloat64le _msgEphemerisGpsDepE_dn
putFloat64le _msgEphemerisGpsDepE_m0
putFloat64le _msgEphemerisGpsDepE_ecc
putFloat64le _msgEphemerisGpsDepE_sqrta
putFloat64le _msgEphemerisGpsDepE_omega0
putFloat64le _msgEphemerisGpsDepE_omegadot
putFloat64le _msgEphemerisGpsDepE_w
putFloat64le _msgEphemerisGpsDepE_inc
putFloat64le _msgEphemerisGpsDepE_inc_dot
putFloat64le _msgEphemerisGpsDepE_af0
putFloat64le _msgEphemerisGpsDepE_af1
putFloat64le _msgEphemerisGpsDepE_af2
put _msgEphemerisGpsDepE_toc
putWord8 _msgEphemerisGpsDepE_iode
putWord16le _msgEphemerisGpsDepE_iodc
$(deriveSBP 'msgEphemerisGpsDepE ''MsgEphemerisGpsDepE)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgEphemerisGpsDepE_" . P.stripPrefix "_msgEphemerisGpsDepE_"}
''MsgEphemerisGpsDepE)
$(makeLenses ''MsgEphemerisGpsDepE)
msgEphemerisGps :: Word16
msgEphemerisGps = 0x0086
data MsgEphemerisGps = MsgEphemerisGps
{ _msgEphemerisGps_common :: !EphemerisCommonContent
, _msgEphemerisGps_tgd :: !Double
, _msgEphemerisGps_c_rs :: !Double
, _msgEphemerisGps_c_rc :: !Double
, _msgEphemerisGps_c_uc :: !Double
, _msgEphemerisGps_c_us :: !Double
, _msgEphemerisGps_c_ic :: !Double
, _msgEphemerisGps_c_is :: !Double
, _msgEphemerisGps_dn :: !Double
, _msgEphemerisGps_m0 :: !Double
, _msgEphemerisGps_ecc :: !Double
, _msgEphemerisGps_sqrta :: !Double
, _msgEphemerisGps_omega0 :: !Double
, _msgEphemerisGps_omegadot :: !Double
, _msgEphemerisGps_w :: !Double
, _msgEphemerisGps_inc :: !Double
, _msgEphemerisGps_inc_dot :: !Double
, _msgEphemerisGps_af0 :: !Double
, _msgEphemerisGps_af1 :: !Double
, _msgEphemerisGps_af2 :: !Double
, _msgEphemerisGps_toc :: !GpsTimeSec
, _msgEphemerisGps_iode :: !Word8
, _msgEphemerisGps_iodc :: !Word16
} deriving ( Show, Read, Eq )
instance Binary MsgEphemerisGps where
get = do
_msgEphemerisGps_common <- get
_msgEphemerisGps_tgd <- getFloat64le
_msgEphemerisGps_c_rs <- getFloat64le
_msgEphemerisGps_c_rc <- getFloat64le
_msgEphemerisGps_c_uc <- getFloat64le
_msgEphemerisGps_c_us <- getFloat64le
_msgEphemerisGps_c_ic <- getFloat64le
_msgEphemerisGps_c_is <- getFloat64le
_msgEphemerisGps_dn <- getFloat64le
_msgEphemerisGps_m0 <- getFloat64le
_msgEphemerisGps_ecc <- getFloat64le
_msgEphemerisGps_sqrta <- getFloat64le
_msgEphemerisGps_omega0 <- getFloat64le
_msgEphemerisGps_omegadot <- getFloat64le
_msgEphemerisGps_w <- getFloat64le
_msgEphemerisGps_inc <- getFloat64le
_msgEphemerisGps_inc_dot <- getFloat64le
_msgEphemerisGps_af0 <- getFloat64le
_msgEphemerisGps_af1 <- getFloat64le
_msgEphemerisGps_af2 <- getFloat64le
_msgEphemerisGps_toc <- get
_msgEphemerisGps_iode <- getWord8
_msgEphemerisGps_iodc <- getWord16le
return MsgEphemerisGps {..}
put MsgEphemerisGps {..} = do
put _msgEphemerisGps_common
putFloat64le _msgEphemerisGps_tgd
putFloat64le _msgEphemerisGps_c_rs
putFloat64le _msgEphemerisGps_c_rc
putFloat64le _msgEphemerisGps_c_uc
putFloat64le _msgEphemerisGps_c_us
putFloat64le _msgEphemerisGps_c_ic
putFloat64le _msgEphemerisGps_c_is
putFloat64le _msgEphemerisGps_dn
putFloat64le _msgEphemerisGps_m0
putFloat64le _msgEphemerisGps_ecc
putFloat64le _msgEphemerisGps_sqrta
putFloat64le _msgEphemerisGps_omega0
putFloat64le _msgEphemerisGps_omegadot
putFloat64le _msgEphemerisGps_w
putFloat64le _msgEphemerisGps_inc
putFloat64le _msgEphemerisGps_inc_dot
putFloat64le _msgEphemerisGps_af0
putFloat64le _msgEphemerisGps_af1
putFloat64le _msgEphemerisGps_af2
put _msgEphemerisGps_toc
putWord8 _msgEphemerisGps_iode
putWord16le _msgEphemerisGps_iodc
$(deriveSBP 'msgEphemerisGps ''MsgEphemerisGps)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgEphemerisGps_" . P.stripPrefix "_msgEphemerisGps_"}
''MsgEphemerisGps)
$(makeLenses ''MsgEphemerisGps)
msgEphemerisSbasDepA :: Word16
msgEphemerisSbasDepA = 0x0082
data MsgEphemerisSbasDepA = MsgEphemerisSbasDepA
{ _msgEphemerisSbasDepA_common :: !EphemerisCommonContentDepA
, _msgEphemerisSbasDepA_pos :: ![Double]
, _msgEphemerisSbasDepA_vel :: ![Double]
, _msgEphemerisSbasDepA_acc :: ![Double]
, _msgEphemerisSbasDepA_a_gf0 :: !Double
, _msgEphemerisSbasDepA_a_gf1 :: !Double
} deriving ( Show, Read, Eq )
instance Binary MsgEphemerisSbasDepA where
get = do
_msgEphemerisSbasDepA_common <- get
_msgEphemerisSbasDepA_pos <- replicateM 3 getFloat64le
_msgEphemerisSbasDepA_vel <- replicateM 3 getFloat64le
_msgEphemerisSbasDepA_acc <- replicateM 3 getFloat64le
_msgEphemerisSbasDepA_a_gf0 <- getFloat64le
_msgEphemerisSbasDepA_a_gf1 <- getFloat64le
return MsgEphemerisSbasDepA {..}
put MsgEphemerisSbasDepA {..} = do
put _msgEphemerisSbasDepA_common
mapM_ putFloat64le _msgEphemerisSbasDepA_pos
mapM_ putFloat64le _msgEphemerisSbasDepA_vel
mapM_ putFloat64le _msgEphemerisSbasDepA_acc
putFloat64le _msgEphemerisSbasDepA_a_gf0
putFloat64le _msgEphemerisSbasDepA_a_gf1
$(deriveSBP 'msgEphemerisSbasDepA ''MsgEphemerisSbasDepA)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgEphemerisSbasDepA_" . P.stripPrefix "_msgEphemerisSbasDepA_"}
''MsgEphemerisSbasDepA)
$(makeLenses ''MsgEphemerisSbasDepA)
msgEphemerisGloDepA :: Word16
msgEphemerisGloDepA = 0x0083
data MsgEphemerisGloDepA = MsgEphemerisGloDepA
{ _msgEphemerisGloDepA_common :: !EphemerisCommonContentDepA
, _msgEphemerisGloDepA_gamma :: !Double
, _msgEphemerisGloDepA_tau :: !Double
, _msgEphemerisGloDepA_pos :: ![Double]
, _msgEphemerisGloDepA_vel :: ![Double]
, _msgEphemerisGloDepA_acc :: ![Double]
} deriving ( Show, Read, Eq )
instance Binary MsgEphemerisGloDepA where
get = do
_msgEphemerisGloDepA_common <- get
_msgEphemerisGloDepA_gamma <- getFloat64le
_msgEphemerisGloDepA_tau <- getFloat64le
_msgEphemerisGloDepA_pos <- replicateM 3 getFloat64le
_msgEphemerisGloDepA_vel <- replicateM 3 getFloat64le
_msgEphemerisGloDepA_acc <- replicateM 3 getFloat64le
return MsgEphemerisGloDepA {..}
put MsgEphemerisGloDepA {..} = do
put _msgEphemerisGloDepA_common
putFloat64le _msgEphemerisGloDepA_gamma
putFloat64le _msgEphemerisGloDepA_tau
mapM_ putFloat64le _msgEphemerisGloDepA_pos
mapM_ putFloat64le _msgEphemerisGloDepA_vel
mapM_ putFloat64le _msgEphemerisGloDepA_acc
$(deriveSBP 'msgEphemerisGloDepA ''MsgEphemerisGloDepA)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgEphemerisGloDepA_" . P.stripPrefix "_msgEphemerisGloDepA_"}
''MsgEphemerisGloDepA)
$(makeLenses ''MsgEphemerisGloDepA)
msgEphemerisSbas :: Word16
msgEphemerisSbas = 0x0084
data MsgEphemerisSbas = MsgEphemerisSbas
{ _msgEphemerisSbas_common :: !EphemerisCommonContent
, _msgEphemerisSbas_pos :: ![Double]
, _msgEphemerisSbas_vel :: ![Double]
, _msgEphemerisSbas_acc :: ![Double]
, _msgEphemerisSbas_a_gf0 :: !Double
, _msgEphemerisSbas_a_gf1 :: !Double
} deriving ( Show, Read, Eq )
instance Binary MsgEphemerisSbas where
get = do
_msgEphemerisSbas_common <- get
_msgEphemerisSbas_pos <- replicateM 3 getFloat64le
_msgEphemerisSbas_vel <- replicateM 3 getFloat64le
_msgEphemerisSbas_acc <- replicateM 3 getFloat64le
_msgEphemerisSbas_a_gf0 <- getFloat64le
_msgEphemerisSbas_a_gf1 <- getFloat64le
return MsgEphemerisSbas {..}
put MsgEphemerisSbas {..} = do
put _msgEphemerisSbas_common
mapM_ putFloat64le _msgEphemerisSbas_pos
mapM_ putFloat64le _msgEphemerisSbas_vel
mapM_ putFloat64le _msgEphemerisSbas_acc
putFloat64le _msgEphemerisSbas_a_gf0
putFloat64le _msgEphemerisSbas_a_gf1
$(deriveSBP 'msgEphemerisSbas ''MsgEphemerisSbas)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgEphemerisSbas_" . P.stripPrefix "_msgEphemerisSbas_"}
''MsgEphemerisSbas)
$(makeLenses ''MsgEphemerisSbas)
msgEphemerisGloDepB :: Word16
msgEphemerisGloDepB = 0x0085
data MsgEphemerisGloDepB = MsgEphemerisGloDepB
{ _msgEphemerisGloDepB_common :: !EphemerisCommonContent
, _msgEphemerisGloDepB_gamma :: !Double
, _msgEphemerisGloDepB_tau :: !Double
, _msgEphemerisGloDepB_pos :: ![Double]
, _msgEphemerisGloDepB_vel :: ![Double]
, _msgEphemerisGloDepB_acc :: ![Double]
} deriving ( Show, Read, Eq )
instance Binary MsgEphemerisGloDepB where
get = do
_msgEphemerisGloDepB_common <- get
_msgEphemerisGloDepB_gamma <- getFloat64le
_msgEphemerisGloDepB_tau <- getFloat64le
_msgEphemerisGloDepB_pos <- replicateM 3 getFloat64le
_msgEphemerisGloDepB_vel <- replicateM 3 getFloat64le
_msgEphemerisGloDepB_acc <- replicateM 3 getFloat64le
return MsgEphemerisGloDepB {..}
put MsgEphemerisGloDepB {..} = do
put _msgEphemerisGloDepB_common
putFloat64le _msgEphemerisGloDepB_gamma
putFloat64le _msgEphemerisGloDepB_tau
mapM_ putFloat64le _msgEphemerisGloDepB_pos
mapM_ putFloat64le _msgEphemerisGloDepB_vel
mapM_ putFloat64le _msgEphemerisGloDepB_acc
$(deriveSBP 'msgEphemerisGloDepB ''MsgEphemerisGloDepB)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgEphemerisGloDepB_" . P.stripPrefix "_msgEphemerisGloDepB_"}
''MsgEphemerisGloDepB)
$(makeLenses ''MsgEphemerisGloDepB)
msgEphemerisGloDepC :: Word16
msgEphemerisGloDepC = 0x0087
data MsgEphemerisGloDepC = MsgEphemerisGloDepC
{ _msgEphemerisGloDepC_common :: !EphemerisCommonContent
, _msgEphemerisGloDepC_gamma :: !Double
, _msgEphemerisGloDepC_tau :: !Double
, _msgEphemerisGloDepC_d_tau :: !Double
, _msgEphemerisGloDepC_pos :: ![Double]
, _msgEphemerisGloDepC_vel :: ![Double]
, _msgEphemerisGloDepC_acc :: ![Double]
, _msgEphemerisGloDepC_fcn :: !Word8
} deriving ( Show, Read, Eq )
instance Binary MsgEphemerisGloDepC where
get = do
_msgEphemerisGloDepC_common <- get
_msgEphemerisGloDepC_gamma <- getFloat64le
_msgEphemerisGloDepC_tau <- getFloat64le
_msgEphemerisGloDepC_d_tau <- getFloat64le
_msgEphemerisGloDepC_pos <- replicateM 3 getFloat64le
_msgEphemerisGloDepC_vel <- replicateM 3 getFloat64le
_msgEphemerisGloDepC_acc <- replicateM 3 getFloat64le
_msgEphemerisGloDepC_fcn <- getWord8
return MsgEphemerisGloDepC {..}
put MsgEphemerisGloDepC {..} = do
put _msgEphemerisGloDepC_common
putFloat64le _msgEphemerisGloDepC_gamma
putFloat64le _msgEphemerisGloDepC_tau
putFloat64le _msgEphemerisGloDepC_d_tau
mapM_ putFloat64le _msgEphemerisGloDepC_pos
mapM_ putFloat64le _msgEphemerisGloDepC_vel
mapM_ putFloat64le _msgEphemerisGloDepC_acc
putWord8 _msgEphemerisGloDepC_fcn
$(deriveSBP 'msgEphemerisGloDepC ''MsgEphemerisGloDepC)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgEphemerisGloDepC_" . P.stripPrefix "_msgEphemerisGloDepC_"}
''MsgEphemerisGloDepC)
$(makeLenses ''MsgEphemerisGloDepC)
msgEphemerisGlo :: Word16
msgEphemerisGlo = 0x0088
data MsgEphemerisGlo = MsgEphemerisGlo
{ _msgEphemerisGlo_common :: !EphemerisCommonContent
, _msgEphemerisGlo_gamma :: !Double
, _msgEphemerisGlo_tau :: !Double
, _msgEphemerisGlo_d_tau :: !Double
, _msgEphemerisGlo_pos :: ![Double]
, _msgEphemerisGlo_vel :: ![Double]
, _msgEphemerisGlo_acc :: ![Double]
, _msgEphemerisGlo_fcn :: !Word8
, _msgEphemerisGlo_iod :: !Word8
} deriving ( Show, Read, Eq )
instance Binary MsgEphemerisGlo where
get = do
_msgEphemerisGlo_common <- get
_msgEphemerisGlo_gamma <- getFloat64le
_msgEphemerisGlo_tau <- getFloat64le
_msgEphemerisGlo_d_tau <- getFloat64le
_msgEphemerisGlo_pos <- replicateM 3 getFloat64le
_msgEphemerisGlo_vel <- replicateM 3 getFloat64le
_msgEphemerisGlo_acc <- replicateM 3 getFloat64le
_msgEphemerisGlo_fcn <- getWord8
_msgEphemerisGlo_iod <- getWord8
return MsgEphemerisGlo {..}
put MsgEphemerisGlo {..} = do
put _msgEphemerisGlo_common
putFloat64le _msgEphemerisGlo_gamma
putFloat64le _msgEphemerisGlo_tau
putFloat64le _msgEphemerisGlo_d_tau
mapM_ putFloat64le _msgEphemerisGlo_pos
mapM_ putFloat64le _msgEphemerisGlo_vel
mapM_ putFloat64le _msgEphemerisGlo_acc
putWord8 _msgEphemerisGlo_fcn
putWord8 _msgEphemerisGlo_iod
$(deriveSBP 'msgEphemerisGlo ''MsgEphemerisGlo)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgEphemerisGlo_" . P.stripPrefix "_msgEphemerisGlo_"}
''MsgEphemerisGlo)
$(makeLenses ''MsgEphemerisGlo)
msgEphemerisDepD :: Word16
msgEphemerisDepD = 0x0080
data MsgEphemerisDepD = MsgEphemerisDepD
{ _msgEphemerisDepD_tgd :: !Double
, _msgEphemerisDepD_c_rs :: !Double
, _msgEphemerisDepD_c_rc :: !Double
, _msgEphemerisDepD_c_uc :: !Double
, _msgEphemerisDepD_c_us :: !Double
, _msgEphemerisDepD_c_ic :: !Double
, _msgEphemerisDepD_c_is :: !Double
, _msgEphemerisDepD_dn :: !Double
, _msgEphemerisDepD_m0 :: !Double
, _msgEphemerisDepD_ecc :: !Double
, _msgEphemerisDepD_sqrta :: !Double
, _msgEphemerisDepD_omega0 :: !Double
, _msgEphemerisDepD_omegadot :: !Double
, _msgEphemerisDepD_w :: !Double
, _msgEphemerisDepD_inc :: !Double
, _msgEphemerisDepD_inc_dot :: !Double
, _msgEphemerisDepD_af0 :: !Double
, _msgEphemerisDepD_af1 :: !Double
, _msgEphemerisDepD_af2 :: !Double
, _msgEphemerisDepD_toe_tow :: !Double
, _msgEphemerisDepD_toe_wn :: !Word16
, _msgEphemerisDepD_toc_tow :: !Double
, _msgEphemerisDepD_toc_wn :: !Word16
, _msgEphemerisDepD_valid :: !Word8
, _msgEphemerisDepD_healthy :: !Word8
, _msgEphemerisDepD_sid :: !GnssSignal
, _msgEphemerisDepD_iode :: !Word8
, _msgEphemerisDepD_iodc :: !Word16
, _msgEphemerisDepD_reserved :: !Word32
} deriving ( Show, Read, Eq )
instance Binary MsgEphemerisDepD where
get = do
_msgEphemerisDepD_tgd <- getFloat64le
_msgEphemerisDepD_c_rs <- getFloat64le
_msgEphemerisDepD_c_rc <- getFloat64le
_msgEphemerisDepD_c_uc <- getFloat64le
_msgEphemerisDepD_c_us <- getFloat64le
_msgEphemerisDepD_c_ic <- getFloat64le
_msgEphemerisDepD_c_is <- getFloat64le
_msgEphemerisDepD_dn <- getFloat64le
_msgEphemerisDepD_m0 <- getFloat64le
_msgEphemerisDepD_ecc <- getFloat64le
_msgEphemerisDepD_sqrta <- getFloat64le
_msgEphemerisDepD_omega0 <- getFloat64le
_msgEphemerisDepD_omegadot <- getFloat64le
_msgEphemerisDepD_w <- getFloat64le
_msgEphemerisDepD_inc <- getFloat64le
_msgEphemerisDepD_inc_dot <- getFloat64le
_msgEphemerisDepD_af0 <- getFloat64le
_msgEphemerisDepD_af1 <- getFloat64le
_msgEphemerisDepD_af2 <- getFloat64le
_msgEphemerisDepD_toe_tow <- getFloat64le
_msgEphemerisDepD_toe_wn <- getWord16le
_msgEphemerisDepD_toc_tow <- getFloat64le
_msgEphemerisDepD_toc_wn <- getWord16le
_msgEphemerisDepD_valid <- getWord8
_msgEphemerisDepD_healthy <- getWord8
_msgEphemerisDepD_sid <- get
_msgEphemerisDepD_iode <- getWord8
_msgEphemerisDepD_iodc <- getWord16le
_msgEphemerisDepD_reserved <- getWord32le
return MsgEphemerisDepD {..}
put MsgEphemerisDepD {..} = do
putFloat64le _msgEphemerisDepD_tgd
putFloat64le _msgEphemerisDepD_c_rs
putFloat64le _msgEphemerisDepD_c_rc
putFloat64le _msgEphemerisDepD_c_uc
putFloat64le _msgEphemerisDepD_c_us
putFloat64le _msgEphemerisDepD_c_ic
putFloat64le _msgEphemerisDepD_c_is
putFloat64le _msgEphemerisDepD_dn
putFloat64le _msgEphemerisDepD_m0
putFloat64le _msgEphemerisDepD_ecc
putFloat64le _msgEphemerisDepD_sqrta
putFloat64le _msgEphemerisDepD_omega0
putFloat64le _msgEphemerisDepD_omegadot
putFloat64le _msgEphemerisDepD_w
putFloat64le _msgEphemerisDepD_inc
putFloat64le _msgEphemerisDepD_inc_dot
putFloat64le _msgEphemerisDepD_af0
putFloat64le _msgEphemerisDepD_af1
putFloat64le _msgEphemerisDepD_af2
putFloat64le _msgEphemerisDepD_toe_tow
putWord16le _msgEphemerisDepD_toe_wn
putFloat64le _msgEphemerisDepD_toc_tow
putWord16le _msgEphemerisDepD_toc_wn
putWord8 _msgEphemerisDepD_valid
putWord8 _msgEphemerisDepD_healthy
put _msgEphemerisDepD_sid
putWord8 _msgEphemerisDepD_iode
putWord16le _msgEphemerisDepD_iodc
putWord32le _msgEphemerisDepD_reserved
$(deriveSBP 'msgEphemerisDepD ''MsgEphemerisDepD)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgEphemerisDepD_" . P.stripPrefix "_msgEphemerisDepD_"}
''MsgEphemerisDepD)
$(makeLenses ''MsgEphemerisDepD)
msgEphemerisDepA :: Word16
msgEphemerisDepA = 0x001A
data MsgEphemerisDepA = MsgEphemerisDepA
{ _msgEphemerisDepA_tgd :: !Double
, _msgEphemerisDepA_c_rs :: !Double
, _msgEphemerisDepA_c_rc :: !Double
, _msgEphemerisDepA_c_uc :: !Double
, _msgEphemerisDepA_c_us :: !Double
, _msgEphemerisDepA_c_ic :: !Double
, _msgEphemerisDepA_c_is :: !Double
, _msgEphemerisDepA_dn :: !Double
, _msgEphemerisDepA_m0 :: !Double
, _msgEphemerisDepA_ecc :: !Double
, _msgEphemerisDepA_sqrta :: !Double
, _msgEphemerisDepA_omega0 :: !Double
, _msgEphemerisDepA_omegadot :: !Double
, _msgEphemerisDepA_w :: !Double
, _msgEphemerisDepA_inc :: !Double
, _msgEphemerisDepA_inc_dot :: !Double
, _msgEphemerisDepA_af0 :: !Double
, _msgEphemerisDepA_af1 :: !Double
, _msgEphemerisDepA_af2 :: !Double
, _msgEphemerisDepA_toe_tow :: !Double
, _msgEphemerisDepA_toe_wn :: !Word16
, _msgEphemerisDepA_toc_tow :: !Double
, _msgEphemerisDepA_toc_wn :: !Word16
, _msgEphemerisDepA_valid :: !Word8
, _msgEphemerisDepA_healthy :: !Word8
, _msgEphemerisDepA_prn :: !Word8
} deriving ( Show, Read, Eq )
instance Binary MsgEphemerisDepA where
get = do
_msgEphemerisDepA_tgd <- getFloat64le
_msgEphemerisDepA_c_rs <- getFloat64le
_msgEphemerisDepA_c_rc <- getFloat64le
_msgEphemerisDepA_c_uc <- getFloat64le
_msgEphemerisDepA_c_us <- getFloat64le
_msgEphemerisDepA_c_ic <- getFloat64le
_msgEphemerisDepA_c_is <- getFloat64le
_msgEphemerisDepA_dn <- getFloat64le
_msgEphemerisDepA_m0 <- getFloat64le
_msgEphemerisDepA_ecc <- getFloat64le
_msgEphemerisDepA_sqrta <- getFloat64le
_msgEphemerisDepA_omega0 <- getFloat64le
_msgEphemerisDepA_omegadot <- getFloat64le
_msgEphemerisDepA_w <- getFloat64le
_msgEphemerisDepA_inc <- getFloat64le
_msgEphemerisDepA_inc_dot <- getFloat64le
_msgEphemerisDepA_af0 <- getFloat64le
_msgEphemerisDepA_af1 <- getFloat64le
_msgEphemerisDepA_af2 <- getFloat64le
_msgEphemerisDepA_toe_tow <- getFloat64le
_msgEphemerisDepA_toe_wn <- getWord16le
_msgEphemerisDepA_toc_tow <- getFloat64le
_msgEphemerisDepA_toc_wn <- getWord16le
_msgEphemerisDepA_valid <- getWord8
_msgEphemerisDepA_healthy <- getWord8
_msgEphemerisDepA_prn <- getWord8
return MsgEphemerisDepA {..}
put MsgEphemerisDepA {..} = do
putFloat64le _msgEphemerisDepA_tgd
putFloat64le _msgEphemerisDepA_c_rs
putFloat64le _msgEphemerisDepA_c_rc
putFloat64le _msgEphemerisDepA_c_uc
putFloat64le _msgEphemerisDepA_c_us
putFloat64le _msgEphemerisDepA_c_ic
putFloat64le _msgEphemerisDepA_c_is
putFloat64le _msgEphemerisDepA_dn
putFloat64le _msgEphemerisDepA_m0
putFloat64le _msgEphemerisDepA_ecc
putFloat64le _msgEphemerisDepA_sqrta
putFloat64le _msgEphemerisDepA_omega0
putFloat64le _msgEphemerisDepA_omegadot
putFloat64le _msgEphemerisDepA_w
putFloat64le _msgEphemerisDepA_inc
putFloat64le _msgEphemerisDepA_inc_dot
putFloat64le _msgEphemerisDepA_af0
putFloat64le _msgEphemerisDepA_af1
putFloat64le _msgEphemerisDepA_af2
putFloat64le _msgEphemerisDepA_toe_tow
putWord16le _msgEphemerisDepA_toe_wn
putFloat64le _msgEphemerisDepA_toc_tow
putWord16le _msgEphemerisDepA_toc_wn
putWord8 _msgEphemerisDepA_valid
putWord8 _msgEphemerisDepA_healthy
putWord8 _msgEphemerisDepA_prn
$(deriveSBP 'msgEphemerisDepA ''MsgEphemerisDepA)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgEphemerisDepA_" . P.stripPrefix "_msgEphemerisDepA_"}
''MsgEphemerisDepA)
$(makeLenses ''MsgEphemerisDepA)
msgEphemerisDepB :: Word16
msgEphemerisDepB = 0x0046
data MsgEphemerisDepB = MsgEphemerisDepB
{ _msgEphemerisDepB_tgd :: !Double
, _msgEphemerisDepB_c_rs :: !Double
, _msgEphemerisDepB_c_rc :: !Double
, _msgEphemerisDepB_c_uc :: !Double
, _msgEphemerisDepB_c_us :: !Double
, _msgEphemerisDepB_c_ic :: !Double
, _msgEphemerisDepB_c_is :: !Double
, _msgEphemerisDepB_dn :: !Double
, _msgEphemerisDepB_m0 :: !Double
, _msgEphemerisDepB_ecc :: !Double
, _msgEphemerisDepB_sqrta :: !Double
, _msgEphemerisDepB_omega0 :: !Double
, _msgEphemerisDepB_omegadot :: !Double
, _msgEphemerisDepB_w :: !Double
, _msgEphemerisDepB_inc :: !Double
, _msgEphemerisDepB_inc_dot :: !Double
, _msgEphemerisDepB_af0 :: !Double
, _msgEphemerisDepB_af1 :: !Double
, _msgEphemerisDepB_af2 :: !Double
, _msgEphemerisDepB_toe_tow :: !Double
, _msgEphemerisDepB_toe_wn :: !Word16
, _msgEphemerisDepB_toc_tow :: !Double
, _msgEphemerisDepB_toc_wn :: !Word16
, _msgEphemerisDepB_valid :: !Word8
, _msgEphemerisDepB_healthy :: !Word8
, _msgEphemerisDepB_prn :: !Word8
, _msgEphemerisDepB_iode :: !Word8
} deriving ( Show, Read, Eq )
instance Binary MsgEphemerisDepB where
get = do
_msgEphemerisDepB_tgd <- getFloat64le
_msgEphemerisDepB_c_rs <- getFloat64le
_msgEphemerisDepB_c_rc <- getFloat64le
_msgEphemerisDepB_c_uc <- getFloat64le
_msgEphemerisDepB_c_us <- getFloat64le
_msgEphemerisDepB_c_ic <- getFloat64le
_msgEphemerisDepB_c_is <- getFloat64le
_msgEphemerisDepB_dn <- getFloat64le
_msgEphemerisDepB_m0 <- getFloat64le
_msgEphemerisDepB_ecc <- getFloat64le
_msgEphemerisDepB_sqrta <- getFloat64le
_msgEphemerisDepB_omega0 <- getFloat64le
_msgEphemerisDepB_omegadot <- getFloat64le
_msgEphemerisDepB_w <- getFloat64le
_msgEphemerisDepB_inc <- getFloat64le
_msgEphemerisDepB_inc_dot <- getFloat64le
_msgEphemerisDepB_af0 <- getFloat64le
_msgEphemerisDepB_af1 <- getFloat64le
_msgEphemerisDepB_af2 <- getFloat64le
_msgEphemerisDepB_toe_tow <- getFloat64le
_msgEphemerisDepB_toe_wn <- getWord16le
_msgEphemerisDepB_toc_tow <- getFloat64le
_msgEphemerisDepB_toc_wn <- getWord16le
_msgEphemerisDepB_valid <- getWord8
_msgEphemerisDepB_healthy <- getWord8
_msgEphemerisDepB_prn <- getWord8
_msgEphemerisDepB_iode <- getWord8
return MsgEphemerisDepB {..}
put MsgEphemerisDepB {..} = do
putFloat64le _msgEphemerisDepB_tgd
putFloat64le _msgEphemerisDepB_c_rs
putFloat64le _msgEphemerisDepB_c_rc
putFloat64le _msgEphemerisDepB_c_uc
putFloat64le _msgEphemerisDepB_c_us
putFloat64le _msgEphemerisDepB_c_ic
putFloat64le _msgEphemerisDepB_c_is
putFloat64le _msgEphemerisDepB_dn
putFloat64le _msgEphemerisDepB_m0
putFloat64le _msgEphemerisDepB_ecc
putFloat64le _msgEphemerisDepB_sqrta
putFloat64le _msgEphemerisDepB_omega0
putFloat64le _msgEphemerisDepB_omegadot
putFloat64le _msgEphemerisDepB_w
putFloat64le _msgEphemerisDepB_inc
putFloat64le _msgEphemerisDepB_inc_dot
putFloat64le _msgEphemerisDepB_af0
putFloat64le _msgEphemerisDepB_af1
putFloat64le _msgEphemerisDepB_af2
putFloat64le _msgEphemerisDepB_toe_tow
putWord16le _msgEphemerisDepB_toe_wn
putFloat64le _msgEphemerisDepB_toc_tow
putWord16le _msgEphemerisDepB_toc_wn
putWord8 _msgEphemerisDepB_valid
putWord8 _msgEphemerisDepB_healthy
putWord8 _msgEphemerisDepB_prn
putWord8 _msgEphemerisDepB_iode
$(deriveSBP 'msgEphemerisDepB ''MsgEphemerisDepB)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgEphemerisDepB_" . P.stripPrefix "_msgEphemerisDepB_"}
''MsgEphemerisDepB)
$(makeLenses ''MsgEphemerisDepB)
msgEphemerisDepC :: Word16
msgEphemerisDepC = 0x0047
data MsgEphemerisDepC = MsgEphemerisDepC
{ _msgEphemerisDepC_tgd :: !Double
, _msgEphemerisDepC_c_rs :: !Double
, _msgEphemerisDepC_c_rc :: !Double
, _msgEphemerisDepC_c_uc :: !Double
, _msgEphemerisDepC_c_us :: !Double
, _msgEphemerisDepC_c_ic :: !Double
, _msgEphemerisDepC_c_is :: !Double
, _msgEphemerisDepC_dn :: !Double
, _msgEphemerisDepC_m0 :: !Double
, _msgEphemerisDepC_ecc :: !Double
, _msgEphemerisDepC_sqrta :: !Double
, _msgEphemerisDepC_omega0 :: !Double
, _msgEphemerisDepC_omegadot :: !Double
, _msgEphemerisDepC_w :: !Double
, _msgEphemerisDepC_inc :: !Double
, _msgEphemerisDepC_inc_dot :: !Double
, _msgEphemerisDepC_af0 :: !Double
, _msgEphemerisDepC_af1 :: !Double
, _msgEphemerisDepC_af2 :: !Double
, _msgEphemerisDepC_toe_tow :: !Double
, _msgEphemerisDepC_toe_wn :: !Word16
, _msgEphemerisDepC_toc_tow :: !Double
, _msgEphemerisDepC_toc_wn :: !Word16
, _msgEphemerisDepC_valid :: !Word8
, _msgEphemerisDepC_healthy :: !Word8
, _msgEphemerisDepC_sid :: !GnssSignal
, _msgEphemerisDepC_iode :: !Word8
, _msgEphemerisDepC_iodc :: !Word16
, _msgEphemerisDepC_reserved :: !Word32
} deriving ( Show, Read, Eq )
instance Binary MsgEphemerisDepC where
get = do
_msgEphemerisDepC_tgd <- getFloat64le
_msgEphemerisDepC_c_rs <- getFloat64le
_msgEphemerisDepC_c_rc <- getFloat64le
_msgEphemerisDepC_c_uc <- getFloat64le
_msgEphemerisDepC_c_us <- getFloat64le
_msgEphemerisDepC_c_ic <- getFloat64le
_msgEphemerisDepC_c_is <- getFloat64le
_msgEphemerisDepC_dn <- getFloat64le
_msgEphemerisDepC_m0 <- getFloat64le
_msgEphemerisDepC_ecc <- getFloat64le
_msgEphemerisDepC_sqrta <- getFloat64le
_msgEphemerisDepC_omega0 <- getFloat64le
_msgEphemerisDepC_omegadot <- getFloat64le
_msgEphemerisDepC_w <- getFloat64le
_msgEphemerisDepC_inc <- getFloat64le
_msgEphemerisDepC_inc_dot <- getFloat64le
_msgEphemerisDepC_af0 <- getFloat64le
_msgEphemerisDepC_af1 <- getFloat64le
_msgEphemerisDepC_af2 <- getFloat64le
_msgEphemerisDepC_toe_tow <- getFloat64le
_msgEphemerisDepC_toe_wn <- getWord16le
_msgEphemerisDepC_toc_tow <- getFloat64le
_msgEphemerisDepC_toc_wn <- getWord16le
_msgEphemerisDepC_valid <- getWord8
_msgEphemerisDepC_healthy <- getWord8
_msgEphemerisDepC_sid <- get
_msgEphemerisDepC_iode <- getWord8
_msgEphemerisDepC_iodc <- getWord16le
_msgEphemerisDepC_reserved <- getWord32le
return MsgEphemerisDepC {..}
put MsgEphemerisDepC {..} = do
putFloat64le _msgEphemerisDepC_tgd
putFloat64le _msgEphemerisDepC_c_rs
putFloat64le _msgEphemerisDepC_c_rc
putFloat64le _msgEphemerisDepC_c_uc
putFloat64le _msgEphemerisDepC_c_us
putFloat64le _msgEphemerisDepC_c_ic
putFloat64le _msgEphemerisDepC_c_is
putFloat64le _msgEphemerisDepC_dn
putFloat64le _msgEphemerisDepC_m0
putFloat64le _msgEphemerisDepC_ecc
putFloat64le _msgEphemerisDepC_sqrta
putFloat64le _msgEphemerisDepC_omega0
putFloat64le _msgEphemerisDepC_omegadot
putFloat64le _msgEphemerisDepC_w
putFloat64le _msgEphemerisDepC_inc
putFloat64le _msgEphemerisDepC_inc_dot
putFloat64le _msgEphemerisDepC_af0
putFloat64le _msgEphemerisDepC_af1
putFloat64le _msgEphemerisDepC_af2
putFloat64le _msgEphemerisDepC_toe_tow
putWord16le _msgEphemerisDepC_toe_wn
putFloat64le _msgEphemerisDepC_toc_tow
putWord16le _msgEphemerisDepC_toc_wn
putWord8 _msgEphemerisDepC_valid
putWord8 _msgEphemerisDepC_healthy
put _msgEphemerisDepC_sid
putWord8 _msgEphemerisDepC_iode
putWord16le _msgEphemerisDepC_iodc
putWord32le _msgEphemerisDepC_reserved
$(deriveSBP 'msgEphemerisDepC ''MsgEphemerisDepC)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgEphemerisDepC_" . P.stripPrefix "_msgEphemerisDepC_"}
''MsgEphemerisDepC)
$(makeLenses ''MsgEphemerisDepC)
data ObservationHeaderDep = ObservationHeaderDep
{ _observationHeaderDep_t :: !GpsTime
, _observationHeaderDep_n_obs :: !Word8
} deriving ( Show, Read, Eq )
instance Binary ObservationHeaderDep where
get = do
_observationHeaderDep_t <- get
_observationHeaderDep_n_obs <- getWord8
return ObservationHeaderDep {..}
put ObservationHeaderDep {..} = do
put _observationHeaderDep_t
putWord8 _observationHeaderDep_n_obs
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_observationHeaderDep_" . P.stripPrefix "_observationHeaderDep_"}
''ObservationHeaderDep)
$(makeLenses ''ObservationHeaderDep)
data CarrierPhaseDepA = CarrierPhaseDepA
{ _carrierPhaseDepA_i :: !Int32
, _carrierPhaseDepA_f :: !Word8
} deriving ( Show, Read, Eq )
instance Binary CarrierPhaseDepA where
get = do
_carrierPhaseDepA_i <- fromIntegral <$> getWord32le
_carrierPhaseDepA_f <- getWord8
return CarrierPhaseDepA {..}
put CarrierPhaseDepA {..} = do
putWord32le $ fromIntegral _carrierPhaseDepA_i
putWord8 _carrierPhaseDepA_f
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_carrierPhaseDepA_" . P.stripPrefix "_carrierPhaseDepA_"}
''CarrierPhaseDepA)
$(makeLenses ''CarrierPhaseDepA)
data PackedObsContentDepA = PackedObsContentDepA
{ _packedObsContentDepA_P :: !Word32
, _packedObsContentDepA_L :: !CarrierPhaseDepA
, _packedObsContentDepA_cn0 :: !Word8
, _packedObsContentDepA_lock :: !Word16
, _packedObsContentDepA_prn :: !Word8
} deriving ( Show, Read, Eq )
instance Binary PackedObsContentDepA where
get = do
_packedObsContentDepA_P <- getWord32le
_packedObsContentDepA_L <- get
_packedObsContentDepA_cn0 <- getWord8
_packedObsContentDepA_lock <- getWord16le
_packedObsContentDepA_prn <- getWord8
return PackedObsContentDepA {..}
put PackedObsContentDepA {..} = do
putWord32le _packedObsContentDepA_P
put _packedObsContentDepA_L
putWord8 _packedObsContentDepA_cn0
putWord16le _packedObsContentDepA_lock
putWord8 _packedObsContentDepA_prn
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_packedObsContentDepA_" . P.stripPrefix "_packedObsContentDepA_"}
''PackedObsContentDepA)
$(makeLenses ''PackedObsContentDepA)
data PackedObsContentDepB = PackedObsContentDepB
{ _packedObsContentDepB_P :: !Word32
, _packedObsContentDepB_L :: !CarrierPhaseDepA
, _packedObsContentDepB_cn0 :: !Word8
, _packedObsContentDepB_lock :: !Word16
, _packedObsContentDepB_sid :: !GnssSignal
} deriving ( Show, Read, Eq )
instance Binary PackedObsContentDepB where
get = do
_packedObsContentDepB_P <- getWord32le
_packedObsContentDepB_L <- get
_packedObsContentDepB_cn0 <- getWord8
_packedObsContentDepB_lock <- getWord16le
_packedObsContentDepB_sid <- get
return PackedObsContentDepB {..}
put PackedObsContentDepB {..} = do
putWord32le _packedObsContentDepB_P
put _packedObsContentDepB_L
putWord8 _packedObsContentDepB_cn0
putWord16le _packedObsContentDepB_lock
put _packedObsContentDepB_sid
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_packedObsContentDepB_" . P.stripPrefix "_packedObsContentDepB_"}
''PackedObsContentDepB)
$(makeLenses ''PackedObsContentDepB)
data PackedObsContentDepC = PackedObsContentDepC
{ _packedObsContentDepC_P :: !Word32
, _packedObsContentDepC_L :: !CarrierPhase
, _packedObsContentDepC_cn0 :: !Word8
, _packedObsContentDepC_lock :: !Word16
, _packedObsContentDepC_sid :: !GnssSignal
} deriving ( Show, Read, Eq )
instance Binary PackedObsContentDepC where
get = do
_packedObsContentDepC_P <- getWord32le
_packedObsContentDepC_L <- get
_packedObsContentDepC_cn0 <- getWord8
_packedObsContentDepC_lock <- getWord16le
_packedObsContentDepC_sid <- get
return PackedObsContentDepC {..}
put PackedObsContentDepC {..} = do
putWord32le _packedObsContentDepC_P
put _packedObsContentDepC_L
putWord8 _packedObsContentDepC_cn0
putWord16le _packedObsContentDepC_lock
put _packedObsContentDepC_sid
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_packedObsContentDepC_" . P.stripPrefix "_packedObsContentDepC_"}
''PackedObsContentDepC)
$(makeLenses ''PackedObsContentDepC)
msgObsDepA :: Word16
msgObsDepA = 0x0045
data MsgObsDepA = MsgObsDepA
{ _msgObsDepA_header :: !ObservationHeaderDep
, _msgObsDepA_obs :: ![PackedObsContentDepA]
} deriving ( Show, Read, Eq )
instance Binary MsgObsDepA where
get = do
_msgObsDepA_header <- get
_msgObsDepA_obs <- whileM (not <$> isEmpty) get
return MsgObsDepA {..}
put MsgObsDepA {..} = do
put _msgObsDepA_header
mapM_ put _msgObsDepA_obs
$(deriveSBP 'msgObsDepA ''MsgObsDepA)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgObsDepA_" . P.stripPrefix "_msgObsDepA_"}
''MsgObsDepA)
$(makeLenses ''MsgObsDepA)
msgObsDepB :: Word16
msgObsDepB = 0x0043
data MsgObsDepB = MsgObsDepB
{ _msgObsDepB_header :: !ObservationHeaderDep
, _msgObsDepB_obs :: ![PackedObsContentDepB]
} deriving ( Show, Read, Eq )
instance Binary MsgObsDepB where
get = do
_msgObsDepB_header <- get
_msgObsDepB_obs <- whileM (not <$> isEmpty) get
return MsgObsDepB {..}
put MsgObsDepB {..} = do
put _msgObsDepB_header
mapM_ put _msgObsDepB_obs
$(deriveSBP 'msgObsDepB ''MsgObsDepB)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgObsDepB_" . P.stripPrefix "_msgObsDepB_"}
''MsgObsDepB)
$(makeLenses ''MsgObsDepB)
msgObsDepC :: Word16
msgObsDepC = 0x0049
data MsgObsDepC = MsgObsDepC
{ _msgObsDepC_header :: !ObservationHeaderDep
, _msgObsDepC_obs :: ![PackedObsContentDepC]
} deriving ( Show, Read, Eq )
instance Binary MsgObsDepC where
get = do
_msgObsDepC_header <- get
_msgObsDepC_obs <- whileM (not <$> isEmpty) get
return MsgObsDepC {..}
put MsgObsDepC {..} = do
put _msgObsDepC_header
mapM_ put _msgObsDepC_obs
$(deriveSBP 'msgObsDepC ''MsgObsDepC)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgObsDepC_" . P.stripPrefix "_msgObsDepC_"}
''MsgObsDepC)
$(makeLenses ''MsgObsDepC)
msgIono :: Word16
msgIono = 0x0090
data MsgIono = MsgIono
{ _msgIono_t_nmct :: !GpsTimeSec
, _msgIono_a0 :: !Double
, _msgIono_a1 :: !Double
, _msgIono_a2 :: !Double
, _msgIono_a3 :: !Double
, _msgIono_b0 :: !Double
, _msgIono_b1 :: !Double
, _msgIono_b2 :: !Double
, _msgIono_b3 :: !Double
} deriving ( Show, Read, Eq )
instance Binary MsgIono where
get = do
_msgIono_t_nmct <- get
_msgIono_a0 <- getFloat64le
_msgIono_a1 <- getFloat64le
_msgIono_a2 <- getFloat64le
_msgIono_a3 <- getFloat64le
_msgIono_b0 <- getFloat64le
_msgIono_b1 <- getFloat64le
_msgIono_b2 <- getFloat64le
_msgIono_b3 <- getFloat64le
return MsgIono {..}
put MsgIono {..} = do
put _msgIono_t_nmct
putFloat64le _msgIono_a0
putFloat64le _msgIono_a1
putFloat64le _msgIono_a2
putFloat64le _msgIono_a3
putFloat64le _msgIono_b0
putFloat64le _msgIono_b1
putFloat64le _msgIono_b2
putFloat64le _msgIono_b3
$(deriveSBP 'msgIono ''MsgIono)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgIono_" . P.stripPrefix "_msgIono_"}
''MsgIono)
$(makeLenses ''MsgIono)
msgSvConfigurationGps :: Word16
msgSvConfigurationGps = 0x0091
data MsgSvConfigurationGps = MsgSvConfigurationGps
{ _msgSvConfigurationGps_t_nmct :: !GpsTimeSec
, _msgSvConfigurationGps_l2c_mask :: !Word32
} deriving ( Show, Read, Eq )
instance Binary MsgSvConfigurationGps where
get = do
_msgSvConfigurationGps_t_nmct <- get
_msgSvConfigurationGps_l2c_mask <- getWord32le
return MsgSvConfigurationGps {..}
put MsgSvConfigurationGps {..} = do
put _msgSvConfigurationGps_t_nmct
putWord32le _msgSvConfigurationGps_l2c_mask
$(deriveSBP 'msgSvConfigurationGps ''MsgSvConfigurationGps)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgSvConfigurationGps_" . P.stripPrefix "_msgSvConfigurationGps_"}
''MsgSvConfigurationGps)
$(makeLenses ''MsgSvConfigurationGps)
msgGroupDelayDepA :: Word16
msgGroupDelayDepA = 0x0092
data MsgGroupDelayDepA = MsgGroupDelayDepA
{ _msgGroupDelayDepA_t_op :: !GpsTime
, _msgGroupDelayDepA_prn :: !Word8
, _msgGroupDelayDepA_valid :: !Word8
, _msgGroupDelayDepA_tgd :: !Int16
, _msgGroupDelayDepA_isc_l1ca :: !Int16
, _msgGroupDelayDepA_isc_l2c :: !Int16
} deriving ( Show, Read, Eq )
instance Binary MsgGroupDelayDepA where
get = do
_msgGroupDelayDepA_t_op <- get
_msgGroupDelayDepA_prn <- getWord8
_msgGroupDelayDepA_valid <- getWord8
_msgGroupDelayDepA_tgd <- fromIntegral <$> getWord16le
_msgGroupDelayDepA_isc_l1ca <- fromIntegral <$> getWord16le
_msgGroupDelayDepA_isc_l2c <- fromIntegral <$> getWord16le
return MsgGroupDelayDepA {..}
put MsgGroupDelayDepA {..} = do
put _msgGroupDelayDepA_t_op
putWord8 _msgGroupDelayDepA_prn
putWord8 _msgGroupDelayDepA_valid
putWord16le $ fromIntegral _msgGroupDelayDepA_tgd
putWord16le $ fromIntegral _msgGroupDelayDepA_isc_l1ca
putWord16le $ fromIntegral _msgGroupDelayDepA_isc_l2c
$(deriveSBP 'msgGroupDelayDepA ''MsgGroupDelayDepA)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgGroupDelayDepA_" . P.stripPrefix "_msgGroupDelayDepA_"}
''MsgGroupDelayDepA)
$(makeLenses ''MsgGroupDelayDepA)
msgGroupDelay :: Word16
msgGroupDelay = 0x0093
data MsgGroupDelay = MsgGroupDelay
{ _msgGroupDelay_t_op :: !GpsTimeSec
, _msgGroupDelay_sid :: !GnssSignal
, _msgGroupDelay_valid :: !Word8
, _msgGroupDelay_tgd :: !Int16
, _msgGroupDelay_isc_l1ca :: !Int16
, _msgGroupDelay_isc_l2c :: !Int16
} deriving ( Show, Read, Eq )
instance Binary MsgGroupDelay where
get = do
_msgGroupDelay_t_op <- get
_msgGroupDelay_sid <- get
_msgGroupDelay_valid <- getWord8
_msgGroupDelay_tgd <- fromIntegral <$> getWord16le
_msgGroupDelay_isc_l1ca <- fromIntegral <$> getWord16le
_msgGroupDelay_isc_l2c <- fromIntegral <$> getWord16le
return MsgGroupDelay {..}
put MsgGroupDelay {..} = do
put _msgGroupDelay_t_op
put _msgGroupDelay_sid
putWord8 _msgGroupDelay_valid
putWord16le $ fromIntegral _msgGroupDelay_tgd
putWord16le $ fromIntegral _msgGroupDelay_isc_l1ca
putWord16le $ fromIntegral _msgGroupDelay_isc_l2c
$(deriveSBP 'msgGroupDelay ''MsgGroupDelay)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgGroupDelay_" . P.stripPrefix "_msgGroupDelay_"}
''MsgGroupDelay)
$(makeLenses ''MsgGroupDelay)
data AlmanacCommonContent = AlmanacCommonContent
{ _almanacCommonContent_sid :: !GnssSignal
, _almanacCommonContent_toa :: !GpsTimeSec
, _almanacCommonContent_ura :: !Double
, _almanacCommonContent_fit_interval :: !Word32
, _almanacCommonContent_valid :: !Word8
, _almanacCommonContent_health_bits :: !Word8
} deriving ( Show, Read, Eq )
instance Binary AlmanacCommonContent where
get = do
_almanacCommonContent_sid <- get
_almanacCommonContent_toa <- get
_almanacCommonContent_ura <- getFloat64le
_almanacCommonContent_fit_interval <- getWord32le
_almanacCommonContent_valid <- getWord8
_almanacCommonContent_health_bits <- getWord8
return AlmanacCommonContent {..}
put AlmanacCommonContent {..} = do
put _almanacCommonContent_sid
put _almanacCommonContent_toa
putFloat64le _almanacCommonContent_ura
putWord32le _almanacCommonContent_fit_interval
putWord8 _almanacCommonContent_valid
putWord8 _almanacCommonContent_health_bits
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_almanacCommonContent_" . P.stripPrefix "_almanacCommonContent_"}
''AlmanacCommonContent)
$(makeLenses ''AlmanacCommonContent)
msgAlmanacGps :: Word16
msgAlmanacGps = 0x0070
data MsgAlmanacGps = MsgAlmanacGps
{ _msgAlmanacGps_common :: !AlmanacCommonContent
, _msgAlmanacGps_m0 :: !Double
, _msgAlmanacGps_ecc :: !Double
, _msgAlmanacGps_sqrta :: !Double
, _msgAlmanacGps_omega0 :: !Double
, _msgAlmanacGps_omegadot :: !Double
, _msgAlmanacGps_w :: !Double
, _msgAlmanacGps_inc :: !Double
, _msgAlmanacGps_af0 :: !Double
, _msgAlmanacGps_af1 :: !Double
} deriving ( Show, Read, Eq )
instance Binary MsgAlmanacGps where
get = do
_msgAlmanacGps_common <- get
_msgAlmanacGps_m0 <- getFloat64le
_msgAlmanacGps_ecc <- getFloat64le
_msgAlmanacGps_sqrta <- getFloat64le
_msgAlmanacGps_omega0 <- getFloat64le
_msgAlmanacGps_omegadot <- getFloat64le
_msgAlmanacGps_w <- getFloat64le
_msgAlmanacGps_inc <- getFloat64le
_msgAlmanacGps_af0 <- getFloat64le
_msgAlmanacGps_af1 <- getFloat64le
return MsgAlmanacGps {..}
put MsgAlmanacGps {..} = do
put _msgAlmanacGps_common
putFloat64le _msgAlmanacGps_m0
putFloat64le _msgAlmanacGps_ecc
putFloat64le _msgAlmanacGps_sqrta
putFloat64le _msgAlmanacGps_omega0
putFloat64le _msgAlmanacGps_omegadot
putFloat64le _msgAlmanacGps_w
putFloat64le _msgAlmanacGps_inc
putFloat64le _msgAlmanacGps_af0
putFloat64le _msgAlmanacGps_af1
$(deriveSBP 'msgAlmanacGps ''MsgAlmanacGps)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgAlmanacGps_" . P.stripPrefix "_msgAlmanacGps_"}
''MsgAlmanacGps)
$(makeLenses ''MsgAlmanacGps)
msgAlmanacGlo :: Word16
msgAlmanacGlo = 0x0071
data MsgAlmanacGlo = MsgAlmanacGlo
{ _msgAlmanacGlo_common :: !AlmanacCommonContent
, _msgAlmanacGlo_lambda_na :: !Double
, _msgAlmanacGlo_t_lambda_na :: !Double
, _msgAlmanacGlo_i :: !Double
, _msgAlmanacGlo_t :: !Double
, _msgAlmanacGlo_t_dot :: !Double
, _msgAlmanacGlo_epsilon :: !Double
, _msgAlmanacGlo_omega :: !Double
} deriving ( Show, Read, Eq )
instance Binary MsgAlmanacGlo where
get = do
_msgAlmanacGlo_common <- get
_msgAlmanacGlo_lambda_na <- getFloat64le
_msgAlmanacGlo_t_lambda_na <- getFloat64le
_msgAlmanacGlo_i <- getFloat64le
_msgAlmanacGlo_t <- getFloat64le
_msgAlmanacGlo_t_dot <- getFloat64le
_msgAlmanacGlo_epsilon <- getFloat64le
_msgAlmanacGlo_omega <- getFloat64le
return MsgAlmanacGlo {..}
put MsgAlmanacGlo {..} = do
put _msgAlmanacGlo_common
putFloat64le _msgAlmanacGlo_lambda_na
putFloat64le _msgAlmanacGlo_t_lambda_na
putFloat64le _msgAlmanacGlo_i
putFloat64le _msgAlmanacGlo_t
putFloat64le _msgAlmanacGlo_t_dot
putFloat64le _msgAlmanacGlo_epsilon
putFloat64le _msgAlmanacGlo_omega
$(deriveSBP 'msgAlmanacGlo ''MsgAlmanacGlo)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgAlmanacGlo_" . P.stripPrefix "_msgAlmanacGlo_"}
''MsgAlmanacGlo)
$(makeLenses ''MsgAlmanacGlo)
msgFcnsGlo :: Word16
msgFcnsGlo = 0x0072
data MsgFcnsGlo = MsgFcnsGlo
{ _msgFcnsGlo_wn :: !Word16
, _msgFcnsGlo_tow_ms :: !Word32
, _msgFcnsGlo_fcns :: ![Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgFcnsGlo where
get = do
_msgFcnsGlo_wn <- getWord16le
_msgFcnsGlo_tow_ms <- getWord32le
_msgFcnsGlo_fcns <- replicateM 32 getWord8
return MsgFcnsGlo {..}
put MsgFcnsGlo {..} = do
putWord16le _msgFcnsGlo_wn
putWord32le _msgFcnsGlo_tow_ms
mapM_ putWord8 _msgFcnsGlo_fcns
$(deriveSBP 'msgFcnsGlo ''MsgFcnsGlo)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFcnsGlo_" . P.stripPrefix "_msgFcnsGlo_"}
''MsgFcnsGlo)
$(makeLenses ''MsgFcnsGlo)