packages feed

rtcm 0.2.14 → 0.2.15

raw patch · 4 files changed

+96/−5 lines, 4 files

Files

rtcm.cabal view
@@ -1,10 +1,9 @@ name:                  rtcm-version:               0.2.14-synopsis:              RTCM Library.-description:           Haskell bindings for RTCM.+version:               0.2.15+synopsis:              Haskell bindings for RTCM. homepage:              http://github.com/swift-nav/librtcm license:               BSD3-author:                Mark Fine <mark@swift-nav.com>, Joshua Gross <josh@swift-nav.com>+author:                Mark Fine <mark@swift-nav.com> maintainer:            Swift Navigation <dev@swift-nav.com> copyright:             Copyright (C) 2015-2017 Swift Navigation, Inc. category:              Network@@ -99,6 +98,7 @@                      , tasty                      , tasty-hunit                      , tasty-quickcheck+                     , text                      , word24   ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wall   default-language:    Haskell2010
src/Data/RTCM3.hs view
@@ -51,6 +51,7 @@    | RTCM3Msg1013    Msg1013 Msg    | RTCM3Msg1019    Msg1019 Msg    | RTCM3Msg1020    Msg1020 Msg+   | RTCM3Msg1029    Msg1029 Msg    | RTCM3Msg1033    Msg1033 Msg    | RTCM3Msg1057    Msg1057 Msg    | RTCM3Msg1058    Msg1058 Msg@@ -93,6 +94,7 @@           | num == msg1013 = RTCM3Msg1013 (decode $ fromStrict $ unBytes _msgRTCM3Payload) m           | num == msg1019 = RTCM3Msg1019 (decode $ fromStrict $ unBytes _msgRTCM3Payload) m           | num == msg1020 = RTCM3Msg1020 (decode $ fromStrict $ unBytes _msgRTCM3Payload) m+          | num == msg1029 = RTCM3Msg1029 (decode $ fromStrict $ unBytes _msgRTCM3Payload) m           | num == msg1033 = RTCM3Msg1033 (decode $ fromStrict $ unBytes _msgRTCM3Payload) m           | num == msg1057 = RTCM3Msg1057 (decode $ fromStrict $ unBytes _msgRTCM3Payload) m           | num == msg1058 = RTCM3Msg1058 (decode $ fromStrict $ unBytes _msgRTCM3Payload) m@@ -127,6 +129,7 @@       encoder (RTCM3Msg1013    _n m) = put m       encoder (RTCM3Msg1019    _n m) = put m       encoder (RTCM3Msg1020    _n m) = put m+      encoder (RTCM3Msg1029    _n m) = put m       encoder (RTCM3Msg1033    _n m) = put m       encoder (RTCM3Msg1057    _n m) = put m       encoder (RTCM3Msg1058    _n m) = put m@@ -159,6 +162,7 @@   msg f (RTCM3Msg1013    n m) = RTCM3Msg1013    n <$> f m   msg f (RTCM3Msg1019    n m) = RTCM3Msg1019    n <$> f m   msg f (RTCM3Msg1020    n m) = RTCM3Msg1020    n <$> f m+  msg f (RTCM3Msg1029    n m) = RTCM3Msg1029    n <$> f m   msg f (RTCM3Msg1033    n m) = RTCM3Msg1033    n <$> f m   msg f (RTCM3Msg1057    n m) = RTCM3Msg1057    n <$> f m   msg f (RTCM3Msg1058    n m) = RTCM3Msg1058    n <$> f m@@ -197,6 +201,7 @@   toJSON (RTCM3Msg1013    n m) = toJSON n <<>> toJSON m   toJSON (RTCM3Msg1019    n m) = toJSON n <<>> toJSON m   toJSON (RTCM3Msg1020    n m) = toJSON n <<>> toJSON m+  toJSON (RTCM3Msg1029    n m) = toJSON n <<>> toJSON m   toJSON (RTCM3Msg1033    n m) = toJSON n <<>> toJSON m   toJSON (RTCM3Msg1057    n m) = toJSON n <<>> toJSON m   toJSON (RTCM3Msg1058    n m) = toJSON n <<>> toJSON m@@ -233,6 +238,7 @@         | num == msg1013 = RTCM3Msg1013 <$> pure (decode $ fromStrict $ unBytes payload) <*> parseJSON obj         | num == msg1019 = RTCM3Msg1019 <$> pure (decode $ fromStrict $ unBytes payload) <*> parseJSON obj         | num == msg1020 = RTCM3Msg1020 <$> pure (decode $ fromStrict $ unBytes payload) <*> parseJSON obj+        | num == msg1029 = RTCM3Msg1029 <$> pure (decode $ fromStrict $ unBytes payload) <*> parseJSON obj         | num == msg1033 = RTCM3Msg1033 <$> pure (decode $ fromStrict $ unBytes payload) <*> parseJSON obj         | num == msg1057 = RTCM3Msg1057 <$> pure (decode $ fromStrict $ unBytes payload) <*> parseJSON obj         | num == msg1058 = RTCM3Msg1058 <$> pure (decode $ fromStrict $ unBytes payload) <*> parseJSON obj
src/Data/RTCM3/System.hs view
@@ -93,6 +93,49 @@     B.putBool        _message_synchronous     B.putWord16be 16 _message_interval +-- | TextMessage+--+-- Informational text message.+data TextMessage = TextMessage+  { _textMessage_num         :: Word16+    -- ^ Message number.+  , _textMessage_station     :: Word16+    -- ^ Reference station id.+  , _textMessage_mjd         :: Word16+    -- ^ Modified Julian Day Number.+  , _textMessage_seconds     :: Word32+    -- ^ Seconds of Day.+  , _textMessage_characters  :: Word8+    -- ^ Number of characters.+  , _textMessage_n           :: Word8+    -- ^ Number of UTF-8 code units.+  , _textMessage_text        :: Text+    -- ^ UTF-8 code units.+  } deriving ( Show, Read, Eq )++$(makeLenses ''TextMessage)+$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_textMessage_" . stripPrefix "_textMessage_"} ''TextMessage)++instance BinaryBit TextMessage where+  getBits _n = do+    _textMessage_num        <- B.getWord16be 12+    _textMessage_station    <- B.getWord16be 12+    _textMessage_mjd        <- B.getWord16be 16+    _textMessage_seconds    <- B.getWord32be 17+    _textMessage_characters <- B.getWord8 7+    _textMessage_n          <- B.getWord8 8+    _textMessage_text       <- decodeUtf8 <$> B.getByteString (fromIntegral _textMessage_n)+    pure TextMessage {..}++  putBits _n TextMessage {..} = do+    B.putWord16be 12 _textMessage_num+    B.putWord16be 12 _textMessage_station+    B.putWord16be 16 _textMessage_mjd+    B.putWord32be 17 _textMessage_seconds+    B.putWord8 7     _textMessage_characters+    B.putWord8 8     _textMessage_n+    B.putByteString $ encodeUtf8 _textMessage_text+ msg1013 :: Word16 msg1013 = 1013 @@ -111,7 +154,7 @@  instance Binary Msg1013 where   get = B.runBitGet $ do-    _msg1013_header <- getBits 0+    _msg1013_header   <- getBits 0     _msg1013_messages <- replicateM (fromIntegral $ _msg1013_header ^. messageHeader_n) $ getBits 0     pure Msg1013 {..} @@ -120,3 +163,28 @@     forM_ _msg1013_messages $ putBits 0  $(deriveRTCM3 ''Msg1013)++msg1029 :: Word16+msg1029 = 1029++-- | Msg1029.+--+-- RTCMv3 message 1029.+newtype Msg1029 = Msg1029+  { _msg1029_message :: TextMessage+    -- ^ Text Messages.+  } deriving ( Show, Read, Eq )++$(makeLenses ''Msg1029)+$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msg1029_" . stripPrefix "_msg1029_"} ''Msg1029)++instance Binary Msg1029 where+  get = B.runBitGet $ do+    _msg1029_message <- getBits 0+    pure Msg1029 {..}++  put Msg1029 {..} = B.runBitPut $+    putBits 0 _msg1029_message++$(deriveRTCM3 ''Msg1029)+
test/Test/Data/RTCM3/System.hs view
@@ -18,6 +18,7 @@ import Control.Lens import Data.Binary import Data.RTCM3+import Data.Text import Test.Data.RTCM3.Test import Test.Tasty import Test.Tasty.QuickCheck@@ -39,11 +40,27 @@     _message_interval    <- arbitraryWord 16     pure Message {..} +instance Arbitrary TextMessage where+  arbitrary = do+    _textMessage_num        <- arbitraryWord 12+    _textMessage_station    <- arbitraryWord 12+    _textMessage_mjd        <- arbitraryWord 16+    _textMessage_seconds    <- arbitraryWord 17+    _textMessage_characters <- arbitraryWord 7+    _textMessage_n          <- arbitraryWord 8+    _textMessage_text       <- pack <$> replicateM (fromIntegral _textMessage_n) arbitrary+    pure TextMessage {..}+ instance Arbitrary Msg1013 where   arbitrary = do     header   <- arbitrary     messages <- replicateM (fromIntegral $ header ^. messageHeader_n) arbitrary     pure $ Msg1013 header messages++instance Arbitrary Msg1029 where+  arbitrary = do+    message <- arbitrary+    pure $ Msg1029 message  testMsg1013 :: TestTree testMsg1013 =