packages feed

sbp 4.1.6 → 4.2.0

raw patch · 3 files changed

+77/−4 lines, 3 files

Files

sbp.cabal view
@@ -1,5 +1,5 @@ name:                  sbp-version:               4.1.6+version:               4.2.0 synopsis:              SwiftNav's SBP Library homepage:              https://github.com/swift-nav/libsbp license:               MIT
src/SwiftNav/SBP/Msg.hs view
@@ -225,6 +225,7 @@    | SBPMsgSsrStecCorrectionDepA MsgSsrStecCorrectionDepA Msg    | SBPMsgSsrTileDefinition MsgSsrTileDefinition Msg    | SBPMsgStartup MsgStartup Msg+   | SBPMsgStatusJournal MsgStatusJournal Msg    | SBPMsgStatusReport MsgStatusReport Msg    | SBPMsgStmFlashLockSector MsgStmFlashLockSector Msg    | SBPMsgStmFlashUnlockSector MsgStmFlashUnlockSector Msg@@ -442,6 +443,7 @@           | _msgSBPType == msgSsrStecCorrectionDepA = SBPMsgSsrStecCorrectionDepA (decode (fromStrict (unBytes _msgSBPPayload))) m           | _msgSBPType == msgSsrTileDefinition = SBPMsgSsrTileDefinition (decode (fromStrict (unBytes _msgSBPPayload))) m           | _msgSBPType == msgStartup = SBPMsgStartup (decode (fromStrict (unBytes _msgSBPPayload))) m+          | _msgSBPType == msgStatusJournal = SBPMsgStatusJournal (decode (fromStrict (unBytes _msgSBPPayload))) m           | _msgSBPType == msgStatusReport = SBPMsgStatusReport (decode (fromStrict (unBytes _msgSBPPayload))) m           | _msgSBPType == msgStmFlashLockSector = SBPMsgStmFlashLockSector (decode (fromStrict (unBytes _msgSBPPayload))) m           | _msgSBPType == msgStmFlashUnlockSector = SBPMsgStmFlashUnlockSector (decode (fromStrict (unBytes _msgSBPPayload))) m@@ -651,6 +653,7 @@       encoder (SBPMsgSsrStecCorrectionDepA _ m) = put m       encoder (SBPMsgSsrTileDefinition _ m) = put m       encoder (SBPMsgStartup _ m) = put m+      encoder (SBPMsgStatusJournal _ m) = put m       encoder (SBPMsgStatusReport _ m) = put m       encoder (SBPMsgStmFlashLockSector _ m) = put m       encoder (SBPMsgStmFlashUnlockSector _ m) = put m@@ -864,6 +867,7 @@         | msgType == msgSsrStecCorrectionDepA = SBPMsgSsrStecCorrectionDepA <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj         | msgType == msgSsrTileDefinition = SBPMsgSsrTileDefinition <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj         | msgType == msgStartup = SBPMsgStartup <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj+        | msgType == msgStatusJournal = SBPMsgStatusJournal <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj         | msgType == msgStatusReport = SBPMsgStatusReport <$> 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@@ -1078,6 +1082,7 @@   toJSON (SBPMsgSsrStecCorrectionDepA n m) = toJSON n <<>> toJSON m   toJSON (SBPMsgSsrTileDefinition n m) = toJSON n <<>> toJSON m   toJSON (SBPMsgStartup n m) = toJSON n <<>> toJSON m+  toJSON (SBPMsgStatusJournal n m) = toJSON n <<>> toJSON m   toJSON (SBPMsgStatusReport n m) = toJSON n <<>> toJSON m   toJSON (SBPMsgStmFlashLockSector n m) = toJSON n <<>> toJSON m   toJSON (SBPMsgStmFlashUnlockSector n m) = toJSON n <<>> toJSON m@@ -1286,6 +1291,7 @@   msg f (SBPMsgSsrStecCorrectionDepA n m) = SBPMsgSsrStecCorrectionDepA n <$> f m   msg f (SBPMsgSsrTileDefinition n m) = SBPMsgSsrTileDefinition n <$> f m   msg f (SBPMsgStartup n m) = SBPMsgStartup n <$> f m+  msg f (SBPMsgStatusJournal n m) = SBPMsgStatusJournal n <$> f m   msg f (SBPMsgStatusReport n m) = SBPMsgStatusReport n <$> f m   msg f (SBPMsgStmFlashLockSector n m) = SBPMsgStmFlashLockSector n <$> f m   msg f (SBPMsgStmFlashUnlockSector n m) = SBPMsgStmFlashUnlockSector n <$> f m
src/SwiftNav/SBP/System.hs view
@@ -138,8 +138,8 @@  -- | SubSystemReport. ----- Report the general and specific state of a sub-system.  If the generic--- state is reported as initializing, the specific state should be ignored.+-- Report the general and specific state of a subsystem.  If the generic state+-- is reported as initializing, the specific state should be ignored. data SubSystemReport = SubSystemReport   { _subSystemReport_component :: !Word16     -- ^ Identity of reporting subsystem@@ -172,7 +172,7 @@ -- The status report is sent periodically to inform the host or other attached -- devices that the system is running. It is used to monitor system -- malfunctions. It contains status reports that indicate to the host the--- status of each sub-system and whether it is operating correctly.+-- status of each subsystem and whether it is operating correctly. -- -- Interpretation of the subsystem specific status code is product dependent, -- but if the generic status code is initializing, it should be ignored.@@ -209,6 +209,73 @@ $(makeSBP 'msgStatusReport ''MsgStatusReport) $(makeJSON "_msgStatusReport_" ''MsgStatusReport) $(makeLenses ''MsgStatusReport)++-- | StatusJournalItem.+--+-- Reports the uptime and the state of a subsystem via generic and specific+-- status codes.  If the generic state is reported as initializing, the+-- specific state should be ignored.+data StatusJournalItem = StatusJournalItem+  { _statusJournalItem_uptime :: !Word32+    -- ^ Milliseconds since system startup+  , _statusJournalItem_report :: !SubSystemReport+  } deriving ( Show, Read, Eq )++instance Binary StatusJournalItem where+  get = do+    _statusJournalItem_uptime <- getWord32le+    _statusJournalItem_report <- get+    pure StatusJournalItem {..}++  put StatusJournalItem {..} = do+    putWord32le _statusJournalItem_uptime+    put _statusJournalItem_report++$(makeJSON "_statusJournalItem_" ''StatusJournalItem)+$(makeLenses ''StatusJournalItem)++msgStatusJournal :: Word16+msgStatusJournal = 0xFFFD++-- | SBP class for message MSG_STATUS_JOURNAL (0xFFFD).+--+-- The status journal message contains past status reports (see+-- MSG_STATUS_REPORT) and functions as a error/event storage for telemetry+-- purposes.+data MsgStatusJournal = MsgStatusJournal+  { _msgStatusJournal_reporting_system   :: !Word16+    -- ^ Identity of reporting system+  , _msgStatusJournal_sbp_version        :: !Word16+    -- ^ SBP protocol version+  , _msgStatusJournal_total_status_reports :: !Word32+    -- ^ Total number of status reports sent since system startup+  , _msgStatusJournal_sequence_descriptor :: !Word8+    -- ^ Index and number of messages in this sequence. First nibble is the size+    -- of the sequence (n), second nibble is the zero-indexed counter (ith+    -- packet of n)+  , _msgStatusJournal_journal            :: ![StatusJournalItem]+    -- ^ Status journal+  } deriving ( Show, Read, Eq )++instance Binary MsgStatusJournal where+  get = do+    _msgStatusJournal_reporting_system <- getWord16le+    _msgStatusJournal_sbp_version <- getWord16le+    _msgStatusJournal_total_status_reports <- getWord32le+    _msgStatusJournal_sequence_descriptor <- getWord8+    _msgStatusJournal_journal <- whileM (not <$> isEmpty) get+    pure MsgStatusJournal {..}++  put MsgStatusJournal {..} = do+    putWord16le _msgStatusJournal_reporting_system+    putWord16le _msgStatusJournal_sbp_version+    putWord32le _msgStatusJournal_total_status_reports+    putWord8 _msgStatusJournal_sequence_descriptor+    mapM_ put _msgStatusJournal_journal++$(makeSBP 'msgStatusJournal ''MsgStatusJournal)+$(makeJSON "_msgStatusJournal_" ''MsgStatusJournal)+$(makeLenses ''MsgStatusJournal)  msgInsStatus :: Word16 msgInsStatus = 0xFF03