module SwiftNav.SBP.Flash where
import BasicPrelude
import Control.Monad
import Control.Monad.Loops
import Data.Aeson.TH (deriveJSON, defaultOptions, 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
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 (liftM not isEmpty) getWord8
return MsgFlashProgram {..}
put MsgFlashProgram {..} = do
putWord8 msgFlashProgram_target
mapM_ putWord8 msgFlashProgram_addr_start
putWord8 msgFlashProgram_addr_len
mapM_ putWord8 msgFlashProgram_data
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgFlashProgram_" . stripPrefix "msgFlashProgram_"}
''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
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgFlashDone_" . stripPrefix "msgFlashDone_"}
''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
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgFlashReadReq_" . stripPrefix "msgFlashReadReq_"}
''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
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgFlashReadResp_" . stripPrefix "msgFlashReadResp_"}
''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
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgFlashErase_" . stripPrefix "msgFlashErase_"}
''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
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgStmFlashLockSector_" . stripPrefix "msgStmFlashLockSector_"}
''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
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgStmFlashUnlockSector_" . stripPrefix "msgStmFlashUnlockSector_"}
''MsgStmFlashUnlockSector)
msgStmUniqueIdReq :: Word16
msgStmUniqueIdReq = 0x00E8
data MsgStmUniqueIdReq = MsgStmUniqueIdReq
deriving ( Show, Read, Eq )
instance Binary MsgStmUniqueIdReq where
get =
return MsgStmUniqueIdReq
put MsgStmUniqueIdReq =
return ()
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
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgStmUniqueIdResp_" . stripPrefix "msgStmUniqueIdResp_"}
''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
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgM25FlashWriteStatus_" . stripPrefix "msgM25FlashWriteStatus_"}
''MsgM25FlashWriteStatus)