module SwiftNav.SBP.Imu 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
msgImuRaw :: Word16
msgImuRaw = 0x0900
data MsgImuRaw = MsgImuRaw
{ _msgImuRaw_tow :: Word32
, _msgImuRaw_tow_f :: Word8
, _msgImuRaw_acc_x :: Int16
, _msgImuRaw_acc_y :: Int16
, _msgImuRaw_acc_z :: Int16
, _msgImuRaw_gyr_x :: Int16
, _msgImuRaw_gyr_y :: Int16
, _msgImuRaw_gyr_z :: Int16
} deriving ( Show, Read, Eq )
instance Binary MsgImuRaw where
get = do
_msgImuRaw_tow <- getWord32le
_msgImuRaw_tow_f <- getWord8
_msgImuRaw_acc_x <- fromIntegral <$> getWord16le
_msgImuRaw_acc_y <- fromIntegral <$> getWord16le
_msgImuRaw_acc_z <- fromIntegral <$> getWord16le
_msgImuRaw_gyr_x <- fromIntegral <$> getWord16le
_msgImuRaw_gyr_y <- fromIntegral <$> getWord16le
_msgImuRaw_gyr_z <- fromIntegral <$> getWord16le
return MsgImuRaw {..}
put MsgImuRaw {..} = do
putWord32le _msgImuRaw_tow
putWord8 _msgImuRaw_tow_f
putWord16le $ fromIntegral _msgImuRaw_acc_x
putWord16le $ fromIntegral _msgImuRaw_acc_y
putWord16le $ fromIntegral _msgImuRaw_acc_z
putWord16le $ fromIntegral _msgImuRaw_gyr_x
putWord16le $ fromIntegral _msgImuRaw_gyr_y
putWord16le $ fromIntegral _msgImuRaw_gyr_z
$(deriveSBP 'msgImuRaw ''MsgImuRaw)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgImuRaw_" . P.stripPrefix "_msgImuRaw_"}
''MsgImuRaw)
$(makeLenses ''MsgImuRaw)
msgImuAux :: Word16
msgImuAux = 0x0901
data MsgImuAux = MsgImuAux
{ _msgImuAux_imu_type :: Word8
, _msgImuAux_temp :: Int16
, _msgImuAux_imu_conf :: Word8
} deriving ( Show, Read, Eq )
instance Binary MsgImuAux where
get = do
_msgImuAux_imu_type <- getWord8
_msgImuAux_temp <- fromIntegral <$> getWord16le
_msgImuAux_imu_conf <- getWord8
return MsgImuAux {..}
put MsgImuAux {..} = do
putWord8 _msgImuAux_imu_type
putWord16le $ fromIntegral _msgImuAux_temp
putWord8 _msgImuAux_imu_conf
$(deriveSBP 'msgImuAux ''MsgImuAux)
$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgImuAux_" . P.stripPrefix "_msgImuAux_"}
''MsgImuAux)
$(makeLenses ''MsgImuAux)