gnss-converters 0.3.39 → 0.3.40
raw patch · 8 files changed
+58/−42 lines, 8 files
Files
- gnss-converters.cabal +1/−1
- src/Data/RTCM3/SBP/Biases.hs +1/−1
- src/Data/RTCM3/SBP/Ephemerides.hs +2/−2
- src/Data/RTCM3/SBP/Logging.hs +1/−1
- src/Data/RTCM3/SBP/MSM.hs +41/−25
- src/Data/RTCM3/SBP/Observations.hs +5/−5
- src/Data/RTCM3/SBP/Positions.hs +1/−1
- src/Data/RTCM3/SBP/SSR.hs +6/−6
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