module SwiftNav.SBP.System where

import Control.Monad
import Control.Monad.Loops
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

msgStartup :: Word16
msgStartup = 0xFF00

data MsgStartup = MsgStartup
  { msgStartupReserved :: Word32
  } deriving ( Show, Read, Eq )

instance Binary MsgStartup where
  get = do
    msgStartupReserved <- getWord32le
    return MsgStartup {..}

  put MsgStartup {..} = do
    putWord32le msgStartupReserved

msgHeartbeat :: Word16
msgHeartbeat = 0xFFFF

data MsgHeartbeat = MsgHeartbeat
  { msgHeartbeatFlags :: Word32
  } deriving ( Show, Read, Eq )

instance Binary MsgHeartbeat where
  get = do
    msgHeartbeatFlags <- getWord32le
    return MsgHeartbeat {..}

  put MsgHeartbeat {..} = do
    putWord32le msgHeartbeatFlags