sbp 2.2.1 → 2.2.2
raw patch · 4 files changed
+122/−13 lines, 4 files
Files
- sbp.cabal +1/−1
- src/SwiftNav/SBP.hs +13/−1
- src/SwiftNav/SBP/Piksi.hs +45/−0
- src/SwiftNav/SBP/Tracking.hs +63/−11
sbp.cabal view
@@ -1,5 +1,5 @@ name: sbp-version: 2.2.1+version: 2.2.2 synopsis: SwiftNav's SBP Library homepage: https://github.com/swift-nav/libsbp license: LGPL-3
@@ -9,7 +9,7 @@ -- SBP message containers. module SwiftNav.SBP- ( SBPMsg (..)+ ( module SwiftNav.SBP , module SwiftNav.SBP.Types , module SwiftNav.SBP.Acquisition , module SwiftNav.SBP.Bootload@@ -150,6 +150,7 @@ | SBPMsgSettingsRegister MsgSettingsRegister Msg | SBPMsgSettingsSave MsgSettingsSave Msg | SBPMsgSettingsWrite MsgSettingsWrite Msg+ | SBPMsgSpecan MsgSpecan Msg | SBPMsgStartup MsgStartup Msg | SBPMsgStmFlashLockSector MsgStmFlashLockSector Msg | SBPMsgStmFlashUnlockSector MsgStmFlashUnlockSector Msg@@ -160,6 +161,7 @@ | SBPMsgTrackingIq MsgTrackingIq Msg | SBPMsgTrackingState MsgTrackingState Msg | SBPMsgTrackingStateDepA MsgTrackingStateDepA Msg+ | SBPMsgTrackingStateDepB MsgTrackingStateDepB Msg | SBPMsgTrackingStateDetailed MsgTrackingStateDetailed Msg | SBPMsgTweet MsgTweet Msg | SBPMsgUartState MsgUartState Msg@@ -275,6 +277,7 @@ | _msgSBPType == msgSettingsRegister = SBPMsgSettingsRegister (decode (fromStrict _msgSBPPayload)) m | _msgSBPType == msgSettingsSave = SBPMsgSettingsSave (decode (fromStrict _msgSBPPayload)) m | _msgSBPType == msgSettingsWrite = SBPMsgSettingsWrite (decode (fromStrict _msgSBPPayload)) m+ | _msgSBPType == msgSpecan = SBPMsgSpecan (decode (fromStrict _msgSBPPayload)) m | _msgSBPType == msgStartup = SBPMsgStartup (decode (fromStrict _msgSBPPayload)) m | _msgSBPType == msgStmFlashLockSector = SBPMsgStmFlashLockSector (decode (fromStrict _msgSBPPayload)) m | _msgSBPType == msgStmFlashUnlockSector = SBPMsgStmFlashUnlockSector (decode (fromStrict _msgSBPPayload)) m@@ -285,6 +288,7 @@ | _msgSBPType == msgTrackingIq = SBPMsgTrackingIq (decode (fromStrict _msgSBPPayload)) m | _msgSBPType == msgTrackingState = SBPMsgTrackingState (decode (fromStrict _msgSBPPayload)) m | _msgSBPType == msgTrackingStateDepA = SBPMsgTrackingStateDepA (decode (fromStrict _msgSBPPayload)) m+ | _msgSBPType == msgTrackingStateDepB = SBPMsgTrackingStateDepB (decode (fromStrict _msgSBPPayload)) m | _msgSBPType == msgTrackingStateDetailed = SBPMsgTrackingStateDetailed (decode (fromStrict _msgSBPPayload)) m | _msgSBPType == msgTweet = SBPMsgTweet (decode (fromStrict _msgSBPPayload)) m | _msgSBPType == msgUartState = SBPMsgUartState (decode (fromStrict _msgSBPPayload)) m@@ -392,6 +396,7 @@ encode' (SBPMsgSettingsRegister _ m) = put m encode' (SBPMsgSettingsSave _ m) = put m encode' (SBPMsgSettingsWrite _ m) = put m+ encode' (SBPMsgSpecan _ m) = put m encode' (SBPMsgStartup _ m) = put m encode' (SBPMsgStmFlashLockSector _ m) = put m encode' (SBPMsgStmFlashUnlockSector _ m) = put m@@ -402,6 +407,7 @@ encode' (SBPMsgTrackingIq _ m) = put m encode' (SBPMsgTrackingState _ m) = put m encode' (SBPMsgTrackingStateDepA _ m) = put m+ encode' (SBPMsgTrackingStateDepB _ m) = put m encode' (SBPMsgTrackingStateDetailed _ m) = put m encode' (SBPMsgTweet _ m) = put m encode' (SBPMsgUartState _ m) = put m@@ -512,6 +518,7 @@ | msgType == msgSettingsRegister = SBPMsgSettingsRegister <$> parseJSON obj <*> parseJSON obj | msgType == msgSettingsSave = SBPMsgSettingsSave <$> parseJSON obj <*> parseJSON obj | msgType == msgSettingsWrite = SBPMsgSettingsWrite <$> parseJSON obj <*> parseJSON obj+ | msgType == msgSpecan = SBPMsgSpecan <$> parseJSON obj <*> parseJSON obj | msgType == msgStartup = SBPMsgStartup <$> parseJSON obj <*> parseJSON obj | msgType == msgStmFlashLockSector = SBPMsgStmFlashLockSector <$> parseJSON obj <*> parseJSON obj | msgType == msgStmFlashUnlockSector = SBPMsgStmFlashUnlockSector <$> parseJSON obj <*> parseJSON obj@@ -522,6 +529,7 @@ | msgType == msgTrackingIq = SBPMsgTrackingIq <$> parseJSON obj <*> parseJSON obj | msgType == msgTrackingState = SBPMsgTrackingState <$> parseJSON obj <*> parseJSON obj | msgType == msgTrackingStateDepA = SBPMsgTrackingStateDepA <$> parseJSON obj <*> parseJSON obj+ | msgType == msgTrackingStateDepB = SBPMsgTrackingStateDepB <$> parseJSON obj <*> parseJSON obj | msgType == msgTrackingStateDetailed = SBPMsgTrackingStateDetailed <$> parseJSON obj <*> parseJSON obj | msgType == msgTweet = SBPMsgTweet <$> parseJSON obj <*> parseJSON obj | msgType == msgUartState = SBPMsgUartState <$> parseJSON obj <*> parseJSON obj@@ -634,6 +642,7 @@ toJSON (SBPMsgSettingsRegister n m) = toJSON n `mergeValues` toJSON m toJSON (SBPMsgSettingsSave n m) = toJSON n `mergeValues` toJSON m toJSON (SBPMsgSettingsWrite n m) = toJSON n `mergeValues` toJSON m+ toJSON (SBPMsgSpecan n m) = toJSON n `mergeValues` toJSON m toJSON (SBPMsgStartup n m) = toJSON n `mergeValues` toJSON m toJSON (SBPMsgStmFlashLockSector n m) = toJSON n `mergeValues` toJSON m toJSON (SBPMsgStmFlashUnlockSector n m) = toJSON n `mergeValues` toJSON m@@ -644,6 +653,7 @@ toJSON (SBPMsgTrackingIq n m) = toJSON n `mergeValues` toJSON m toJSON (SBPMsgTrackingState n m) = toJSON n `mergeValues` toJSON m toJSON (SBPMsgTrackingStateDepA n m) = toJSON n `mergeValues` toJSON m+ toJSON (SBPMsgTrackingStateDepB n m) = toJSON n `mergeValues` toJSON m toJSON (SBPMsgTrackingStateDetailed n m) = toJSON n `mergeValues` toJSON m toJSON (SBPMsgTweet n m) = toJSON n `mergeValues` toJSON m toJSON (SBPMsgUartState n m) = toJSON n `mergeValues` toJSON m@@ -750,6 +760,7 @@ msg f (SBPMsgSettingsRegister n m) = SBPMsgSettingsRegister n <$> f m 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 (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@@ -760,6 +771,7 @@ msg f (SBPMsgTrackingIq n m) = SBPMsgTrackingIq 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 (SBPMsgTweet n m) = SBPMsgTweet n <$> f m msg f (SBPMsgUartState n m) = SBPMsgUartState n <$> f m
@@ -688,3 +688,48 @@ $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgNetworkStateResp_" . P.stripPrefix "_msgNetworkStateResp_"} ''MsgNetworkStateResp) $(makeLenses ''MsgNetworkStateResp)++msgSpecan :: Word16+msgSpecan = 0x0050++-- | SBP class for message MSG_SPECAN (0x0050).+--+-- Spectrum analyzer packet.+data MsgSpecan = MsgSpecan+ { _msgSpecan_t :: GpsTime+ -- ^ Receiver time of this observation+ , _msgSpecan_freq_ref :: Float+ -- ^ Reference frequency of this packet+ , _msgSpecan_freq_step :: Float+ -- ^ Frequency step of points in this packet+ , _msgSpecan_amplitude_ref :: Float+ -- ^ Reference amplitude of this packet+ , _msgSpecan_amplitude_unit :: Float+ -- ^ Amplitude unit value of points in this packet+ , _msgSpecan_amplitude_value :: [Word8]+ -- ^ Amplitude values (in the above units) of points in this packet+ } deriving ( Show, Read, Eq )++instance Binary MsgSpecan where+ get = do+ _msgSpecan_t <- get+ _msgSpecan_freq_ref <- getFloat32le+ _msgSpecan_freq_step <- getFloat32le+ _msgSpecan_amplitude_ref <- getFloat32le+ _msgSpecan_amplitude_unit <- getFloat32le+ _msgSpecan_amplitude_value <- whileM (not <$> isEmpty) getWord8+ return MsgSpecan {..}++ put MsgSpecan {..} = do+ put _msgSpecan_t+ putFloat32le _msgSpecan_freq_ref+ putFloat32le _msgSpecan_freq_step+ putFloat32le _msgSpecan_amplitude_ref+ putFloat32le _msgSpecan_amplitude_unit+ mapM_ putWord8 _msgSpecan_amplitude_value++$(deriveSBP 'msgSpecan ''MsgSpecan)++$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgSpecan_" . P.stripPrefix "_msgSpecan_"}+ ''MsgSpecan)+$(makeLenses ''MsgSpecan)
@@ -145,33 +145,33 @@ -- Tracking channel state for a specific satellite signal and measured signal -- power. data TrackingChannelState = TrackingChannelState- { _trackingChannelState_state :: Word8- -- ^ Status of tracking channel- , _trackingChannelState_sid :: GnssSignal+ { _trackingChannelState_sid :: GnssSignal16 -- ^ GNSS signal being tracked- , _trackingChannelState_cn0 :: Float- -- ^ Carrier-to-noise density+ , _trackingChannelState_fcn :: Word8+ -- ^ Frequency channel number (GLONASS only)+ , _trackingChannelState_cn0 :: Word8+ -- ^ Carrier-to-Noise density. Zero implies invalid cn0. } deriving ( Show, Read, Eq ) instance Binary TrackingChannelState where get = do- _trackingChannelState_state <- getWord8 _trackingChannelState_sid <- get- _trackingChannelState_cn0 <- getFloat32le+ _trackingChannelState_fcn <- getWord8+ _trackingChannelState_cn0 <- getWord8 return TrackingChannelState {..} put TrackingChannelState {..} = do- putWord8 _trackingChannelState_state put _trackingChannelState_sid- putFloat32le _trackingChannelState_cn0+ putWord8 _trackingChannelState_fcn+ putWord8 _trackingChannelState_cn0 $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_trackingChannelState_" . P.stripPrefix "_trackingChannelState_"} ''TrackingChannelState) $(makeLenses ''TrackingChannelState) msgTrackingState :: Word16-msgTrackingState = 0x0013+msgTrackingState = 0x0041 --- | SBP class for message MSG_TRACKING_STATE (0x0013).+-- | SBP class for message MSG_TRACKING_STATE (0x0041). -- -- The tracking message returns a variable-length array of tracking channel -- states. It reports status and carrier-to-noise density measurements for all@@ -303,3 +303,55 @@ $(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgTrackingStateDepA_" . P.stripPrefix "_msgTrackingStateDepA_"} ''MsgTrackingStateDepA) $(makeLenses ''MsgTrackingStateDepA)++-- | TrackingChannelStateDepB.+--+-- Deprecated.+data TrackingChannelStateDepB = TrackingChannelStateDepB+ { _trackingChannelStateDepB_state :: Word8+ -- ^ Status of tracking channel+ , _trackingChannelStateDepB_sid :: GnssSignal+ -- ^ GNSS signal being tracked+ , _trackingChannelStateDepB_cn0 :: Float+ -- ^ Carrier-to-noise density+ } deriving ( Show, Read, Eq )++instance Binary TrackingChannelStateDepB where+ get = do+ _trackingChannelStateDepB_state <- getWord8+ _trackingChannelStateDepB_sid <- get+ _trackingChannelStateDepB_cn0 <- getFloat32le+ return TrackingChannelStateDepB {..}++ put TrackingChannelStateDepB {..} = do+ putWord8 _trackingChannelStateDepB_state+ put _trackingChannelStateDepB_sid+ putFloat32le _trackingChannelStateDepB_cn0+$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_trackingChannelStateDepB_" . P.stripPrefix "_trackingChannelStateDepB_"}+ ''TrackingChannelStateDepB)+$(makeLenses ''TrackingChannelStateDepB)++msgTrackingStateDepB :: Word16+msgTrackingStateDepB = 0x0013++-- | SBP class for message MSG_TRACKING_STATE_DEP_B (0x0013).+--+-- Deprecated.+data MsgTrackingStateDepB = MsgTrackingStateDepB+ { _msgTrackingStateDepB_states :: [TrackingChannelStateDepB]+ -- ^ Signal tracking channel state+ } deriving ( Show, Read, Eq )++instance Binary MsgTrackingStateDepB where+ get = do+ _msgTrackingStateDepB_states <- whileM (not <$> isEmpty) get+ return MsgTrackingStateDepB {..}++ put MsgTrackingStateDepB {..} = do+ mapM_ put _msgTrackingStateDepB_states++$(deriveSBP 'msgTrackingStateDepB ''MsgTrackingStateDepB)++$(deriveJSON defaultOptions {fieldLabelModifier = fromMaybe "_msgTrackingStateDepB_" . P.stripPrefix "_msgTrackingStateDepB_"}+ ''MsgTrackingStateDepB)+$(makeLenses ''MsgTrackingStateDepB)