module SwiftNav.SBP.Bootload
( module SwiftNav.SBP.Bootload
) 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
msgBootloaderHandshakeReq :: Word16
msgBootloaderHandshakeReq = 0x00B3
data MsgBootloaderHandshakeReq = MsgBootloaderHandshakeReq
deriving ( Show, Read, Eq )
instance Binary MsgBootloaderHandshakeReq where
get =
return MsgBootloaderHandshakeReq
put MsgBootloaderHandshakeReq =
return ()
$(makeSBP 'msgBootloaderHandshakeReq ''MsgBootloaderHandshakeReq)
$(makeJSON "_msgBootloaderHandshakeReq_" ''MsgBootloaderHandshakeReq)
$(makeLenses ''MsgBootloaderHandshakeReq)
msgBootloaderHandshakeResp :: Word16
msgBootloaderHandshakeResp = 0x00B4
data MsgBootloaderHandshakeResp = MsgBootloaderHandshakeResp
{ _msgBootloaderHandshakeResp_flags :: !Word32
, _msgBootloaderHandshakeResp_version :: !Text
} deriving ( Show, Read, Eq )
instance Binary MsgBootloaderHandshakeResp where
get = do
_msgBootloaderHandshakeResp_flags <- getWord32le
_msgBootloaderHandshakeResp_version <- decodeUtf8 . toStrict <$> getRemainingLazyByteString
return MsgBootloaderHandshakeResp {..}
put MsgBootloaderHandshakeResp {..} = do
putWord32le _msgBootloaderHandshakeResp_flags
putByteString $ encodeUtf8 _msgBootloaderHandshakeResp_version
$(makeSBP 'msgBootloaderHandshakeResp ''MsgBootloaderHandshakeResp)
$(makeJSON "_msgBootloaderHandshakeResp_" ''MsgBootloaderHandshakeResp)
$(makeLenses ''MsgBootloaderHandshakeResp)
msgBootloaderJumpToApp :: Word16
msgBootloaderJumpToApp = 0x00B1
data MsgBootloaderJumpToApp = MsgBootloaderJumpToApp
{ _msgBootloaderJumpToApp_jump :: !Word8
} deriving ( Show, Read, Eq )
instance Binary MsgBootloaderJumpToApp where
get = do
_msgBootloaderJumpToApp_jump <- getWord8
return MsgBootloaderJumpToApp {..}
put MsgBootloaderJumpToApp {..} = do
putWord8 _msgBootloaderJumpToApp_jump
$(makeSBP 'msgBootloaderJumpToApp ''MsgBootloaderJumpToApp)
$(makeJSON "_msgBootloaderJumpToApp_" ''MsgBootloaderJumpToApp)
$(makeLenses ''MsgBootloaderJumpToApp)
msgNapDeviceDnaReq :: Word16
msgNapDeviceDnaReq = 0x00DE
data MsgNapDeviceDnaReq = MsgNapDeviceDnaReq
deriving ( Show, Read, Eq )
instance Binary MsgNapDeviceDnaReq where
get =
return MsgNapDeviceDnaReq
put MsgNapDeviceDnaReq =
return ()
$(makeSBP 'msgNapDeviceDnaReq ''MsgNapDeviceDnaReq)
$(makeJSON "_msgNapDeviceDnaReq_" ''MsgNapDeviceDnaReq)
$(makeLenses ''MsgNapDeviceDnaReq)
msgNapDeviceDnaResp :: Word16
msgNapDeviceDnaResp = 0x00DD
data MsgNapDeviceDnaResp = MsgNapDeviceDnaResp
{ _msgNapDeviceDnaResp_dna :: ![Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgNapDeviceDnaResp where
get = do
_msgNapDeviceDnaResp_dna <- replicateM 8 getWord8
return MsgNapDeviceDnaResp {..}
put MsgNapDeviceDnaResp {..} = do
mapM_ putWord8 _msgNapDeviceDnaResp_dna
$(makeSBP 'msgNapDeviceDnaResp ''MsgNapDeviceDnaResp)
$(makeJSON "_msgNapDeviceDnaResp_" ''MsgNapDeviceDnaResp)
$(makeLenses ''MsgNapDeviceDnaResp)
msgBootloaderHandshakeDepA :: Word16
msgBootloaderHandshakeDepA = 0x00B0
data MsgBootloaderHandshakeDepA = MsgBootloaderHandshakeDepA
{ _msgBootloaderHandshakeDepA_handshake :: ![Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgBootloaderHandshakeDepA where
get = do
_msgBootloaderHandshakeDepA_handshake <- whileM (not <$> isEmpty) getWord8
return MsgBootloaderHandshakeDepA {..}
put MsgBootloaderHandshakeDepA {..} = do
mapM_ putWord8 _msgBootloaderHandshakeDepA_handshake
$(makeSBP 'msgBootloaderHandshakeDepA ''MsgBootloaderHandshakeDepA)
$(makeJSON "_msgBootloaderHandshakeDepA_" ''MsgBootloaderHandshakeDepA)
$(makeLenses ''MsgBootloaderHandshakeDepA)