module SwiftNav.SBP.ExtEvents where
import BasicPrelude as P
import Control.Lens
import Control.Monad.Loops
import Data.Aeson.TH (defaultOptions, deriveJSON, 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
msgExtEvent :: Word16
msgExtEvent = 0x0101
data MsgExtEvent = MsgExtEvent
{ _msgExtEvent_wn :: Word16
, _msgExtEvent_tow :: Word32
, _msgExtEvent_ns_residual :: Int32
, _msgExtEvent_flags :: Word8
, _msgExtEvent_pin :: Word8
} deriving ( Show, Read, Eq )
instance Binary MsgExtEvent where
get = do
_msgExtEvent_wn <- getWord16le
_msgExtEvent_tow <- getWord32le
_msgExtEvent_ns_residual <- fromIntegral <$> getWord32le
_msgExtEvent_flags <- getWord8
_msgExtEvent_pin <- getWord8
return MsgExtEvent {..}
put MsgExtEvent {..} = do
putWord16le _msgExtEvent_wn
putWord32le _msgExtEvent_tow
putWord32le $ fromIntegral _msgExtEvent_ns_residual
putWord8 _msgExtEvent_flags
putWord8 _msgExtEvent_pin
$(deriveSBP 'msgExtEvent ''MsgExtEvent)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgExtEvent_" . P.stripPrefix "_msgExtEvent_"}
''MsgExtEvent)
$(makeLenses ''MsgExtEvent)