packages feed

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 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
src/SwiftNav/SBP/Acquisition.hs view
@@ -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)
src/SwiftNav/SBP/Gnss.hs view
@@ -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. --
src/SwiftNav/SBP/Msg.hs view
@@ -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
src/SwiftNav/SBP/Ndb.hs view
@@ -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.
src/SwiftNav/SBP/Observation.hs view
@@ -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.
src/SwiftNav/SBP/Piksi.hs view
@@ -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
src/SwiftNav/SBP/Tracking.hs view
@@ -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