sbp-0.52.0: src/SwiftNav/SBP/GnssSignal.hs
-- |
-- Module: SwiftNav.SBP.GnssSignal
-- Copyright: Copyright (C) 2015 Swift Navigation, Inc.
-- License: LGPL-3
-- Maintainer: Mark Fine <dev@swiftnav.com>
-- Stability: experimental
-- Portability: portable
--
-- Struct to represent a signal (constellation, band, satellite identifier)
module SwiftNav.SBP.GnssSignal where
import BasicPrelude
import Control.Lens
import Control.Monad.Loops
import Data.Aeson.TH (deriveJSON, defaultOptions, fieldLabelModifier)
import Data.Binary
import Data.Binary.Get
import Data.Binary.IEEE754
import Data.Binary.Put
import Data.ByteString
import Data.ByteString.Lazy hiding ( ByteString )
import Data.Int
import Data.Word
import SwiftNav.SBP.Encoding
import SwiftNav.SBP.TH
import SwiftNav.SBP.Types
-- | SBPGnssSignal.
--
-- Signal identifier containing constellation, band, and satellite identifier
data SBPGnssSignal = SBPGnssSignal
{ _sBPGnssSignal_sat :: Word16
-- ^ Constellation-specific satellite identifier
, _sBPGnssSignal_band :: Word8
-- ^ Signal band
, _sBPGnssSignal_constellation :: Word8
-- ^ Constellation to which the satellite belongs
} deriving ( Show, Read, Eq )
instance Binary SBPGnssSignal where
get = do
_sBPGnssSignal_sat <- getWord16le
_sBPGnssSignal_band <- getWord8
_sBPGnssSignal_constellation <- getWord8
return SBPGnssSignal {..}
put SBPGnssSignal {..} = do
putWord16le _sBPGnssSignal_sat
putWord8 _sBPGnssSignal_band
putWord8 _sBPGnssSignal_constellation
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_sBPGnssSignal_" . stripPrefix "_sBPGnssSignal_"}
''SBPGnssSignal)
$(makeLenses ''SBPGnssSignal)