module SwiftNav.SBP.Flash 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
msgFlashProgram :: Word16
msgFlashProgram = 0x00E6
data MsgFlashProgram = MsgFlashProgram
{ _msgFlashProgram_target :: Word8
, _msgFlashProgram_addr_start :: [Word8]
, _msgFlashProgram_addr_len :: Word8
, _msgFlashProgram_data :: [Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgFlashProgram where
get = do
_msgFlashProgram_target <- getWord8
_msgFlashProgram_addr_start <- replicateM 3 getWord8
_msgFlashProgram_addr_len <- getWord8
_msgFlashProgram_data <- whileM (not <$> isEmpty) getWord8
return MsgFlashProgram {..}
put MsgFlashProgram {..} = do
putWord8 _msgFlashProgram_target
mapM_ putWord8 _msgFlashProgram_addr_start
putWord8 _msgFlashProgram_addr_len
mapM_ putWord8 _msgFlashProgram_data
$(deriveSBP 'msgFlashProgram ''MsgFlashProgram)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFlashProgram_" . P.stripPrefix "_msgFlashProgram_"}
''MsgFlashProgram)
$(makeLenses ''MsgFlashProgram)
msgFlashDone :: Word16
msgFlashDone = 0x00E0
data MsgFlashDone = MsgFlashDone
{ _msgFlashDone_response :: Word8
} deriving ( Show, Read, Eq )
instance Binary MsgFlashDone where
get = do
_msgFlashDone_response <- getWord8
return MsgFlashDone {..}
put MsgFlashDone {..} = do
putWord8 _msgFlashDone_response
$(deriveSBP 'msgFlashDone ''MsgFlashDone)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFlashDone_" . P.stripPrefix "_msgFlashDone_"}
''MsgFlashDone)
$(makeLenses ''MsgFlashDone)
msgFlashReadReq :: Word16
msgFlashReadReq = 0x00E7
data MsgFlashReadReq = MsgFlashReadReq
{ _msgFlashReadReq_target :: Word8
, _msgFlashReadReq_addr_start :: [Word8]
, _msgFlashReadReq_addr_len :: Word8
} deriving ( Show, Read, Eq )
instance Binary MsgFlashReadReq where
get = do
_msgFlashReadReq_target <- getWord8
_msgFlashReadReq_addr_start <- replicateM 3 getWord8
_msgFlashReadReq_addr_len <- getWord8
return MsgFlashReadReq {..}
put MsgFlashReadReq {..} = do
putWord8 _msgFlashReadReq_target
mapM_ putWord8 _msgFlashReadReq_addr_start
putWord8 _msgFlashReadReq_addr_len
$(deriveSBP 'msgFlashReadReq ''MsgFlashReadReq)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFlashReadReq_" . P.stripPrefix "_msgFlashReadReq_"}
''MsgFlashReadReq)
$(makeLenses ''MsgFlashReadReq)
msgFlashReadResp :: Word16
msgFlashReadResp = 0x00E1
data MsgFlashReadResp = MsgFlashReadResp
{ _msgFlashReadResp_target :: Word8
, _msgFlashReadResp_addr_start :: [Word8]
, _msgFlashReadResp_addr_len :: Word8
} deriving ( Show, Read, Eq )
instance Binary MsgFlashReadResp where
get = do
_msgFlashReadResp_target <- getWord8
_msgFlashReadResp_addr_start <- replicateM 3 getWord8
_msgFlashReadResp_addr_len <- getWord8
return MsgFlashReadResp {..}
put MsgFlashReadResp {..} = do
putWord8 _msgFlashReadResp_target
mapM_ putWord8 _msgFlashReadResp_addr_start
putWord8 _msgFlashReadResp_addr_len
$(deriveSBP 'msgFlashReadResp ''MsgFlashReadResp)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFlashReadResp_" . P.stripPrefix "_msgFlashReadResp_"}
''MsgFlashReadResp)
$(makeLenses ''MsgFlashReadResp)
msgFlashErase :: Word16
msgFlashErase = 0x00E2
data MsgFlashErase = MsgFlashErase
{ _msgFlashErase_target :: Word8
, _msgFlashErase_sector_num :: Word32
} deriving ( Show, Read, Eq )
instance Binary MsgFlashErase where
get = do
_msgFlashErase_target <- getWord8
_msgFlashErase_sector_num <- getWord32le
return MsgFlashErase {..}
put MsgFlashErase {..} = do
putWord8 _msgFlashErase_target
putWord32le _msgFlashErase_sector_num
$(deriveSBP 'msgFlashErase ''MsgFlashErase)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFlashErase_" . P.stripPrefix "_msgFlashErase_"}
''MsgFlashErase)
$(makeLenses ''MsgFlashErase)
msgStmFlashLockSector :: Word16
msgStmFlashLockSector = 0x00E3
data MsgStmFlashLockSector = MsgStmFlashLockSector
{ _msgStmFlashLockSector_sector :: Word32
} deriving ( Show, Read, Eq )
instance Binary MsgStmFlashLockSector where
get = do
_msgStmFlashLockSector_sector <- getWord32le
return MsgStmFlashLockSector {..}
put MsgStmFlashLockSector {..} = do
putWord32le _msgStmFlashLockSector_sector
$(deriveSBP 'msgStmFlashLockSector ''MsgStmFlashLockSector)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgStmFlashLockSector_" . P.stripPrefix "_msgStmFlashLockSector_"}
''MsgStmFlashLockSector)
$(makeLenses ''MsgStmFlashLockSector)
msgStmFlashUnlockSector :: Word16
msgStmFlashUnlockSector = 0x00E4
data MsgStmFlashUnlockSector = MsgStmFlashUnlockSector
{ _msgStmFlashUnlockSector_sector :: Word32
} deriving ( Show, Read, Eq )
instance Binary MsgStmFlashUnlockSector where
get = do
_msgStmFlashUnlockSector_sector <- getWord32le
return MsgStmFlashUnlockSector {..}
put MsgStmFlashUnlockSector {..} = do
putWord32le _msgStmFlashUnlockSector_sector
$(deriveSBP 'msgStmFlashUnlockSector ''MsgStmFlashUnlockSector)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgStmFlashUnlockSector_" . P.stripPrefix "_msgStmFlashUnlockSector_"}
''MsgStmFlashUnlockSector)
$(makeLenses ''MsgStmFlashUnlockSector)
msgStmUniqueIdReq :: Word16
msgStmUniqueIdReq = 0x00E8
data MsgStmUniqueIdReq = MsgStmUniqueIdReq
deriving ( Show, Read, Eq )
instance Binary MsgStmUniqueIdReq where
get =
return MsgStmUniqueIdReq
put MsgStmUniqueIdReq =
return ()
$(deriveSBP 'msgStmUniqueIdReq ''MsgStmUniqueIdReq)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgStmUniqueIdReq_" . P.stripPrefix "_msgStmUniqueIdReq_"}
''MsgStmUniqueIdReq)
$(makeLenses ''MsgStmUniqueIdReq)
msgStmUniqueIdResp :: Word16
msgStmUniqueIdResp = 0x00E5
data MsgStmUniqueIdResp = MsgStmUniqueIdResp
{ _msgStmUniqueIdResp_stm_id :: [Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgStmUniqueIdResp where
get = do
_msgStmUniqueIdResp_stm_id <- replicateM 12 getWord8
return MsgStmUniqueIdResp {..}
put MsgStmUniqueIdResp {..} = do
mapM_ putWord8 _msgStmUniqueIdResp_stm_id
$(deriveSBP 'msgStmUniqueIdResp ''MsgStmUniqueIdResp)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgStmUniqueIdResp_" . P.stripPrefix "_msgStmUniqueIdResp_"}
''MsgStmUniqueIdResp)
$(makeLenses ''MsgStmUniqueIdResp)
msgM25FlashWriteStatus :: Word16
msgM25FlashWriteStatus = 0x00F3
data MsgM25FlashWriteStatus = MsgM25FlashWriteStatus
{ _msgM25FlashWriteStatus_status :: [Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgM25FlashWriteStatus where
get = do
_msgM25FlashWriteStatus_status <- replicateM 1 getWord8
return MsgM25FlashWriteStatus {..}
put MsgM25FlashWriteStatus {..} = do
mapM_ putWord8 _msgM25FlashWriteStatus_status
$(deriveSBP 'msgM25FlashWriteStatus ''MsgM25FlashWriteStatus)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgM25FlashWriteStatus_" . P.stripPrefix "_msgM25FlashWriteStatus_"}
''MsgM25FlashWriteStatus)
$(makeLenses ''MsgM25FlashWriteStatus)