{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE RecordWildCards #-}
module SwiftNav.SBP.Telemetry
( module SwiftNav.SBP.Telemetry
) 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.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) #-}
data TelemetrySV = TelemetrySV
{ TelemetrySV -> Word8
_telemetrySV_az :: !Word8
, TelemetrySV -> Int8
_telemetrySV_el :: !Int8
, TelemetrySV -> Word8
_telemetrySV_availability_flags :: !Word8
, TelemetrySV -> Int16
_telemetrySV_pseudorange_residual :: !Int16
, TelemetrySV -> Int16
_telemetrySV_phase_residual :: !Int16
, TelemetrySV -> Word8
_telemetrySV_outlier_flags :: !Word8
, TelemetrySV -> Word8
_telemetrySV_ephemeris_flags :: !Word8
, TelemetrySV -> Word8
_telemetrySV_correction_flags :: !Word8
, TelemetrySV -> GnssSignal
_telemetrySV_sid :: !GnssSignal
} deriving ( Int -> TelemetrySV -> ShowS
[TelemetrySV] -> ShowS
TelemetrySV -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TelemetrySV] -> ShowS
$cshowList :: [TelemetrySV] -> ShowS
show :: TelemetrySV -> String
$cshow :: TelemetrySV -> String
showsPrec :: Int -> TelemetrySV -> ShowS
$cshowsPrec :: Int -> TelemetrySV -> ShowS
Show, ReadPrec [TelemetrySV]
ReadPrec TelemetrySV
Int -> ReadS TelemetrySV
ReadS [TelemetrySV]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TelemetrySV]
$creadListPrec :: ReadPrec [TelemetrySV]
readPrec :: ReadPrec TelemetrySV
$creadPrec :: ReadPrec TelemetrySV
readList :: ReadS [TelemetrySV]
$creadList :: ReadS [TelemetrySV]
readsPrec :: Int -> ReadS TelemetrySV
$creadsPrec :: Int -> ReadS TelemetrySV
Read, TelemetrySV -> TelemetrySV -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TelemetrySV -> TelemetrySV -> Bool
$c/= :: TelemetrySV -> TelemetrySV -> Bool
== :: TelemetrySV -> TelemetrySV -> Bool
$c== :: TelemetrySV -> TelemetrySV -> Bool
Eq )
instance Binary TelemetrySV where
get :: Get TelemetrySV
get = do
Word8
_telemetrySV_az <- Get Word8
getWord8
Int8
_telemetrySV_el <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word8
getWord8)
Word8
_telemetrySV_availability_flags <- Get Word8
getWord8
Int16
_telemetrySV_pseudorange_residual <- (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
_telemetrySV_phase_residual <- (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Word16
getWord16le)
Word8
_telemetrySV_outlier_flags <- Get Word8
getWord8
Word8
_telemetrySV_ephemeris_flags <- Get Word8
getWord8
Word8
_telemetrySV_correction_flags <- Get Word8
getWord8
GnssSignal
_telemetrySV_sid <- forall t. Binary t => Get t
get
forall (f :: * -> *) a. Applicative f => a -> f a
pure TelemetrySV {Int8
Int16
Word8
GnssSignal
_telemetrySV_sid :: GnssSignal
_telemetrySV_correction_flags :: Word8
_telemetrySV_ephemeris_flags :: Word8
_telemetrySV_outlier_flags :: Word8
_telemetrySV_phase_residual :: Int16
_telemetrySV_pseudorange_residual :: Int16
_telemetrySV_availability_flags :: Word8
_telemetrySV_el :: Int8
_telemetrySV_az :: Word8
_telemetrySV_sid :: GnssSignal
_telemetrySV_correction_flags :: Word8
_telemetrySV_ephemeris_flags :: Word8
_telemetrySV_outlier_flags :: Word8
_telemetrySV_phase_residual :: Int16
_telemetrySV_pseudorange_residual :: Int16
_telemetrySV_availability_flags :: Word8
_telemetrySV_el :: Int8
_telemetrySV_az :: Word8
..}
put :: TelemetrySV -> Put
put TelemetrySV {Int8
Int16
Word8
GnssSignal
_telemetrySV_sid :: GnssSignal
_telemetrySV_correction_flags :: Word8
_telemetrySV_ephemeris_flags :: Word8
_telemetrySV_outlier_flags :: Word8
_telemetrySV_phase_residual :: Int16
_telemetrySV_pseudorange_residual :: Int16
_telemetrySV_availability_flags :: Word8
_telemetrySV_el :: Int8
_telemetrySV_az :: Word8
_telemetrySV_sid :: TelemetrySV -> GnssSignal
_telemetrySV_correction_flags :: TelemetrySV -> Word8
_telemetrySV_ephemeris_flags :: TelemetrySV -> Word8
_telemetrySV_outlier_flags :: TelemetrySV -> Word8
_telemetrySV_phase_residual :: TelemetrySV -> Int16
_telemetrySV_pseudorange_residual :: TelemetrySV -> Int16
_telemetrySV_availability_flags :: TelemetrySV -> Word8
_telemetrySV_el :: TelemetrySV -> Int8
_telemetrySV_az :: TelemetrySV -> Word8
..} = do
Word8 -> Put
putWord8 Word8
_telemetrySV_az
(Word8 -> Put
putWord8 forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral) Int8
_telemetrySV_el
Word8 -> Put
putWord8 Word8
_telemetrySV_availability_flags
(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
_telemetrySV_pseudorange_residual
(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
_telemetrySV_phase_residual
Word8 -> Put
putWord8 Word8
_telemetrySV_outlier_flags
Word8 -> Put
putWord8 Word8
_telemetrySV_ephemeris_flags
Word8 -> Put
putWord8 Word8
_telemetrySV_correction_flags
forall t. Binary t => t -> Put
put GnssSignal
_telemetrySV_sid
$(makeJSON "_telemetrySV_" ''TelemetrySV)
$(makeLenses ''TelemetrySV)
msgTelSv :: Word16
msgTelSv :: Word16
msgTelSv = Word16
0x0120
data MsgTelSv = MsgTelSv
{ MsgTelSv -> Word16
_msgTelSv_wn :: !Word16
, MsgTelSv -> Word32
_msgTelSv_tow :: !Word32
, MsgTelSv -> Word8
_msgTelSv_n_obs :: !Word8
, MsgTelSv -> Word8
_msgTelSv_origin_flags :: !Word8
, MsgTelSv -> [TelemetrySV]
_msgTelSv_sv_tel :: ![TelemetrySV]
} deriving ( Int -> MsgTelSv -> ShowS
[MsgTelSv] -> ShowS
MsgTelSv -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgTelSv] -> ShowS
$cshowList :: [MsgTelSv] -> ShowS
show :: MsgTelSv -> String
$cshow :: MsgTelSv -> String
showsPrec :: Int -> MsgTelSv -> ShowS
$cshowsPrec :: Int -> MsgTelSv -> ShowS
Show, ReadPrec [MsgTelSv]
ReadPrec MsgTelSv
Int -> ReadS MsgTelSv
ReadS [MsgTelSv]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgTelSv]
$creadListPrec :: ReadPrec [MsgTelSv]
readPrec :: ReadPrec MsgTelSv
$creadPrec :: ReadPrec MsgTelSv
readList :: ReadS [MsgTelSv]
$creadList :: ReadS [MsgTelSv]
readsPrec :: Int -> ReadS MsgTelSv
$creadsPrec :: Int -> ReadS MsgTelSv
Read, MsgTelSv -> MsgTelSv -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgTelSv -> MsgTelSv -> Bool
$c/= :: MsgTelSv -> MsgTelSv -> Bool
== :: MsgTelSv -> MsgTelSv -> Bool
$c== :: MsgTelSv -> MsgTelSv -> Bool
Eq )
instance Binary MsgTelSv where
get :: Get MsgTelSv
get = do
Word16
_msgTelSv_wn <- Get Word16
getWord16le
Word32
_msgTelSv_tow <- Get Word32
getWord32le
Word8
_msgTelSv_n_obs <- Get Word8
getWord8
Word8
_msgTelSv_origin_flags <- Get Word8
getWord8
[TelemetrySV]
_msgTelSv_sv_tel <- 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 MsgTelSv {[TelemetrySV]
Word8
Word16
Word32
_msgTelSv_sv_tel :: [TelemetrySV]
_msgTelSv_origin_flags :: Word8
_msgTelSv_n_obs :: Word8
_msgTelSv_tow :: Word32
_msgTelSv_wn :: Word16
_msgTelSv_sv_tel :: [TelemetrySV]
_msgTelSv_origin_flags :: Word8
_msgTelSv_n_obs :: Word8
_msgTelSv_tow :: Word32
_msgTelSv_wn :: Word16
..}
put :: MsgTelSv -> Put
put MsgTelSv {[TelemetrySV]
Word8
Word16
Word32
_msgTelSv_sv_tel :: [TelemetrySV]
_msgTelSv_origin_flags :: Word8
_msgTelSv_n_obs :: Word8
_msgTelSv_tow :: Word32
_msgTelSv_wn :: Word16
_msgTelSv_sv_tel :: MsgTelSv -> [TelemetrySV]
_msgTelSv_origin_flags :: MsgTelSv -> Word8
_msgTelSv_n_obs :: MsgTelSv -> Word8
_msgTelSv_tow :: MsgTelSv -> Word32
_msgTelSv_wn :: MsgTelSv -> Word16
..} = do
Word16 -> Put
putWord16le Word16
_msgTelSv_wn
Word32 -> Put
putWord32le Word32
_msgTelSv_tow
Word8 -> Put
putWord8 Word8
_msgTelSv_n_obs
Word8 -> Put
putWord8 Word8
_msgTelSv_origin_flags
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ forall t. Binary t => t -> Put
put [TelemetrySV]
_msgTelSv_sv_tel
$(makeSBP 'msgTelSv ''MsgTelSv)
$(makeJSON "_msgTelSv_" ''MsgTelSv)
$(makeLenses ''MsgTelSv)