module SwiftNav.SBP.ExtEvents 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
msgExtEvent :: Word16
msgExtEvent = 0x0101
data MsgExtEvent = MsgExtEvent
{ _msgExtEvent_wn :: Word16
, _msgExtEvent_tow :: Word32
, _msgExtEvent_ns :: 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 <- liftM fromIntegral getWord32le
_msgExtEvent_flags <- getWord8
_msgExtEvent_pin <- getWord8
return MsgExtEvent {..}
put MsgExtEvent {..} = do
putWord16le _msgExtEvent_wn
putWord32le _msgExtEvent_tow
putWord32le $ fromIntegral _msgExtEvent_ns
putWord8 _msgExtEvent_flags
putWord8 _msgExtEvent_pin
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgExtEvent_" . stripPrefix "_msgExtEvent_"}
''MsgExtEvent)
$(makeLenses ''MsgExtEvent)