module SwiftNav.SBP.Bootload 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
msgBootloaderHandshakeReq :: Word16
msgBootloaderHandshakeReq = 0x00B3
data MsgBootloaderHandshakeReq = MsgBootloaderHandshakeReq
deriving ( Show, Read, Eq )
instance Binary MsgBootloaderHandshakeReq where
get =
return MsgBootloaderHandshakeReq
put MsgBootloaderHandshakeReq =
return ()
$(deriveSBP 'msgBootloaderHandshakeReq ''MsgBootloaderHandshakeReq)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgBootloaderHandshakeReq_" . P.stripPrefix "_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
$(deriveSBP 'msgBootloaderHandshakeResp ''MsgBootloaderHandshakeResp)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgBootloaderHandshakeResp_" . P.stripPrefix "_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
$(deriveSBP 'msgBootloaderJumpToApp ''MsgBootloaderJumpToApp)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgBootloaderJumpToApp_" . P.stripPrefix "_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 ()
$(deriveSBP 'msgNapDeviceDnaReq ''MsgNapDeviceDnaReq)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgNapDeviceDnaReq_" . P.stripPrefix "_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
$(deriveSBP 'msgNapDeviceDnaResp ''MsgNapDeviceDnaResp)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgNapDeviceDnaResp_" . P.stripPrefix "_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
$(deriveSBP 'msgBootloaderHandshakeDepA ''MsgBootloaderHandshakeDepA)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgBootloaderHandshakeDepA_" . P.stripPrefix "_msgBootloaderHandshakeDepA_"}
''MsgBootloaderHandshakeDepA)
$(makeLenses ''MsgBootloaderHandshakeDepA)