module SwiftNav.SBP.FileIo 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
msgFileioReadReq :: Word16
msgFileioReadReq = 0x00A8
data MsgFileioReadReq = MsgFileioReadReq
{ _msgFileioReadReq_sequence :: Word32
, _msgFileioReadReq_offset :: Word32
, _msgFileioReadReq_chunk_size :: Word8
, _msgFileioReadReq_filename :: Text
} deriving ( Show, Read, Eq )
instance Binary MsgFileioReadReq where
get = do
_msgFileioReadReq_sequence <- getWord32le
_msgFileioReadReq_offset <- getWord32le
_msgFileioReadReq_chunk_size <- getWord8
_msgFileioReadReq_filename <- decodeUtf8 . toStrict <$> getRemainingLazyByteString
return MsgFileioReadReq {..}
put MsgFileioReadReq {..} = do
putWord32le _msgFileioReadReq_sequence
putWord32le _msgFileioReadReq_offset
putWord8 _msgFileioReadReq_chunk_size
putByteString $ encodeUtf8 _msgFileioReadReq_filename
$(deriveSBP 'msgFileioReadReq ''MsgFileioReadReq)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFileioReadReq_" . P.stripPrefix "_msgFileioReadReq_"}
''MsgFileioReadReq)
$(makeLenses ''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 (not <$> isEmpty) getWord8
return MsgFileioReadResp {..}
put MsgFileioReadResp {..} = do
putWord32le _msgFileioReadResp_sequence
mapM_ putWord8 _msgFileioReadResp_contents
$(deriveSBP 'msgFileioReadResp ''MsgFileioReadResp)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFileioReadResp_" . P.stripPrefix "_msgFileioReadResp_"}
''MsgFileioReadResp)
$(makeLenses ''MsgFileioReadResp)
msgFileioReadDirReq :: Word16
msgFileioReadDirReq = 0x00A9
data MsgFileioReadDirReq = MsgFileioReadDirReq
{ _msgFileioReadDirReq_sequence :: Word32
, _msgFileioReadDirReq_offset :: Word32
, _msgFileioReadDirReq_dirname :: Text
} deriving ( Show, Read, Eq )
instance Binary MsgFileioReadDirReq where
get = do
_msgFileioReadDirReq_sequence <- getWord32le
_msgFileioReadDirReq_offset <- getWord32le
_msgFileioReadDirReq_dirname <- decodeUtf8 . toStrict <$> getRemainingLazyByteString
return MsgFileioReadDirReq {..}
put MsgFileioReadDirReq {..} = do
putWord32le _msgFileioReadDirReq_sequence
putWord32le _msgFileioReadDirReq_offset
putByteString $ encodeUtf8 _msgFileioReadDirReq_dirname
$(deriveSBP 'msgFileioReadDirReq ''MsgFileioReadDirReq)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFileioReadDirReq_" . P.stripPrefix "_msgFileioReadDirReq_"}
''MsgFileioReadDirReq)
$(makeLenses ''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 (not <$> isEmpty) getWord8
return MsgFileioReadDirResp {..}
put MsgFileioReadDirResp {..} = do
putWord32le _msgFileioReadDirResp_sequence
mapM_ putWord8 _msgFileioReadDirResp_contents
$(deriveSBP 'msgFileioReadDirResp ''MsgFileioReadDirResp)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFileioReadDirResp_" . P.stripPrefix "_msgFileioReadDirResp_"}
''MsgFileioReadDirResp)
$(makeLenses ''MsgFileioReadDirResp)
msgFileioRemove :: Word16
msgFileioRemove = 0x00AC
data MsgFileioRemove = MsgFileioRemove
{ _msgFileioRemove_filename :: Text
} deriving ( Show, Read, Eq )
instance Binary MsgFileioRemove where
get = do
_msgFileioRemove_filename <- decodeUtf8 . toStrict <$> getRemainingLazyByteString
return MsgFileioRemove {..}
put MsgFileioRemove {..} = do
putByteString $ encodeUtf8 _msgFileioRemove_filename
$(deriveSBP 'msgFileioRemove ''MsgFileioRemove)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFileioRemove_" . P.stripPrefix "_msgFileioRemove_"}
''MsgFileioRemove)
$(makeLenses ''MsgFileioRemove)
msgFileioWriteReq :: Word16
msgFileioWriteReq = 0x00AD
data MsgFileioWriteReq = MsgFileioWriteReq
{ _msgFileioWriteReq_sequence :: Word32
, _msgFileioWriteReq_offset :: Word32
, _msgFileioWriteReq_filename :: Text
, _msgFileioWriteReq_data :: [Word8]
} deriving ( Show, Read, Eq )
instance Binary MsgFileioWriteReq where
get = do
_msgFileioWriteReq_sequence <- getWord32le
_msgFileioWriteReq_offset <- getWord32le
_msgFileioWriteReq_filename <- decodeUtf8 . toStrict <$> getRemainingLazyByteString
_msgFileioWriteReq_data <- whileM (not <$> isEmpty) getWord8
return MsgFileioWriteReq {..}
put MsgFileioWriteReq {..} = do
putWord32le _msgFileioWriteReq_sequence
putWord32le _msgFileioWriteReq_offset
putByteString $ encodeUtf8 _msgFileioWriteReq_filename
mapM_ putWord8 _msgFileioWriteReq_data
$(deriveSBP 'msgFileioWriteReq ''MsgFileioWriteReq)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFileioWriteReq_" . P.stripPrefix "_msgFileioWriteReq_"}
''MsgFileioWriteReq)
$(makeLenses ''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
$(deriveSBP 'msgFileioWriteResp ''MsgFileioWriteResp)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgFileioWriteResp_" . P.stripPrefix "_msgFileioWriteResp_"}
''MsgFileioWriteResp)
$(makeLenses ''MsgFileioWriteResp)