sbp 2.2.17 → 2.3.0
raw patch · 8 files changed
+688/−96 lines, 8 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- sbp.cabal +1/−1
- src/SwiftNav/SBP/Acquisition.hs +126/−5
- src/SwiftNav/SBP/Gnss.hs +60/−60
- src/SwiftNav/SBP/Msg.hs +54/−0
- src/SwiftNav/SBP/Ndb.hs +2/−2
- src/SwiftNav/SBP/Observation.hs +221/−18
- src/SwiftNav/SBP/Piksi.hs +78/−4
- src/SwiftNav/SBP/Tracking.hs +146/−6
sbp.cabal view
@@ -1,5 +1,5 @@ name: sbp-version: 2.2.17+version: 2.3.0 cabal-version: >=1.22 build-type: Simple license: LGPL-3
@@ -37,9 +37,9 @@ msgAcqResult :: Word16-msgAcqResult = 0x001F+msgAcqResult = 0x002F --- | SBP class for message MSG_ACQ_RESULT (0x001F).+-- | SBP class for message MSG_ACQ_RESULT (0x002F). -- -- This message describes the results from an attempted GPS signal acquisition -- search for a satellite PRN over a code phase/carrier frequency range. It@@ -74,6 +74,41 @@ $(makeJSON "_msgAcqResult_" ''MsgAcqResult) $(makeLenses ''MsgAcqResult) +msgAcqResultDepC :: Word16+msgAcqResultDepC = 0x001F++-- | SBP class for message MSG_ACQ_RESULT_DEP_C (0x001F).+--+-- Deprecated.+data MsgAcqResultDepC = MsgAcqResultDepC+ { _msgAcqResultDepC_cn0 :: !Float+ -- ^ CN/0 of best point+ , _msgAcqResultDepC_cp :: !Float+ -- ^ Code phase of best point+ , _msgAcqResultDepC_cf :: !Float+ -- ^ Carrier frequency of best point+ , _msgAcqResultDepC_sid :: !GnssSignalDep+ -- ^ GNSS signal for which acquisition was attempted+ } deriving ( Show, Read, Eq )++instance Binary MsgAcqResultDepC where+ get = do+ _msgAcqResultDepC_cn0 <- getFloat32le+ _msgAcqResultDepC_cp <- getFloat32le+ _msgAcqResultDepC_cf <- getFloat32le+ _msgAcqResultDepC_sid <- get+ pure MsgAcqResultDepC {..}++ put MsgAcqResultDepC {..} = do+ putFloat32le _msgAcqResultDepC_cn0+ putFloat32le _msgAcqResultDepC_cp+ putFloat32le _msgAcqResultDepC_cf+ put _msgAcqResultDepC_sid++$(makeSBP 'msgAcqResultDepC ''MsgAcqResultDepC)+$(makeJSON "_msgAcqResultDepC_" ''MsgAcqResultDepC)+$(makeLenses ''MsgAcqResultDepC)+ msgAcqResultDepB :: Word16 msgAcqResultDepB = 0x0014 @@ -88,7 +123,7 @@ -- ^ Code phase of best point , _msgAcqResultDepB_cf :: !Float -- ^ Carrier frequency of best point- , _msgAcqResultDepB_sid :: !GnssSignal+ , _msgAcqResultDepB_sid :: !GnssSignalDep -- ^ GNSS signal for which acquisition was attempted } deriving ( Show, Read, Eq ) @@ -212,10 +247,73 @@ $(makeJSON "_acqSvProfile_" ''AcqSvProfile) $(makeLenses ''AcqSvProfile) +-- | AcqSvProfileDep.+--+-- Deprecated.+data AcqSvProfileDep = AcqSvProfileDep+ { _acqSvProfileDep_job_type :: !Word8+ -- ^ SV search job type (deep, fallback, etc)+ , _acqSvProfileDep_status :: !Word8+ -- ^ Acquisition status 1 is Success, 0 is Failure+ , _acqSvProfileDep_cn0 :: !Word16+ -- ^ CN0 value. Only valid if status is '1'+ , _acqSvProfileDep_int_time :: !Word8+ -- ^ Acquisition integration time+ , _acqSvProfileDep_sid :: !GnssSignalDep+ -- ^ GNSS signal for which acquisition was attempted+ , _acqSvProfileDep_bin_width :: !Word16+ -- ^ Acq frequency bin width+ , _acqSvProfileDep_timestamp :: !Word32+ -- ^ Timestamp of the job complete event+ , _acqSvProfileDep_time_spent :: !Word32+ -- ^ Time spent to search for sid.code+ , _acqSvProfileDep_cf_min :: !Int32+ -- ^ Doppler range lowest frequency+ , _acqSvProfileDep_cf_max :: !Int32+ -- ^ Doppler range highest frequency+ , _acqSvProfileDep_cf :: !Int32+ -- ^ Doppler value of detected peak. Only valid if status is '1'+ , _acqSvProfileDep_cp :: !Word32+ -- ^ Codephase of detected peak. Only valid if status is '1'+ } deriving ( Show, Read, Eq )++instance Binary AcqSvProfileDep where+ get = do+ _acqSvProfileDep_job_type <- getWord8+ _acqSvProfileDep_status <- getWord8+ _acqSvProfileDep_cn0 <- getWord16le+ _acqSvProfileDep_int_time <- getWord8+ _acqSvProfileDep_sid <- get+ _acqSvProfileDep_bin_width <- getWord16le+ _acqSvProfileDep_timestamp <- getWord32le+ _acqSvProfileDep_time_spent <- getWord32le+ _acqSvProfileDep_cf_min <- fromIntegral <$> getWord32le+ _acqSvProfileDep_cf_max <- fromIntegral <$> getWord32le+ _acqSvProfileDep_cf <- fromIntegral <$> getWord32le+ _acqSvProfileDep_cp <- getWord32le+ pure AcqSvProfileDep {..}++ put AcqSvProfileDep {..} = do+ putWord8 _acqSvProfileDep_job_type+ putWord8 _acqSvProfileDep_status+ putWord16le _acqSvProfileDep_cn0+ putWord8 _acqSvProfileDep_int_time+ put _acqSvProfileDep_sid+ putWord16le _acqSvProfileDep_bin_width+ putWord32le _acqSvProfileDep_timestamp+ putWord32le _acqSvProfileDep_time_spent+ putWord32le $ fromIntegral _acqSvProfileDep_cf_min+ putWord32le $ fromIntegral _acqSvProfileDep_cf_max+ putWord32le $ fromIntegral _acqSvProfileDep_cf+ putWord32le _acqSvProfileDep_cp++$(makeJSON "_acqSvProfileDep_" ''AcqSvProfileDep)+$(makeLenses ''AcqSvProfileDep)+ msgAcqSvProfile :: Word16-msgAcqSvProfile = 0x001E+msgAcqSvProfile = 0x002E --- | SBP class for message MSG_ACQ_SV_PROFILE (0x001E).+-- | SBP class for message MSG_ACQ_SV_PROFILE (0x002E). -- -- The message describes all SV profiles during acquisition time. The message -- is used to debug and measure the performance.@@ -235,3 +333,26 @@ $(makeSBP 'msgAcqSvProfile ''MsgAcqSvProfile) $(makeJSON "_msgAcqSvProfile_" ''MsgAcqSvProfile) $(makeLenses ''MsgAcqSvProfile)++msgAcqSvProfileDep :: Word16+msgAcqSvProfileDep = 0x001E++-- | SBP class for message MSG_ACQ_SV_PROFILE_DEP (0x001E).+--+-- Deprecated.+data MsgAcqSvProfileDep = MsgAcqSvProfileDep+ { _msgAcqSvProfileDep_acq_sv_profile :: ![AcqSvProfileDep]+ -- ^ SV profiles during acquisition time+ } deriving ( Show, Read, Eq )++instance Binary MsgAcqSvProfileDep where+ get = do+ _msgAcqSvProfileDep_acq_sv_profile <- whileM (not <$> isEmpty) get+ pure MsgAcqSvProfileDep {..}++ put MsgAcqSvProfileDep {..} = do+ mapM_ put _msgAcqSvProfileDep_acq_sv_profile++$(makeSBP 'msgAcqSvProfileDep ''MsgAcqSvProfileDep)+$(makeJSON "_msgAcqSvProfileDep_" ''MsgAcqSvProfileDep)+$(makeLenses ''MsgAcqSvProfileDep)
@@ -35,81 +35,81 @@ {-# ANN module ("HLint: ignore Use newtype instead of data"::String) #-} --- | GnssSignal16.+-- | GnssSignal. -- -- Signal identifier containing constellation, band, and satellite identifier-data GnssSignal16 = GnssSignal16- { _gnssSignal16_sat :: !Word8+data GnssSignal = GnssSignal+ { _gnssSignal_sat :: !Word8 -- ^ Constellation-specific satellite identifier- , _gnssSignal16_code :: !Word8+ , _gnssSignal_code :: !Word8 -- ^ Signal constellation, band and code } deriving ( Show, Read, Eq ) -instance Binary GnssSignal16 where+instance Binary GnssSignal where get = do- _gnssSignal16_sat <- getWord8- _gnssSignal16_code <- getWord8- pure GnssSignal16 {..}+ _gnssSignal_sat <- getWord8+ _gnssSignal_code <- getWord8+ pure GnssSignal {..} - put GnssSignal16 {..} = do- putWord8 _gnssSignal16_sat- putWord8 _gnssSignal16_code+ put GnssSignal {..} = do+ putWord8 _gnssSignal_sat+ putWord8 _gnssSignal_code -$(makeJSON "_gnssSignal16_" ''GnssSignal16)-$(makeLenses ''GnssSignal16)+$(makeJSON "_gnssSignal_" ''GnssSignal)+$(makeLenses ''GnssSignal) --- | GnssSignal.+-- | GnssSignalDep. ----- Signal identifier containing constellation, band, and satellite identifier-data GnssSignal = GnssSignal- { _gnssSignal_sat :: !Word16- -- ^ Constellation-specific satellite identifier. Note: unlike GnssSignal16,+-- Deprecated.+data GnssSignalDep = GnssSignalDep+ { _gnssSignalDep_sat :: !Word16+ -- ^ Constellation-specific satellite identifier. Note: unlike GnssSignal, -- GPS satellites are encoded as (PRN - 1). Other constellations do not -- have this offset.- , _gnssSignal_code :: !Word8+ , _gnssSignalDep_code :: !Word8 -- ^ Signal constellation, band and code- , _gnssSignal_reserved :: !Word8+ , _gnssSignalDep_reserved :: !Word8 -- ^ Reserved } deriving ( Show, Read, Eq ) -instance Binary GnssSignal where+instance Binary GnssSignalDep where get = do- _gnssSignal_sat <- getWord16le- _gnssSignal_code <- getWord8- _gnssSignal_reserved <- getWord8- pure GnssSignal {..}+ _gnssSignalDep_sat <- getWord16le+ _gnssSignalDep_code <- getWord8+ _gnssSignalDep_reserved <- getWord8+ pure GnssSignalDep {..} - put GnssSignal {..} = do- putWord16le _gnssSignal_sat- putWord8 _gnssSignal_code- putWord8 _gnssSignal_reserved+ put GnssSignalDep {..} = do+ putWord16le _gnssSignalDep_sat+ putWord8 _gnssSignalDep_code+ putWord8 _gnssSignalDep_reserved -$(makeJSON "_gnssSignal_" ''GnssSignal)-$(makeLenses ''GnssSignal)+$(makeJSON "_gnssSignalDep_" ''GnssSignalDep)+$(makeLenses ''GnssSignalDep) --- | GPSTime.+-- | GPSTimeDep. -- -- A wire-appropriate GPS time, defined as the number of milliseconds since -- beginning of the week on the Saturday/Sunday transition.-data GpsTime = GpsTime- { _gpsTime_tow :: !Word32+data GpsTimeDep = GpsTimeDep+ { _gpsTimeDep_tow :: !Word32 -- ^ Milliseconds since start of GPS week- , _gpsTime_wn :: !Word16+ , _gpsTimeDep_wn :: !Word16 -- ^ GPS week number } deriving ( Show, Read, Eq ) -instance Binary GpsTime where+instance Binary GpsTimeDep where get = do- _gpsTime_tow <- getWord32le- _gpsTime_wn <- getWord16le- pure GpsTime {..}+ _gpsTimeDep_tow <- getWord32le+ _gpsTimeDep_wn <- getWord16le+ pure GpsTimeDep {..} - put GpsTime {..} = do- putWord32le _gpsTime_tow- putWord16le _gpsTime_wn+ put GpsTimeDep {..} = do+ putWord32le _gpsTimeDep_tow+ putWord16le _gpsTimeDep_wn -$(makeJSON "_gpsTime_" ''GpsTime)-$(makeLenses ''GpsTime)+$(makeJSON "_gpsTimeDep_" ''GpsTimeDep)+$(makeLenses ''GpsTimeDep) -- | GPSTimeSec. --@@ -135,35 +135,35 @@ $(makeJSON "_gpsTimeSec_" ''GpsTimeSec) $(makeLenses ''GpsTimeSec) --- | GPSTimeNano.+-- | GPSTime. -- -- A wire-appropriate receiver clock time, defined as the time since the -- beginning of the week on the Saturday/Sunday transition. In most cases, -- observations are epoch aligned so ns field will be 0.-data GpsTimeNano = GpsTimeNano- { _gpsTimeNano_tow :: !Word32+data GpsTime = GpsTime+ { _gpsTime_tow :: !Word32 -- ^ Milliseconds since start of GPS week- , _gpsTimeNano_ns_residual :: !Int32+ , _gpsTime_ns_residual :: !Int32 -- ^ Nanosecond residual of millisecond-rounded TOW (ranges from -500000 to -- 500000)- , _gpsTimeNano_wn :: !Word16+ , _gpsTime_wn :: !Word16 -- ^ GPS week number } deriving ( Show, Read, Eq ) -instance Binary GpsTimeNano where+instance Binary GpsTime where get = do- _gpsTimeNano_tow <- getWord32le- _gpsTimeNano_ns_residual <- fromIntegral <$> getWord32le- _gpsTimeNano_wn <- getWord16le- pure GpsTimeNano {..}+ _gpsTime_tow <- getWord32le+ _gpsTime_ns_residual <- fromIntegral <$> getWord32le+ _gpsTime_wn <- getWord16le+ pure GpsTime {..} - put GpsTimeNano {..} = do- putWord32le _gpsTimeNano_tow- putWord32le $ fromIntegral _gpsTimeNano_ns_residual- putWord16le _gpsTimeNano_wn+ put GpsTime {..} = do+ putWord32le _gpsTime_tow+ putWord32le $ fromIntegral _gpsTime_ns_residual+ putWord16le _gpsTime_wn -$(makeJSON "_gpsTimeNano_" ''GpsTimeNano)-$(makeLenses ''GpsTimeNano)+$(makeJSON "_gpsTime_" ''GpsTime)+$(makeLenses ''GpsTime) -- | CarrierPhase. --
@@ -52,11 +52,15 @@ SBPMsgAcqResult MsgAcqResult Msg | SBPMsgAcqResultDepA MsgAcqResultDepA Msg | SBPMsgAcqResultDepB MsgAcqResultDepB Msg+ | SBPMsgAcqResultDepC MsgAcqResultDepC Msg | SBPMsgAcqSvProfile MsgAcqSvProfile Msg+ | SBPMsgAcqSvProfileDep MsgAcqSvProfileDep Msg | SBPMsgAgeCorrections MsgAgeCorrections Msg | SBPMsgAlmanac MsgAlmanac Msg | SBPMsgAlmanacGlo MsgAlmanacGlo Msg+ | SBPMsgAlmanacGloDep MsgAlmanacGloDep Msg | SBPMsgAlmanacGps MsgAlmanacGps Msg+ | SBPMsgAlmanacGpsDep MsgAlmanacGpsDep Msg | SBPMsgBasePosEcef MsgBasePosEcef Msg | SBPMsgBasePosLlh MsgBasePosLlh Msg | SBPMsgBaselineEcef MsgBaselineEcef Msg@@ -108,6 +112,7 @@ | SBPMsgGpsTimeDepA MsgGpsTimeDepA Msg | SBPMsgGroupDelay MsgGroupDelay Msg | SBPMsgGroupDelayDepA MsgGroupDelayDepA Msg+ | SBPMsgGroupDelayDepB MsgGroupDelayDepB Msg | SBPMsgHeartbeat MsgHeartbeat Msg | SBPMsgIarState MsgIarState Msg | SBPMsgImuAux MsgImuAux Msg@@ -118,6 +123,7 @@ | SBPMsgM25FlashWriteStatus MsgM25FlashWriteStatus Msg | SBPMsgMagRaw MsgMagRaw Msg | SBPMsgMaskSatellite MsgMaskSatellite Msg+ | SBPMsgMaskSatelliteDep MsgMaskSatelliteDep Msg | SBPMsgNapDeviceDnaReq MsgNapDeviceDnaReq Msg | SBPMsgNapDeviceDnaResp MsgNapDeviceDnaResp Msg | SBPMsgNdbEvent MsgNdbEvent Msg@@ -145,6 +151,7 @@ | SBPMsgSettingsSave MsgSettingsSave Msg | SBPMsgSettingsWrite MsgSettingsWrite Msg | SBPMsgSpecan MsgSpecan Msg+ | SBPMsgSpecanDep MsgSpecanDep Msg | SBPMsgStartup MsgStartup Msg | SBPMsgStmFlashLockSector MsgStmFlashLockSector Msg | SBPMsgStmFlashUnlockSector MsgStmFlashUnlockSector Msg@@ -153,10 +160,12 @@ | SBPMsgSvConfigurationGps MsgSvConfigurationGps Msg | SBPMsgThreadState MsgThreadState Msg | SBPMsgTrackingIq MsgTrackingIq Msg+ | SBPMsgTrackingIqDep MsgTrackingIqDep Msg | SBPMsgTrackingState MsgTrackingState Msg | SBPMsgTrackingStateDepA MsgTrackingStateDepA Msg | SBPMsgTrackingStateDepB MsgTrackingStateDepB Msg | SBPMsgTrackingStateDetailed MsgTrackingStateDetailed Msg+ | SBPMsgTrackingStateDetailedDep MsgTrackingStateDetailedDep Msg | SBPMsgTweet MsgTweet Msg | SBPMsgUartState MsgUartState Msg | SBPMsgUartStateDepa MsgUartStateDepa Msg@@ -182,11 +191,15 @@ | _msgSBPType == msgAcqResult = SBPMsgAcqResult (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgAcqResultDepA = SBPMsgAcqResultDepA (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgAcqResultDepB = SBPMsgAcqResultDepB (decode (fromStrict (unBytes _msgSBPPayload))) m+ | _msgSBPType == msgAcqResultDepC = SBPMsgAcqResultDepC (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgAcqSvProfile = SBPMsgAcqSvProfile (decode (fromStrict (unBytes _msgSBPPayload))) m+ | _msgSBPType == msgAcqSvProfileDep = SBPMsgAcqSvProfileDep (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgAgeCorrections = SBPMsgAgeCorrections (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgAlmanac = SBPMsgAlmanac (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgAlmanacGlo = SBPMsgAlmanacGlo (decode (fromStrict (unBytes _msgSBPPayload))) m+ | _msgSBPType == msgAlmanacGloDep = SBPMsgAlmanacGloDep (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgAlmanacGps = SBPMsgAlmanacGps (decode (fromStrict (unBytes _msgSBPPayload))) m+ | _msgSBPType == msgAlmanacGpsDep = SBPMsgAlmanacGpsDep (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgBasePosEcef = SBPMsgBasePosEcef (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgBasePosLlh = SBPMsgBasePosLlh (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgBaselineEcef = SBPMsgBaselineEcef (decode (fromStrict (unBytes _msgSBPPayload))) m@@ -238,6 +251,7 @@ | _msgSBPType == msgGpsTimeDepA = SBPMsgGpsTimeDepA (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgGroupDelay = SBPMsgGroupDelay (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgGroupDelayDepA = SBPMsgGroupDelayDepA (decode (fromStrict (unBytes _msgSBPPayload))) m+ | _msgSBPType == msgGroupDelayDepB = SBPMsgGroupDelayDepB (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgHeartbeat = SBPMsgHeartbeat (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgIarState = SBPMsgIarState (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgImuAux = SBPMsgImuAux (decode (fromStrict (unBytes _msgSBPPayload))) m@@ -248,6 +262,7 @@ | _msgSBPType == msgM25FlashWriteStatus = SBPMsgM25FlashWriteStatus (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgMagRaw = SBPMsgMagRaw (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgMaskSatellite = SBPMsgMaskSatellite (decode (fromStrict (unBytes _msgSBPPayload))) m+ | _msgSBPType == msgMaskSatelliteDep = SBPMsgMaskSatelliteDep (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgNapDeviceDnaReq = SBPMsgNapDeviceDnaReq (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgNapDeviceDnaResp = SBPMsgNapDeviceDnaResp (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgNdbEvent = SBPMsgNdbEvent (decode (fromStrict (unBytes _msgSBPPayload))) m@@ -275,6 +290,7 @@ | _msgSBPType == msgSettingsSave = SBPMsgSettingsSave (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSettingsWrite = SBPMsgSettingsWrite (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSpecan = SBPMsgSpecan (decode (fromStrict (unBytes _msgSBPPayload))) m+ | _msgSBPType == msgSpecanDep = SBPMsgSpecanDep (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgStartup = SBPMsgStartup (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgStmFlashLockSector = SBPMsgStmFlashLockSector (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgStmFlashUnlockSector = SBPMsgStmFlashUnlockSector (decode (fromStrict (unBytes _msgSBPPayload))) m@@ -283,10 +299,12 @@ | _msgSBPType == msgSvConfigurationGps = SBPMsgSvConfigurationGps (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgThreadState = SBPMsgThreadState (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgTrackingIq = SBPMsgTrackingIq (decode (fromStrict (unBytes _msgSBPPayload))) m+ | _msgSBPType == msgTrackingIqDep = SBPMsgTrackingIqDep (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgTrackingState = SBPMsgTrackingState (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgTrackingStateDepA = SBPMsgTrackingStateDepA (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgTrackingStateDepB = SBPMsgTrackingStateDepB (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgTrackingStateDetailed = SBPMsgTrackingStateDetailed (decode (fromStrict (unBytes _msgSBPPayload))) m+ | _msgSBPType == msgTrackingStateDetailedDep = SBPMsgTrackingStateDetailedDep (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgTweet = SBPMsgTweet (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgUartState = SBPMsgUartState (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgUartStateDepa = SBPMsgUartStateDepa (decode (fromStrict (unBytes _msgSBPPayload))) m@@ -304,11 +322,15 @@ encoder (SBPMsgAcqResult _ m) = put m encoder (SBPMsgAcqResultDepA _ m) = put m encoder (SBPMsgAcqResultDepB _ m) = put m+ encoder (SBPMsgAcqResultDepC _ m) = put m encoder (SBPMsgAcqSvProfile _ m) = put m+ encoder (SBPMsgAcqSvProfileDep _ m) = put m encoder (SBPMsgAgeCorrections _ m) = put m encoder (SBPMsgAlmanac _ m) = put m encoder (SBPMsgAlmanacGlo _ m) = put m+ encoder (SBPMsgAlmanacGloDep _ m) = put m encoder (SBPMsgAlmanacGps _ m) = put m+ encoder (SBPMsgAlmanacGpsDep _ m) = put m encoder (SBPMsgBasePosEcef _ m) = put m encoder (SBPMsgBasePosLlh _ m) = put m encoder (SBPMsgBaselineEcef _ m) = put m@@ -360,6 +382,7 @@ encoder (SBPMsgGpsTimeDepA _ m) = put m encoder (SBPMsgGroupDelay _ m) = put m encoder (SBPMsgGroupDelayDepA _ m) = put m+ encoder (SBPMsgGroupDelayDepB _ m) = put m encoder (SBPMsgHeartbeat _ m) = put m encoder (SBPMsgIarState _ m) = put m encoder (SBPMsgImuAux _ m) = put m@@ -370,6 +393,7 @@ encoder (SBPMsgM25FlashWriteStatus _ m) = put m encoder (SBPMsgMagRaw _ m) = put m encoder (SBPMsgMaskSatellite _ m) = put m+ encoder (SBPMsgMaskSatelliteDep _ m) = put m encoder (SBPMsgNapDeviceDnaReq _ m) = put m encoder (SBPMsgNapDeviceDnaResp _ m) = put m encoder (SBPMsgNdbEvent _ m) = put m@@ -397,6 +421,7 @@ encoder (SBPMsgSettingsSave _ m) = put m encoder (SBPMsgSettingsWrite _ m) = put m encoder (SBPMsgSpecan _ m) = put m+ encoder (SBPMsgSpecanDep _ m) = put m encoder (SBPMsgStartup _ m) = put m encoder (SBPMsgStmFlashLockSector _ m) = put m encoder (SBPMsgStmFlashUnlockSector _ m) = put m@@ -405,10 +430,12 @@ encoder (SBPMsgSvConfigurationGps _ m) = put m encoder (SBPMsgThreadState _ m) = put m encoder (SBPMsgTrackingIq _ m) = put m+ encoder (SBPMsgTrackingIqDep _ m) = put m encoder (SBPMsgTrackingState _ m) = put m encoder (SBPMsgTrackingStateDepA _ m) = put m encoder (SBPMsgTrackingStateDepB _ m) = put m encoder (SBPMsgTrackingStateDetailed _ m) = put m+ encoder (SBPMsgTrackingStateDetailedDep _ m) = put m encoder (SBPMsgTweet _ m) = put m encoder (SBPMsgUartState _ m) = put m encoder (SBPMsgUartStateDepa _ m) = put m@@ -430,11 +457,15 @@ | msgType == msgAcqResult = SBPMsgAcqResult <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgAcqResultDepA = SBPMsgAcqResultDepA <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgAcqResultDepB = SBPMsgAcqResultDepB <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj+ | msgType == msgAcqResultDepC = SBPMsgAcqResultDepC <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgAcqSvProfile = SBPMsgAcqSvProfile <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj+ | msgType == msgAcqSvProfileDep = SBPMsgAcqSvProfileDep <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgAgeCorrections = SBPMsgAgeCorrections <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgAlmanac = SBPMsgAlmanac <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgAlmanacGlo = SBPMsgAlmanacGlo <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj+ | msgType == msgAlmanacGloDep = SBPMsgAlmanacGloDep <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgAlmanacGps = SBPMsgAlmanacGps <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj+ | msgType == msgAlmanacGpsDep = SBPMsgAlmanacGpsDep <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgBasePosEcef = SBPMsgBasePosEcef <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgBasePosLlh = SBPMsgBasePosLlh <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgBaselineEcef = SBPMsgBaselineEcef <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj@@ -486,6 +517,7 @@ | msgType == msgGpsTimeDepA = SBPMsgGpsTimeDepA <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgGroupDelay = SBPMsgGroupDelay <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgGroupDelayDepA = SBPMsgGroupDelayDepA <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj+ | msgType == msgGroupDelayDepB = SBPMsgGroupDelayDepB <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgHeartbeat = SBPMsgHeartbeat <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgIarState = SBPMsgIarState <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgImuAux = SBPMsgImuAux <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj@@ -496,6 +528,7 @@ | msgType == msgM25FlashWriteStatus = SBPMsgM25FlashWriteStatus <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgMagRaw = SBPMsgMagRaw <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgMaskSatellite = SBPMsgMaskSatellite <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj+ | msgType == msgMaskSatelliteDep = SBPMsgMaskSatelliteDep <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgNapDeviceDnaReq = SBPMsgNapDeviceDnaReq <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgNapDeviceDnaResp = SBPMsgNapDeviceDnaResp <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgNdbEvent = SBPMsgNdbEvent <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj@@ -523,6 +556,7 @@ | msgType == msgSettingsSave = SBPMsgSettingsSave <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSettingsWrite = SBPMsgSettingsWrite <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSpecan = SBPMsgSpecan <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj+ | msgType == msgSpecanDep = SBPMsgSpecanDep <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgStartup = SBPMsgStartup <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgStmFlashLockSector = SBPMsgStmFlashLockSector <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgStmFlashUnlockSector = SBPMsgStmFlashUnlockSector <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj@@ -531,10 +565,12 @@ | msgType == msgSvConfigurationGps = SBPMsgSvConfigurationGps <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgThreadState = SBPMsgThreadState <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgTrackingIq = SBPMsgTrackingIq <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj+ | msgType == msgTrackingIqDep = SBPMsgTrackingIqDep <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgTrackingState = SBPMsgTrackingState <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgTrackingStateDepA = SBPMsgTrackingStateDepA <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgTrackingStateDepB = SBPMsgTrackingStateDepB <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgTrackingStateDetailed = SBPMsgTrackingStateDetailed <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj+ | msgType == msgTrackingStateDetailedDep = SBPMsgTrackingStateDetailedDep <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgTweet = SBPMsgTweet <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgUartState = SBPMsgUartState <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgUartStateDepa = SBPMsgUartStateDepa <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj@@ -557,11 +593,15 @@ toJSON (SBPMsgAcqResult n m) = toJSON n <<>> toJSON m toJSON (SBPMsgAcqResultDepA n m) = toJSON n <<>> toJSON m toJSON (SBPMsgAcqResultDepB n m) = toJSON n <<>> toJSON m+ toJSON (SBPMsgAcqResultDepC n m) = toJSON n <<>> toJSON m toJSON (SBPMsgAcqSvProfile n m) = toJSON n <<>> toJSON m+ toJSON (SBPMsgAcqSvProfileDep n m) = toJSON n <<>> toJSON m toJSON (SBPMsgAgeCorrections n m) = toJSON n <<>> toJSON m toJSON (SBPMsgAlmanac n m) = toJSON n <<>> toJSON m toJSON (SBPMsgAlmanacGlo n m) = toJSON n <<>> toJSON m+ toJSON (SBPMsgAlmanacGloDep n m) = toJSON n <<>> toJSON m toJSON (SBPMsgAlmanacGps n m) = toJSON n <<>> toJSON m+ toJSON (SBPMsgAlmanacGpsDep n m) = toJSON n <<>> toJSON m toJSON (SBPMsgBasePosEcef n m) = toJSON n <<>> toJSON m toJSON (SBPMsgBasePosLlh n m) = toJSON n <<>> toJSON m toJSON (SBPMsgBaselineEcef n m) = toJSON n <<>> toJSON m@@ -613,6 +653,7 @@ toJSON (SBPMsgGpsTimeDepA n m) = toJSON n <<>> toJSON m toJSON (SBPMsgGroupDelay n m) = toJSON n <<>> toJSON m toJSON (SBPMsgGroupDelayDepA n m) = toJSON n <<>> toJSON m+ toJSON (SBPMsgGroupDelayDepB n m) = toJSON n <<>> toJSON m toJSON (SBPMsgHeartbeat n m) = toJSON n <<>> toJSON m toJSON (SBPMsgIarState n m) = toJSON n <<>> toJSON m toJSON (SBPMsgImuAux n m) = toJSON n <<>> toJSON m@@ -623,6 +664,7 @@ toJSON (SBPMsgM25FlashWriteStatus n m) = toJSON n <<>> toJSON m toJSON (SBPMsgMagRaw n m) = toJSON n <<>> toJSON m toJSON (SBPMsgMaskSatellite n m) = toJSON n <<>> toJSON m+ toJSON (SBPMsgMaskSatelliteDep n m) = toJSON n <<>> toJSON m toJSON (SBPMsgNapDeviceDnaReq n m) = toJSON n <<>> toJSON m toJSON (SBPMsgNapDeviceDnaResp n m) = toJSON n <<>> toJSON m toJSON (SBPMsgNdbEvent n m) = toJSON n <<>> toJSON m@@ -650,6 +692,7 @@ toJSON (SBPMsgSettingsSave n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSettingsWrite n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSpecan n m) = toJSON n <<>> toJSON m+ toJSON (SBPMsgSpecanDep n m) = toJSON n <<>> toJSON m toJSON (SBPMsgStartup n m) = toJSON n <<>> toJSON m toJSON (SBPMsgStmFlashLockSector n m) = toJSON n <<>> toJSON m toJSON (SBPMsgStmFlashUnlockSector n m) = toJSON n <<>> toJSON m@@ -658,10 +701,12 @@ toJSON (SBPMsgSvConfigurationGps n m) = toJSON n <<>> toJSON m toJSON (SBPMsgThreadState n m) = toJSON n <<>> toJSON m toJSON (SBPMsgTrackingIq n m) = toJSON n <<>> toJSON m+ toJSON (SBPMsgTrackingIqDep n m) = toJSON n <<>> toJSON m toJSON (SBPMsgTrackingState n m) = toJSON n <<>> toJSON m toJSON (SBPMsgTrackingStateDepA n m) = toJSON n <<>> toJSON m toJSON (SBPMsgTrackingStateDepB n m) = toJSON n <<>> toJSON m toJSON (SBPMsgTrackingStateDetailed n m) = toJSON n <<>> toJSON m+ toJSON (SBPMsgTrackingStateDetailedDep n m) = toJSON n <<>> toJSON m toJSON (SBPMsgTweet n m) = toJSON n <<>> toJSON m toJSON (SBPMsgUartState n m) = toJSON n <<>> toJSON m toJSON (SBPMsgUartStateDepa n m) = toJSON n <<>> toJSON m@@ -678,11 +723,15 @@ msg f (SBPMsgAcqResult n m) = SBPMsgAcqResult n <$> f m msg f (SBPMsgAcqResultDepA n m) = SBPMsgAcqResultDepA n <$> f m msg f (SBPMsgAcqResultDepB n m) = SBPMsgAcqResultDepB n <$> f m+ msg f (SBPMsgAcqResultDepC n m) = SBPMsgAcqResultDepC n <$> f m msg f (SBPMsgAcqSvProfile n m) = SBPMsgAcqSvProfile n <$> f m+ msg f (SBPMsgAcqSvProfileDep n m) = SBPMsgAcqSvProfileDep n <$> f m msg f (SBPMsgAgeCorrections n m) = SBPMsgAgeCorrections n <$> f m msg f (SBPMsgAlmanac n m) = SBPMsgAlmanac n <$> f m msg f (SBPMsgAlmanacGlo n m) = SBPMsgAlmanacGlo n <$> f m+ msg f (SBPMsgAlmanacGloDep n m) = SBPMsgAlmanacGloDep n <$> f m msg f (SBPMsgAlmanacGps n m) = SBPMsgAlmanacGps n <$> f m+ msg f (SBPMsgAlmanacGpsDep n m) = SBPMsgAlmanacGpsDep n <$> f m msg f (SBPMsgBasePosEcef n m) = SBPMsgBasePosEcef n <$> f m msg f (SBPMsgBasePosLlh n m) = SBPMsgBasePosLlh n <$> f m msg f (SBPMsgBaselineEcef n m) = SBPMsgBaselineEcef n <$> f m@@ -734,6 +783,7 @@ msg f (SBPMsgGpsTimeDepA n m) = SBPMsgGpsTimeDepA n <$> f m msg f (SBPMsgGroupDelay n m) = SBPMsgGroupDelay n <$> f m msg f (SBPMsgGroupDelayDepA n m) = SBPMsgGroupDelayDepA n <$> f m+ msg f (SBPMsgGroupDelayDepB n m) = SBPMsgGroupDelayDepB n <$> f m msg f (SBPMsgHeartbeat n m) = SBPMsgHeartbeat n <$> f m msg f (SBPMsgIarState n m) = SBPMsgIarState n <$> f m msg f (SBPMsgImuAux n m) = SBPMsgImuAux n <$> f m@@ -744,6 +794,7 @@ msg f (SBPMsgM25FlashWriteStatus n m) = SBPMsgM25FlashWriteStatus n <$> f m msg f (SBPMsgMagRaw n m) = SBPMsgMagRaw n <$> f m msg f (SBPMsgMaskSatellite n m) = SBPMsgMaskSatellite n <$> f m+ msg f (SBPMsgMaskSatelliteDep n m) = SBPMsgMaskSatelliteDep n <$> f m msg f (SBPMsgNapDeviceDnaReq n m) = SBPMsgNapDeviceDnaReq n <$> f m msg f (SBPMsgNapDeviceDnaResp n m) = SBPMsgNapDeviceDnaResp n <$> f m msg f (SBPMsgNdbEvent n m) = SBPMsgNdbEvent n <$> f m@@ -771,6 +822,7 @@ msg f (SBPMsgSettingsSave n m) = SBPMsgSettingsSave n <$> f m msg f (SBPMsgSettingsWrite n m) = SBPMsgSettingsWrite n <$> f m msg f (SBPMsgSpecan n m) = SBPMsgSpecan n <$> f m+ msg f (SBPMsgSpecanDep n m) = SBPMsgSpecanDep n <$> f m msg f (SBPMsgStartup n m) = SBPMsgStartup n <$> f m msg f (SBPMsgStmFlashLockSector n m) = SBPMsgStmFlashLockSector n <$> f m msg f (SBPMsgStmFlashUnlockSector n m) = SBPMsgStmFlashUnlockSector n <$> f m@@ -779,10 +831,12 @@ msg f (SBPMsgSvConfigurationGps n m) = SBPMsgSvConfigurationGps n <$> f m msg f (SBPMsgThreadState n m) = SBPMsgThreadState n <$> f m msg f (SBPMsgTrackingIq n m) = SBPMsgTrackingIq n <$> f m+ msg f (SBPMsgTrackingIqDep n m) = SBPMsgTrackingIqDep n <$> f m msg f (SBPMsgTrackingState n m) = SBPMsgTrackingState n <$> f m msg f (SBPMsgTrackingStateDepA n m) = SBPMsgTrackingStateDepA n <$> f m msg f (SBPMsgTrackingStateDepB n m) = SBPMsgTrackingStateDepB n <$> f m msg f (SBPMsgTrackingStateDetailed n m) = SBPMsgTrackingStateDetailed n <$> f m+ msg f (SBPMsgTrackingStateDetailedDep n m) = SBPMsgTrackingStateDetailedDep n <$> f m msg f (SBPMsgTweet n m) = SBPMsgTweet n <$> f m msg f (SBPMsgUartState n m) = SBPMsgUartState n <$> f m msg f (SBPMsgUartStateDepa n m) = SBPMsgUartStateDepa n <$> f m
@@ -54,11 +54,11 @@ -- ^ Event result. , _msgNdbEvent_data_source :: !Word8 -- ^ Data source for STORE event, reserved for other events.- , _msgNdbEvent_object_sid :: !GnssSignal16+ , _msgNdbEvent_object_sid :: !GnssSignal -- ^ GNSS signal identifier, If object_type is Ephemeris OR Almanac, sid -- indicates for which signal the object belongs to. Reserved in other -- cases.- , _msgNdbEvent_src_sid :: !GnssSignal16+ , _msgNdbEvent_src_sid :: !GnssSignal -- ^ GNSS signal identifier, If object_type is Almanac, Almanac WN, Iono OR -- L2C capabilities AND data_source is NDB_DS_RECEIVER sid indicates from -- which SV data was decoded. Reserved in other cases.
@@ -40,7 +40,7 @@ -- -- Header of a GNSS observation message. data ObservationHeader = ObservationHeader- { _observationHeader_t :: !GpsTimeNano+ { _observationHeader_t :: !GpsTime -- ^ GNSS time of this observation , _observationHeader_n_obs :: !Word8 -- ^ Total number of observations. First nibble is the size of the sequence@@ -110,7 +110,7 @@ -- ^ Measurement status flags. A bit field of flags providing the status of -- this observation. If this field is 0 it means only the Cn0 estimate for -- the signal is valid.- , _packedObsContent_sid :: !GnssSignal16+ , _packedObsContent_sid :: !GnssSignal -- ^ GNSS signal identifier (16 bit) } deriving ( Show, Read, Eq ) @@ -239,7 +239,7 @@ $(makeLenses ''MsgBasePosEcef) data EphemerisCommonContent = EphemerisCommonContent- { _ephemerisCommonContent_sid :: !GnssSignal16+ { _ephemerisCommonContent_sid :: !GnssSignal -- ^ GNSS signal identifier (16 bit) , _ephemerisCommonContent_toe :: !GpsTimeSec -- ^ Time of Ephemerides@@ -276,9 +276,9 @@ $(makeLenses ''EphemerisCommonContent) data EphemerisCommonContentDepA = EphemerisCommonContentDepA- { _ephemerisCommonContentDepA_sid :: !GnssSignal+ { _ephemerisCommonContentDepA_sid :: !GnssSignalDep -- ^ GNSS signal identifier- , _ephemerisCommonContentDepA_toe :: !GpsTime+ , _ephemerisCommonContentDepA_toe :: !GpsTimeDep -- ^ Time of Ephemerides , _ephemerisCommonContentDepA_ura :: !Double -- ^ User Range Accuracy@@ -366,7 +366,7 @@ -- ^ Polynomial clock correction coefficient (clock drift) , _msgEphemerisGpsDepE_af2 :: !Double -- ^ Polynomial clock correction coefficient (rate of clock drift)- , _msgEphemerisGpsDepE_toc :: !GpsTime+ , _msgEphemerisGpsDepE_toc :: !GpsTimeDep -- ^ Clock reference , _msgEphemerisGpsDepE_iode :: !Word8 -- ^ Issue of ephemeris data@@ -896,7 +896,7 @@ -- ^ Is valid? , _msgEphemerisDepD_healthy :: !Word8 -- ^ Satellite is healthy?- , _msgEphemerisDepD_sid :: !GnssSignal+ , _msgEphemerisDepD_sid :: !GnssSignalDep -- ^ GNSS signal identifier , _msgEphemerisDepD_iode :: !Word8 -- ^ Issue of ephemeris data@@ -1296,7 +1296,7 @@ -- ^ Is valid? , _msgEphemerisDepC_healthy :: !Word8 -- ^ Satellite is healthy?- , _msgEphemerisDepC_sid :: !GnssSignal+ , _msgEphemerisDepC_sid :: !GnssSignalDep -- ^ GNSS signal identifier , _msgEphemerisDepC_iode :: !Word8 -- ^ Issue of ephemeris data@@ -1378,7 +1378,7 @@ -- -- Header of a GPS observation message. data ObservationHeaderDep = ObservationHeaderDep- { _observationHeaderDep_t :: !GpsTime+ { _observationHeaderDep_t :: !GpsTimeDep -- ^ GPS time of this observation , _observationHeaderDep_n_obs :: !Word8 -- ^ Total number of observations. First nibble is the size of the sequence@@ -1476,7 +1476,7 @@ -- ^ Lock indicator. This value changes whenever a satellite signal has lost -- and regained lock, indicating that the carrier phase ambiguity may have -- changed.- , _packedObsContentDepB_sid :: !GnssSignal+ , _packedObsContentDepB_sid :: !GnssSignalDep -- ^ GNSS signal identifier } deriving ( Show, Read, Eq ) @@ -1515,7 +1515,7 @@ -- ^ Lock indicator. This value changes whenever a satellite signal has lost -- and regained lock, indicating that the carrier phase ambiguity may have -- changed.- , _packedObsContentDepC_sid :: !GnssSignal+ , _packedObsContentDepC_sid :: !GnssSignalDep -- ^ GNSS signal identifier } deriving ( Show, Read, Eq ) @@ -1710,7 +1710,7 @@ -- -- Please see ICD-GPS-200 (30.3.3.3.1.1) for more details. data MsgGroupDelayDepA = MsgGroupDelayDepA- { _msgGroupDelayDepA_t_op :: !GpsTime+ { _msgGroupDelayDepA_t_op :: !GpsTimeDep -- ^ Data Predict Time of Week , _msgGroupDelayDepA_prn :: !Word8 -- ^ Satellite number@@ -1744,10 +1744,51 @@ $(makeJSON "_msgGroupDelayDepA_" ''MsgGroupDelayDepA) $(makeLenses ''MsgGroupDelayDepA) +msgGroupDelayDepB :: Word16+msgGroupDelayDepB = 0x0093++-- | SBP class for message MSG_GROUP_DELAY_DEP_B (0x0093).+--+-- Please see ICD-GPS-200 (30.3.3.3.1.1) for more details.+data MsgGroupDelayDepB = MsgGroupDelayDepB+ { _msgGroupDelayDepB_t_op :: !GpsTimeSec+ -- ^ Data Predict Time of Week+ , _msgGroupDelayDepB_sid :: !GnssSignalDep+ -- ^ GNSS signal identifier+ , _msgGroupDelayDepB_valid :: !Word8+ -- ^ bit-field indicating validity of the values, LSB indicating tgd validity+ -- etc. 1 = value is valid, 0 = value is not valid.+ , _msgGroupDelayDepB_tgd :: !Int16+ , _msgGroupDelayDepB_isc_l1ca :: !Int16+ , _msgGroupDelayDepB_isc_l2c :: !Int16+ } deriving ( Show, Read, Eq )++instance Binary MsgGroupDelayDepB where+ get = do+ _msgGroupDelayDepB_t_op <- get+ _msgGroupDelayDepB_sid <- get+ _msgGroupDelayDepB_valid <- getWord8+ _msgGroupDelayDepB_tgd <- fromIntegral <$> getWord16le+ _msgGroupDelayDepB_isc_l1ca <- fromIntegral <$> getWord16le+ _msgGroupDelayDepB_isc_l2c <- fromIntegral <$> getWord16le+ pure MsgGroupDelayDepB {..}++ put MsgGroupDelayDepB {..} = do+ put _msgGroupDelayDepB_t_op+ put _msgGroupDelayDepB_sid+ putWord8 _msgGroupDelayDepB_valid+ putWord16le $ fromIntegral _msgGroupDelayDepB_tgd+ putWord16le $ fromIntegral _msgGroupDelayDepB_isc_l1ca+ putWord16le $ fromIntegral _msgGroupDelayDepB_isc_l2c++$(makeSBP 'msgGroupDelayDepB ''MsgGroupDelayDepB)+$(makeJSON "_msgGroupDelayDepB_" ''MsgGroupDelayDepB)+$(makeLenses ''MsgGroupDelayDepB)+ msgGroupDelay :: Word16-msgGroupDelay = 0x0093+msgGroupDelay = 0x0094 --- | SBP class for message MSG_GROUP_DELAY (0x0093).+-- | SBP class for message MSG_GROUP_DELAY (0x0094). -- -- Please see ICD-GPS-200 (30.3.3.3.1.1) for more details. data MsgGroupDelay = MsgGroupDelay@@ -1830,10 +1871,117 @@ $(makeJSON "_almanacCommonContent_" ''AlmanacCommonContent) $(makeLenses ''AlmanacCommonContent) +data AlmanacCommonContentDep = AlmanacCommonContentDep+ { _almanacCommonContentDep_sid :: !GnssSignalDep+ -- ^ GNSS signal identifier+ , _almanacCommonContentDep_toa :: !GpsTimeSec+ -- ^ Reference time of almanac+ , _almanacCommonContentDep_ura :: !Double+ -- ^ User Range Accuracy+ , _almanacCommonContentDep_fit_interval :: !Word32+ -- ^ Curve fit interval+ , _almanacCommonContentDep_valid :: !Word8+ -- ^ Status of almanac, 1 = valid, 0 = invalid+ , _almanacCommonContentDep_health_bits :: !Word8+ -- ^ Satellite health status for GPS: - bits 5-7: NAV data health status.+ -- See IS-GPS-200H Table 20-VII: NAV Data Health Indications. - bits+ -- 0-4: Signal health status. See IS-GPS-200H Table 20-VIII. Codes for+ -- Health of SV Signal Components. Satellite health status for GLO:+ -- See GLO ICD 5.1 table 5.1 for details - bit 0: C(n), "unhealthy" flag+ -- that is transmitted within non-immediate data and indicates overall+ -- constellation status at the moment of almanac uploading. '0'+ -- indicates malfunction of n-satellite. '1' indicates that n-satellite+ -- is operational. - bit 1: Bn(ln), '0' indicates the satellite is+ -- operational and suitable for navigation.+ } deriving ( Show, Read, Eq )++instance Binary AlmanacCommonContentDep where+ get = do+ _almanacCommonContentDep_sid <- get+ _almanacCommonContentDep_toa <- get+ _almanacCommonContentDep_ura <- getFloat64le+ _almanacCommonContentDep_fit_interval <- getWord32le+ _almanacCommonContentDep_valid <- getWord8+ _almanacCommonContentDep_health_bits <- getWord8+ pure AlmanacCommonContentDep {..}++ put AlmanacCommonContentDep {..} = do+ put _almanacCommonContentDep_sid+ put _almanacCommonContentDep_toa+ putFloat64le _almanacCommonContentDep_ura+ putWord32le _almanacCommonContentDep_fit_interval+ putWord8 _almanacCommonContentDep_valid+ putWord8 _almanacCommonContentDep_health_bits++$(makeJSON "_almanacCommonContentDep_" ''AlmanacCommonContentDep)+$(makeLenses ''AlmanacCommonContentDep)++msgAlmanacGpsDep :: Word16+msgAlmanacGpsDep = 0x0070++-- | SBP class for message MSG_ALMANAC_GPS_DEP (0x0070).+--+-- The almanac message returns a set of satellite orbit parameters. Almanac+-- data is not very precise and is considered valid for up to several months.+-- Please see the Navstar GPS Space Segment/Navigation user interfaces (ICD-+-- GPS-200, Chapter 20.3.3.5.1.2 Almanac Data) for more details.+data MsgAlmanacGpsDep = MsgAlmanacGpsDep+ { _msgAlmanacGpsDep_common :: !AlmanacCommonContentDep+ -- ^ Values common for all almanac types+ , _msgAlmanacGpsDep_m0 :: !Double+ -- ^ Mean anomaly at reference time+ , _msgAlmanacGpsDep_ecc :: !Double+ -- ^ Eccentricity of satellite orbit+ , _msgAlmanacGpsDep_sqrta :: !Double+ -- ^ Square root of the semi-major axis of orbit+ , _msgAlmanacGpsDep_omega0 :: !Double+ -- ^ Longitude of ascending node of orbit plane at weekly epoch+ , _msgAlmanacGpsDep_omegadot :: !Double+ -- ^ Rate of right ascension+ , _msgAlmanacGpsDep_w :: !Double+ -- ^ Argument of perigee+ , _msgAlmanacGpsDep_inc :: !Double+ -- ^ Inclination+ , _msgAlmanacGpsDep_af0 :: !Double+ -- ^ Polynomial clock correction coefficient (clock bias)+ , _msgAlmanacGpsDep_af1 :: !Double+ -- ^ Polynomial clock correction coefficient (clock drift)+ } deriving ( Show, Read, Eq )++instance Binary MsgAlmanacGpsDep where+ get = do+ _msgAlmanacGpsDep_common <- get+ _msgAlmanacGpsDep_m0 <- getFloat64le+ _msgAlmanacGpsDep_ecc <- getFloat64le+ _msgAlmanacGpsDep_sqrta <- getFloat64le+ _msgAlmanacGpsDep_omega0 <- getFloat64le+ _msgAlmanacGpsDep_omegadot <- getFloat64le+ _msgAlmanacGpsDep_w <- getFloat64le+ _msgAlmanacGpsDep_inc <- getFloat64le+ _msgAlmanacGpsDep_af0 <- getFloat64le+ _msgAlmanacGpsDep_af1 <- getFloat64le+ pure MsgAlmanacGpsDep {..}++ put MsgAlmanacGpsDep {..} = do+ put _msgAlmanacGpsDep_common+ putFloat64le _msgAlmanacGpsDep_m0+ putFloat64le _msgAlmanacGpsDep_ecc+ putFloat64le _msgAlmanacGpsDep_sqrta+ putFloat64le _msgAlmanacGpsDep_omega0+ putFloat64le _msgAlmanacGpsDep_omegadot+ putFloat64le _msgAlmanacGpsDep_w+ putFloat64le _msgAlmanacGpsDep_inc+ putFloat64le _msgAlmanacGpsDep_af0+ putFloat64le _msgAlmanacGpsDep_af1++$(makeSBP 'msgAlmanacGpsDep ''MsgAlmanacGpsDep)+$(makeJSON "_msgAlmanacGpsDep_" ''MsgAlmanacGpsDep)+$(makeLenses ''MsgAlmanacGpsDep)+ msgAlmanacGps :: Word16-msgAlmanacGps = 0x0070+msgAlmanacGps = 0x0072 --- | SBP class for message MSG_ALMANAC_GPS (0x0070).+-- | SBP class for message MSG_ALMANAC_GPS (0x0072). -- -- The almanac message returns a set of satellite orbit parameters. Almanac -- data is not very precise and is considered valid for up to several months.@@ -1892,10 +2040,65 @@ $(makeJSON "_msgAlmanacGps_" ''MsgAlmanacGps) $(makeLenses ''MsgAlmanacGps) +msgAlmanacGloDep :: Word16+msgAlmanacGloDep = 0x0071++-- | SBP class for message MSG_ALMANAC_GLO_DEP (0x0071).+--+-- The almanac message returns a set of satellite orbit parameters. Almanac+-- data is not very precise and is considered valid for up to several months.+-- Please see the GLO ICD 5.1 "Chapter 4.5 Non-immediate information and+-- almanac" for details.+data MsgAlmanacGloDep = MsgAlmanacGloDep+ { _msgAlmanacGloDep_common :: !AlmanacCommonContentDep+ -- ^ Values common for all almanac types+ , _msgAlmanacGloDep_lambda_na :: !Double+ -- ^ Longitude of the first ascending node of the orbit in PZ-90.02+ -- coordinate system+ , _msgAlmanacGloDep_t_lambda_na :: !Double+ -- ^ Time of the first ascending node passage+ , _msgAlmanacGloDep_i :: !Double+ -- ^ Value of inclination at instant of t_lambda+ , _msgAlmanacGloDep_t :: !Double+ -- ^ Value of Draconian period at instant of t_lambda+ , _msgAlmanacGloDep_t_dot :: !Double+ -- ^ Rate of change of the Draconian period+ , _msgAlmanacGloDep_epsilon :: !Double+ -- ^ Eccentricity at instant of t_lambda+ , _msgAlmanacGloDep_omega :: !Double+ -- ^ Argument of perigee at instant of t_lambda+ } deriving ( Show, Read, Eq )++instance Binary MsgAlmanacGloDep where+ get = do+ _msgAlmanacGloDep_common <- get+ _msgAlmanacGloDep_lambda_na <- getFloat64le+ _msgAlmanacGloDep_t_lambda_na <- getFloat64le+ _msgAlmanacGloDep_i <- getFloat64le+ _msgAlmanacGloDep_t <- getFloat64le+ _msgAlmanacGloDep_t_dot <- getFloat64le+ _msgAlmanacGloDep_epsilon <- getFloat64le+ _msgAlmanacGloDep_omega <- getFloat64le+ pure MsgAlmanacGloDep {..}++ put MsgAlmanacGloDep {..} = do+ put _msgAlmanacGloDep_common+ putFloat64le _msgAlmanacGloDep_lambda_na+ putFloat64le _msgAlmanacGloDep_t_lambda_na+ putFloat64le _msgAlmanacGloDep_i+ putFloat64le _msgAlmanacGloDep_t+ putFloat64le _msgAlmanacGloDep_t_dot+ putFloat64le _msgAlmanacGloDep_epsilon+ putFloat64le _msgAlmanacGloDep_omega++$(makeSBP 'msgAlmanacGloDep ''MsgAlmanacGloDep)+$(makeJSON "_msgAlmanacGloDep_" ''MsgAlmanacGloDep)+$(makeLenses ''MsgAlmanacGloDep)+ msgAlmanacGlo :: Word16-msgAlmanacGlo = 0x0071+msgAlmanacGlo = 0x0073 --- | SBP class for message MSG_ALMANAC_GLO (0x0071).+-- | SBP class for message MSG_ALMANAC_GLO (0x0073). -- -- The almanac message returns a set of satellite orbit parameters. Almanac -- data is not very precise and is considered valid for up to several months.
@@ -458,9 +458,9 @@ $(makeLenses ''MsgIarState) msgMaskSatellite :: Word16-msgMaskSatellite = 0x001B+msgMaskSatellite = 0x002B --- | SBP class for message MSG_MASK_SATELLITE (0x001B).+-- | SBP class for message MSG_MASK_SATELLITE (0x002B). -- -- This message allows setting a mask to prevent a particular satellite from -- being used in various Piksi subsystems.@@ -485,6 +485,33 @@ $(makeJSON "_msgMaskSatellite_" ''MsgMaskSatellite) $(makeLenses ''MsgMaskSatellite) +msgMaskSatelliteDep :: Word16+msgMaskSatelliteDep = 0x001B++-- | SBP class for message MSG_MASK_SATELLITE_DEP (0x001B).+--+-- Deprecated.+data MsgMaskSatelliteDep = MsgMaskSatelliteDep+ { _msgMaskSatelliteDep_mask :: !Word8+ -- ^ Mask of systems that should ignore this satellite.+ , _msgMaskSatelliteDep_sid :: !GnssSignalDep+ -- ^ GNSS signal for which the mask is applied+ } deriving ( Show, Read, Eq )++instance Binary MsgMaskSatelliteDep where+ get = do+ _msgMaskSatelliteDep_mask <- getWord8+ _msgMaskSatelliteDep_sid <- get+ pure MsgMaskSatelliteDep {..}++ put MsgMaskSatelliteDep {..} = do+ putWord8 _msgMaskSatelliteDep_mask+ put _msgMaskSatelliteDep_sid++$(makeSBP 'msgMaskSatelliteDep ''MsgMaskSatelliteDep)+$(makeJSON "_msgMaskSatelliteDep_" ''MsgMaskSatelliteDep)+$(makeLenses ''MsgMaskSatelliteDep)+ msgDeviceMonitor :: Word16 msgDeviceMonitor = 0x00B5 @@ -683,10 +710,57 @@ $(makeJSON "_msgNetworkStateResp_" ''MsgNetworkStateResp) $(makeLenses ''MsgNetworkStateResp) +msgSpecanDep :: Word16+msgSpecanDep = 0x0050++-- | SBP class for message MSG_SPECAN_DEP (0x0050).+--+-- Deprecated.+data MsgSpecanDep = MsgSpecanDep+ { _msgSpecanDep_channel_tag :: !Word16+ -- ^ Channel ID+ , _msgSpecanDep_t :: !GpsTimeDep+ -- ^ Receiver time of this observation+ , _msgSpecanDep_freq_ref :: !Float+ -- ^ Reference frequency of this packet+ , _msgSpecanDep_freq_step :: !Float+ -- ^ Frequency step of points in this packet+ , _msgSpecanDep_amplitude_ref :: !Float+ -- ^ Reference amplitude of this packet+ , _msgSpecanDep_amplitude_unit :: !Float+ -- ^ Amplitude unit value of points in this packet+ , _msgSpecanDep_amplitude_value :: ![Word8]+ -- ^ Amplitude values (in the above units) of points in this packet+ } deriving ( Show, Read, Eq )++instance Binary MsgSpecanDep where+ get = do+ _msgSpecanDep_channel_tag <- getWord16le+ _msgSpecanDep_t <- get+ _msgSpecanDep_freq_ref <- getFloat32le+ _msgSpecanDep_freq_step <- getFloat32le+ _msgSpecanDep_amplitude_ref <- getFloat32le+ _msgSpecanDep_amplitude_unit <- getFloat32le+ _msgSpecanDep_amplitude_value <- whileM (not <$> isEmpty) getWord8+ pure MsgSpecanDep {..}++ put MsgSpecanDep {..} = do+ putWord16le _msgSpecanDep_channel_tag+ put _msgSpecanDep_t+ putFloat32le _msgSpecanDep_freq_ref+ putFloat32le _msgSpecanDep_freq_step+ putFloat32le _msgSpecanDep_amplitude_ref+ putFloat32le _msgSpecanDep_amplitude_unit+ mapM_ putWord8 _msgSpecanDep_amplitude_value++$(makeSBP 'msgSpecanDep ''MsgSpecanDep)+$(makeJSON "_msgSpecanDep_" ''MsgSpecanDep)+$(makeLenses ''MsgSpecanDep)+ msgSpecan :: Word16-msgSpecan = 0x0050+msgSpecan = 0x0051 --- | SBP class for message MSG_SPECAN (0x0050).+-- | SBP class for message MSG_SPECAN (0x0051). -- -- Spectrum analyzer packet. data MsgSpecan = MsgSpecan
@@ -37,9 +37,9 @@ msgTrackingStateDetailed :: Word16-msgTrackingStateDetailed = 0x0011+msgTrackingStateDetailed = 0x0021 --- | SBP class for message MSG_TRACKING_STATE_DETAILED (0x0011).+-- | SBP class for message MSG_TRACKING_STATE_DETAILED (0x0021). -- -- The tracking message returns a set tracking channel parameters for a single -- tracking channel useful for debugging issues.@@ -146,12 +146,121 @@ $(makeJSON "_msgTrackingStateDetailed_" ''MsgTrackingStateDetailed) $(makeLenses ''MsgTrackingStateDetailed) +msgTrackingStateDetailedDep :: Word16+msgTrackingStateDetailedDep = 0x0011++-- | SBP class for message MSG_TRACKING_STATE_DETAILED_DEP (0x0011).+--+-- Deprecated.+data MsgTrackingStateDetailedDep = MsgTrackingStateDetailedDep+ { _msgTrackingStateDetailedDep_recv_time :: !Word64+ -- ^ Receiver clock time.+ , _msgTrackingStateDetailedDep_tot :: !GpsTimeDep+ -- ^ Time of transmission of signal from satellite. TOW only valid when TOW+ -- status is decoded or propagated. WN only valid when week number valid+ -- flag is set.+ , _msgTrackingStateDetailedDep_P :: !Word32+ -- ^ Pseudorange observation. Valid only when pseudorange valid flag is set.+ , _msgTrackingStateDetailedDep_P_std :: !Word16+ -- ^ Pseudorange observation standard deviation. Valid only when pseudorange+ -- valid flag is set.+ , _msgTrackingStateDetailedDep_L :: !CarrierPhase+ -- ^ Carrier phase observation with typical sign convention. Valid only when+ -- PLL pessimistic lock is achieved.+ , _msgTrackingStateDetailedDep_cn0 :: !Word8+ -- ^ Carrier-to-Noise density+ , _msgTrackingStateDetailedDep_lock :: !Word16+ -- ^ Lock time. It is encoded according to DF402 from the RTCM 10403.2+ -- Amendment 2 specification. Valid values range from 0 to 15.+ , _msgTrackingStateDetailedDep_sid :: !GnssSignalDep+ -- ^ GNSS signal identifier.+ , _msgTrackingStateDetailedDep_doppler :: !Int32+ -- ^ Carrier Doppler frequency.+ , _msgTrackingStateDetailedDep_doppler_std :: !Word16+ -- ^ Carrier Doppler frequency standard deviation.+ , _msgTrackingStateDetailedDep_uptime :: !Word32+ -- ^ Number of seconds of continuous tracking. Specifies how much time signal+ -- is in continuous track.+ , _msgTrackingStateDetailedDep_clock_offset :: !Int16+ -- ^ TCXO clock offset. Valid only when valid clock valid flag is set.+ , _msgTrackingStateDetailedDep_clock_drift :: !Int16+ -- ^ TCXO clock drift. Valid only when valid clock valid flag is set.+ , _msgTrackingStateDetailedDep_corr_spacing :: !Word16+ -- ^ Early-Prompt (EP) and Prompt-Late (PL) correlators spacing.+ , _msgTrackingStateDetailedDep_acceleration :: !Int8+ -- ^ Acceleration. Valid only when acceleration valid flag is set.+ , _msgTrackingStateDetailedDep_sync_flags :: !Word8+ -- ^ Synchronization status flags.+ , _msgTrackingStateDetailedDep_tow_flags :: !Word8+ -- ^ TOW status flags.+ , _msgTrackingStateDetailedDep_track_flags :: !Word8+ -- ^ Tracking loop status flags.+ , _msgTrackingStateDetailedDep_nav_flags :: !Word8+ -- ^ Navigation data status flags.+ , _msgTrackingStateDetailedDep_pset_flags :: !Word8+ -- ^ Parameters sets flags.+ , _msgTrackingStateDetailedDep_misc_flags :: !Word8+ -- ^ Miscellaneous flags.+ } deriving ( Show, Read, Eq )++instance Binary MsgTrackingStateDetailedDep where+ get = do+ _msgTrackingStateDetailedDep_recv_time <- getWord64le+ _msgTrackingStateDetailedDep_tot <- get+ _msgTrackingStateDetailedDep_P <- getWord32le+ _msgTrackingStateDetailedDep_P_std <- getWord16le+ _msgTrackingStateDetailedDep_L <- get+ _msgTrackingStateDetailedDep_cn0 <- getWord8+ _msgTrackingStateDetailedDep_lock <- getWord16le+ _msgTrackingStateDetailedDep_sid <- get+ _msgTrackingStateDetailedDep_doppler <- fromIntegral <$> getWord32le+ _msgTrackingStateDetailedDep_doppler_std <- getWord16le+ _msgTrackingStateDetailedDep_uptime <- getWord32le+ _msgTrackingStateDetailedDep_clock_offset <- fromIntegral <$> getWord16le+ _msgTrackingStateDetailedDep_clock_drift <- fromIntegral <$> getWord16le+ _msgTrackingStateDetailedDep_corr_spacing <- getWord16le+ _msgTrackingStateDetailedDep_acceleration <- fromIntegral <$> getWord8+ _msgTrackingStateDetailedDep_sync_flags <- getWord8+ _msgTrackingStateDetailedDep_tow_flags <- getWord8+ _msgTrackingStateDetailedDep_track_flags <- getWord8+ _msgTrackingStateDetailedDep_nav_flags <- getWord8+ _msgTrackingStateDetailedDep_pset_flags <- getWord8+ _msgTrackingStateDetailedDep_misc_flags <- getWord8+ pure MsgTrackingStateDetailedDep {..}++ put MsgTrackingStateDetailedDep {..} = do+ putWord64le _msgTrackingStateDetailedDep_recv_time+ put _msgTrackingStateDetailedDep_tot+ putWord32le _msgTrackingStateDetailedDep_P+ putWord16le _msgTrackingStateDetailedDep_P_std+ put _msgTrackingStateDetailedDep_L+ putWord8 _msgTrackingStateDetailedDep_cn0+ putWord16le _msgTrackingStateDetailedDep_lock+ put _msgTrackingStateDetailedDep_sid+ putWord32le $ fromIntegral _msgTrackingStateDetailedDep_doppler+ putWord16le _msgTrackingStateDetailedDep_doppler_std+ putWord32le _msgTrackingStateDetailedDep_uptime+ putWord16le $ fromIntegral _msgTrackingStateDetailedDep_clock_offset+ putWord16le $ fromIntegral _msgTrackingStateDetailedDep_clock_drift+ putWord16le _msgTrackingStateDetailedDep_corr_spacing+ putWord8 $ fromIntegral _msgTrackingStateDetailedDep_acceleration+ putWord8 _msgTrackingStateDetailedDep_sync_flags+ putWord8 _msgTrackingStateDetailedDep_tow_flags+ putWord8 _msgTrackingStateDetailedDep_track_flags+ putWord8 _msgTrackingStateDetailedDep_nav_flags+ putWord8 _msgTrackingStateDetailedDep_pset_flags+ putWord8 _msgTrackingStateDetailedDep_misc_flags++$(makeSBP 'msgTrackingStateDetailedDep ''MsgTrackingStateDetailedDep)+$(makeJSON "_msgTrackingStateDetailedDep_" ''MsgTrackingStateDetailedDep)+$(makeLenses ''MsgTrackingStateDetailedDep)+ -- | TrackingChannelState. -- -- Tracking channel state for a specific satellite signal and measured signal -- power. data TrackingChannelState = TrackingChannelState- { _trackingChannelState_sid :: !GnssSignal16+ { _trackingChannelState_sid :: !GnssSignal -- ^ GNSS signal being tracked , _trackingChannelState_fcn :: !Word8 -- ^ Frequency channel number (GLONASS only)@@ -223,9 +332,9 @@ $(makeLenses ''TrackingChannelCorrelation) msgTrackingIq :: Word16-msgTrackingIq = 0x001C+msgTrackingIq = 0x002C --- | SBP class for message MSG_TRACKING_IQ (0x001C).+-- | SBP class for message MSG_TRACKING_IQ (0x002C). -- -- When enabled, a tracking channel can output the correlations at each update -- interval.@@ -254,6 +363,37 @@ $(makeJSON "_msgTrackingIq_" ''MsgTrackingIq) $(makeLenses ''MsgTrackingIq) +msgTrackingIqDep :: Word16+msgTrackingIqDep = 0x001C++-- | SBP class for message MSG_TRACKING_IQ_DEP (0x001C).+--+-- Deprecated.+data MsgTrackingIqDep = MsgTrackingIqDep+ { _msgTrackingIqDep_channel :: !Word8+ -- ^ Tracking channel of origin+ , _msgTrackingIqDep_sid :: !GnssSignalDep+ -- ^ GNSS signal identifier+ , _msgTrackingIqDep_corrs :: ![TrackingChannelCorrelation]+ -- ^ Early, Prompt and Late correlations+ } deriving ( Show, Read, Eq )++instance Binary MsgTrackingIqDep where+ get = do+ _msgTrackingIqDep_channel <- getWord8+ _msgTrackingIqDep_sid <- get+ _msgTrackingIqDep_corrs <- replicateM 3 get+ pure MsgTrackingIqDep {..}++ put MsgTrackingIqDep {..} = do+ putWord8 _msgTrackingIqDep_channel+ put _msgTrackingIqDep_sid+ mapM_ put _msgTrackingIqDep_corrs++$(makeSBP 'msgTrackingIqDep ''MsgTrackingIqDep)+$(makeJSON "_msgTrackingIqDep_" ''MsgTrackingIqDep)+$(makeLenses ''MsgTrackingIqDep)+ -- | TrackingChannelStateDepA. -- -- Deprecated.@@ -310,7 +450,7 @@ data TrackingChannelStateDepB = TrackingChannelStateDepB { _trackingChannelStateDepB_state :: !Word8 -- ^ Status of tracking channel- , _trackingChannelStateDepB_sid :: !GnssSignal+ , _trackingChannelStateDepB_sid :: !GnssSignalDep -- ^ GNSS signal being tracked , _trackingChannelStateDepB_cn0 :: !Float -- ^ Carrier-to-noise density