rtcm 0.1.9 → 0.1.10
raw patch · 22 files changed
+454/−31 lines, 22 filesnew-uploader
Files
- main/rtcm32json.hs +4/−0
- rtcm.cabal +2/−10
- src/Data/CRC24Q.hs +2/−0
- src/Data/RTCM3.hs +5/−0
- src/Data/RTCM3/Aeson.hs +2/−0
- src/Data/RTCM3/Antennas.hs +4/−5
- src/Data/RTCM3/Ephemeris.hs +259/−14
- src/Data/RTCM3/Extras.hs +2/−0
- src/Data/RTCM3/Observations.hs +5/−0
- src/Data/RTCM3/SSR.hs +4/−0
- src/Data/RTCM3/System.hs +4/−0
- src/Data/RTCM3/TH.hs +3/−0
- src/Data/RTCM3/Types.hs +5/−1
- test/Test.hs +3/−0
- test/Test/Data/CRC24Q.hs +3/−0
- test/Test/Data/RTCM3/Antennas.hs +3/−0
- test/Test/Data/RTCM3/Ephemeris.hs +134/−0
- test/Test/Data/RTCM3/Extras.hs +2/−1
- test/Test/Data/RTCM3/Observations.hs +2/−0
- test/Test/Data/RTCM3/SSR.hs +2/−0
- test/Test/Data/RTCM3/System.hs +2/−0
- test/Test/Data/RTCM3/Test.hs +2/−0
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