module SwiftNav.SBP.Ndb 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
import SwiftNav.SBP.Gnss
msgNdbEvent :: Word16
msgNdbEvent = 0x0400
data MsgNdbEvent = MsgNdbEvent
{ _msgNdbEvent_recv_time :: !Word64
, _msgNdbEvent_event :: !Word8
, _msgNdbEvent_object_type :: !Word8
, _msgNdbEvent_result :: !Word8
, _msgNdbEvent_data_source :: !Word8
, _msgNdbEvent_object_sid :: !GnssSignal16
, _msgNdbEvent_src_sid :: !GnssSignal16
, _msgNdbEvent_original_sender :: !Word16
} deriving ( Show, Read, Eq )
instance Binary MsgNdbEvent where
get = do
_msgNdbEvent_recv_time <- getWord64le
_msgNdbEvent_event <- getWord8
_msgNdbEvent_object_type <- getWord8
_msgNdbEvent_result <- getWord8
_msgNdbEvent_data_source <- getWord8
_msgNdbEvent_object_sid <- get
_msgNdbEvent_src_sid <- get
_msgNdbEvent_original_sender <- getWord16le
return MsgNdbEvent {..}
put MsgNdbEvent {..} = do
putWord64le _msgNdbEvent_recv_time
putWord8 _msgNdbEvent_event
putWord8 _msgNdbEvent_object_type
putWord8 _msgNdbEvent_result
putWord8 _msgNdbEvent_data_source
put _msgNdbEvent_object_sid
put _msgNdbEvent_src_sid
putWord16le _msgNdbEvent_original_sender
$(deriveSBP 'msgNdbEvent ''MsgNdbEvent)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgNdbEvent_" . P.stripPrefix "_msgNdbEvent_"}
''MsgNdbEvent)
$(makeLenses ''MsgNdbEvent)