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