module SwiftNav.SBP.FileIo where
import Control.Monad
import Control.Monad.Loops
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
msgFileioReadReq :: Word16
msgFileioReadReq = 0x00A8
data MsgFileioReadReq = MsgFileioReadReq
{ msgFileioReadReqSequence :: Word32
, msgFileioReadReqOffset :: Word32
, msgFileioReadReqChunkSize :: Word8
, msgFileioReadReqFilename :: ByteString
} deriving ( Show, Read, Eq )
instance Binary MsgFileioReadReq where
get = do
msgFileioReadReqSequence <- getWord32le
msgFileioReadReqOffset <- getWord32le
msgFileioReadReqChunkSize <- getWord8
msgFileioReadReqFilename <- liftM toStrict getRemainingLazyByteString
return MsgFileioReadReq {..}
put MsgFileioReadReq {..} = do
putWord32le msgFileioReadReqSequence
putWord32le msgFileioReadReqOffset
putWord8 msgFileioReadReqChunkSize
putByteString msgFileioReadReqFilename
msgFileioReadResp :: Word16
msgFileioReadResp = 0x00A3
data MsgFileioReadResp = MsgFileioReadResp
{ msgFileioReadRespSequence :: Word32
, msgFileioReadRespContents :: [Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgFileioReadResp where
get = do
msgFileioReadRespSequence <- getWord32le
msgFileioReadRespContents <- whileM (liftM not isEmpty) getWord8
return MsgFileioReadResp {..}
put MsgFileioReadResp {..} = do
putWord32le msgFileioReadRespSequence
mapM_ putWord8 msgFileioReadRespContents
msgFileioReadDirReq :: Word16
msgFileioReadDirReq = 0x00A9
data MsgFileioReadDirReq = MsgFileioReadDirReq
{ msgFileioReadDirReqSequence :: Word32
, msgFileioReadDirReqOffset :: Word32
, msgFileioReadDirReqDirname :: ByteString
} deriving ( Show, Read, Eq )
instance Binary MsgFileioReadDirReq where
get = do
msgFileioReadDirReqSequence <- getWord32le
msgFileioReadDirReqOffset <- getWord32le
msgFileioReadDirReqDirname <- liftM toStrict getRemainingLazyByteString
return MsgFileioReadDirReq {..}
put MsgFileioReadDirReq {..} = do
putWord32le msgFileioReadDirReqSequence
putWord32le msgFileioReadDirReqOffset
putByteString msgFileioReadDirReqDirname
msgFileioReadDirResp :: Word16
msgFileioReadDirResp = 0x00AA
data MsgFileioReadDirResp = MsgFileioReadDirResp
{ msgFileioReadDirRespSequence :: Word32
, msgFileioReadDirRespContents :: [Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgFileioReadDirResp where
get = do
msgFileioReadDirRespSequence <- getWord32le
msgFileioReadDirRespContents <- whileM (liftM not isEmpty) getWord8
return MsgFileioReadDirResp {..}
put MsgFileioReadDirResp {..} = do
putWord32le msgFileioReadDirRespSequence
mapM_ putWord8 msgFileioReadDirRespContents
msgFileioRemove :: Word16
msgFileioRemove = 0x00AC
data MsgFileioRemove = MsgFileioRemove
{ msgFileioRemoveFilename :: ByteString
} deriving ( Show, Read, Eq )
instance Binary MsgFileioRemove where
get = do
msgFileioRemoveFilename <- liftM toStrict getRemainingLazyByteString
return MsgFileioRemove {..}
put MsgFileioRemove {..} = do
putByteString msgFileioRemoveFilename
msgFileioWriteReq :: Word16
msgFileioWriteReq = 0x00AD
data MsgFileioWriteReq = MsgFileioWriteReq
{ msgFileioWriteReqSequence :: Word32
, msgFileioWriteReqOffset :: Word32
, msgFileioWriteReqFilename :: ByteString
, msgFileioWriteReqData :: [Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgFileioWriteReq where
get = do
msgFileioWriteReqSequence <- getWord32le
msgFileioWriteReqOffset <- getWord32le
msgFileioWriteReqFilename <- liftM toStrict getRemainingLazyByteString
msgFileioWriteReqData <- whileM (liftM not isEmpty) getWord8
return MsgFileioWriteReq {..}
put MsgFileioWriteReq {..} = do
putWord32le msgFileioWriteReqSequence
putWord32le msgFileioWriteReqOffset
putByteString msgFileioWriteReqFilename
mapM_ putWord8 msgFileioWriteReqData
msgFileioWriteResp :: Word16
msgFileioWriteResp = 0x00AB
data MsgFileioWriteResp = MsgFileioWriteResp
{ msgFileioWriteRespSequence :: Word32
} deriving ( Show, Read, Eq )
instance Binary MsgFileioWriteResp where
get = do
msgFileioWriteRespSequence <- getWord32le
return MsgFileioWriteResp {..}
put MsgFileioWriteResp {..} = do
putWord32le msgFileioWriteRespSequence