module SwiftNav.SBP.Gnss
( module SwiftNav.SBP.Gnss
) 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
data GnssSignal16 = GnssSignal16
{ _gnssSignal16_sat :: !Word8
, _gnssSignal16_code :: !Word8
} deriving ( Show, Read, Eq )
instance Binary GnssSignal16 where
get = do
_gnssSignal16_sat <- getWord8
_gnssSignal16_code <- getWord8
pure GnssSignal16 {..}
put GnssSignal16 {..} = do
putWord8 _gnssSignal16_sat
putWord8 _gnssSignal16_code
$(makeJSON "_gnssSignal16_" ''GnssSignal16)
$(makeLenses ''GnssSignal16)
data GnssSignal = GnssSignal
{ _gnssSignal_sat :: !Word16
, _gnssSignal_code :: !Word8
, _gnssSignal_reserved :: !Word8
} deriving ( Show, Read, Eq )
instance Binary GnssSignal where
get = do
_gnssSignal_sat <- getWord16le
_gnssSignal_code <- getWord8
_gnssSignal_reserved <- getWord8
pure GnssSignal {..}
put GnssSignal {..} = do
putWord16le _gnssSignal_sat
putWord8 _gnssSignal_code
putWord8 _gnssSignal_reserved
$(makeJSON "_gnssSignal_" ''GnssSignal)
$(makeLenses ''GnssSignal)
data GpsTime = GpsTime
{ _gpsTime_tow :: !Word32
, _gpsTime_wn :: !Word16
} deriving ( Show, Read, Eq )
instance Binary GpsTime where
get = do
_gpsTime_tow <- getWord32le
_gpsTime_wn <- getWord16le
pure GpsTime {..}
put GpsTime {..} = do
putWord32le _gpsTime_tow
putWord16le _gpsTime_wn
$(makeJSON "_gpsTime_" ''GpsTime)
$(makeLenses ''GpsTime)
data GpsTimeSec = GpsTimeSec
{ _gpsTimeSec_tow :: !Word32
, _gpsTimeSec_wn :: !Word16
} deriving ( Show, Read, Eq )
instance Binary GpsTimeSec where
get = do
_gpsTimeSec_tow <- getWord32le
_gpsTimeSec_wn <- getWord16le
pure GpsTimeSec {..}
put GpsTimeSec {..} = do
putWord32le _gpsTimeSec_tow
putWord16le _gpsTimeSec_wn
$(makeJSON "_gpsTimeSec_" ''GpsTimeSec)
$(makeLenses ''GpsTimeSec)
data GpsTimeNano = GpsTimeNano
{ _gpsTimeNano_tow :: !Word32
, _gpsTimeNano_ns_residual :: !Int32
, _gpsTimeNano_wn :: !Word16
} deriving ( Show, Read, Eq )
instance Binary GpsTimeNano where
get = do
_gpsTimeNano_tow <- getWord32le
_gpsTimeNano_ns_residual <- fromIntegral <$> getWord32le
_gpsTimeNano_wn <- getWord16le
pure GpsTimeNano {..}
put GpsTimeNano {..} = do
putWord32le _gpsTimeNano_tow
putWord32le $ fromIntegral _gpsTimeNano_ns_residual
putWord16le _gpsTimeNano_wn
$(makeJSON "_gpsTimeNano_" ''GpsTimeNano)
$(makeLenses ''GpsTimeNano)
data CarrierPhase = CarrierPhase
{ _carrierPhase_i :: !Int32
, _carrierPhase_f :: !Word8
} deriving ( Show, Read, Eq )
instance Binary CarrierPhase where
get = do
_carrierPhase_i <- fromIntegral <$> getWord32le
_carrierPhase_f <- getWord8
pure CarrierPhase {..}
put CarrierPhase {..} = do
putWord32le $ fromIntegral _carrierPhase_i
putWord8 _carrierPhase_f
$(makeJSON "_carrierPhase_" ''CarrierPhase)
$(makeLenses ''CarrierPhase)