sbp 6.0.1 → 6.1.0
raw patch · 5 files changed
+69/−3 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ SwiftNav.SBP: SBPMsgAesCmacSignature :: MsgAesCmacSignature -> Msg -> SBPMsg
+ SwiftNav.SBP: _SBPMsgAesCmacSignature :: Prism' SBPMsg (MsgAesCmacSignature, Msg)
+ SwiftNav.SBP.Integrity: [_msgSsrFlagHighLevel_use_qzss_sat] :: MsgSsrFlagHighLevel -> !Word8
+ SwiftNav.SBP.Integrity: msgSsrFlagHighLevel_use_qzss_sat :: Lens' MsgSsrFlagHighLevel Word8
+ SwiftNav.SBP.Signing: MsgAesCmacSignature :: !Word8 -> !Word8 -> ![Word8] -> ![Word8] -> !Word8 -> ![Word8] -> MsgAesCmacSignature
+ SwiftNav.SBP.Signing: [_msgAesCmacSignature_certificate_id] :: MsgAesCmacSignature -> ![Word8]
+ SwiftNav.SBP.Signing: [_msgAesCmacSignature_flags] :: MsgAesCmacSignature -> !Word8
+ SwiftNav.SBP.Signing: [_msgAesCmacSignature_on_demand_counter] :: MsgAesCmacSignature -> !Word8
+ SwiftNav.SBP.Signing: [_msgAesCmacSignature_signature] :: MsgAesCmacSignature -> ![Word8]
+ SwiftNav.SBP.Signing: [_msgAesCmacSignature_signed_messages] :: MsgAesCmacSignature -> ![Word8]
+ SwiftNav.SBP.Signing: [_msgAesCmacSignature_stream_counter] :: MsgAesCmacSignature -> !Word8
+ SwiftNav.SBP.Signing: data MsgAesCmacSignature
+ SwiftNav.SBP.Signing: instance Data.Aeson.Types.FromJSON.FromJSON SwiftNav.SBP.Signing.MsgAesCmacSignature
+ SwiftNav.SBP.Signing: instance Data.Aeson.Types.ToJSON.ToJSON SwiftNav.SBP.Signing.MsgAesCmacSignature
+ SwiftNav.SBP.Signing: instance Data.Binary.Class.Binary SwiftNav.SBP.Signing.MsgAesCmacSignature
+ SwiftNav.SBP.Signing: instance GHC.Classes.Eq SwiftNav.SBP.Signing.MsgAesCmacSignature
+ SwiftNav.SBP.Signing: instance GHC.Read.Read SwiftNav.SBP.Signing.MsgAesCmacSignature
+ SwiftNav.SBP.Signing: instance GHC.Show.Show SwiftNav.SBP.Signing.MsgAesCmacSignature
+ SwiftNav.SBP.Signing: instance SwiftNav.SBP.Types.ToSBP SwiftNav.SBP.Signing.MsgAesCmacSignature
+ SwiftNav.SBP.Signing: msgAesCmacSignature :: Word16
+ SwiftNav.SBP.Signing: msgAesCmacSignature_certificate_id :: Lens' MsgAesCmacSignature [Word8]
+ SwiftNav.SBP.Signing: msgAesCmacSignature_flags :: Lens' MsgAesCmacSignature Word8
+ SwiftNav.SBP.Signing: msgAesCmacSignature_on_demand_counter :: Lens' MsgAesCmacSignature Word8
+ SwiftNav.SBP.Signing: msgAesCmacSignature_signature :: Lens' MsgAesCmacSignature [Word8]
+ SwiftNav.SBP.Signing: msgAesCmacSignature_signed_messages :: Lens' MsgAesCmacSignature [Word8]
+ SwiftNav.SBP.Signing: msgAesCmacSignature_stream_counter :: Lens' MsgAesCmacSignature Word8
- SwiftNav.SBP.Integrity: MsgSsrFlagHighLevel :: !GpsTimeSec -> !GpsTimeSec -> !Word8 -> !Word16 -> !Word16 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> ![Word8] -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> MsgSsrFlagHighLevel
+ SwiftNav.SBP.Integrity: MsgSsrFlagHighLevel :: !GpsTimeSec -> !GpsTimeSec -> !Word8 -> !Word16 -> !Word16 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> ![Word8] -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> MsgSsrFlagHighLevel
- SwiftNav.SBP.Types: class HasMsg c_aeX3
+ SwiftNav.SBP.Types: class HasMsg c_aeKR
- SwiftNav.SBP.Types: msg :: HasMsg c_aeX3 => Lens' c_aeX3 Msg
+ SwiftNav.SBP.Types: msg :: HasMsg c_aeKR => Lens' c_aeKR Msg
- SwiftNav.SBP.Types: msgSBPCrc :: HasMsg c_aeX3 => Lens' c_aeX3 Word16
+ SwiftNav.SBP.Types: msgSBPCrc :: HasMsg c_aeKR => Lens' c_aeKR Word16
- SwiftNav.SBP.Types: msgSBPLen :: HasMsg c_aeX3 => Lens' c_aeX3 Word8
+ SwiftNav.SBP.Types: msgSBPLen :: HasMsg c_aeKR => Lens' c_aeKR Word8
- SwiftNav.SBP.Types: msgSBPPayload :: HasMsg c_aeX3 => Lens' c_aeX3 Bytes
+ SwiftNav.SBP.Types: msgSBPPayload :: HasMsg c_aeKR => Lens' c_aeKR Bytes
- SwiftNav.SBP.Types: msgSBPSender :: HasMsg c_aeX3 => Lens' c_aeX3 Word16
+ SwiftNav.SBP.Types: msgSBPSender :: HasMsg c_aeKR => Lens' c_aeKR Word16
- SwiftNav.SBP.Types: msgSBPType :: HasMsg c_aeX3 => Lens' c_aeX3 Word16
+ SwiftNav.SBP.Types: msgSBPType :: HasMsg c_aeKR => Lens' c_aeKR Word16
Files
- sbp.cabal +1/−1
- src/SwiftNav/SBP/Integrity.hs +6/−2
- src/SwiftNav/SBP/Msg.hs +6/−0
- src/SwiftNav/SBP/Observation.hs +2/−0
- src/SwiftNav/SBP/Signing.hs +54/−0
sbp.cabal view
@@ -1,5 +1,5 @@ name: sbp-version: 6.0.1+version: 6.1.0 synopsis: SwiftNav's SBP Library homepage: https://github.com/swift-nav/libsbp license: MIT
@@ -85,7 +85,7 @@ -- could be a satellite, SSR grid point, or SSR tile. A group of aggregated -- elements being monitored for integrity could refer to: ----- - Satellites in a particular {GPS, GAL, BDS} constellation.+-- - Satellites in a particular {GPS, GAL, BDS, QZSS} constellation. -- -- - Satellites in the line-of-sight of a particular SSR tile. --@@ -125,6 +125,8 @@ -- ^ Use GAL satellites. , _msgSsrFlagHighLevel_use_bds_sat :: !Word8 -- ^ Use BDS satellites.+ , _msgSsrFlagHighLevel_use_qzss_sat :: !Word8+ -- ^ Use QZSS satellites. , _msgSsrFlagHighLevel_reserved :: ![Word8] -- ^ Reserved , _msgSsrFlagHighLevel_use_tropo_grid_points :: !Word8@@ -148,7 +150,8 @@ _msgSsrFlagHighLevel_use_gps_sat <- getWord8 _msgSsrFlagHighLevel_use_gal_sat <- getWord8 _msgSsrFlagHighLevel_use_bds_sat <- getWord8- _msgSsrFlagHighLevel_reserved <- replicateM 6 getWord8+ _msgSsrFlagHighLevel_use_qzss_sat <- getWord8+ _msgSsrFlagHighLevel_reserved <- replicateM 5 getWord8 _msgSsrFlagHighLevel_use_tropo_grid_points <- getWord8 _msgSsrFlagHighLevel_use_iono_grid_points <- getWord8 _msgSsrFlagHighLevel_use_iono_tile_sat_los <- getWord8@@ -165,6 +168,7 @@ putWord8 _msgSsrFlagHighLevel_use_gps_sat putWord8 _msgSsrFlagHighLevel_use_gal_sat putWord8 _msgSsrFlagHighLevel_use_bds_sat+ putWord8 _msgSsrFlagHighLevel_use_qzss_sat mapM_ putWord8 _msgSsrFlagHighLevel_reserved putWord8 _msgSsrFlagHighLevel_use_tropo_grid_points putWord8 _msgSsrFlagHighLevel_use_iono_grid_points
@@ -66,6 +66,7 @@ | SBPMsgAcqResultDepC MsgAcqResultDepC Msg | SBPMsgAcqSvProfile MsgAcqSvProfile Msg | SBPMsgAcqSvProfileDep MsgAcqSvProfileDep Msg+ | SBPMsgAesCmacSignature MsgAesCmacSignature Msg | SBPMsgAgeCorrections MsgAgeCorrections Msg | SBPMsgAlmanac MsgAlmanac Msg | SBPMsgAlmanacGlo MsgAlmanacGlo Msg@@ -316,6 +317,7 @@ | _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 == msgAesCmacSignature = SBPMsgAesCmacSignature (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@@ -558,6 +560,7 @@ encoder (SBPMsgAcqResultDepC _ m) = put m encoder (SBPMsgAcqSvProfile _ m) = put m encoder (SBPMsgAcqSvProfileDep _ m) = put m+ encoder (SBPMsgAesCmacSignature _ m) = put m encoder (SBPMsgAgeCorrections _ m) = put m encoder (SBPMsgAlmanac _ m) = put m encoder (SBPMsgAlmanacGlo _ m) = put m@@ -804,6 +807,7 @@ | 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 == msgAesCmacSignature = SBPMsgAesCmacSignature <$> 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@@ -1051,6 +1055,7 @@ 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 (SBPMsgAesCmacSignature n m) = toJSON n <<>> toJSON m toJSON (SBPMsgAgeCorrections n m) = toJSON n <<>> toJSON m toJSON (SBPMsgAlmanac _ m) = toJSON m toJSON (SBPMsgAlmanacGlo n m) = toJSON n <<>> toJSON m@@ -1292,6 +1297,7 @@ 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 (SBPMsgAesCmacSignature n m) = SBPMsgAesCmacSignature 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
@@ -2731,6 +2731,7 @@ -- - 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@@ -2781,6 +2782,7 @@ -- - 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
@@ -224,6 +224,60 @@ $(makeJSON "_msgCertificateChainDep_" ''MsgCertificateChainDep) $(makeLenses ''MsgCertificateChainDep) +msgAesCmacSignature :: Word16+msgAesCmacSignature = 0x0C10++-- | SBP class for message MSG_AES_CMAC_SIGNATURE (0x0C10).+--+-- Digital signature using AES-CMAC 128 algorithm used for data integrity.+data MsgAesCmacSignature = MsgAesCmacSignature+ { _msgAesCmacSignature_stream_counter :: !Word8+ -- ^ Signature message counter. Zero indexed and incremented with each+ -- signature message. The counter will not increment if this message was+ -- in response to an on demand request. The counter will roll over after+ -- 256 messages. Upon connection, the value of the counter may not+ -- initially be zero.+ , _msgAesCmacSignature_on_demand_counter :: !Word8+ -- ^ On demand message counter. Zero indexed and incremented with each+ -- signature message sent in response to an on demand message. The counter+ -- will roll over after 256 messages. Upon connection, the value of the+ -- counter may not initially be zero.+ , _msgAesCmacSignature_certificate_id :: ![Word8]+ -- ^ The last 4 bytes of the certificate's SHA-1 fingerprint+ , _msgAesCmacSignature_signature :: ![Word8]+ -- ^ Signature (CMAC tag value)+ , _msgAesCmacSignature_flags :: !Word8+ -- ^ Describes the format of the 'signed messages' field below.+ , _msgAesCmacSignature_signed_messages :: ![Word8]+ -- ^ CRCs of the messages covered by this signature. For Skylark, which+ -- delivers SBP messages wrapped in Swift's proprietary RTCM message,+ -- these are the 24-bit CRCs from the RTCM message framing. For SBP only+ -- streams, this will be 16-bit CRCs from the SBP framing. See the+ -- `flags` field to determine the type of CRCs covered.+ } deriving ( Show, Read, Eq )++instance Binary MsgAesCmacSignature where+ get = do+ _msgAesCmacSignature_stream_counter <- getWord8+ _msgAesCmacSignature_on_demand_counter <- getWord8+ _msgAesCmacSignature_certificate_id <- replicateM 4 getWord8+ _msgAesCmacSignature_signature <- replicateM 16 getWord8+ _msgAesCmacSignature_flags <- getWord8+ _msgAesCmacSignature_signed_messages <- whileM (not <$> isEmpty) getWord8+ pure MsgAesCmacSignature {..}++ put MsgAesCmacSignature {..} = do+ putWord8 _msgAesCmacSignature_stream_counter+ putWord8 _msgAesCmacSignature_on_demand_counter+ mapM_ putWord8 _msgAesCmacSignature_certificate_id+ mapM_ putWord8 _msgAesCmacSignature_signature+ putWord8 _msgAesCmacSignature_flags+ mapM_ putWord8 _msgAesCmacSignature_signed_messages++$(makeSBP 'msgAesCmacSignature ''MsgAesCmacSignature)+$(makeJSON "_msgAesCmacSignature_" ''MsgAesCmacSignature)+$(makeLenses ''MsgAesCmacSignature)+ msgEcdsaSignature :: Word16 msgEcdsaSignature = 0x0C08