{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE RecordWildCards #-}
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
{-# ANN module ("HLint: ignore Use camelCase"::String) #-}
{-# ANN module ("HLint: ignore Redundant do"::String) #-}
{-# ANN module ("HLint: ignore Use newtype instead of data"::String) #-}
msgBootloaderHandshakeReq :: Word16
msgBootloaderHandshakeReq = 0x00B3
data MsgBootloaderHandshakeReq = MsgBootloaderHandshakeReq
deriving ( Show, Read, Eq )
instance Binary MsgBootloaderHandshakeReq where
get =
pure MsgBootloaderHandshakeReq
put MsgBootloaderHandshakeReq =
pure ()
$(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
pure 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
pure 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 =
pure MsgNapDeviceDnaReq
put MsgNapDeviceDnaReq =
pure ()
$(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
pure 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
pure MsgBootloaderHandshakeDepA {..}
put MsgBootloaderHandshakeDepA {..} = do
mapM_ putWord8 _msgBootloaderHandshakeDepA_handshake
$(makeSBP 'msgBootloaderHandshakeDepA ''MsgBootloaderHandshakeDepA)
$(makeJSON "_msgBootloaderHandshakeDepA_" ''MsgBootloaderHandshakeDepA)
$(makeLenses ''MsgBootloaderHandshakeDepA)