packages feed

rtcm 0.1.9 → 0.1.10

raw patch · 22 files changed

+454/−31 lines, 22 filesnew-uploader

Files

main/rtcm32json.hs view
@@ -1,3 +1,7 @@+{-# OPTIONS_GHC -Wall #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Main -- Copyright:   Copyright (C) 2015 Swift Navigation, Inc.
rtcm.cabal view
@@ -1,5 +1,5 @@ name:                  rtcm-version:               0.1.9+version:               0.1.10 synopsis:              RTCM Library. description:           Haskell bindings for RTCM. homepage:              http://github.com/swift-nav/librtcm@@ -48,10 +48,6 @@                      , text                      , word24   default-language:    Haskell2010-  default-extensions:  NoImplicitPrelude-                       OverloadedStrings-                       RecordWildCards-                       TemplateHaskell  executable rtcm32json   hs-source-dirs:      main@@ -68,8 +64,6 @@                      , resourcet                      , rtcm   default-language:    Haskell2010-  default-extensions:  NoImplicitPrelude-                       OverloadedStrings  test-suite test   type:                exitcode-stdio-1.0@@ -77,6 +71,7 @@   main-is:             Test.hs   other-modules:       Test.Data.CRC24Q                      , Test.Data.RTCM3.Antennas+                     , Test.Data.RTCM3.Ephemeris                      , Test.Data.RTCM3.Extras                      , Test.Data.RTCM3.Observations                      , Test.Data.RTCM3.SSR@@ -96,6 +91,3 @@                      , word24   ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wall   default-language:    Haskell2010-  default-extensions:  NoImplicitPrelude-                       OverloadedStrings-                       RecordWildCards
src/Data/CRC24Q.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Data.CRC24Q -- Copyright:   Copyright (C) 2015 Swift Navigation, Inc.
src/Data/RTCM3.hs view
@@ -1,3 +1,8 @@+{-# OPTIONS_GHC -Wall #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Data.RTCM3 -- Copyright:   (c) 2015 Mark Fine
src/Data/RTCM3/Aeson.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE NoImplicitPrelude #-}+ {-# OPTIONS -fno-warn-orphans #-} -- | -- Module:      Data.RTCM3.Extras
src/Data/RTCM3/Antennas.hs view
@@ -1,3 +1,7 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Data.RTCM3.Antennas -- Copyright:   Copyright (C) 2015 Swift Navigation, Inc.@@ -292,9 +296,7 @@ instance Binary Msg1008 where   get = B.runBitGet $ do     _msg1008_descriptor    <- getBits 0-    -- ^ Antenna descriptor.     _msg1008_extDescriptor <- getBits 0-    -- ^ Antenna extended descriptor.     return Msg1008 {..}    put Msg1008 {..} = B.runBitPut $ do@@ -324,11 +326,8 @@ instance Binary Msg1033 where   get = B.runBitGet $ do     _msg1033_antennaDescriptor    <- getBits 0-    -- ^ Antenna descriptor.     _msg1033_antennaExtDescriptor <- getBits 0-    -- ^ Antenna extended descriptor.     _msg1033_receiverDescriptor   <- getBits 0-    -- ^ Receiver descriptor.     return Msg1033 {..}    put Msg1033 {..} = B.runBitPut $ do
src/Data/RTCM3/Ephemeris.hs view
@@ -1,3 +1,7 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Data.RTCM3.Ephemeris -- Copyright:   Copyright (C) 2017 Swift Navigation, Inc.@@ -21,28 +25,28 @@ import           Data.RTCM3.Extras import           Data.RTCM3.TH --- | EphemerisHeader.+-- | GpsEphemerisHeader. -- -- GPS and Glonass Ephemeris header.-data EphemerisHeader = EphemerisHeader-  { _ephemerisHeader_num :: Word16+data GpsEphemerisHeader = GpsEphemerisHeader+  { _gpsEphemerisHeader_num :: Word16     -- ^ Message number.-  , _ephemerisHeader_sat :: Word8+  , _gpsEphemerisHeader_sat :: Word8     -- ^ GPS/Glonass satellite ID.   } deriving ( Show, Read, Eq ) -$(makeLenses ''EphemerisHeader)-$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_ephemerisHeader_" . stripPrefix "_ephemerisHeader_"} ''EphemerisHeader)+$(makeLenses ''GpsEphemerisHeader)+$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_gpsEphemerisHeader_" . stripPrefix "_gpsEphemerisHeader_"} ''GpsEphemerisHeader) -instance BinaryBit EphemerisHeader where+instance BinaryBit GpsEphemerisHeader where   getBits _n = do-    _ephemerisHeader_num <- B.getWord16be 12-    _ephemerisHeader_sat <- B.getWord8    6-    return EphemerisHeader {..}+    _gpsEphemerisHeader_num <- B.getWord16be 12+    _gpsEphemerisHeader_sat <- B.getWord8    6+    return GpsEphemerisHeader {..} -  putBits _n EphemerisHeader {..} = do-    B.putWord16be 12 _ephemerisHeader_num-    B.putWord8    6  _ephemerisHeader_sat+  putBits _n GpsEphemerisHeader {..} = do+    B.putWord16be 12 _gpsEphemerisHeader_num+    B.putWord8    6  _gpsEphemerisHeader_sat  data GpsEphemeris = GpsEphemeris   { _gpsEphemeris_wn          :: Word16@@ -182,7 +186,7 @@ -- See RTCM spec and GPS SPS Signal Specification, 2.4.3, -- for more information about these fields. data Msg1019 = Msg1019-  { _msg1019_header    :: EphemerisHeader+  { _msg1019_header    :: GpsEphemerisHeader     -- ^ GPS ephemeris header.   , _msg1019_ephemeris :: GpsEphemeris     -- ^ GPS ephemeris body.@@ -202,3 +206,244 @@     putBits 0 _msg1019_ephemeris  $(deriveRTCM3 ''Msg1019)++data GlonassEphemerisHeader = GlonassEphemerisHeader+  { _glonassEphemerisHeader_num :: Word16+    -- ^ RTCM message number+  , _glonassEphemerisHeader_sat :: Word8+    -- ^ GLONASS Satellite ID (slot number)+  , _glonassEphemerisHeader_channel :: Word8+    -- ^ Satellite frequency channel number+  } deriving ( Show, Read, Eq )++$(makeLenses ''GlonassEphemerisHeader)+$(deriveJSON+   defaultOptions+   { fieldLabelModifier =+       fromMaybe "_glonassEphemerisHeader_" .+       stripPrefix "_glonassEphemerisHeader_" }+   ''GlonassEphemerisHeader)++instance BinaryBit GlonassEphemerisHeader where+  getBits _n = do+    _glonassEphemerisHeader_num <- B.getWord16be  12+    _glonassEphemerisHeader_sat <- B.getWord8     6+    _glonassEphemerisHeader_channel <- B.getWord8 5+    return GlonassEphemerisHeader {..}++  putBits _n GlonassEphemerisHeader {..} = do+    B.putWord16be 12 _glonassEphemerisHeader_num+    B.putWord8    6  _glonassEphemerisHeader_sat+    B.putWord8    5  _glonassEphemerisHeader_channel++data GlonassEphemeris = GlonassEphemeris+  { _glonassEphemeris_almanacHealth :: Bool+  -- ^ @C_n@ word+  , _glonassEphemeris_healthAvailability :: Bool+  -- ^ Is GLONASS almanac health available?+  , _glonassEphemeris_p1 :: Word8+  -- ^ GLONASS P1 word+  , _glonassEphemeris_tk :: Word16+  -- ^ Time referenced to the beginning of GLONASS subframe within the+  -- current day.  See DF107 on page 55 of the RTCM3.1 document for+  -- more information.+  , _glonassEphemeris_bn_msb :: Bool+  -- ^ MSB of B_n word: the ephemeris health flag+  , _glonassEphemeris_p2 :: Bool+  -- ^ GLONASS P2 word+  , _glonassEphemeris_tb :: Word8+  -- ^ Time to which GLONASS navigation data are referenced.  Unit: 15 minutes+  , _glonassEphemeris_xndot :: Int32+  -- ^ GLONASS @x_n(t_b)@, first time-derivative, given in PZ-90 datum.+  -- Unit: km/s Scale factor: 2^(-20)+  , _glonassEphemeris_xn :: Int32+  -- ^ GLONASS @x_n(t_b)@, given in PZ-90 datum.+  -- Unit: km Scale factor: 2^(-11)+  , _glonassEphemeris_xndotdot :: Int8+  -- ^ GLONASS @x_n(t_b)@, second time-derivative, given in PZ-90 datum.+  -- Unit: km/s^2 Scale factor: 2^(-30)+  , _glonassEphemeris_yndot :: Int32+  -- ^ GLONASS @y_n(t_b)@, first time-derivative, given in PZ-90 datum.+  -- Unit: km/s Scale factor: 2^(-20)+  , _glonassEphemeris_yn :: Int32+  -- ^ GLONASS @y_n(t_b)@, given in PZ-90 datum.+  -- Unit: km Scale factor: 2^(-11)+  , _glonassEphemeris_yndotdot :: Int8+  -- ^ GLONASS @y_n(t_b)@, second time-derivative, given in PZ-90 datum.+  -- Unit: km/s^2 Scale factor: 2^(-30)+  , _glonassEphemeris_zndot :: Int32+  -- ^ GLONASS @z_n(t_b)@, first time-derivative, given in PZ-90 datum.+  -- Unit: km/s Scale factor: 2^(-20)+  , _glonassEphemeris_zn :: Int32+  -- ^ GLONASS @z_n(t_b)@, given in PZ-90 datum.+  -- Unit: km Scale factor: 2^(-11)+  , _glonassEphemeris_zndotdot :: Int8+  -- ^ GLONASS @z_n(t_b)@, second time-derivative, given in PZ-90 datum.+  -- Unit: km/s^2 Scale factor: 2^(-30)+  , _glonassEphemeris_p3 :: Bool+  -- ^ GLONASS P3 word+  , _glonassEphemeris_gammaN :: Int16+  -- ^ Relative deviation of predicted carrier from nominal value.+  -- Scale factor: 2^(-40)+  , _glonassEphemeris_mp :: Word8+  -- ^ GLONASS-M P-word+  , _glonassEphemeris_mi3 :: Bool+  -- ^ GLONASS-M I_n word extracted from third string of the subframe+  -- [this is the extent of the explanation given in the RTCM+  -- document]+  , _glonassEphemeris_tauN :: Int32+  -- ^ GLONASS @tau_n(t_b)@, correction to the satellite time relative+  -- to GLONASS system time.+  -- Units: seconds  Scale factor: 2^(-30)+  , _glonassEphemeris_mdeltatau :: Int8+  -- ^ GLONASS time difference between navigation RF signal+  -- transmitted in L2 sub-band and navigation RF signal transmitted+  -- in L1 sub-band+  -- Units: seconds  Scale factor: 2^(-30)+  , _glonassEphemeris_en :: Word8+  -- ^ GLONASS E_n, age of GLONASS navigation data+  -- Units: days  Scale factor: 1+  , _glonassEphemeris_mp4 :: Bool+  -- ^ GLONASS-M P4 word+  , _glonassEphemeris_mft :: Word8+  -- ^ GLONASS-M predicted satellite user range accuracy at time @t_b@+  , _glonassEphemeris_mnt :: Word16+  -- ^ GLONASS_M calendar number of day within four-year interval+  -- starting from the first of January in a leap year+  -- Units: days  Scale factor: 1+  , _glonassEphemeris_mM :: Word8+  -- ^ Type of GLONASS satellite:+    --     [@01@] -> GLONASS-M+    --     [@00@] -> non-GLONASS-M+  , _glonassEphemeris_additional :: Bool+  -- ^ Are the remaining fields ("additional data") valid?+  , _glonassEphemeris_nA :: Word16+  -- ^ GLONASS calendar number of day within the four-year period to+  -- which @tau_c@ is referenced.+  -- Units: days  Scale factor: 1+  , _glonassEphemeris_tauC :: Int32+  -- ^ GLONASS @tau_c@: difference between GLONASS system time and+  -- UTC(SU), referenced to '_glonassEphemeris_nA'.+  -- Units: seconds  Scale factor: 2^(-31)+  , _glonassEphemeris_mn4 :: Word8+  -- ^ GLONASS-M @N_4@: four-year interval number starting from 1996+  -- Units: 4 years+  , _glonassEphemeris_mTauGps :: Int32+  -- ^ GLONASS-M @tau_gps@: correction to GPS system time relative to+  -- GLONASS system time.+  -- Units: seconds  Scale factor: 2^(-30)+  , _glonassEphemeris_mln5 :: Bool+  -- ^ GLONASS-M @I_n@ word extracted from fifth string of the+  -- subframe [this is the extent of the explanation given in the RTCM+  -- document]+  } deriving ( Show, Read, Eq )++$(makeLenses ''GlonassEphemeris)+$(deriveJSON defaultOptions+  { fieldLabelModifier = fromMaybe "_glonassEphemeris_" .+                         stripPrefix "_glonassEphemeris_"+  } ''GlonassEphemeris)++instance BinaryBit GlonassEphemeris where+  getBits _n = do+    _glonassEphemeris_almanacHealth      <- B.getBool+    _glonassEphemeris_healthAvailability <- B.getBool+    _glonassEphemeris_p1                 <- B.getWord8 2+    _glonassEphemeris_tk                 <- B.getWord16be 12+    _glonassEphemeris_bn_msb             <- B.getBool+    _glonassEphemeris_p2                 <- B.getBool+    _glonassEphemeris_tb                 <- B.getWord8 7+    _glonassEphemeris_xndot              <- getInt32be 24+    _glonassEphemeris_xn                 <- getInt32be 27+    _glonassEphemeris_xndotdot           <- getInt8 5+    _glonassEphemeris_yndot              <- getInt32be 24+    _glonassEphemeris_yn                 <- getInt32be 27+    _glonassEphemeris_yndotdot           <- getInt8 5+    _glonassEphemeris_zndot              <- getInt32be 24+    _glonassEphemeris_zn                 <- getInt32be 27+    _glonassEphemeris_zndotdot           <- getInt8 5+    _glonassEphemeris_p3                 <- B.getBool+    _glonassEphemeris_gammaN             <- getInt16be 11+    _glonassEphemeris_mp                 <- B.getWord8 2+    _glonassEphemeris_mi3                <- B.getBool+    _glonassEphemeris_tauN               <- getInt32be 22+    _glonassEphemeris_mdeltatau          <- getInt8 5+    _glonassEphemeris_en                 <- B.getWord8 5+    _glonassEphemeris_mp4                <- B.getBool+    _glonassEphemeris_mft                <- B.getWord8 4+    _glonassEphemeris_mnt                <- B.getWord16be 11+    _glonassEphemeris_mM                 <- B.getWord8 2+    _glonassEphemeris_additional         <- B.getBool+    _glonassEphemeris_nA                 <- B.getWord16be 11+    _glonassEphemeris_tauC               <- getInt32be 32+    _glonassEphemeris_mn4                <- B.getWord8 5+    _glonassEphemeris_mTauGps            <- getInt32be 22+    _glonassEphemeris_mln5               <- B.getBool+    return GlonassEphemeris{..}+  putBits _n GlonassEphemeris{..} = do+    B.putBool         _glonassEphemeris_almanacHealth+    B.putBool         _glonassEphemeris_healthAvailability+    B.putWord8    2   _glonassEphemeris_p1+    B.putWord16be 12  _glonassEphemeris_tk+    B.putBool         _glonassEphemeris_bn_msb+    B.putBool        _glonassEphemeris_p2+    B.putWord8    7  _glonassEphemeris_tb+    putInt32be    24 _glonassEphemeris_xndot+    putInt32be    27 _glonassEphemeris_xn+    putInt8       5  _glonassEphemeris_xndotdot+    putInt32be    24 _glonassEphemeris_yndot+    putInt32be    27 _glonassEphemeris_yn+    putInt8       5  _glonassEphemeris_yndotdot+    putInt32be    24 _glonassEphemeris_zndot+    putInt32be    27 _glonassEphemeris_zn+    putInt8       5  _glonassEphemeris_zndotdot+    B.putBool        _glonassEphemeris_p3+    putInt16be    11 _glonassEphemeris_gammaN+    B.putWord8    2  _glonassEphemeris_mp+    B.putBool        _glonassEphemeris_mi3+    putInt32be    22 _glonassEphemeris_tauN+    putInt8       5  _glonassEphemeris_mdeltatau+    B.putWord8    5  _glonassEphemeris_en+    B.putBool        _glonassEphemeris_mp4+    B.putWord8    4  _glonassEphemeris_mft+    B.putWord16be 11 _glonassEphemeris_mnt+    B.putWord8    2  _glonassEphemeris_mM+    B.putBool        _glonassEphemeris_additional+    B.putWord16be 11 _glonassEphemeris_nA+    putInt32be    32 _glonassEphemeris_tauC+    B.putWord8    5  _glonassEphemeris_mn4+    putInt32be    22 _glonassEphemeris_mTauGps+    B.putBool        _glonassEphemeris_mln5++msg1020 :: Word16+msg1020 = 1020++-- | Message 1020+--+-- RTCMv3 message 1020.+--+-- See RTCM spec and GLONASS signal specification for more information+-- about these fields.+data Msg1020 = Msg1020+  { _msg1020_header :: GlonassEphemerisHeader+    -- ^ GLONASS ephemeris header.+  , _msg1020_ephemeris :: GlonassEphemeris+    -- ^ GLONASS ephemeris body.+  } deriving ( Show, Read, Eq )++$(makeLenses ''Msg1020)+$(deriveJSON defaultOptions+  { fieldLabelModifier = fromMaybe "_msg1020_" . stripPrefix "_msg1020_"+  } ''Msg1020)++instance Binary Msg1020 where+  get = B.runBitGet $ do+    _msg1020_header    <- getBits 0+    _msg1020_ephemeris <- getBits 0+    return Msg1020 {..}++  put Msg1020 {..} = B.runBitPut $ do+    putBits 0 _msg1020_header+    putBits 0 _msg1020_ephemeris++$(deriveRTCM3 ''Msg1020)
src/Data/RTCM3/Extras.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Data.RTCM3.Extras -- Copyright:   Copyright (C) 2015 Swift Navigation, Inc.
src/Data/RTCM3/Observations.hs view
@@ -1,3 +1,8 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Data.RTCM3.Observations -- Copyright:   Copyright (C) 2015 Swift Navigation, Inc.
src/Data/RTCM3/SSR.hs view
@@ -1,3 +1,7 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Data.RTCM3.SSR -- Copyright:   Copyright (C) 2015 Swift Navigation, Inc.
src/Data/RTCM3/System.hs view
@@ -1,3 +1,7 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Data.RTCM3.System -- Copyright:   Copyright (C) 2015 Swift Navigation, Inc.
src/Data/RTCM3/TH.hs view
@@ -1,3 +1,6 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Data.RTCM3.TH -- Copyright:   Copyright (C) 2015 Swift Navigation, Inc.
src/Data/RTCM3/Types.hs view
@@ -1,3 +1,8 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Data.RTCM3.Types -- Copyright:   Copyright (C) 2015 Swift Navigation, Inc.@@ -72,4 +77,3 @@  class Binary a => ToRTCM3 a where   toRTCM3 :: a -> Msg-
test/Test.hs view
@@ -1,3 +1,6 @@+{-# OPTIONS_GHC -Wall #-}+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Test -- Copyright:   (c) 2015 Swift Navigation
test/Test/Data/CRC24Q.hs view
@@ -1,3 +1,6 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Test.Data.CRC24Q -- Copyright:   (c) 2015 Swift Navigation
test/Test/Data/RTCM3/Antennas.hs view
@@ -1,3 +1,6 @@+{-# OPTIONS_GHC -Wall #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS -fno-warn-orphans #-}  -- |
+ test/Test/Data/RTCM3/Ephemeris.hs view
@@ -0,0 +1,134 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE RecordWildCards #-}+{-# OPTIONS -fno-warn-orphans #-}++-- |+-- Module:      Test.Data.RTCM3.Ephemeris+-- Copyright:   (c) 2017 Swift Navigation+-- License:     BSD3+-- Maintainer:  Swift Navigation <dev@swiftnav.com>+--+-- Test Ephemeris module for RTCM3.++module Test.Data.RTCM3.Ephemeris+  ( tests+  ) where++import BasicPrelude+import Data.Binary+import Data.RTCM3+import Test.Data.RTCM3.Test+import Test.Tasty+import Test.Tasty.QuickCheck++instance Arbitrary GpsEphemerisHeader where+  arbitrary = do+    _gpsEphemerisHeader_num <- arbitraryWord 12+    _gpsEphemerisHeader_sat <- arbitraryWord 6+    return GpsEphemerisHeader {..}++instance Arbitrary GpsEphemeris where+  arbitrary = do+    _gpsEphemeris_wn          <- arbitraryWord 10+    _gpsEphemeris_svAccuracy  <- arbitraryWord 4+    _gpsEphemeris_codeOnL2    <- arbitraryWord 2+    _gpsEphemeris_idot        <- arbitraryInt  14+    _gpsEphemeris_iode        <- arbitraryWord 8+    _gpsEphemeris_toc         <- arbitraryWord 16+    _gpsEphemeris_af2         <- arbitraryInt  8+    _gpsEphemeris_af1         <- arbitraryInt  16+    _gpsEphemeris_af0         <- arbitraryInt  22+    _gpsEphemeris_iodc        <- arbitraryWord 10+    _gpsEphemeris_c_rs        <- arbitraryInt  16+    _gpsEphemeris_dn          <- arbitraryInt  16+    _gpsEphemeris_m0          <- arbitraryInt  32+    _gpsEphemeris_c_uc        <- arbitraryInt  16+    _gpsEphemeris_ecc         <- arbitraryWord 32+    _gpsEphemeris_c_us        <- arbitraryInt  16+    _gpsEphemeris_sqrta       <- arbitraryWord 32+    _gpsEphemeris_toe         <- arbitraryWord 16+    _gpsEphemeris_c_ic        <- arbitraryInt  16+    _gpsEphemeris_omega0      <- arbitraryInt  32+    _gpsEphemeris_c_is        <- arbitraryInt  16+    _gpsEphemeris_i0          <- arbitraryInt  32+    _gpsEphemeris_c_rc        <- arbitraryInt  16+    _gpsEphemeris_w           <- arbitraryInt  32+    _gpsEphemeris_omegadot    <- arbitraryInt  24+    _gpsEphemeris_tgd         <- arbitraryInt  8+    _gpsEphemeris_svHealth    <- arbitraryWord 6+    _gpsEphemeris_l2pFlag     <- arbitrary+    _gpsEphemeris_fitInterval <- arbitrary+    return GpsEphemeris {..}++instance Arbitrary Msg1019 where+  arbitrary = do+    _msg1019_header    <- arbitrary+    _msg1019_ephemeris <- arbitrary+    return Msg1019 {..}++testMsg1019 :: TestTree+testMsg1019 =+  testProperty "Roundtrip Msg1019" $ \m ->+    (decode $ encode m) == (m :: Msg1019)++instance Arbitrary GlonassEphemerisHeader where+  arbitrary = do+    _glonassEphemerisHeader_num <- arbitraryWord 12+    _glonassEphemerisHeader_sat <- arbitraryWord 6+    _glonassEphemerisHeader_channel <- arbitraryWord 5+    return GlonassEphemerisHeader{..}++instance Arbitrary GlonassEphemeris where+  arbitrary = do+    _glonassEphemeris_almanacHealth      <- arbitrary+    _glonassEphemeris_healthAvailability <- arbitrary+    _glonassEphemeris_p1                 <- arbitraryWord 2+    _glonassEphemeris_tk                 <- arbitraryWord 12+    _glonassEphemeris_bn_msb             <- arbitrary+    _glonassEphemeris_p2                 <- arbitrary+    _glonassEphemeris_tb                 <- arbitraryWord 7+    _glonassEphemeris_xndot              <- arbitraryInt 24+    _glonassEphemeris_xn                 <- arbitraryInt 27+    _glonassEphemeris_xndotdot           <- arbitraryInt 5+    _glonassEphemeris_yndot              <- arbitraryInt 24+    _glonassEphemeris_yn                 <- arbitraryInt 27+    _glonassEphemeris_yndotdot           <- arbitraryInt 5+    _glonassEphemeris_zndot              <- arbitraryInt 24+    _glonassEphemeris_zn                 <- arbitraryInt 27+    _glonassEphemeris_zndotdot           <- arbitraryInt 5+    _glonassEphemeris_p3                 <- arbitrary+    _glonassEphemeris_gammaN             <- arbitraryInt 11+    _glonassEphemeris_mp                 <- arbitraryWord 2+    _glonassEphemeris_mi3                <- arbitrary+    _glonassEphemeris_tauN               <- arbitraryInt 22+    _glonassEphemeris_mdeltatau          <- arbitraryInt 5+    _glonassEphemeris_en                 <- arbitraryWord 5+    _glonassEphemeris_mp4                <- arbitrary+    _glonassEphemeris_mft                <- arbitraryWord 4+    _glonassEphemeris_mnt                <- arbitraryWord 11+    _glonassEphemeris_mM                 <- arbitraryWord 2+    _glonassEphemeris_additional         <- arbitrary+    _glonassEphemeris_nA                 <- arbitraryWord 11+    _glonassEphemeris_tauC               <- arbitraryInt 32+    _glonassEphemeris_mn4                <- arbitraryWord 5+    _glonassEphemeris_mTauGps            <- arbitraryInt 22+    _glonassEphemeris_mln5               <- arbitrary+    return GlonassEphemeris{..}++instance Arbitrary Msg1020 where+  arbitrary = do+    _msg1020_header <- arbitrary+    _msg1020_ephemeris <- arbitrary+    return Msg1020 {..}++testMsg1020 :: TestTree+testMsg1020 =+  testProperty "Roundtrip Msg1020" $ \m ->+    (decode $ encode m) == (m :: Msg1020)++tests :: TestTree+tests =+  testGroup "Ephemeris tests"+    [ testMsg1019+    , testMsg1020+    ]
test/Test/Data/RTCM3/Extras.hs view
@@ -1,5 +1,6 @@-{-# OPTIONS -fno-warn-orphans  #-}+{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE FlexibleInstances #-}+{-# OPTIONS -fno-warn-orphans  #-}  -- | -- Module:      Test.Data.RTCM3.Extras
test/Test/Data/RTCM3/Observations.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE RecordWildCards #-} {-# OPTIONS -fno-warn-orphans #-}  -- |
test/Test/Data/RTCM3/SSR.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE RecordWildCards #-} {-# OPTIONS -fno-warn-orphans #-}  -- |
test/Test/Data/RTCM3/System.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE RecordWildCards #-} {-# OPTIONS -fno-warn-orphans #-}  -- |
test/Test/Data/RTCM3/Test.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE NoImplicitPrelude #-}+ -- | -- Module:      Test.Data.RTCM3.Test -- Copyright:   (c) 2015 Swift Navigation