packages feed

gnss-converters 0.3.39 → 0.3.40

raw patch · 8 files changed

+58/−42 lines, 8 files

Files

gnss-converters.cabal view
@@ -1,6 +1,6 @@ cabal-version: >=1.22 name: gnss-converters-version: 0.3.39+version: 0.3.40 license: BSD3 copyright: Copyright (C) 2016, 2017 Swift Navigation, Inc. maintainer: Swift Navigation <dev@swiftnav.com>
src/Data/RTCM3/SBP/Biases.hs view
@@ -28,7 +28,7 @@ -- | Derive sender from station. -- toSender :: Word16 -> Word16-toSender station = station .|. 61440+toSender station = station .|. 61568  -- | Expand out array of biases. --
src/Data/RTCM3/SBP/Ephemerides.hs view
@@ -196,7 +196,7 @@               , _msgEphemerisGps_iode     =                 m ^. msg1019_ephemeris . gpsEphemeris_iode               , _msgEphemerisGps_toc      = toc               }-  yield [SBPMsgEphemerisGps m' $ toSBP m' 61440]+  yield [SBPMsgEphemerisGps m' $ toSBP m' 61568]  -- | Convert an RTCM 1020 GLONASS ephemeris message into an SBP MsgEphemerisGlo. --@@ -226,4 +226,4 @@              , _msgEphemerisGlo_fcn    = (m ^. msg1020_header . glonassEphemerisHeader_channel) + 1              , _msgEphemerisGlo_iod    = ((m ^. msg1020_ephemeris . glonassEphemeris_tb) * 15 * 60) .&. 127              }-  yield [SBPMsgEphemerisGlo m' $ toSBP m' 61440]+  yield [SBPMsgEphemerisGlo m' $ toSBP m' 61568]
src/Data/RTCM3/SBP/Logging.hs view
@@ -27,7 +27,7 @@ -- | Derive sender from station. -- toSender :: Word16 -> Word16-toSender station = station .|. 61440+toSender station = station .|. 61568  -- | Convert an RTCM 1029 text message into an SBP MsgLog message. --
src/Data/RTCM3/SBP/MSM.hs view
@@ -46,9 +46,15 @@       sig <- mask (hdr ^. msmHeader_signalMask)       pure (sat, sig) +-- | Max GPS satellite number.+--+gpsMaxSat :: Word8+gpsMaxSat = 32+ toGpsSat :: Word8 -> Maybe Word8 toGpsSat sat-  | sat >= 64 = Nothing+  | sat < 1 = Nothing+  | sat > gpsMaxSat = Nothing   | otherwise = Just sat  toGpsCode :: Word8 -> Maybe Word8@@ -153,19 +159,24 @@   | otherwise  = 15  toPackedObsContent1074 :: Msm46SatelliteData -> Msm4SignalData -> (Int, Word8) -> (Int, Word8) -> Maybe PackedObsContent-toPackedObsContent1074 satData sigData (satIndex, sat) (sigIndex, sig) = do-  sid  <- toGpsSignal sat sig-  freq <- toGpsFrequency sig-  Just PackedObsContent-    { _packedObsContent_P     = toP (roughPseudorange + finePseudorange)-    , _packedObsContent_L     = toL ((roughPseudorange + finePhaserange) * (freq / 299792458.0))-    , _packedObsContent_D     = toD-    , _packedObsContent_cn0   = ((sigData ^. msm4SignalData_cnrs) !! sigIndex) * 4-    , _packedObsContent_lock  = (sigData ^. msm4SignalData_lockTimes) !! sigIndex-    , _packedObsContent_sid   = sid-    , _packedObsContent_flags = pseudorangeValid .|. phaseValid .|. halfCycleResolved-    }+toPackedObsContent1074 satData sigData (satIndex, sat) (sigIndex, sig)+  | no        = Nothing+  | otherwise = do+      sid  <- toGpsSignal sat sig+      freq <- toGpsFrequency sig+      Just PackedObsContent+        { _packedObsContent_P     = toP (roughPseudorange + finePseudorange)+        , _packedObsContent_L     = toL ((roughPseudorange + finePhaserange) * (freq / 299792458.0))+        , _packedObsContent_D     = toD+        , _packedObsContent_cn0   = ((sigData ^. msm4SignalData_cnrs) !! sigIndex) * 4+        , _packedObsContent_lock  = (sigData ^. msm4SignalData_lockTimes) !! sigIndex+        , _packedObsContent_sid   = sid+        , _packedObsContent_flags = pseudorangeValid .|. phaseValid .|. halfCycleResolved+        }   where+    no                = ((satData ^. msm46SatelliteData_ranges) !! satIndex) == 255 ||+                        ((sigData ^. msm4SignalData_pseudoranges) !! sigIndex) == 16384 ||+                        ((sigData ^. msm4SignalData_phaseranges) !! sigIndex) == 2097152     pseudorangeValid  = 1     phaseValid        = 2     halfCycleResolved = bool 4 0 $ (sigData ^. msm4SignalData_halfCycles) !! sigIndex@@ -175,19 +186,24 @@     finePhaserange    = fromIntegral ((sigData ^. msm4SignalData_phaseranges) !! sigIndex) * gpsPseudorange * (2 ** (-29))  toPackedObsContent1077 :: Msm57SatelliteData -> Msm7SignalData -> (Int, Word8) -> (Int, Word8) -> Maybe PackedObsContent-toPackedObsContent1077 satData sigData (satIndex, sat) (sigIndex, sig) = do-  sid  <- toGpsSignal sat sig-  freq <- toGpsFrequency sig-  Just PackedObsContent-    { _packedObsContent_P     = toP (roughPseudorange + finePseudorange)-    , _packedObsContent_L     = toL ((roughPseudorange + finePhaserange) * (freq / 299792458.0))-    , _packedObsContent_D     = toD-    , _packedObsContent_cn0   = round (fromIntegral ((sigData ^. msm7SignalData_cnrs) !! sigIndex) * ((2 :: Double) ** (-4)) * 4)-    , _packedObsContent_lock  = toLock $ lock ((sigData ^. msm7SignalData_lockTimes) !! sigIndex)-    , _packedObsContent_sid   = sid-    , _packedObsContent_flags = pseudorangeValid .|. phaseValid .|. halfCycleResolved-    }+toPackedObsContent1077 satData sigData (satIndex, sat) (sigIndex, sig)+  | no        = Nothing+  | otherwise = do+      sid  <- toGpsSignal sat sig+      freq <- toGpsFrequency sig+      Just PackedObsContent+        { _packedObsContent_P     = toP (roughPseudorange + finePseudorange)+        , _packedObsContent_L     = toL ((roughPseudorange + finePhaserange) * (freq / 299792458.0))+        , _packedObsContent_D     = toD+        , _packedObsContent_cn0   = round (fromIntegral ((sigData ^. msm7SignalData_cnrs) !! sigIndex) * ((2 :: Double) ** (-4)) * 4)+        , _packedObsContent_lock  = toLock $ lock ((sigData ^. msm7SignalData_lockTimes) !! sigIndex)+        , _packedObsContent_sid   = sid+        , _packedObsContent_flags = pseudorangeValid .|. phaseValid .|. halfCycleResolved+        }   where+    no                = ((satData ^. msm57SatelliteData_ranges) !! satIndex) == 255 ||+                        ((sigData ^. msm7SignalData_pseudoranges) !! sigIndex) == 524288 ||+                        ((sigData ^. msm7SignalData_phaseranges) !! sigIndex) == 8388608     pseudorangeValid  = 1     phaseValid        = 2     halfCycleResolved = bool 4 0 $ (sigData ^. msm7SignalData_halfCycles) !! sigIndex
src/Data/RTCM3/SBP/Observations.hs view
@@ -182,7 +182,7 @@       , _packedObsContent_flags = obsFlags       }   where-    no = sat > gpsMaxSat || l1o ^. gpsL1Observation_pseudorange == 524288 || l1o ^. gpsL1Observation_carrierMinusCode == -524288+    no = sat < 1 || sat > gpsMaxSat || l1o ^. gpsL1Observation_pseudorange == 524288 || l1o ^. gpsL1Observation_carrierMinusCode == -524288     p1 = pseudorange gpsPseudorange (l1o ^. gpsL1Observation_pseudorange) (l1eo ^. gpsL1ExtObservation_ambiguity)     l1 = carrierPhase gpsL1CarrierPhase p1 (l1o ^. gpsL1Observation_carrierMinusCode) @@ -201,7 +201,7 @@       , _packedObsContent_flags = obsFlags       }   where-    no = sat > gpsMaxSat || l2o ^. gpsL2Observation_pseudorangeDifference == -8192 || l2o ^. gpsL2Observation_carrierMinusCode == -524288+    no = sat < 1 || sat > gpsMaxSat || l2o ^. gpsL2Observation_pseudorangeDifference == -8192 || l2o ^. gpsL2Observation_carrierMinusCode == -524288     p1 = pseudorange gpsPseudorange (l1o ^. gpsL1Observation_pseudorange) (l1eo ^. gpsL1ExtObservation_ambiguity)     p2 = p1 + pseudorangeDifference (l2o ^. gpsL2Observation_pseudorangeDifference)     l2 = carrierPhase gpsL2CarrierPhase p1 (l2o ^. gpsL2Observation_carrierMinusCode)@@ -222,7 +222,7 @@         , _packedObsContent_flags = obsFlags         }   where-    no = sat > glonassMaxSat || l1o ^. glonassL1Observation_carrierMinusCode == -524288+    no = sat < 1 || sat > glonassMaxSat || l1o ^. glonassL1Observation_frequency > 20 || l1o ^. glonassL1Observation_carrierMinusCode == -524288     p1 = pseudorange glonassPseudorange (l1o ^. glonassL1Observation_pseudorange) (l1eo ^. glonassL1ExtObservation_ambiguity)     l1 = carrierPhase (glonassL1CarrierPhase (l1o ^. glonassL1Observation_frequency)) p1 (l1o ^. glonassL1Observation_carrierMinusCode) @@ -242,7 +242,7 @@         , _packedObsContent_flags = obsFlags         }   where-    no = sat > glonassMaxSat || l2o ^. glonassL2Observation_pseudorangeDifference == -8192 || l2o ^. glonassL2Observation_carrierMinusCode == -524288+    no = sat < 1 || sat > glonassMaxSat || l1o ^. glonassL1Observation_frequency > 20 || l2o ^. glonassL2Observation_pseudorangeDifference == -8192 || l2o ^. glonassL2Observation_carrierMinusCode == -524288     p1 = pseudorange glonassPseudorange (l1o ^. glonassL1Observation_pseudorange) (l1eo ^. glonassL1ExtObservation_ambiguity)     p2 = p1 + pseudorangeDifference (l2o ^. glonassL2Observation_pseudorangeDifference)     l2 = carrierPhase (glonassL2CarrierPhase (l1o ^. glonassL1Observation_frequency)) p1 (l2o ^. glonassL2Observation_carrierMinusCode)@@ -277,7 +277,7 @@ -- | Derive sender from station. -- toSender :: Word16 -> Word16-toSender station = station .|. 61440+toSender station = station .|. 61568  -- | FromObservations produces GPS time, SBP packed observations, and sender from RTCMv3 observation messages. --
src/Data/RTCM3/SBP/Positions.hs view
@@ -25,7 +25,7 @@ -- | Derive sender from station. -- toSender :: Word16 -> Word16-toSender station = station .|. 61440+toSender station = station .|. 61568  -- | FromPosition produces ecef x, y, x and sender values from RTCMv3 position messages. --
src/Data/RTCM3/SBP/SSR.hs view
@@ -73,7 +73,7 @@              , _msgSsrOrbitClock_c1              = c ^. gpsOrbitClockCorrection_deltaClockC1              , _msgSsrOrbitClock_c2              = c ^. gpsOrbitClockCorrection_deltaClockC2              }-    SBPMsgSsrOrbitClock m' $ toSBP m' 61440+    SBPMsgSsrOrbitClock m' $ toSBP m' 61568  glonassOrbitClockConverter :: MonadStore e m => Msg1066 -> Conduit i m [SBPMsg] glonassOrbitClockConverter m = do@@ -98,7 +98,7 @@              , _msgSsrOrbitClock_c1              = c ^. glonassOrbitClockCorrection_deltaClockC1              , _msgSsrOrbitClock_c2              = c ^. glonassOrbitClockCorrection_deltaClockC2              }-    SBPMsgSsrOrbitClock m' $ toSBP m' 61440+    SBPMsgSsrOrbitClock m' $ toSBP m' 61568  gpsCodeBiasConverter :: MonadStore e m => Msg1059 -> Conduit i m [SBPMsg] gpsCodeBiasConverter m = do@@ -117,7 +117,7 @@                , _codeBiasesContent_value = b ^. gpsCodeBias_codeBias                }              }-    SBPMsgSsrCodeBiases m' $ toSBP m' 61440+    SBPMsgSsrCodeBiases m' $ toSBP m' 61568  glonassCodeBiasConverter :: MonadStore e m => Msg1065 -> Conduit i m [SBPMsg] glonassCodeBiasConverter m = do@@ -136,7 +136,7 @@                , _codeBiasesContent_value = b ^. glonassCodeBias_codeBias                }              }-    SBPMsgSsrCodeBiases m' $ toSBP m' 61440+    SBPMsgSsrCodeBiases m' $ toSBP m' 61568  gpsPhaseBiasConverter :: MonadStore e m => Msg1265 -> Conduit i m [SBPMsg] gpsPhaseBiasConverter m = do@@ -162,7 +162,7 @@                , _phaseBiasesContent_bias                       = b ^. gpsPhaseBias_phaseBias                }              }-    SBPMsgSsrPhaseBiases m' $ toSBP m' 61440+    SBPMsgSsrPhaseBiases m' $ toSBP m' 61568  glonassPhaseBiasConverter :: MonadStore e m => Msg1266 -> Conduit i m [SBPMsg] glonassPhaseBiasConverter m = do@@ -188,4 +188,4 @@                , _phaseBiasesContent_bias                       = b ^. glonassPhaseBias_phaseBias                }              }-    SBPMsgSsrPhaseBiases m' $ toSBP m' 61440+    SBPMsgSsrPhaseBiases m' $ toSBP m' 61568