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

-- |
-- Module:      SwiftNav.SBP.Tracking
-- Copyright:   Copyright (C) 2015-2021 Swift Navigation, Inc.
-- License:     MIT
-- Contact:     https://support.swiftnav.com
-- Stability:   experimental
-- Portability: portable
--
-- \< Satellite code and carrier-phase tracking messages from the device. \>

module SwiftNav.SBP.Tracking
  ( module SwiftNav.SBP.Tracking
  ) 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) #-}


msgTrackingStateDetailedDepA :: Word16
msgTrackingStateDetailedDepA :: Word16
msgTrackingStateDetailedDepA = Word16
0x0021

-- | SBP class for message MSG_TRACKING_STATE_DETAILED_DEP_A (0x0021).
--
-- The tracking message returns a set tracking channel parameters for a single
-- tracking channel useful for debugging issues.
data MsgTrackingStateDetailedDepA = MsgTrackingStateDetailedDepA
  { MsgTrackingStateDetailedDepA -> Word64
_msgTrackingStateDetailedDepA_recv_time  :: !Word64
    -- ^ Receiver clock time.
  , MsgTrackingStateDetailedDepA -> GpsTime
_msgTrackingStateDetailedDepA_tot        :: !GpsTime
    -- ^ Time of transmission of signal from satellite. TOW only valid when TOW
    -- status is decoded or propagated. WN only valid when week number valid
    -- flag is set.
  , MsgTrackingStateDetailedDepA -> Word32
_msgTrackingStateDetailedDepA_P          :: !Word32
    -- ^ Pseudorange observation. Valid only when pseudorange valid flag is set.
  , MsgTrackingStateDetailedDepA -> Word16
_msgTrackingStateDetailedDepA_P_std      :: !Word16
    -- ^ Pseudorange observation standard deviation. Valid only when pseudorange
    -- valid flag is set.
  , MsgTrackingStateDetailedDepA -> CarrierPhase
_msgTrackingStateDetailedDepA_L          :: !CarrierPhase
    -- ^ Carrier phase observation with typical sign convention. Valid only when
    -- PLL pessimistic lock is achieved.
  , MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_cn0        :: !Word8
    -- ^ Carrier-to-Noise density
  , MsgTrackingStateDetailedDepA -> Word16
_msgTrackingStateDetailedDepA_lock       :: !Word16
    -- ^ Lock time. It is encoded according to DF402 from the RTCM 10403.2
    -- Amendment 2 specification. Valid values range from 0 to 15.
  , MsgTrackingStateDetailedDepA -> GnssSignal
_msgTrackingStateDetailedDepA_sid        :: !GnssSignal
    -- ^ GNSS signal identifier.
  , MsgTrackingStateDetailedDepA -> Int32
_msgTrackingStateDetailedDepA_doppler    :: !Int32
    -- ^ Carrier Doppler frequency.
  , MsgTrackingStateDetailedDepA -> Word16
_msgTrackingStateDetailedDepA_doppler_std :: !Word16
    -- ^ Carrier Doppler frequency standard deviation.
  , MsgTrackingStateDetailedDepA -> Word32
_msgTrackingStateDetailedDepA_uptime     :: !Word32
    -- ^ Number of seconds of continuous tracking. Specifies how much time
    -- signal is in continuous track.
  , MsgTrackingStateDetailedDepA -> Int16
_msgTrackingStateDetailedDepA_clock_offset :: !Int16
    -- ^ TCXO clock offset. Valid only when valid clock valid flag is set.
  , MsgTrackingStateDetailedDepA -> Int16
_msgTrackingStateDetailedDepA_clock_drift :: !Int16
    -- ^ TCXO clock drift. Valid only when valid clock valid flag is set.
  , MsgTrackingStateDetailedDepA -> Word16
_msgTrackingStateDetailedDepA_corr_spacing :: !Word16
    -- ^ Early-Prompt (EP) and Prompt-Late (PL) correlators spacing.
  , MsgTrackingStateDetailedDepA -> Int8
_msgTrackingStateDetailedDepA_acceleration :: !Int8
    -- ^ Acceleration. Valid only when acceleration valid flag is set.
  , MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_sync_flags :: !Word8
    -- ^ Synchronization status flags.
  , MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_tow_flags  :: !Word8
    -- ^ TOW status flags.
  , MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_track_flags :: !Word8
    -- ^ Tracking loop status flags.
  , MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_nav_flags  :: !Word8
    -- ^ Navigation data status flags.
  , MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_pset_flags :: !Word8
    -- ^ Parameters sets flags.
  , MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_misc_flags :: !Word8
    -- ^ Miscellaneous flags.
  } deriving ( Int -> MsgTrackingStateDetailedDepA -> ShowS
[MsgTrackingStateDetailedDepA] -> ShowS
MsgTrackingStateDetailedDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgTrackingStateDetailedDepA] -> ShowS
$cshowList :: [MsgTrackingStateDetailedDepA] -> ShowS
show :: MsgTrackingStateDetailedDepA -> String
$cshow :: MsgTrackingStateDetailedDepA -> String
showsPrec :: Int -> MsgTrackingStateDetailedDepA -> ShowS
$cshowsPrec :: Int -> MsgTrackingStateDetailedDepA -> ShowS
Show, ReadPrec [MsgTrackingStateDetailedDepA]
ReadPrec MsgTrackingStateDetailedDepA
Int -> ReadS MsgTrackingStateDetailedDepA
ReadS [MsgTrackingStateDetailedDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgTrackingStateDetailedDepA]
$creadListPrec :: ReadPrec [MsgTrackingStateDetailedDepA]
readPrec :: ReadPrec MsgTrackingStateDetailedDepA
$creadPrec :: ReadPrec MsgTrackingStateDetailedDepA
readList :: ReadS [MsgTrackingStateDetailedDepA]
$creadList :: ReadS [MsgTrackingStateDetailedDepA]
readsPrec :: Int -> ReadS MsgTrackingStateDetailedDepA
$creadsPrec :: Int -> ReadS MsgTrackingStateDetailedDepA
Read, MsgTrackingStateDetailedDepA
-> MsgTrackingStateDetailedDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgTrackingStateDetailedDepA
-> MsgTrackingStateDetailedDepA -> Bool
$c/= :: MsgTrackingStateDetailedDepA
-> MsgTrackingStateDetailedDepA -> Bool
== :: MsgTrackingStateDetailedDepA
-> MsgTrackingStateDetailedDepA -> Bool
$c== :: MsgTrackingStateDetailedDepA
-> MsgTrackingStateDetailedDepA -> Bool
Eq )

instance Binary MsgTrackingStateDetailedDepA where
  get :: Get MsgTrackingStateDetailedDepA
get = do
    Word64
_msgTrackingStateDetailedDepA_recv_time <- Get Word64
getWord64le
    GpsTime
_msgTrackingStateDetailedDepA_tot <- forall t. Binary t => Get t
get
    Word32
_msgTrackingStateDetailedDepA_P <- Get Word32
getWord32le
    Word16
_msgTrackingStateDetailedDepA_P_std <- Get Word16
getWord16le
    CarrierPhase
_msgTrackingStateDetailedDepA_L <- forall t. Binary t => Get t
get
    Word8
_msgTrackingStateDetailedDepA_cn0 <- Get Word8
getWord8
    Word16
_msgTrackingStateDetailedDepA_lock <- Get Word16
getWord16le
    GnssSignal
_msgTrackingStateDetailedDepA_sid <- forall t. Binary t => Get t
get
    Int32
_msgTrackingStateDetailedDepA_doppler <- (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)
    Word16
_msgTrackingStateDetailedDepA_doppler_std <- Get Word16
getWord16le
    Word32
_msgTrackingStateDetailedDepA_uptime <- Get Word32
getWord32le
    Int16
_msgTrackingStateDetailedDepA_clock_offset <- (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
_msgTrackingStateDetailedDepA_clock_drift <- (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)
    Word16
_msgTrackingStateDetailedDepA_corr_spacing <- Get Word16
getWord16le
    Int8
_msgTrackingStateDetailedDepA_acceleration <- (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)
    Word8
_msgTrackingStateDetailedDepA_sync_flags <- Get Word8
getWord8
    Word8
_msgTrackingStateDetailedDepA_tow_flags <- Get Word8
getWord8
    Word8
_msgTrackingStateDetailedDepA_track_flags <- Get Word8
getWord8
    Word8
_msgTrackingStateDetailedDepA_nav_flags <- Get Word8
getWord8
    Word8
_msgTrackingStateDetailedDepA_pset_flags <- Get Word8
getWord8
    Word8
_msgTrackingStateDetailedDepA_misc_flags <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgTrackingStateDetailedDepA {Int8
Int16
Int32
Word8
Word16
Word32
Word64
GnssSignal
GpsTime
CarrierPhase
_msgTrackingStateDetailedDepA_misc_flags :: Word8
_msgTrackingStateDetailedDepA_pset_flags :: Word8
_msgTrackingStateDetailedDepA_nav_flags :: Word8
_msgTrackingStateDetailedDepA_track_flags :: Word8
_msgTrackingStateDetailedDepA_tow_flags :: Word8
_msgTrackingStateDetailedDepA_sync_flags :: Word8
_msgTrackingStateDetailedDepA_acceleration :: Int8
_msgTrackingStateDetailedDepA_corr_spacing :: Word16
_msgTrackingStateDetailedDepA_clock_drift :: Int16
_msgTrackingStateDetailedDepA_clock_offset :: Int16
_msgTrackingStateDetailedDepA_uptime :: Word32
_msgTrackingStateDetailedDepA_doppler_std :: Word16
_msgTrackingStateDetailedDepA_doppler :: Int32
_msgTrackingStateDetailedDepA_sid :: GnssSignal
_msgTrackingStateDetailedDepA_lock :: Word16
_msgTrackingStateDetailedDepA_cn0 :: Word8
_msgTrackingStateDetailedDepA_L :: CarrierPhase
_msgTrackingStateDetailedDepA_P_std :: Word16
_msgTrackingStateDetailedDepA_P :: Word32
_msgTrackingStateDetailedDepA_tot :: GpsTime
_msgTrackingStateDetailedDepA_recv_time :: Word64
_msgTrackingStateDetailedDepA_misc_flags :: Word8
_msgTrackingStateDetailedDepA_pset_flags :: Word8
_msgTrackingStateDetailedDepA_nav_flags :: Word8
_msgTrackingStateDetailedDepA_track_flags :: Word8
_msgTrackingStateDetailedDepA_tow_flags :: Word8
_msgTrackingStateDetailedDepA_sync_flags :: Word8
_msgTrackingStateDetailedDepA_acceleration :: Int8
_msgTrackingStateDetailedDepA_corr_spacing :: Word16
_msgTrackingStateDetailedDepA_clock_drift :: Int16
_msgTrackingStateDetailedDepA_clock_offset :: Int16
_msgTrackingStateDetailedDepA_uptime :: Word32
_msgTrackingStateDetailedDepA_doppler_std :: Word16
_msgTrackingStateDetailedDepA_doppler :: Int32
_msgTrackingStateDetailedDepA_sid :: GnssSignal
_msgTrackingStateDetailedDepA_lock :: Word16
_msgTrackingStateDetailedDepA_cn0 :: Word8
_msgTrackingStateDetailedDepA_L :: CarrierPhase
_msgTrackingStateDetailedDepA_P_std :: Word16
_msgTrackingStateDetailedDepA_P :: Word32
_msgTrackingStateDetailedDepA_tot :: GpsTime
_msgTrackingStateDetailedDepA_recv_time :: Word64
..}

  put :: MsgTrackingStateDetailedDepA -> Put
put MsgTrackingStateDetailedDepA {Int8
Int16
Int32
Word8
Word16
Word32
Word64
GnssSignal
GpsTime
CarrierPhase
_msgTrackingStateDetailedDepA_misc_flags :: Word8
_msgTrackingStateDetailedDepA_pset_flags :: Word8
_msgTrackingStateDetailedDepA_nav_flags :: Word8
_msgTrackingStateDetailedDepA_track_flags :: Word8
_msgTrackingStateDetailedDepA_tow_flags :: Word8
_msgTrackingStateDetailedDepA_sync_flags :: Word8
_msgTrackingStateDetailedDepA_acceleration :: Int8
_msgTrackingStateDetailedDepA_corr_spacing :: Word16
_msgTrackingStateDetailedDepA_clock_drift :: Int16
_msgTrackingStateDetailedDepA_clock_offset :: Int16
_msgTrackingStateDetailedDepA_uptime :: Word32
_msgTrackingStateDetailedDepA_doppler_std :: Word16
_msgTrackingStateDetailedDepA_doppler :: Int32
_msgTrackingStateDetailedDepA_sid :: GnssSignal
_msgTrackingStateDetailedDepA_lock :: Word16
_msgTrackingStateDetailedDepA_cn0 :: Word8
_msgTrackingStateDetailedDepA_L :: CarrierPhase
_msgTrackingStateDetailedDepA_P_std :: Word16
_msgTrackingStateDetailedDepA_P :: Word32
_msgTrackingStateDetailedDepA_tot :: GpsTime
_msgTrackingStateDetailedDepA_recv_time :: Word64
_msgTrackingStateDetailedDepA_misc_flags :: MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_pset_flags :: MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_nav_flags :: MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_track_flags :: MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_tow_flags :: MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_sync_flags :: MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_acceleration :: MsgTrackingStateDetailedDepA -> Int8
_msgTrackingStateDetailedDepA_corr_spacing :: MsgTrackingStateDetailedDepA -> Word16
_msgTrackingStateDetailedDepA_clock_drift :: MsgTrackingStateDetailedDepA -> Int16
_msgTrackingStateDetailedDepA_clock_offset :: MsgTrackingStateDetailedDepA -> Int16
_msgTrackingStateDetailedDepA_uptime :: MsgTrackingStateDetailedDepA -> Word32
_msgTrackingStateDetailedDepA_doppler_std :: MsgTrackingStateDetailedDepA -> Word16
_msgTrackingStateDetailedDepA_doppler :: MsgTrackingStateDetailedDepA -> Int32
_msgTrackingStateDetailedDepA_sid :: MsgTrackingStateDetailedDepA -> GnssSignal
_msgTrackingStateDetailedDepA_lock :: MsgTrackingStateDetailedDepA -> Word16
_msgTrackingStateDetailedDepA_cn0 :: MsgTrackingStateDetailedDepA -> Word8
_msgTrackingStateDetailedDepA_L :: MsgTrackingStateDetailedDepA -> CarrierPhase
_msgTrackingStateDetailedDepA_P_std :: MsgTrackingStateDetailedDepA -> Word16
_msgTrackingStateDetailedDepA_P :: MsgTrackingStateDetailedDepA -> Word32
_msgTrackingStateDetailedDepA_tot :: MsgTrackingStateDetailedDepA -> GpsTime
_msgTrackingStateDetailedDepA_recv_time :: MsgTrackingStateDetailedDepA -> Word64
..} = do
    Word64 -> Put
putWord64le Word64
_msgTrackingStateDetailedDepA_recv_time
    forall t. Binary t => t -> Put
put GpsTime
_msgTrackingStateDetailedDepA_tot
    Word32 -> Put
putWord32le Word32
_msgTrackingStateDetailedDepA_P
    Word16 -> Put
putWord16le Word16
_msgTrackingStateDetailedDepA_P_std
    forall t. Binary t => t -> Put
put CarrierPhase
_msgTrackingStateDetailedDepA_L
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDepA_cn0
    Word16 -> Put
putWord16le Word16
_msgTrackingStateDetailedDepA_lock
    forall t. Binary t => t -> Put
put GnssSignal
_msgTrackingStateDetailedDepA_sid
    (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
_msgTrackingStateDetailedDepA_doppler
    Word16 -> Put
putWord16le Word16
_msgTrackingStateDetailedDepA_doppler_std
    Word32 -> Put
putWord32le Word32
_msgTrackingStateDetailedDepA_uptime
    (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
_msgTrackingStateDetailedDepA_clock_offset
    (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
_msgTrackingStateDetailedDepA_clock_drift
    Word16 -> Put
putWord16le Word16
_msgTrackingStateDetailedDepA_corr_spacing
    (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
_msgTrackingStateDetailedDepA_acceleration
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDepA_sync_flags
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDepA_tow_flags
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDepA_track_flags
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDepA_nav_flags
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDepA_pset_flags
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDepA_misc_flags

$(makeSBP 'msgTrackingStateDetailedDepA ''MsgTrackingStateDetailedDepA)
$(makeJSON "_msgTrackingStateDetailedDepA_" ''MsgTrackingStateDetailedDepA)
$(makeLenses ''MsgTrackingStateDetailedDepA)

msgTrackingStateDetailedDep :: Word16
msgTrackingStateDetailedDep :: Word16
msgTrackingStateDetailedDep = Word16
0x0011

-- | SBP class for message MSG_TRACKING_STATE_DETAILED_DEP (0x0011).
--
-- Deprecated.
data MsgTrackingStateDetailedDep = MsgTrackingStateDetailedDep
  { MsgTrackingStateDetailedDep -> Word64
_msgTrackingStateDetailedDep_recv_time  :: !Word64
    -- ^ Receiver clock time.
  , MsgTrackingStateDetailedDep -> GpsTimeDep
_msgTrackingStateDetailedDep_tot        :: !GpsTimeDep
    -- ^ Time of transmission of signal from satellite. TOW only valid when TOW
    -- status is decoded or propagated. WN only valid when week number valid
    -- flag is set.
  , MsgTrackingStateDetailedDep -> Word32
_msgTrackingStateDetailedDep_P          :: !Word32
    -- ^ Pseudorange observation. Valid only when pseudorange valid flag is set.
  , MsgTrackingStateDetailedDep -> Word16
_msgTrackingStateDetailedDep_P_std      :: !Word16
    -- ^ Pseudorange observation standard deviation. Valid only when pseudorange
    -- valid flag is set.
  , MsgTrackingStateDetailedDep -> CarrierPhase
_msgTrackingStateDetailedDep_L          :: !CarrierPhase
    -- ^ Carrier phase observation with typical sign convention. Valid only when
    -- PLL pessimistic lock is achieved.
  , MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_cn0        :: !Word8
    -- ^ Carrier-to-Noise density
  , MsgTrackingStateDetailedDep -> Word16
_msgTrackingStateDetailedDep_lock       :: !Word16
    -- ^ Lock time. It is encoded according to DF402 from the RTCM 10403.2
    -- Amendment 2 specification. Valid values range from 0 to 15.
  , MsgTrackingStateDetailedDep -> GnssSignalDep
_msgTrackingStateDetailedDep_sid        :: !GnssSignalDep
    -- ^ GNSS signal identifier.
  , MsgTrackingStateDetailedDep -> Int32
_msgTrackingStateDetailedDep_doppler    :: !Int32
    -- ^ Carrier Doppler frequency.
  , MsgTrackingStateDetailedDep -> Word16
_msgTrackingStateDetailedDep_doppler_std :: !Word16
    -- ^ Carrier Doppler frequency standard deviation.
  , MsgTrackingStateDetailedDep -> Word32
_msgTrackingStateDetailedDep_uptime     :: !Word32
    -- ^ Number of seconds of continuous tracking. Specifies how much time
    -- signal is in continuous track.
  , MsgTrackingStateDetailedDep -> Int16
_msgTrackingStateDetailedDep_clock_offset :: !Int16
    -- ^ TCXO clock offset. Valid only when valid clock valid flag is set.
  , MsgTrackingStateDetailedDep -> Int16
_msgTrackingStateDetailedDep_clock_drift :: !Int16
    -- ^ TCXO clock drift. Valid only when valid clock valid flag is set.
  , MsgTrackingStateDetailedDep -> Word16
_msgTrackingStateDetailedDep_corr_spacing :: !Word16
    -- ^ Early-Prompt (EP) and Prompt-Late (PL) correlators spacing.
  , MsgTrackingStateDetailedDep -> Int8
_msgTrackingStateDetailedDep_acceleration :: !Int8
    -- ^ Acceleration. Valid only when acceleration valid flag is set.
  , MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_sync_flags :: !Word8
    -- ^ Synchronization status flags.
  , MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_tow_flags  :: !Word8
    -- ^ TOW status flags.
  , MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_track_flags :: !Word8
    -- ^ Tracking loop status flags.
  , MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_nav_flags  :: !Word8
    -- ^ Navigation data status flags.
  , MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_pset_flags :: !Word8
    -- ^ Parameters sets flags.
  , MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_misc_flags :: !Word8
    -- ^ Miscellaneous flags.
  } deriving ( Int -> MsgTrackingStateDetailedDep -> ShowS
[MsgTrackingStateDetailedDep] -> ShowS
MsgTrackingStateDetailedDep -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgTrackingStateDetailedDep] -> ShowS
$cshowList :: [MsgTrackingStateDetailedDep] -> ShowS
show :: MsgTrackingStateDetailedDep -> String
$cshow :: MsgTrackingStateDetailedDep -> String
showsPrec :: Int -> MsgTrackingStateDetailedDep -> ShowS
$cshowsPrec :: Int -> MsgTrackingStateDetailedDep -> ShowS
Show, ReadPrec [MsgTrackingStateDetailedDep]
ReadPrec MsgTrackingStateDetailedDep
Int -> ReadS MsgTrackingStateDetailedDep
ReadS [MsgTrackingStateDetailedDep]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgTrackingStateDetailedDep]
$creadListPrec :: ReadPrec [MsgTrackingStateDetailedDep]
readPrec :: ReadPrec MsgTrackingStateDetailedDep
$creadPrec :: ReadPrec MsgTrackingStateDetailedDep
readList :: ReadS [MsgTrackingStateDetailedDep]
$creadList :: ReadS [MsgTrackingStateDetailedDep]
readsPrec :: Int -> ReadS MsgTrackingStateDetailedDep
$creadsPrec :: Int -> ReadS MsgTrackingStateDetailedDep
Read, MsgTrackingStateDetailedDep -> MsgTrackingStateDetailedDep -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgTrackingStateDetailedDep -> MsgTrackingStateDetailedDep -> Bool
$c/= :: MsgTrackingStateDetailedDep -> MsgTrackingStateDetailedDep -> Bool
== :: MsgTrackingStateDetailedDep -> MsgTrackingStateDetailedDep -> Bool
$c== :: MsgTrackingStateDetailedDep -> MsgTrackingStateDetailedDep -> Bool
Eq )

instance Binary MsgTrackingStateDetailedDep where
  get :: Get MsgTrackingStateDetailedDep
get = do
    Word64
_msgTrackingStateDetailedDep_recv_time <- Get Word64
getWord64le
    GpsTimeDep
_msgTrackingStateDetailedDep_tot <- forall t. Binary t => Get t
get
    Word32
_msgTrackingStateDetailedDep_P <- Get Word32
getWord32le
    Word16
_msgTrackingStateDetailedDep_P_std <- Get Word16
getWord16le
    CarrierPhase
_msgTrackingStateDetailedDep_L <- forall t. Binary t => Get t
get
    Word8
_msgTrackingStateDetailedDep_cn0 <- Get Word8
getWord8
    Word16
_msgTrackingStateDetailedDep_lock <- Get Word16
getWord16le
    GnssSignalDep
_msgTrackingStateDetailedDep_sid <- forall t. Binary t => Get t
get
    Int32
_msgTrackingStateDetailedDep_doppler <- (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)
    Word16
_msgTrackingStateDetailedDep_doppler_std <- Get Word16
getWord16le
    Word32
_msgTrackingStateDetailedDep_uptime <- Get Word32
getWord32le
    Int16
_msgTrackingStateDetailedDep_clock_offset <- (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
_msgTrackingStateDetailedDep_clock_drift <- (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)
    Word16
_msgTrackingStateDetailedDep_corr_spacing <- Get Word16
getWord16le
    Int8
_msgTrackingStateDetailedDep_acceleration <- (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)
    Word8
_msgTrackingStateDetailedDep_sync_flags <- Get Word8
getWord8
    Word8
_msgTrackingStateDetailedDep_tow_flags <- Get Word8
getWord8
    Word8
_msgTrackingStateDetailedDep_track_flags <- Get Word8
getWord8
    Word8
_msgTrackingStateDetailedDep_nav_flags <- Get Word8
getWord8
    Word8
_msgTrackingStateDetailedDep_pset_flags <- Get Word8
getWord8
    Word8
_msgTrackingStateDetailedDep_misc_flags <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgTrackingStateDetailedDep {Int8
Int16
Int32
Word8
Word16
Word32
Word64
GnssSignalDep
GpsTimeDep
CarrierPhase
_msgTrackingStateDetailedDep_misc_flags :: Word8
_msgTrackingStateDetailedDep_pset_flags :: Word8
_msgTrackingStateDetailedDep_nav_flags :: Word8
_msgTrackingStateDetailedDep_track_flags :: Word8
_msgTrackingStateDetailedDep_tow_flags :: Word8
_msgTrackingStateDetailedDep_sync_flags :: Word8
_msgTrackingStateDetailedDep_acceleration :: Int8
_msgTrackingStateDetailedDep_corr_spacing :: Word16
_msgTrackingStateDetailedDep_clock_drift :: Int16
_msgTrackingStateDetailedDep_clock_offset :: Int16
_msgTrackingStateDetailedDep_uptime :: Word32
_msgTrackingStateDetailedDep_doppler_std :: Word16
_msgTrackingStateDetailedDep_doppler :: Int32
_msgTrackingStateDetailedDep_sid :: GnssSignalDep
_msgTrackingStateDetailedDep_lock :: Word16
_msgTrackingStateDetailedDep_cn0 :: Word8
_msgTrackingStateDetailedDep_L :: CarrierPhase
_msgTrackingStateDetailedDep_P_std :: Word16
_msgTrackingStateDetailedDep_P :: Word32
_msgTrackingStateDetailedDep_tot :: GpsTimeDep
_msgTrackingStateDetailedDep_recv_time :: Word64
_msgTrackingStateDetailedDep_misc_flags :: Word8
_msgTrackingStateDetailedDep_pset_flags :: Word8
_msgTrackingStateDetailedDep_nav_flags :: Word8
_msgTrackingStateDetailedDep_track_flags :: Word8
_msgTrackingStateDetailedDep_tow_flags :: Word8
_msgTrackingStateDetailedDep_sync_flags :: Word8
_msgTrackingStateDetailedDep_acceleration :: Int8
_msgTrackingStateDetailedDep_corr_spacing :: Word16
_msgTrackingStateDetailedDep_clock_drift :: Int16
_msgTrackingStateDetailedDep_clock_offset :: Int16
_msgTrackingStateDetailedDep_uptime :: Word32
_msgTrackingStateDetailedDep_doppler_std :: Word16
_msgTrackingStateDetailedDep_doppler :: Int32
_msgTrackingStateDetailedDep_sid :: GnssSignalDep
_msgTrackingStateDetailedDep_lock :: Word16
_msgTrackingStateDetailedDep_cn0 :: Word8
_msgTrackingStateDetailedDep_L :: CarrierPhase
_msgTrackingStateDetailedDep_P_std :: Word16
_msgTrackingStateDetailedDep_P :: Word32
_msgTrackingStateDetailedDep_tot :: GpsTimeDep
_msgTrackingStateDetailedDep_recv_time :: Word64
..}

  put :: MsgTrackingStateDetailedDep -> Put
put MsgTrackingStateDetailedDep {Int8
Int16
Int32
Word8
Word16
Word32
Word64
GnssSignalDep
GpsTimeDep
CarrierPhase
_msgTrackingStateDetailedDep_misc_flags :: Word8
_msgTrackingStateDetailedDep_pset_flags :: Word8
_msgTrackingStateDetailedDep_nav_flags :: Word8
_msgTrackingStateDetailedDep_track_flags :: Word8
_msgTrackingStateDetailedDep_tow_flags :: Word8
_msgTrackingStateDetailedDep_sync_flags :: Word8
_msgTrackingStateDetailedDep_acceleration :: Int8
_msgTrackingStateDetailedDep_corr_spacing :: Word16
_msgTrackingStateDetailedDep_clock_drift :: Int16
_msgTrackingStateDetailedDep_clock_offset :: Int16
_msgTrackingStateDetailedDep_uptime :: Word32
_msgTrackingStateDetailedDep_doppler_std :: Word16
_msgTrackingStateDetailedDep_doppler :: Int32
_msgTrackingStateDetailedDep_sid :: GnssSignalDep
_msgTrackingStateDetailedDep_lock :: Word16
_msgTrackingStateDetailedDep_cn0 :: Word8
_msgTrackingStateDetailedDep_L :: CarrierPhase
_msgTrackingStateDetailedDep_P_std :: Word16
_msgTrackingStateDetailedDep_P :: Word32
_msgTrackingStateDetailedDep_tot :: GpsTimeDep
_msgTrackingStateDetailedDep_recv_time :: Word64
_msgTrackingStateDetailedDep_misc_flags :: MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_pset_flags :: MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_nav_flags :: MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_track_flags :: MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_tow_flags :: MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_sync_flags :: MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_acceleration :: MsgTrackingStateDetailedDep -> Int8
_msgTrackingStateDetailedDep_corr_spacing :: MsgTrackingStateDetailedDep -> Word16
_msgTrackingStateDetailedDep_clock_drift :: MsgTrackingStateDetailedDep -> Int16
_msgTrackingStateDetailedDep_clock_offset :: MsgTrackingStateDetailedDep -> Int16
_msgTrackingStateDetailedDep_uptime :: MsgTrackingStateDetailedDep -> Word32
_msgTrackingStateDetailedDep_doppler_std :: MsgTrackingStateDetailedDep -> Word16
_msgTrackingStateDetailedDep_doppler :: MsgTrackingStateDetailedDep -> Int32
_msgTrackingStateDetailedDep_sid :: MsgTrackingStateDetailedDep -> GnssSignalDep
_msgTrackingStateDetailedDep_lock :: MsgTrackingStateDetailedDep -> Word16
_msgTrackingStateDetailedDep_cn0 :: MsgTrackingStateDetailedDep -> Word8
_msgTrackingStateDetailedDep_L :: MsgTrackingStateDetailedDep -> CarrierPhase
_msgTrackingStateDetailedDep_P_std :: MsgTrackingStateDetailedDep -> Word16
_msgTrackingStateDetailedDep_P :: MsgTrackingStateDetailedDep -> Word32
_msgTrackingStateDetailedDep_tot :: MsgTrackingStateDetailedDep -> GpsTimeDep
_msgTrackingStateDetailedDep_recv_time :: MsgTrackingStateDetailedDep -> Word64
..} = do
    Word64 -> Put
putWord64le Word64
_msgTrackingStateDetailedDep_recv_time
    forall t. Binary t => t -> Put
put GpsTimeDep
_msgTrackingStateDetailedDep_tot
    Word32 -> Put
putWord32le Word32
_msgTrackingStateDetailedDep_P
    Word16 -> Put
putWord16le Word16
_msgTrackingStateDetailedDep_P_std
    forall t. Binary t => t -> Put
put CarrierPhase
_msgTrackingStateDetailedDep_L
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDep_cn0
    Word16 -> Put
putWord16le Word16
_msgTrackingStateDetailedDep_lock
    forall t. Binary t => t -> Put
put GnssSignalDep
_msgTrackingStateDetailedDep_sid
    (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
_msgTrackingStateDetailedDep_doppler
    Word16 -> Put
putWord16le Word16
_msgTrackingStateDetailedDep_doppler_std
    Word32 -> Put
putWord32le Word32
_msgTrackingStateDetailedDep_uptime
    (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
_msgTrackingStateDetailedDep_clock_offset
    (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
_msgTrackingStateDetailedDep_clock_drift
    Word16 -> Put
putWord16le Word16
_msgTrackingStateDetailedDep_corr_spacing
    (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
_msgTrackingStateDetailedDep_acceleration
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDep_sync_flags
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDep_tow_flags
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDep_track_flags
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDep_nav_flags
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDep_pset_flags
    Word8 -> Put
putWord8 Word8
_msgTrackingStateDetailedDep_misc_flags

$(makeSBP 'msgTrackingStateDetailedDep ''MsgTrackingStateDetailedDep)
$(makeJSON "_msgTrackingStateDetailedDep_" ''MsgTrackingStateDetailedDep)
$(makeLenses ''MsgTrackingStateDetailedDep)

-- | TrackingChannelState.
--
-- Tracking channel state for a specific satellite signal and measured signal
-- power.
data TrackingChannelState = TrackingChannelState
  { TrackingChannelState -> GnssSignal
_trackingChannelState_sid :: !GnssSignal
    -- ^ GNSS signal being tracked
  , TrackingChannelState -> Word8
_trackingChannelState_fcn :: !Word8
    -- ^ Frequency channel number (GLONASS only)
  , TrackingChannelState -> Word8
_trackingChannelState_cn0 :: !Word8
    -- ^ Carrier-to-Noise density.  Zero implies invalid cn0.
  } deriving ( Int -> TrackingChannelState -> ShowS
[TrackingChannelState] -> ShowS
TrackingChannelState -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TrackingChannelState] -> ShowS
$cshowList :: [TrackingChannelState] -> ShowS
show :: TrackingChannelState -> String
$cshow :: TrackingChannelState -> String
showsPrec :: Int -> TrackingChannelState -> ShowS
$cshowsPrec :: Int -> TrackingChannelState -> ShowS
Show, ReadPrec [TrackingChannelState]
ReadPrec TrackingChannelState
Int -> ReadS TrackingChannelState
ReadS [TrackingChannelState]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TrackingChannelState]
$creadListPrec :: ReadPrec [TrackingChannelState]
readPrec :: ReadPrec TrackingChannelState
$creadPrec :: ReadPrec TrackingChannelState
readList :: ReadS [TrackingChannelState]
$creadList :: ReadS [TrackingChannelState]
readsPrec :: Int -> ReadS TrackingChannelState
$creadsPrec :: Int -> ReadS TrackingChannelState
Read, TrackingChannelState -> TrackingChannelState -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TrackingChannelState -> TrackingChannelState -> Bool
$c/= :: TrackingChannelState -> TrackingChannelState -> Bool
== :: TrackingChannelState -> TrackingChannelState -> Bool
$c== :: TrackingChannelState -> TrackingChannelState -> Bool
Eq )

instance Binary TrackingChannelState where
  get :: Get TrackingChannelState
get = do
    GnssSignal
_trackingChannelState_sid <- forall t. Binary t => Get t
get
    Word8
_trackingChannelState_fcn <- Get Word8
getWord8
    Word8
_trackingChannelState_cn0 <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure TrackingChannelState {Word8
GnssSignal
_trackingChannelState_cn0 :: Word8
_trackingChannelState_fcn :: Word8
_trackingChannelState_sid :: GnssSignal
_trackingChannelState_cn0 :: Word8
_trackingChannelState_fcn :: Word8
_trackingChannelState_sid :: GnssSignal
..}

  put :: TrackingChannelState -> Put
put TrackingChannelState {Word8
GnssSignal
_trackingChannelState_cn0 :: Word8
_trackingChannelState_fcn :: Word8
_trackingChannelState_sid :: GnssSignal
_trackingChannelState_cn0 :: TrackingChannelState -> Word8
_trackingChannelState_fcn :: TrackingChannelState -> Word8
_trackingChannelState_sid :: TrackingChannelState -> GnssSignal
..} = do
    forall t. Binary t => t -> Put
put GnssSignal
_trackingChannelState_sid
    Word8 -> Put
putWord8 Word8
_trackingChannelState_fcn
    Word8 -> Put
putWord8 Word8
_trackingChannelState_cn0

$(makeJSON "_trackingChannelState_" ''TrackingChannelState)
$(makeLenses ''TrackingChannelState)

msgTrackingState :: Word16
msgTrackingState :: Word16
msgTrackingState = Word16
0x0041

-- | SBP class for message MSG_TRACKING_STATE (0x0041).
--
-- The tracking message returns a variable-length array of tracking channel
-- states. It reports status and carrier-to-noise density measurements for all
-- tracked satellites.
data MsgTrackingState = MsgTrackingState
  { MsgTrackingState -> [TrackingChannelState]
_msgTrackingState_states :: ![TrackingChannelState]
    -- ^ Signal tracking channel state
  } deriving ( Int -> MsgTrackingState -> ShowS
[MsgTrackingState] -> ShowS
MsgTrackingState -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgTrackingState] -> ShowS
$cshowList :: [MsgTrackingState] -> ShowS
show :: MsgTrackingState -> String
$cshow :: MsgTrackingState -> String
showsPrec :: Int -> MsgTrackingState -> ShowS
$cshowsPrec :: Int -> MsgTrackingState -> ShowS
Show, ReadPrec [MsgTrackingState]
ReadPrec MsgTrackingState
Int -> ReadS MsgTrackingState
ReadS [MsgTrackingState]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgTrackingState]
$creadListPrec :: ReadPrec [MsgTrackingState]
readPrec :: ReadPrec MsgTrackingState
$creadPrec :: ReadPrec MsgTrackingState
readList :: ReadS [MsgTrackingState]
$creadList :: ReadS [MsgTrackingState]
readsPrec :: Int -> ReadS MsgTrackingState
$creadsPrec :: Int -> ReadS MsgTrackingState
Read, MsgTrackingState -> MsgTrackingState -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgTrackingState -> MsgTrackingState -> Bool
$c/= :: MsgTrackingState -> MsgTrackingState -> Bool
== :: MsgTrackingState -> MsgTrackingState -> Bool
$c== :: MsgTrackingState -> MsgTrackingState -> Bool
Eq )

instance Binary MsgTrackingState where
  get :: Get MsgTrackingState
get = do
    [TrackingChannelState]
_msgTrackingState_states <- 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 MsgTrackingState {[TrackingChannelState]
_msgTrackingState_states :: [TrackingChannelState]
_msgTrackingState_states :: [TrackingChannelState]
..}

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

$(makeSBP 'msgTrackingState ''MsgTrackingState)
$(makeJSON "_msgTrackingState_" ''MsgTrackingState)
$(makeLenses ''MsgTrackingState)

-- | MeasurementState.
--
-- Measurement Engine tracking channel state for a specific satellite signal
-- and measured signal power. The mesid field for Glonass can either carry the
-- FCN as 100 + FCN where FCN is in [-7, +6] or the Slot ID (from 1 to 28).
data MeasurementState = MeasurementState
  { MeasurementState -> GnssSignal
_measurementState_mesid :: !GnssSignal
    -- ^ Measurement Engine GNSS signal being tracked (carries either Glonass
    -- FCN or SLOT)
  , MeasurementState -> Word8
_measurementState_cn0 :: !Word8
    -- ^ Carrier-to-Noise density.  Zero implies invalid cn0.
  } deriving ( Int -> MeasurementState -> ShowS
[MeasurementState] -> ShowS
MeasurementState -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MeasurementState] -> ShowS
$cshowList :: [MeasurementState] -> ShowS
show :: MeasurementState -> String
$cshow :: MeasurementState -> String
showsPrec :: Int -> MeasurementState -> ShowS
$cshowsPrec :: Int -> MeasurementState -> ShowS
Show, ReadPrec [MeasurementState]
ReadPrec MeasurementState
Int -> ReadS MeasurementState
ReadS [MeasurementState]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MeasurementState]
$creadListPrec :: ReadPrec [MeasurementState]
readPrec :: ReadPrec MeasurementState
$creadPrec :: ReadPrec MeasurementState
readList :: ReadS [MeasurementState]
$creadList :: ReadS [MeasurementState]
readsPrec :: Int -> ReadS MeasurementState
$creadsPrec :: Int -> ReadS MeasurementState
Read, MeasurementState -> MeasurementState -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MeasurementState -> MeasurementState -> Bool
$c/= :: MeasurementState -> MeasurementState -> Bool
== :: MeasurementState -> MeasurementState -> Bool
$c== :: MeasurementState -> MeasurementState -> Bool
Eq )

instance Binary MeasurementState where
  get :: Get MeasurementState
get = do
    GnssSignal
_measurementState_mesid <- forall t. Binary t => Get t
get
    Word8
_measurementState_cn0 <- Get Word8
getWord8
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MeasurementState {Word8
GnssSignal
_measurementState_cn0 :: Word8
_measurementState_mesid :: GnssSignal
_measurementState_cn0 :: Word8
_measurementState_mesid :: GnssSignal
..}

  put :: MeasurementState -> Put
put MeasurementState {Word8
GnssSignal
_measurementState_cn0 :: Word8
_measurementState_mesid :: GnssSignal
_measurementState_cn0 :: MeasurementState -> Word8
_measurementState_mesid :: MeasurementState -> GnssSignal
..} = do
    forall t. Binary t => t -> Put
put GnssSignal
_measurementState_mesid
    Word8 -> Put
putWord8 Word8
_measurementState_cn0

$(makeJSON "_measurementState_" ''MeasurementState)
$(makeLenses ''MeasurementState)

msgMeasurementState :: Word16
msgMeasurementState :: Word16
msgMeasurementState = Word16
0x0061

-- | SBP class for message MSG_MEASUREMENT_STATE (0x0061).
--
-- The tracking message returns a variable-length array of tracking channel
-- states. It reports status and carrier-to-noise density measurements for all
-- tracked satellites.
data MsgMeasurementState = MsgMeasurementState
  { MsgMeasurementState -> [MeasurementState]
_msgMeasurementState_states :: ![MeasurementState]
    -- ^ ME signal tracking channel state
  } deriving ( Int -> MsgMeasurementState -> ShowS
[MsgMeasurementState] -> ShowS
MsgMeasurementState -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgMeasurementState] -> ShowS
$cshowList :: [MsgMeasurementState] -> ShowS
show :: MsgMeasurementState -> String
$cshow :: MsgMeasurementState -> String
showsPrec :: Int -> MsgMeasurementState -> ShowS
$cshowsPrec :: Int -> MsgMeasurementState -> ShowS
Show, ReadPrec [MsgMeasurementState]
ReadPrec MsgMeasurementState
Int -> ReadS MsgMeasurementState
ReadS [MsgMeasurementState]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgMeasurementState]
$creadListPrec :: ReadPrec [MsgMeasurementState]
readPrec :: ReadPrec MsgMeasurementState
$creadPrec :: ReadPrec MsgMeasurementState
readList :: ReadS [MsgMeasurementState]
$creadList :: ReadS [MsgMeasurementState]
readsPrec :: Int -> ReadS MsgMeasurementState
$creadsPrec :: Int -> ReadS MsgMeasurementState
Read, MsgMeasurementState -> MsgMeasurementState -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgMeasurementState -> MsgMeasurementState -> Bool
$c/= :: MsgMeasurementState -> MsgMeasurementState -> Bool
== :: MsgMeasurementState -> MsgMeasurementState -> Bool
$c== :: MsgMeasurementState -> MsgMeasurementState -> Bool
Eq )

instance Binary MsgMeasurementState where
  get :: Get MsgMeasurementState
get = do
    [MeasurementState]
_msgMeasurementState_states <- 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 MsgMeasurementState {[MeasurementState]
_msgMeasurementState_states :: [MeasurementState]
_msgMeasurementState_states :: [MeasurementState]
..}

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

$(makeSBP 'msgMeasurementState ''MsgMeasurementState)
$(makeJSON "_msgMeasurementState_" ''MsgMeasurementState)
$(makeLenses ''MsgMeasurementState)

-- | TrackingChannelCorrelation.
--
-- Structure containing in-phase and quadrature correlation components.
data TrackingChannelCorrelation = TrackingChannelCorrelation
  { TrackingChannelCorrelation -> Int16
_trackingChannelCorrelation_I :: !Int16
    -- ^ In-phase correlation
  , TrackingChannelCorrelation -> Int16
_trackingChannelCorrelation_Q :: !Int16
    -- ^ Quadrature correlation
  } deriving ( Int -> TrackingChannelCorrelation -> ShowS
[TrackingChannelCorrelation] -> ShowS
TrackingChannelCorrelation -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TrackingChannelCorrelation] -> ShowS
$cshowList :: [TrackingChannelCorrelation] -> ShowS
show :: TrackingChannelCorrelation -> String
$cshow :: TrackingChannelCorrelation -> String
showsPrec :: Int -> TrackingChannelCorrelation -> ShowS
$cshowsPrec :: Int -> TrackingChannelCorrelation -> ShowS
Show, ReadPrec [TrackingChannelCorrelation]
ReadPrec TrackingChannelCorrelation
Int -> ReadS TrackingChannelCorrelation
ReadS [TrackingChannelCorrelation]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TrackingChannelCorrelation]
$creadListPrec :: ReadPrec [TrackingChannelCorrelation]
readPrec :: ReadPrec TrackingChannelCorrelation
$creadPrec :: ReadPrec TrackingChannelCorrelation
readList :: ReadS [TrackingChannelCorrelation]
$creadList :: ReadS [TrackingChannelCorrelation]
readsPrec :: Int -> ReadS TrackingChannelCorrelation
$creadsPrec :: Int -> ReadS TrackingChannelCorrelation
Read, TrackingChannelCorrelation -> TrackingChannelCorrelation -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TrackingChannelCorrelation -> TrackingChannelCorrelation -> Bool
$c/= :: TrackingChannelCorrelation -> TrackingChannelCorrelation -> Bool
== :: TrackingChannelCorrelation -> TrackingChannelCorrelation -> Bool
$c== :: TrackingChannelCorrelation -> TrackingChannelCorrelation -> Bool
Eq )

instance Binary TrackingChannelCorrelation where
  get :: Get TrackingChannelCorrelation
get = do
    Int16
_trackingChannelCorrelation_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)
    Int16
_trackingChannelCorrelation_Q <- (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 TrackingChannelCorrelation {Int16
_trackingChannelCorrelation_Q :: Int16
_trackingChannelCorrelation_I :: Int16
_trackingChannelCorrelation_Q :: Int16
_trackingChannelCorrelation_I :: Int16
..}

  put :: TrackingChannelCorrelation -> Put
put TrackingChannelCorrelation {Int16
_trackingChannelCorrelation_Q :: Int16
_trackingChannelCorrelation_I :: Int16
_trackingChannelCorrelation_Q :: TrackingChannelCorrelation -> Int16
_trackingChannelCorrelation_I :: TrackingChannelCorrelation -> 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
_trackingChannelCorrelation_I
    (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
_trackingChannelCorrelation_Q

$(makeJSON "_trackingChannelCorrelation_" ''TrackingChannelCorrelation)
$(makeLenses ''TrackingChannelCorrelation)

msgTrackingIq :: Word16
msgTrackingIq :: Word16
msgTrackingIq = Word16
0x002D

-- | SBP class for message MSG_TRACKING_IQ (0x002D).
--
-- When enabled, a tracking channel can output the correlations at each update
-- interval.
data MsgTrackingIq = MsgTrackingIq
  { MsgTrackingIq -> Word8
_msgTrackingIq_channel :: !Word8
    -- ^ Tracking channel of origin
  , MsgTrackingIq -> GnssSignal
_msgTrackingIq_sid   :: !GnssSignal
    -- ^ GNSS signal identifier
  , MsgTrackingIq -> [TrackingChannelCorrelation]
_msgTrackingIq_corrs :: ![TrackingChannelCorrelation]
    -- ^ Early, Prompt and Late correlations
  } deriving ( Int -> MsgTrackingIq -> ShowS
[MsgTrackingIq] -> ShowS
MsgTrackingIq -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgTrackingIq] -> ShowS
$cshowList :: [MsgTrackingIq] -> ShowS
show :: MsgTrackingIq -> String
$cshow :: MsgTrackingIq -> String
showsPrec :: Int -> MsgTrackingIq -> ShowS
$cshowsPrec :: Int -> MsgTrackingIq -> ShowS
Show, ReadPrec [MsgTrackingIq]
ReadPrec MsgTrackingIq
Int -> ReadS MsgTrackingIq
ReadS [MsgTrackingIq]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgTrackingIq]
$creadListPrec :: ReadPrec [MsgTrackingIq]
readPrec :: ReadPrec MsgTrackingIq
$creadPrec :: ReadPrec MsgTrackingIq
readList :: ReadS [MsgTrackingIq]
$creadList :: ReadS [MsgTrackingIq]
readsPrec :: Int -> ReadS MsgTrackingIq
$creadsPrec :: Int -> ReadS MsgTrackingIq
Read, MsgTrackingIq -> MsgTrackingIq -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgTrackingIq -> MsgTrackingIq -> Bool
$c/= :: MsgTrackingIq -> MsgTrackingIq -> Bool
== :: MsgTrackingIq -> MsgTrackingIq -> Bool
$c== :: MsgTrackingIq -> MsgTrackingIq -> Bool
Eq )

instance Binary MsgTrackingIq where
  get :: Get MsgTrackingIq
get = do
    Word8
_msgTrackingIq_channel <- Get Word8
getWord8
    GnssSignal
_msgTrackingIq_sid <- forall t. Binary t => Get t
get
    [TrackingChannelCorrelation]
_msgTrackingIq_corrs <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgTrackingIq {[TrackingChannelCorrelation]
Word8
GnssSignal
_msgTrackingIq_corrs :: [TrackingChannelCorrelation]
_msgTrackingIq_sid :: GnssSignal
_msgTrackingIq_channel :: Word8
_msgTrackingIq_corrs :: [TrackingChannelCorrelation]
_msgTrackingIq_sid :: GnssSignal
_msgTrackingIq_channel :: Word8
..}

  put :: MsgTrackingIq -> Put
put MsgTrackingIq {[TrackingChannelCorrelation]
Word8
GnssSignal
_msgTrackingIq_corrs :: [TrackingChannelCorrelation]
_msgTrackingIq_sid :: GnssSignal
_msgTrackingIq_channel :: Word8
_msgTrackingIq_corrs :: MsgTrackingIq -> [TrackingChannelCorrelation]
_msgTrackingIq_sid :: MsgTrackingIq -> GnssSignal
_msgTrackingIq_channel :: MsgTrackingIq -> Word8
..} = do
    Word8 -> Put
putWord8 Word8
_msgTrackingIq_channel
    forall t. Binary t => t -> Put
put GnssSignal
_msgTrackingIq_sid
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ forall t. Binary t => t -> Put
put [TrackingChannelCorrelation]
_msgTrackingIq_corrs

$(makeSBP 'msgTrackingIq ''MsgTrackingIq)
$(makeJSON "_msgTrackingIq_" ''MsgTrackingIq)
$(makeLenses ''MsgTrackingIq)

-- | TrackingChannelCorrelationDep.
--
-- Structure containing in-phase and quadrature correlation components.
data TrackingChannelCorrelationDep = TrackingChannelCorrelationDep
  { TrackingChannelCorrelationDep -> Int32
_trackingChannelCorrelationDep_I :: !Int32
    -- ^ In-phase correlation
  , TrackingChannelCorrelationDep -> Int32
_trackingChannelCorrelationDep_Q :: !Int32
    -- ^ Quadrature correlation
  } deriving ( Int -> TrackingChannelCorrelationDep -> ShowS
[TrackingChannelCorrelationDep] -> ShowS
TrackingChannelCorrelationDep -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TrackingChannelCorrelationDep] -> ShowS
$cshowList :: [TrackingChannelCorrelationDep] -> ShowS
show :: TrackingChannelCorrelationDep -> String
$cshow :: TrackingChannelCorrelationDep -> String
showsPrec :: Int -> TrackingChannelCorrelationDep -> ShowS
$cshowsPrec :: Int -> TrackingChannelCorrelationDep -> ShowS
Show, ReadPrec [TrackingChannelCorrelationDep]
ReadPrec TrackingChannelCorrelationDep
Int -> ReadS TrackingChannelCorrelationDep
ReadS [TrackingChannelCorrelationDep]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TrackingChannelCorrelationDep]
$creadListPrec :: ReadPrec [TrackingChannelCorrelationDep]
readPrec :: ReadPrec TrackingChannelCorrelationDep
$creadPrec :: ReadPrec TrackingChannelCorrelationDep
readList :: ReadS [TrackingChannelCorrelationDep]
$creadList :: ReadS [TrackingChannelCorrelationDep]
readsPrec :: Int -> ReadS TrackingChannelCorrelationDep
$creadsPrec :: Int -> ReadS TrackingChannelCorrelationDep
Read, TrackingChannelCorrelationDep
-> TrackingChannelCorrelationDep -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TrackingChannelCorrelationDep
-> TrackingChannelCorrelationDep -> Bool
$c/= :: TrackingChannelCorrelationDep
-> TrackingChannelCorrelationDep -> Bool
== :: TrackingChannelCorrelationDep
-> TrackingChannelCorrelationDep -> Bool
$c== :: TrackingChannelCorrelationDep
-> TrackingChannelCorrelationDep -> Bool
Eq )

instance Binary TrackingChannelCorrelationDep where
  get :: Get TrackingChannelCorrelationDep
get = do
    Int32
_trackingChannelCorrelationDep_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)
    Int32
_trackingChannelCorrelationDep_Q <- (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)
    forall (f :: * -> *) a. Applicative f => a -> f a
pure TrackingChannelCorrelationDep {Int32
_trackingChannelCorrelationDep_Q :: Int32
_trackingChannelCorrelationDep_I :: Int32
_trackingChannelCorrelationDep_Q :: Int32
_trackingChannelCorrelationDep_I :: Int32
..}

  put :: TrackingChannelCorrelationDep -> Put
put TrackingChannelCorrelationDep {Int32
_trackingChannelCorrelationDep_Q :: Int32
_trackingChannelCorrelationDep_I :: Int32
_trackingChannelCorrelationDep_Q :: TrackingChannelCorrelationDep -> Int32
_trackingChannelCorrelationDep_I :: TrackingChannelCorrelationDep -> 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
_trackingChannelCorrelationDep_I
    (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
_trackingChannelCorrelationDep_Q

$(makeJSON "_trackingChannelCorrelationDep_" ''TrackingChannelCorrelationDep)
$(makeLenses ''TrackingChannelCorrelationDep)

msgTrackingIqDepB :: Word16
msgTrackingIqDepB :: Word16
msgTrackingIqDepB = Word16
0x002C

-- | SBP class for message MSG_TRACKING_IQ_DEP_B (0x002C).
--
-- Deprecated.
data MsgTrackingIqDepB = MsgTrackingIqDepB
  { MsgTrackingIqDepB -> Word8
_msgTrackingIqDepB_channel :: !Word8
    -- ^ Tracking channel of origin
  , MsgTrackingIqDepB -> GnssSignal
_msgTrackingIqDepB_sid   :: !GnssSignal
    -- ^ GNSS signal identifier
  , MsgTrackingIqDepB -> [TrackingChannelCorrelationDep]
_msgTrackingIqDepB_corrs :: ![TrackingChannelCorrelationDep]
    -- ^ Early, Prompt and Late correlations
  } deriving ( Int -> MsgTrackingIqDepB -> ShowS
[MsgTrackingIqDepB] -> ShowS
MsgTrackingIqDepB -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgTrackingIqDepB] -> ShowS
$cshowList :: [MsgTrackingIqDepB] -> ShowS
show :: MsgTrackingIqDepB -> String
$cshow :: MsgTrackingIqDepB -> String
showsPrec :: Int -> MsgTrackingIqDepB -> ShowS
$cshowsPrec :: Int -> MsgTrackingIqDepB -> ShowS
Show, ReadPrec [MsgTrackingIqDepB]
ReadPrec MsgTrackingIqDepB
Int -> ReadS MsgTrackingIqDepB
ReadS [MsgTrackingIqDepB]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgTrackingIqDepB]
$creadListPrec :: ReadPrec [MsgTrackingIqDepB]
readPrec :: ReadPrec MsgTrackingIqDepB
$creadPrec :: ReadPrec MsgTrackingIqDepB
readList :: ReadS [MsgTrackingIqDepB]
$creadList :: ReadS [MsgTrackingIqDepB]
readsPrec :: Int -> ReadS MsgTrackingIqDepB
$creadsPrec :: Int -> ReadS MsgTrackingIqDepB
Read, MsgTrackingIqDepB -> MsgTrackingIqDepB -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgTrackingIqDepB -> MsgTrackingIqDepB -> Bool
$c/= :: MsgTrackingIqDepB -> MsgTrackingIqDepB -> Bool
== :: MsgTrackingIqDepB -> MsgTrackingIqDepB -> Bool
$c== :: MsgTrackingIqDepB -> MsgTrackingIqDepB -> Bool
Eq )

instance Binary MsgTrackingIqDepB where
  get :: Get MsgTrackingIqDepB
get = do
    Word8
_msgTrackingIqDepB_channel <- Get Word8
getWord8
    GnssSignal
_msgTrackingIqDepB_sid <- forall t. Binary t => Get t
get
    [TrackingChannelCorrelationDep]
_msgTrackingIqDepB_corrs <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgTrackingIqDepB {[TrackingChannelCorrelationDep]
Word8
GnssSignal
_msgTrackingIqDepB_corrs :: [TrackingChannelCorrelationDep]
_msgTrackingIqDepB_sid :: GnssSignal
_msgTrackingIqDepB_channel :: Word8
_msgTrackingIqDepB_corrs :: [TrackingChannelCorrelationDep]
_msgTrackingIqDepB_sid :: GnssSignal
_msgTrackingIqDepB_channel :: Word8
..}

  put :: MsgTrackingIqDepB -> Put
put MsgTrackingIqDepB {[TrackingChannelCorrelationDep]
Word8
GnssSignal
_msgTrackingIqDepB_corrs :: [TrackingChannelCorrelationDep]
_msgTrackingIqDepB_sid :: GnssSignal
_msgTrackingIqDepB_channel :: Word8
_msgTrackingIqDepB_corrs :: MsgTrackingIqDepB -> [TrackingChannelCorrelationDep]
_msgTrackingIqDepB_sid :: MsgTrackingIqDepB -> GnssSignal
_msgTrackingIqDepB_channel :: MsgTrackingIqDepB -> Word8
..} = do
    Word8 -> Put
putWord8 Word8
_msgTrackingIqDepB_channel
    forall t. Binary t => t -> Put
put GnssSignal
_msgTrackingIqDepB_sid
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ forall t. Binary t => t -> Put
put [TrackingChannelCorrelationDep]
_msgTrackingIqDepB_corrs

$(makeSBP 'msgTrackingIqDepB ''MsgTrackingIqDepB)
$(makeJSON "_msgTrackingIqDepB_" ''MsgTrackingIqDepB)
$(makeLenses ''MsgTrackingIqDepB)

msgTrackingIqDepA :: Word16
msgTrackingIqDepA :: Word16
msgTrackingIqDepA = Word16
0x001C

-- | SBP class for message MSG_TRACKING_IQ_DEP_A (0x001C).
--
-- Deprecated.
data MsgTrackingIqDepA = MsgTrackingIqDepA
  { MsgTrackingIqDepA -> Word8
_msgTrackingIqDepA_channel :: !Word8
    -- ^ Tracking channel of origin
  , MsgTrackingIqDepA -> GnssSignalDep
_msgTrackingIqDepA_sid   :: !GnssSignalDep
    -- ^ GNSS signal identifier
  , MsgTrackingIqDepA -> [TrackingChannelCorrelationDep]
_msgTrackingIqDepA_corrs :: ![TrackingChannelCorrelationDep]
    -- ^ Early, Prompt and Late correlations
  } deriving ( Int -> MsgTrackingIqDepA -> ShowS
[MsgTrackingIqDepA] -> ShowS
MsgTrackingIqDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgTrackingIqDepA] -> ShowS
$cshowList :: [MsgTrackingIqDepA] -> ShowS
show :: MsgTrackingIqDepA -> String
$cshow :: MsgTrackingIqDepA -> String
showsPrec :: Int -> MsgTrackingIqDepA -> ShowS
$cshowsPrec :: Int -> MsgTrackingIqDepA -> ShowS
Show, ReadPrec [MsgTrackingIqDepA]
ReadPrec MsgTrackingIqDepA
Int -> ReadS MsgTrackingIqDepA
ReadS [MsgTrackingIqDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgTrackingIqDepA]
$creadListPrec :: ReadPrec [MsgTrackingIqDepA]
readPrec :: ReadPrec MsgTrackingIqDepA
$creadPrec :: ReadPrec MsgTrackingIqDepA
readList :: ReadS [MsgTrackingIqDepA]
$creadList :: ReadS [MsgTrackingIqDepA]
readsPrec :: Int -> ReadS MsgTrackingIqDepA
$creadsPrec :: Int -> ReadS MsgTrackingIqDepA
Read, MsgTrackingIqDepA -> MsgTrackingIqDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgTrackingIqDepA -> MsgTrackingIqDepA -> Bool
$c/= :: MsgTrackingIqDepA -> MsgTrackingIqDepA -> Bool
== :: MsgTrackingIqDepA -> MsgTrackingIqDepA -> Bool
$c== :: MsgTrackingIqDepA -> MsgTrackingIqDepA -> Bool
Eq )

instance Binary MsgTrackingIqDepA where
  get :: Get MsgTrackingIqDepA
get = do
    Word8
_msgTrackingIqDepA_channel <- Get Word8
getWord8
    GnssSignalDep
_msgTrackingIqDepA_sid <- forall t. Binary t => Get t
get
    [TrackingChannelCorrelationDep]
_msgTrackingIqDepA_corrs <- forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
3 forall t. Binary t => Get t
get
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgTrackingIqDepA {[TrackingChannelCorrelationDep]
Word8
GnssSignalDep
_msgTrackingIqDepA_corrs :: [TrackingChannelCorrelationDep]
_msgTrackingIqDepA_sid :: GnssSignalDep
_msgTrackingIqDepA_channel :: Word8
_msgTrackingIqDepA_corrs :: [TrackingChannelCorrelationDep]
_msgTrackingIqDepA_sid :: GnssSignalDep
_msgTrackingIqDepA_channel :: Word8
..}

  put :: MsgTrackingIqDepA -> Put
put MsgTrackingIqDepA {[TrackingChannelCorrelationDep]
Word8
GnssSignalDep
_msgTrackingIqDepA_corrs :: [TrackingChannelCorrelationDep]
_msgTrackingIqDepA_sid :: GnssSignalDep
_msgTrackingIqDepA_channel :: Word8
_msgTrackingIqDepA_corrs :: MsgTrackingIqDepA -> [TrackingChannelCorrelationDep]
_msgTrackingIqDepA_sid :: MsgTrackingIqDepA -> GnssSignalDep
_msgTrackingIqDepA_channel :: MsgTrackingIqDepA -> Word8
..} = do
    Word8 -> Put
putWord8 Word8
_msgTrackingIqDepA_channel
    forall t. Binary t => t -> Put
put GnssSignalDep
_msgTrackingIqDepA_sid
    forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ forall t. Binary t => t -> Put
put [TrackingChannelCorrelationDep]
_msgTrackingIqDepA_corrs

$(makeSBP 'msgTrackingIqDepA ''MsgTrackingIqDepA)
$(makeJSON "_msgTrackingIqDepA_" ''MsgTrackingIqDepA)
$(makeLenses ''MsgTrackingIqDepA)

-- | TrackingChannelStateDepA.
--
-- Deprecated.
data TrackingChannelStateDepA = TrackingChannelStateDepA
  { TrackingChannelStateDepA -> Word8
_trackingChannelStateDepA_state :: !Word8
    -- ^ Status of tracking channel
  , TrackingChannelStateDepA -> Word8
_trackingChannelStateDepA_prn :: !Word8
    -- ^ PRN-1 being tracked
  , TrackingChannelStateDepA -> Float
_trackingChannelStateDepA_cn0 :: !Float
    -- ^ Carrier-to-noise density
  } deriving ( Int -> TrackingChannelStateDepA -> ShowS
[TrackingChannelStateDepA] -> ShowS
TrackingChannelStateDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TrackingChannelStateDepA] -> ShowS
$cshowList :: [TrackingChannelStateDepA] -> ShowS
show :: TrackingChannelStateDepA -> String
$cshow :: TrackingChannelStateDepA -> String
showsPrec :: Int -> TrackingChannelStateDepA -> ShowS
$cshowsPrec :: Int -> TrackingChannelStateDepA -> ShowS
Show, ReadPrec [TrackingChannelStateDepA]
ReadPrec TrackingChannelStateDepA
Int -> ReadS TrackingChannelStateDepA
ReadS [TrackingChannelStateDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TrackingChannelStateDepA]
$creadListPrec :: ReadPrec [TrackingChannelStateDepA]
readPrec :: ReadPrec TrackingChannelStateDepA
$creadPrec :: ReadPrec TrackingChannelStateDepA
readList :: ReadS [TrackingChannelStateDepA]
$creadList :: ReadS [TrackingChannelStateDepA]
readsPrec :: Int -> ReadS TrackingChannelStateDepA
$creadsPrec :: Int -> ReadS TrackingChannelStateDepA
Read, TrackingChannelStateDepA -> TrackingChannelStateDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TrackingChannelStateDepA -> TrackingChannelStateDepA -> Bool
$c/= :: TrackingChannelStateDepA -> TrackingChannelStateDepA -> Bool
== :: TrackingChannelStateDepA -> TrackingChannelStateDepA -> Bool
$c== :: TrackingChannelStateDepA -> TrackingChannelStateDepA -> Bool
Eq )

instance Binary TrackingChannelStateDepA where
  get :: Get TrackingChannelStateDepA
get = do
    Word8
_trackingChannelStateDepA_state <- Get Word8
getWord8
    Word8
_trackingChannelStateDepA_prn <- Get Word8
getWord8
    Float
_trackingChannelStateDepA_cn0 <- Get Float
getFloat32le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure TrackingChannelStateDepA {Float
Word8
_trackingChannelStateDepA_cn0 :: Float
_trackingChannelStateDepA_prn :: Word8
_trackingChannelStateDepA_state :: Word8
_trackingChannelStateDepA_cn0 :: Float
_trackingChannelStateDepA_prn :: Word8
_trackingChannelStateDepA_state :: Word8
..}

  put :: TrackingChannelStateDepA -> Put
put TrackingChannelStateDepA {Float
Word8
_trackingChannelStateDepA_cn0 :: Float
_trackingChannelStateDepA_prn :: Word8
_trackingChannelStateDepA_state :: Word8
_trackingChannelStateDepA_cn0 :: TrackingChannelStateDepA -> Float
_trackingChannelStateDepA_prn :: TrackingChannelStateDepA -> Word8
_trackingChannelStateDepA_state :: TrackingChannelStateDepA -> Word8
..} = do
    Word8 -> Put
putWord8 Word8
_trackingChannelStateDepA_state
    Word8 -> Put
putWord8 Word8
_trackingChannelStateDepA_prn
    Float -> Put
putFloat32le Float
_trackingChannelStateDepA_cn0

$(makeJSON "_trackingChannelStateDepA_" ''TrackingChannelStateDepA)
$(makeLenses ''TrackingChannelStateDepA)

msgTrackingStateDepA :: Word16
msgTrackingStateDepA :: Word16
msgTrackingStateDepA = Word16
0x0016

-- | SBP class for message MSG_TRACKING_STATE_DEP_A (0x0016).
--
-- Deprecated.
data MsgTrackingStateDepA = MsgTrackingStateDepA
  { MsgTrackingStateDepA -> [TrackingChannelStateDepA]
_msgTrackingStateDepA_states :: ![TrackingChannelStateDepA]
    -- ^ Satellite tracking channel state
  } deriving ( Int -> MsgTrackingStateDepA -> ShowS
[MsgTrackingStateDepA] -> ShowS
MsgTrackingStateDepA -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgTrackingStateDepA] -> ShowS
$cshowList :: [MsgTrackingStateDepA] -> ShowS
show :: MsgTrackingStateDepA -> String
$cshow :: MsgTrackingStateDepA -> String
showsPrec :: Int -> MsgTrackingStateDepA -> ShowS
$cshowsPrec :: Int -> MsgTrackingStateDepA -> ShowS
Show, ReadPrec [MsgTrackingStateDepA]
ReadPrec MsgTrackingStateDepA
Int -> ReadS MsgTrackingStateDepA
ReadS [MsgTrackingStateDepA]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgTrackingStateDepA]
$creadListPrec :: ReadPrec [MsgTrackingStateDepA]
readPrec :: ReadPrec MsgTrackingStateDepA
$creadPrec :: ReadPrec MsgTrackingStateDepA
readList :: ReadS [MsgTrackingStateDepA]
$creadList :: ReadS [MsgTrackingStateDepA]
readsPrec :: Int -> ReadS MsgTrackingStateDepA
$creadsPrec :: Int -> ReadS MsgTrackingStateDepA
Read, MsgTrackingStateDepA -> MsgTrackingStateDepA -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgTrackingStateDepA -> MsgTrackingStateDepA -> Bool
$c/= :: MsgTrackingStateDepA -> MsgTrackingStateDepA -> Bool
== :: MsgTrackingStateDepA -> MsgTrackingStateDepA -> Bool
$c== :: MsgTrackingStateDepA -> MsgTrackingStateDepA -> Bool
Eq )

instance Binary MsgTrackingStateDepA where
  get :: Get MsgTrackingStateDepA
get = do
    [TrackingChannelStateDepA]
_msgTrackingStateDepA_states <- 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 MsgTrackingStateDepA {[TrackingChannelStateDepA]
_msgTrackingStateDepA_states :: [TrackingChannelStateDepA]
_msgTrackingStateDepA_states :: [TrackingChannelStateDepA]
..}

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

$(makeSBP 'msgTrackingStateDepA ''MsgTrackingStateDepA)
$(makeJSON "_msgTrackingStateDepA_" ''MsgTrackingStateDepA)
$(makeLenses ''MsgTrackingStateDepA)

-- | TrackingChannelStateDepB.
--
-- Deprecated.
data TrackingChannelStateDepB = TrackingChannelStateDepB
  { TrackingChannelStateDepB -> Word8
_trackingChannelStateDepB_state :: !Word8
    -- ^ Status of tracking channel
  , TrackingChannelStateDepB -> GnssSignalDep
_trackingChannelStateDepB_sid :: !GnssSignalDep
    -- ^ GNSS signal being tracked
  , TrackingChannelStateDepB -> Float
_trackingChannelStateDepB_cn0 :: !Float
    -- ^ Carrier-to-noise density
  } deriving ( Int -> TrackingChannelStateDepB -> ShowS
[TrackingChannelStateDepB] -> ShowS
TrackingChannelStateDepB -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TrackingChannelStateDepB] -> ShowS
$cshowList :: [TrackingChannelStateDepB] -> ShowS
show :: TrackingChannelStateDepB -> String
$cshow :: TrackingChannelStateDepB -> String
showsPrec :: Int -> TrackingChannelStateDepB -> ShowS
$cshowsPrec :: Int -> TrackingChannelStateDepB -> ShowS
Show, ReadPrec [TrackingChannelStateDepB]
ReadPrec TrackingChannelStateDepB
Int -> ReadS TrackingChannelStateDepB
ReadS [TrackingChannelStateDepB]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TrackingChannelStateDepB]
$creadListPrec :: ReadPrec [TrackingChannelStateDepB]
readPrec :: ReadPrec TrackingChannelStateDepB
$creadPrec :: ReadPrec TrackingChannelStateDepB
readList :: ReadS [TrackingChannelStateDepB]
$creadList :: ReadS [TrackingChannelStateDepB]
readsPrec :: Int -> ReadS TrackingChannelStateDepB
$creadsPrec :: Int -> ReadS TrackingChannelStateDepB
Read, TrackingChannelStateDepB -> TrackingChannelStateDepB -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TrackingChannelStateDepB -> TrackingChannelStateDepB -> Bool
$c/= :: TrackingChannelStateDepB -> TrackingChannelStateDepB -> Bool
== :: TrackingChannelStateDepB -> TrackingChannelStateDepB -> Bool
$c== :: TrackingChannelStateDepB -> TrackingChannelStateDepB -> Bool
Eq )

instance Binary TrackingChannelStateDepB where
  get :: Get TrackingChannelStateDepB
get = do
    Word8
_trackingChannelStateDepB_state <- Get Word8
getWord8
    GnssSignalDep
_trackingChannelStateDepB_sid <- forall t. Binary t => Get t
get
    Float
_trackingChannelStateDepB_cn0 <- Get Float
getFloat32le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure TrackingChannelStateDepB {Float
Word8
GnssSignalDep
_trackingChannelStateDepB_cn0 :: Float
_trackingChannelStateDepB_sid :: GnssSignalDep
_trackingChannelStateDepB_state :: Word8
_trackingChannelStateDepB_cn0 :: Float
_trackingChannelStateDepB_sid :: GnssSignalDep
_trackingChannelStateDepB_state :: Word8
..}

  put :: TrackingChannelStateDepB -> Put
put TrackingChannelStateDepB {Float
Word8
GnssSignalDep
_trackingChannelStateDepB_cn0 :: Float
_trackingChannelStateDepB_sid :: GnssSignalDep
_trackingChannelStateDepB_state :: Word8
_trackingChannelStateDepB_cn0 :: TrackingChannelStateDepB -> Float
_trackingChannelStateDepB_sid :: TrackingChannelStateDepB -> GnssSignalDep
_trackingChannelStateDepB_state :: TrackingChannelStateDepB -> Word8
..} = do
    Word8 -> Put
putWord8 Word8
_trackingChannelStateDepB_state
    forall t. Binary t => t -> Put
put GnssSignalDep
_trackingChannelStateDepB_sid
    Float -> Put
putFloat32le Float
_trackingChannelStateDepB_cn0

$(makeJSON "_trackingChannelStateDepB_" ''TrackingChannelStateDepB)
$(makeLenses ''TrackingChannelStateDepB)

msgTrackingStateDepB :: Word16
msgTrackingStateDepB :: Word16
msgTrackingStateDepB = Word16
0x0013

-- | SBP class for message MSG_TRACKING_STATE_DEP_B (0x0013).
--
-- Deprecated.
data MsgTrackingStateDepB = MsgTrackingStateDepB
  { MsgTrackingStateDepB -> [TrackingChannelStateDepB]
_msgTrackingStateDepB_states :: ![TrackingChannelStateDepB]
    -- ^ Signal tracking channel state
  } deriving ( Int -> MsgTrackingStateDepB -> ShowS
[MsgTrackingStateDepB] -> ShowS
MsgTrackingStateDepB -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgTrackingStateDepB] -> ShowS
$cshowList :: [MsgTrackingStateDepB] -> ShowS
show :: MsgTrackingStateDepB -> String
$cshow :: MsgTrackingStateDepB -> String
showsPrec :: Int -> MsgTrackingStateDepB -> ShowS
$cshowsPrec :: Int -> MsgTrackingStateDepB -> ShowS
Show, ReadPrec [MsgTrackingStateDepB]
ReadPrec MsgTrackingStateDepB
Int -> ReadS MsgTrackingStateDepB
ReadS [MsgTrackingStateDepB]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgTrackingStateDepB]
$creadListPrec :: ReadPrec [MsgTrackingStateDepB]
readPrec :: ReadPrec MsgTrackingStateDepB
$creadPrec :: ReadPrec MsgTrackingStateDepB
readList :: ReadS [MsgTrackingStateDepB]
$creadList :: ReadS [MsgTrackingStateDepB]
readsPrec :: Int -> ReadS MsgTrackingStateDepB
$creadsPrec :: Int -> ReadS MsgTrackingStateDepB
Read, MsgTrackingStateDepB -> MsgTrackingStateDepB -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgTrackingStateDepB -> MsgTrackingStateDepB -> Bool
$c/= :: MsgTrackingStateDepB -> MsgTrackingStateDepB -> Bool
== :: MsgTrackingStateDepB -> MsgTrackingStateDepB -> Bool
$c== :: MsgTrackingStateDepB -> MsgTrackingStateDepB -> Bool
Eq )

instance Binary MsgTrackingStateDepB where
  get :: Get MsgTrackingStateDepB
get = do
    [TrackingChannelStateDepB]
_msgTrackingStateDepB_states <- 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 MsgTrackingStateDepB {[TrackingChannelStateDepB]
_msgTrackingStateDepB_states :: [TrackingChannelStateDepB]
_msgTrackingStateDepB_states :: [TrackingChannelStateDepB]
..}

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

$(makeSBP 'msgTrackingStateDepB ''MsgTrackingStateDepB)
$(makeJSON "_msgTrackingStateDepB_" ''MsgTrackingStateDepB)
$(makeLenses ''MsgTrackingStateDepB)