module SwiftNav.SBP.FileIo 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
msgFileioReadReq :: Word16
msgFileioReadReq = 0x00A8
data MsgFileioReadReq = MsgFileioReadReq
{ msgFileioReadReq_sequence :: Word32
, msgFileioReadReq_offset :: Word32
, msgFileioReadReq_chunk_size :: Word8
, msgFileioReadReq_filename :: ByteString
} deriving ( Show, Read, Eq )
instance Binary MsgFileioReadReq where
get = do
msgFileioReadReq_sequence <- getWord32le
msgFileioReadReq_offset <- getWord32le
msgFileioReadReq_chunk_size <- getWord8
msgFileioReadReq_filename <- liftM toStrict getRemainingLazyByteString
return MsgFileioReadReq {..}
put MsgFileioReadReq {..} = do
putWord32le msgFileioReadReq_sequence
putWord32le msgFileioReadReq_offset
putWord8 msgFileioReadReq_chunk_size
putByteString msgFileioReadReq_filename
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgFileioReadReq_" . stripPrefix "msgFileioReadReq_"}
''MsgFileioReadReq)
msgFileioReadResp :: Word16
msgFileioReadResp = 0x00A3
data MsgFileioReadResp = MsgFileioReadResp
{ msgFileioReadResp_sequence :: Word32
, msgFileioReadResp_contents :: [Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgFileioReadResp where
get = do
msgFileioReadResp_sequence <- getWord32le
msgFileioReadResp_contents <- whileM (liftM not isEmpty) getWord8
return MsgFileioReadResp {..}
put MsgFileioReadResp {..} = do
putWord32le msgFileioReadResp_sequence
mapM_ putWord8 msgFileioReadResp_contents
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgFileioReadResp_" . stripPrefix "msgFileioReadResp_"}
''MsgFileioReadResp)
msgFileioReadDirReq :: Word16
msgFileioReadDirReq = 0x00A9
data MsgFileioReadDirReq = MsgFileioReadDirReq
{ msgFileioReadDirReq_sequence :: Word32
, msgFileioReadDirReq_offset :: Word32
, msgFileioReadDirReq_dirname :: ByteString
} deriving ( Show, Read, Eq )
instance Binary MsgFileioReadDirReq where
get = do
msgFileioReadDirReq_sequence <- getWord32le
msgFileioReadDirReq_offset <- getWord32le
msgFileioReadDirReq_dirname <- liftM toStrict getRemainingLazyByteString
return MsgFileioReadDirReq {..}
put MsgFileioReadDirReq {..} = do
putWord32le msgFileioReadDirReq_sequence
putWord32le msgFileioReadDirReq_offset
putByteString msgFileioReadDirReq_dirname
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgFileioReadDirReq_" . stripPrefix "msgFileioReadDirReq_"}
''MsgFileioReadDirReq)
msgFileioReadDirResp :: Word16
msgFileioReadDirResp = 0x00AA
data MsgFileioReadDirResp = MsgFileioReadDirResp
{ msgFileioReadDirResp_sequence :: Word32
, msgFileioReadDirResp_contents :: [Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgFileioReadDirResp where
get = do
msgFileioReadDirResp_sequence <- getWord32le
msgFileioReadDirResp_contents <- whileM (liftM not isEmpty) getWord8
return MsgFileioReadDirResp {..}
put MsgFileioReadDirResp {..} = do
putWord32le msgFileioReadDirResp_sequence
mapM_ putWord8 msgFileioReadDirResp_contents
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgFileioReadDirResp_" . stripPrefix "msgFileioReadDirResp_"}
''MsgFileioReadDirResp)
msgFileioRemove :: Word16
msgFileioRemove = 0x00AC
data MsgFileioRemove = MsgFileioRemove
{ msgFileioRemove_filename :: ByteString
} deriving ( Show, Read, Eq )
instance Binary MsgFileioRemove where
get = do
msgFileioRemove_filename <- liftM toStrict getRemainingLazyByteString
return MsgFileioRemove {..}
put MsgFileioRemove {..} = do
putByteString msgFileioRemove_filename
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgFileioRemove_" . stripPrefix "msgFileioRemove_"}
''MsgFileioRemove)
msgFileioWriteReq :: Word16
msgFileioWriteReq = 0x00AD
data MsgFileioWriteReq = MsgFileioWriteReq
{ msgFileioWriteReq_sequence :: Word32
, msgFileioWriteReq_offset :: Word32
, msgFileioWriteReq_filename :: ByteString
, msgFileioWriteReq_data :: [Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgFileioWriteReq where
get = do
msgFileioWriteReq_sequence <- getWord32le
msgFileioWriteReq_offset <- getWord32le
msgFileioWriteReq_filename <- liftM toStrict getRemainingLazyByteString
msgFileioWriteReq_data <- whileM (liftM not isEmpty) getWord8
return MsgFileioWriteReq {..}
put MsgFileioWriteReq {..} = do
putWord32le msgFileioWriteReq_sequence
putWord32le msgFileioWriteReq_offset
putByteString msgFileioWriteReq_filename
mapM_ putWord8 msgFileioWriteReq_data
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgFileioWriteReq_" . stripPrefix "msgFileioWriteReq_"}
''MsgFileioWriteReq)
msgFileioWriteResp :: Word16
msgFileioWriteResp = 0x00AB
data MsgFileioWriteResp = MsgFileioWriteResp
{ msgFileioWriteResp_sequence :: Word32
} deriving ( Show, Read, Eq )
instance Binary MsgFileioWriteResp where
get = do
msgFileioWriteResp_sequence <- getWord32le
return MsgFileioWriteResp {..}
put MsgFileioWriteResp {..} = do
putWord32le msgFileioWriteResp_sequence
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "msgFileioWriteResp_" . stripPrefix "msgFileioWriteResp_"}
''MsgFileioWriteResp)