{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# LANGUAGE NoImplicitPrelude           #-}
{-# LANGUAGE TemplateHaskell             #-}
{-# LANGUAGE RecordWildCards             #-}

-- |
-- Module:      SwiftNav.SBP.Settings
-- Copyright:   Copyright (C) 2015-2021 Swift Navigation, Inc.
-- License:     MIT
-- Contact:     https://support.swiftnav.com
-- Stability:   experimental
-- Portability: portable
--
-- \< Messages for reading, writing, and discovering device settings. Settings
-- with a "string" field have multiple values in this field delimited with a
-- null character (the c style null terminator).  For instance, when querying
-- the 'firmware_version' setting in the 'system_info' section, the following
-- array of characters needs to be sent for the string field in
-- MSG_SETTINGS_READ: "system_info\0firmware_version\0", where the delimiting
-- null characters are specified with the escape sequence '\0' and all
-- quotation marks should be omitted.
--
-- In the message descriptions below, the generic strings SECTION_SETTING and
-- SETTING are used to refer to the two strings that comprise the identifier
-- of an individual setting.In firmware_version example above, SECTION_SETTING
-- is the 'system_info', and the SETTING portion is 'firmware_version'.
-- See the "Software Settings Manual" on support.swiftnav.com for detailed
-- documentation about all settings and sections available for each Swift
-- firmware version. Settings manuals are available for each firmware version
-- at the following link:
-- https://support.swiftnav.com/support/solutions/articles/44001850753-piksi-multi-specification.
-- The latest settings document is also available at the following link:
-- http://swiftnav.com/latest/piksi-multi-settings . See lastly
-- https://github.com/swift-nav/piksi_tools/blob/master/piksi_tools/settings.py
-- , the open source python command line utility for reading, writing, and
-- saving settings in the piksi_tools repository on github as a helpful
-- reference and example. \>

module SwiftNav.SBP.Settings
  ( module SwiftNav.SBP.Settings
  ) where

import BasicPrelude
import Control.Lens
import Control.Monad.Loops
import Data.Binary
import Data.Binary.Get
import Data.Binary.IEEE754
import Data.Binary.Put
import Data.ByteString.Lazy    hiding (ByteString)
import Data.Int
import Data.Word
import SwiftNav.SBP.TH
import SwiftNav.SBP.Types

{-# ANN module ("HLint: ignore Use camelCase"::String) #-}
{-# ANN module ("HLint: ignore Redundant do"::String) #-}
{-# ANN module ("HLint: ignore Use newtype instead of data"::String) #-}


msgSettingsSave :: Word16
msgSettingsSave :: Word16
msgSettingsSave = Word16
0x00A1

-- | SBP class for message MSG_SETTINGS_SAVE (0x00A1).
--
-- The save settings message persists the device's current settings
-- configuration to its onboard flash memory file system.
data MsgSettingsSave = MsgSettingsSave
  deriving ( Int -> MsgSettingsSave -> ShowS
[MsgSettingsSave] -> ShowS
MsgSettingsSave -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgSettingsSave] -> ShowS
$cshowList :: [MsgSettingsSave] -> ShowS
show :: MsgSettingsSave -> String
$cshow :: MsgSettingsSave -> String
showsPrec :: Int -> MsgSettingsSave -> ShowS
$cshowsPrec :: Int -> MsgSettingsSave -> ShowS
Show, ReadPrec [MsgSettingsSave]
ReadPrec MsgSettingsSave
Int -> ReadS MsgSettingsSave
ReadS [MsgSettingsSave]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgSettingsSave]
$creadListPrec :: ReadPrec [MsgSettingsSave]
readPrec :: ReadPrec MsgSettingsSave
$creadPrec :: ReadPrec MsgSettingsSave
readList :: ReadS [MsgSettingsSave]
$creadList :: ReadS [MsgSettingsSave]
readsPrec :: Int -> ReadS MsgSettingsSave
$creadsPrec :: Int -> ReadS MsgSettingsSave
Read, MsgSettingsSave -> MsgSettingsSave -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgSettingsSave -> MsgSettingsSave -> Bool
$c/= :: MsgSettingsSave -> MsgSettingsSave -> Bool
== :: MsgSettingsSave -> MsgSettingsSave -> Bool
$c== :: MsgSettingsSave -> MsgSettingsSave -> Bool
Eq )

instance Binary MsgSettingsSave where
  get :: Get MsgSettingsSave
get =
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgSettingsSave
MsgSettingsSave

  put :: MsgSettingsSave -> Put
put MsgSettingsSave
MsgSettingsSave =
    forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
$(makeSBP 'msgSettingsSave ''MsgSettingsSave)
$(makeJSON "_msgSettingsSave_" ''MsgSettingsSave)
$(makeLenses ''MsgSettingsSave)

msgSettingsWrite :: Word16
msgSettingsWrite :: Word16
msgSettingsWrite = Word16
0x00A0

-- | SBP class for message MSG_SETTINGS_WRITE (0x00A0).
--
-- The setting message writes the device configuration for a particular
-- setting via A NULL-terminated and NULL-delimited string with contents
-- "SECTION_SETTING\0SETTING\0VALUE\0" where the '\0' escape sequence denotes
-- the NULL character and where quotation marks are omitted. A device will
-- only process to this message when it is received from sender ID 0x42. An
-- example string that could be sent to a device is
-- "solution\0soln_freq\010\0".
data MsgSettingsWrite = MsgSettingsWrite
  { MsgSettingsWrite -> Text
_msgSettingsWrite_setting :: !Text
    -- ^ A NULL-terminated and NULL-delimited string with contents
    -- "SECTION_SETTING\0SETTING\0VALUE\0"
  } deriving ( Int -> MsgSettingsWrite -> ShowS
[MsgSettingsWrite] -> ShowS
MsgSettingsWrite -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgSettingsWrite] -> ShowS
$cshowList :: [MsgSettingsWrite] -> ShowS
show :: MsgSettingsWrite -> String
$cshow :: MsgSettingsWrite -> String
showsPrec :: Int -> MsgSettingsWrite -> ShowS
$cshowsPrec :: Int -> MsgSettingsWrite -> ShowS
Show, ReadPrec [MsgSettingsWrite]
ReadPrec MsgSettingsWrite
Int -> ReadS MsgSettingsWrite
ReadS [MsgSettingsWrite]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgSettingsWrite]
$creadListPrec :: ReadPrec [MsgSettingsWrite]
readPrec :: ReadPrec MsgSettingsWrite
$creadPrec :: ReadPrec MsgSettingsWrite
readList :: ReadS [MsgSettingsWrite]
$creadList :: ReadS [MsgSettingsWrite]
readsPrec :: Int -> ReadS MsgSettingsWrite
$creadsPrec :: Int -> ReadS MsgSettingsWrite
Read, MsgSettingsWrite -> MsgSettingsWrite -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgSettingsWrite -> MsgSettingsWrite -> Bool
$c/= :: MsgSettingsWrite -> MsgSettingsWrite -> Bool
== :: MsgSettingsWrite -> MsgSettingsWrite -> Bool
$c== :: MsgSettingsWrite -> MsgSettingsWrite -> Bool
Eq )

instance Binary MsgSettingsWrite where
  get :: Get MsgSettingsWrite
get = do
    Text
_msgSettingsWrite_setting <- ByteString -> Text
decodeUtf8 forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. ByteString -> ByteString
toStrict forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get ByteString
getRemainingLazyByteString
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgSettingsWrite {Text
_msgSettingsWrite_setting :: Text
_msgSettingsWrite_setting :: Text
..}

  put :: MsgSettingsWrite -> Put
put MsgSettingsWrite {Text
_msgSettingsWrite_setting :: Text
_msgSettingsWrite_setting :: MsgSettingsWrite -> Text
..} = do
    ByteString -> Put
putByteString forall a b. (a -> b) -> a -> b
$ Text -> ByteString
encodeUtf8 Text
_msgSettingsWrite_setting

$(makeSBP 'msgSettingsWrite ''MsgSettingsWrite)
$(makeJSON "_msgSettingsWrite_" ''MsgSettingsWrite)
$(makeLenses ''MsgSettingsWrite)

msgSettingsWriteResp :: Word16
msgSettingsWriteResp :: Word16
msgSettingsWriteResp = Word16
0x00AF

-- | SBP class for message MSG_SETTINGS_WRITE_RESP (0x00AF).
--
-- Return the status of a write request with the new value of the setting.  If
-- the requested value is rejected, the current value will be returned. The
-- string field is a NULL-terminated and NULL-delimited string with contents
-- "SECTION_SETTING\0SETTING\0VALUE\0" where the '\0' escape sequence denotes
-- the NULL character and where quotation marks are omitted. An example string
-- that could be sent from device is "solution\0soln_freq\010\0".
data MsgSettingsWriteResp = MsgSettingsWriteResp
  { MsgSettingsWriteResp -> Word8
_msgSettingsWriteResp_status :: !Word8
    -- ^ Write status
  , MsgSettingsWriteResp -> Text
_msgSettingsWriteResp_setting :: !Text
    -- ^ A NULL-terminated and delimited string with contents
    -- "SECTION_SETTING\0SETTING\0VALUE\0"
  } deriving ( Int -> MsgSettingsWriteResp -> ShowS
[MsgSettingsWriteResp] -> ShowS
MsgSettingsWriteResp -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgSettingsWriteResp] -> ShowS
$cshowList :: [MsgSettingsWriteResp] -> ShowS
show :: MsgSettingsWriteResp -> String
$cshow :: MsgSettingsWriteResp -> String
showsPrec :: Int -> MsgSettingsWriteResp -> ShowS
$cshowsPrec :: Int -> MsgSettingsWriteResp -> ShowS
Show, ReadPrec [MsgSettingsWriteResp]
ReadPrec MsgSettingsWriteResp
Int -> ReadS MsgSettingsWriteResp
ReadS [MsgSettingsWriteResp]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgSettingsWriteResp]
$creadListPrec :: ReadPrec [MsgSettingsWriteResp]
readPrec :: ReadPrec MsgSettingsWriteResp
$creadPrec :: ReadPrec MsgSettingsWriteResp
readList :: ReadS [MsgSettingsWriteResp]
$creadList :: ReadS [MsgSettingsWriteResp]
readsPrec :: Int -> ReadS MsgSettingsWriteResp
$creadsPrec :: Int -> ReadS MsgSettingsWriteResp
Read, MsgSettingsWriteResp -> MsgSettingsWriteResp -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgSettingsWriteResp -> MsgSettingsWriteResp -> Bool
$c/= :: MsgSettingsWriteResp -> MsgSettingsWriteResp -> Bool
== :: MsgSettingsWriteResp -> MsgSettingsWriteResp -> Bool
$c== :: MsgSettingsWriteResp -> MsgSettingsWriteResp -> Bool
Eq )

instance Binary MsgSettingsWriteResp where
  get :: Get MsgSettingsWriteResp
get = do
    Word8
_msgSettingsWriteResp_status <- Get Word8
getWord8
    Text
_msgSettingsWriteResp_setting <- ByteString -> Text
decodeUtf8 forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. ByteString -> ByteString
toStrict forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get ByteString
getRemainingLazyByteString
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgSettingsWriteResp {Word8
Text
_msgSettingsWriteResp_setting :: Text
_msgSettingsWriteResp_status :: Word8
_msgSettingsWriteResp_setting :: Text
_msgSettingsWriteResp_status :: Word8
..}

  put :: MsgSettingsWriteResp -> Put
put MsgSettingsWriteResp {Word8
Text
_msgSettingsWriteResp_setting :: Text
_msgSettingsWriteResp_status :: Word8
_msgSettingsWriteResp_setting :: MsgSettingsWriteResp -> Text
_msgSettingsWriteResp_status :: MsgSettingsWriteResp -> Word8
..} = do
    Word8 -> Put
putWord8 Word8
_msgSettingsWriteResp_status
    ByteString -> Put
putByteString forall a b. (a -> b) -> a -> b
$ Text -> ByteString
encodeUtf8 Text
_msgSettingsWriteResp_setting

$(makeSBP 'msgSettingsWriteResp ''MsgSettingsWriteResp)
$(makeJSON "_msgSettingsWriteResp_" ''MsgSettingsWriteResp)
$(makeLenses ''MsgSettingsWriteResp)

msgSettingsReadReq :: Word16
msgSettingsReadReq :: Word16
msgSettingsReadReq = Word16
0x00A4

-- | SBP class for message MSG_SETTINGS_READ_REQ (0x00A4).
--
-- The setting message that reads the device configuration. The string field
-- is a NULL-terminated and NULL-delimited string with contents
-- "SECTION_SETTING\0SETTING\0" where the '\0' escape sequence denotes the
-- NULL character and where quotation marks are omitted. An example string
-- that could be sent to a device is "solution\0soln_freq\0". A device will
-- only respond to this message when it is received from sender ID 0x42. A
-- device should respond with a MSG_SETTINGS_READ_RESP message (msg_id
-- 0x00A5).
data MsgSettingsReadReq = MsgSettingsReadReq
  { MsgSettingsReadReq -> Text
_msgSettingsReadReq_setting :: !Text
    -- ^ A NULL-terminated and NULL-delimited string with contents
    -- "SECTION_SETTING\0SETTING\0"
  } deriving ( Int -> MsgSettingsReadReq -> ShowS
[MsgSettingsReadReq] -> ShowS
MsgSettingsReadReq -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgSettingsReadReq] -> ShowS
$cshowList :: [MsgSettingsReadReq] -> ShowS
show :: MsgSettingsReadReq -> String
$cshow :: MsgSettingsReadReq -> String
showsPrec :: Int -> MsgSettingsReadReq -> ShowS
$cshowsPrec :: Int -> MsgSettingsReadReq -> ShowS
Show, ReadPrec [MsgSettingsReadReq]
ReadPrec MsgSettingsReadReq
Int -> ReadS MsgSettingsReadReq
ReadS [MsgSettingsReadReq]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgSettingsReadReq]
$creadListPrec :: ReadPrec [MsgSettingsReadReq]
readPrec :: ReadPrec MsgSettingsReadReq
$creadPrec :: ReadPrec MsgSettingsReadReq
readList :: ReadS [MsgSettingsReadReq]
$creadList :: ReadS [MsgSettingsReadReq]
readsPrec :: Int -> ReadS MsgSettingsReadReq
$creadsPrec :: Int -> ReadS MsgSettingsReadReq
Read, MsgSettingsReadReq -> MsgSettingsReadReq -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgSettingsReadReq -> MsgSettingsReadReq -> Bool
$c/= :: MsgSettingsReadReq -> MsgSettingsReadReq -> Bool
== :: MsgSettingsReadReq -> MsgSettingsReadReq -> Bool
$c== :: MsgSettingsReadReq -> MsgSettingsReadReq -> Bool
Eq )

instance Binary MsgSettingsReadReq where
  get :: Get MsgSettingsReadReq
get = do
    Text
_msgSettingsReadReq_setting <- ByteString -> Text
decodeUtf8 forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. ByteString -> ByteString
toStrict forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get ByteString
getRemainingLazyByteString
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgSettingsReadReq {Text
_msgSettingsReadReq_setting :: Text
_msgSettingsReadReq_setting :: Text
..}

  put :: MsgSettingsReadReq -> Put
put MsgSettingsReadReq {Text
_msgSettingsReadReq_setting :: Text
_msgSettingsReadReq_setting :: MsgSettingsReadReq -> Text
..} = do
    ByteString -> Put
putByteString forall a b. (a -> b) -> a -> b
$ Text -> ByteString
encodeUtf8 Text
_msgSettingsReadReq_setting

$(makeSBP 'msgSettingsReadReq ''MsgSettingsReadReq)
$(makeJSON "_msgSettingsReadReq_" ''MsgSettingsReadReq)
$(makeLenses ''MsgSettingsReadReq)

msgSettingsReadResp :: Word16
msgSettingsReadResp :: Word16
msgSettingsReadResp = Word16
0x00A5

-- | SBP class for message MSG_SETTINGS_READ_RESP (0x00A5).
--
-- The setting message with which the device responds after a
-- MSG_SETTING_READ_REQ is sent to device. The string field is a NULL-
-- terminated and NULL-delimited string with contents
-- "SECTION_SETTING\0SETTING\0VALUE\0" where the '\0' escape sequence denotes
-- the NULL character and where quotation marks are omitted. An example string
-- that could be sent from device is "solution\0soln_freq\010\0".
data MsgSettingsReadResp = MsgSettingsReadResp
  { MsgSettingsReadResp -> Text
_msgSettingsReadResp_setting :: !Text
    -- ^ A NULL-terminated and NULL-delimited string with contents
    -- "SECTION_SETTING\0SETTING\0VALUE\0"
  } deriving ( Int -> MsgSettingsReadResp -> ShowS
[MsgSettingsReadResp] -> ShowS
MsgSettingsReadResp -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgSettingsReadResp] -> ShowS
$cshowList :: [MsgSettingsReadResp] -> ShowS
show :: MsgSettingsReadResp -> String
$cshow :: MsgSettingsReadResp -> String
showsPrec :: Int -> MsgSettingsReadResp -> ShowS
$cshowsPrec :: Int -> MsgSettingsReadResp -> ShowS
Show, ReadPrec [MsgSettingsReadResp]
ReadPrec MsgSettingsReadResp
Int -> ReadS MsgSettingsReadResp
ReadS [MsgSettingsReadResp]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgSettingsReadResp]
$creadListPrec :: ReadPrec [MsgSettingsReadResp]
readPrec :: ReadPrec MsgSettingsReadResp
$creadPrec :: ReadPrec MsgSettingsReadResp
readList :: ReadS [MsgSettingsReadResp]
$creadList :: ReadS [MsgSettingsReadResp]
readsPrec :: Int -> ReadS MsgSettingsReadResp
$creadsPrec :: Int -> ReadS MsgSettingsReadResp
Read, MsgSettingsReadResp -> MsgSettingsReadResp -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgSettingsReadResp -> MsgSettingsReadResp -> Bool
$c/= :: MsgSettingsReadResp -> MsgSettingsReadResp -> Bool
== :: MsgSettingsReadResp -> MsgSettingsReadResp -> Bool
$c== :: MsgSettingsReadResp -> MsgSettingsReadResp -> Bool
Eq )

instance Binary MsgSettingsReadResp where
  get :: Get MsgSettingsReadResp
get = do
    Text
_msgSettingsReadResp_setting <- ByteString -> Text
decodeUtf8 forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. ByteString -> ByteString
toStrict forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get ByteString
getRemainingLazyByteString
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgSettingsReadResp {Text
_msgSettingsReadResp_setting :: Text
_msgSettingsReadResp_setting :: Text
..}

  put :: MsgSettingsReadResp -> Put
put MsgSettingsReadResp {Text
_msgSettingsReadResp_setting :: Text
_msgSettingsReadResp_setting :: MsgSettingsReadResp -> Text
..} = do
    ByteString -> Put
putByteString forall a b. (a -> b) -> a -> b
$ Text -> ByteString
encodeUtf8 Text
_msgSettingsReadResp_setting

$(makeSBP 'msgSettingsReadResp ''MsgSettingsReadResp)
$(makeJSON "_msgSettingsReadResp_" ''MsgSettingsReadResp)
$(makeLenses ''MsgSettingsReadResp)

msgSettingsReadByIndexReq :: Word16
msgSettingsReadByIndexReq :: Word16
msgSettingsReadByIndexReq = Word16
0x00A2

-- | SBP class for message MSG_SETTINGS_READ_BY_INDEX_REQ (0x00A2).
--
-- The settings message for iterating through the settings values. A device
-- will respond to this message with a "MSG_SETTINGS_READ_BY_INDEX_RESP".
data MsgSettingsReadByIndexReq = MsgSettingsReadByIndexReq
  { MsgSettingsReadByIndexReq -> Word16
_msgSettingsReadByIndexReq_index :: !Word16
    -- ^ An index into the device settings, with values ranging from 0 to
    -- length(settings).
  } deriving ( Int -> MsgSettingsReadByIndexReq -> ShowS
[MsgSettingsReadByIndexReq] -> ShowS
MsgSettingsReadByIndexReq -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgSettingsReadByIndexReq] -> ShowS
$cshowList :: [MsgSettingsReadByIndexReq] -> ShowS
show :: MsgSettingsReadByIndexReq -> String
$cshow :: MsgSettingsReadByIndexReq -> String
showsPrec :: Int -> MsgSettingsReadByIndexReq -> ShowS
$cshowsPrec :: Int -> MsgSettingsReadByIndexReq -> ShowS
Show, ReadPrec [MsgSettingsReadByIndexReq]
ReadPrec MsgSettingsReadByIndexReq
Int -> ReadS MsgSettingsReadByIndexReq
ReadS [MsgSettingsReadByIndexReq]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgSettingsReadByIndexReq]
$creadListPrec :: ReadPrec [MsgSettingsReadByIndexReq]
readPrec :: ReadPrec MsgSettingsReadByIndexReq
$creadPrec :: ReadPrec MsgSettingsReadByIndexReq
readList :: ReadS [MsgSettingsReadByIndexReq]
$creadList :: ReadS [MsgSettingsReadByIndexReq]
readsPrec :: Int -> ReadS MsgSettingsReadByIndexReq
$creadsPrec :: Int -> ReadS MsgSettingsReadByIndexReq
Read, MsgSettingsReadByIndexReq -> MsgSettingsReadByIndexReq -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgSettingsReadByIndexReq -> MsgSettingsReadByIndexReq -> Bool
$c/= :: MsgSettingsReadByIndexReq -> MsgSettingsReadByIndexReq -> Bool
== :: MsgSettingsReadByIndexReq -> MsgSettingsReadByIndexReq -> Bool
$c== :: MsgSettingsReadByIndexReq -> MsgSettingsReadByIndexReq -> Bool
Eq )

instance Binary MsgSettingsReadByIndexReq where
  get :: Get MsgSettingsReadByIndexReq
get = do
    Word16
_msgSettingsReadByIndexReq_index <- Get Word16
getWord16le
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgSettingsReadByIndexReq {Word16
_msgSettingsReadByIndexReq_index :: Word16
_msgSettingsReadByIndexReq_index :: Word16
..}

  put :: MsgSettingsReadByIndexReq -> Put
put MsgSettingsReadByIndexReq {Word16
_msgSettingsReadByIndexReq_index :: Word16
_msgSettingsReadByIndexReq_index :: MsgSettingsReadByIndexReq -> Word16
..} = do
    Word16 -> Put
putWord16le Word16
_msgSettingsReadByIndexReq_index

$(makeSBP 'msgSettingsReadByIndexReq ''MsgSettingsReadByIndexReq)
$(makeJSON "_msgSettingsReadByIndexReq_" ''MsgSettingsReadByIndexReq)
$(makeLenses ''MsgSettingsReadByIndexReq)

msgSettingsReadByIndexResp :: Word16
msgSettingsReadByIndexResp :: Word16
msgSettingsReadByIndexResp = Word16
0x00A7

-- | SBP class for message MSG_SETTINGS_READ_BY_INDEX_RESP (0x00A7).
--
-- The settings message that reports the value of a setting at an index.
--
-- In the string field, it reports NULL-terminated and delimited string with
-- contents "SECTION_SETTING\0SETTING\0VALUE\0FORMAT_TYPE\0". where the '\0'
-- escape sequence denotes the NULL character and where quotation marks are
-- omitted. The FORMAT_TYPE field is optional and denotes possible string
-- values of the setting as a hint to the user. If included, the format type
-- portion of the string has the format "enum:value1,value2,value3". An
-- example string that could be sent from the device is
-- "simulator\0enabled\0True\0enum:True,False\0".
data MsgSettingsReadByIndexResp = MsgSettingsReadByIndexResp
  { MsgSettingsReadByIndexResp -> Word16
_msgSettingsReadByIndexResp_index :: !Word16
    -- ^ An index into the device settings, with values ranging from 0 to
    -- length(settings)
  , MsgSettingsReadByIndexResp -> Text
_msgSettingsReadByIndexResp_setting :: !Text
    -- ^ A NULL-terminated and delimited string with contents
    -- "SECTION_SETTING\0SETTING\0VALUE\0FORMAT_TYPE\0"
  } deriving ( Int -> MsgSettingsReadByIndexResp -> ShowS
[MsgSettingsReadByIndexResp] -> ShowS
MsgSettingsReadByIndexResp -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgSettingsReadByIndexResp] -> ShowS
$cshowList :: [MsgSettingsReadByIndexResp] -> ShowS
show :: MsgSettingsReadByIndexResp -> String
$cshow :: MsgSettingsReadByIndexResp -> String
showsPrec :: Int -> MsgSettingsReadByIndexResp -> ShowS
$cshowsPrec :: Int -> MsgSettingsReadByIndexResp -> ShowS
Show, ReadPrec [MsgSettingsReadByIndexResp]
ReadPrec MsgSettingsReadByIndexResp
Int -> ReadS MsgSettingsReadByIndexResp
ReadS [MsgSettingsReadByIndexResp]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgSettingsReadByIndexResp]
$creadListPrec :: ReadPrec [MsgSettingsReadByIndexResp]
readPrec :: ReadPrec MsgSettingsReadByIndexResp
$creadPrec :: ReadPrec MsgSettingsReadByIndexResp
readList :: ReadS [MsgSettingsReadByIndexResp]
$creadList :: ReadS [MsgSettingsReadByIndexResp]
readsPrec :: Int -> ReadS MsgSettingsReadByIndexResp
$creadsPrec :: Int -> ReadS MsgSettingsReadByIndexResp
Read, MsgSettingsReadByIndexResp -> MsgSettingsReadByIndexResp -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgSettingsReadByIndexResp -> MsgSettingsReadByIndexResp -> Bool
$c/= :: MsgSettingsReadByIndexResp -> MsgSettingsReadByIndexResp -> Bool
== :: MsgSettingsReadByIndexResp -> MsgSettingsReadByIndexResp -> Bool
$c== :: MsgSettingsReadByIndexResp -> MsgSettingsReadByIndexResp -> Bool
Eq )

instance Binary MsgSettingsReadByIndexResp where
  get :: Get MsgSettingsReadByIndexResp
get = do
    Word16
_msgSettingsReadByIndexResp_index <- Get Word16
getWord16le
    Text
_msgSettingsReadByIndexResp_setting <- ByteString -> Text
decodeUtf8 forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. ByteString -> ByteString
toStrict forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get ByteString
getRemainingLazyByteString
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgSettingsReadByIndexResp {Word16
Text
_msgSettingsReadByIndexResp_setting :: Text
_msgSettingsReadByIndexResp_index :: Word16
_msgSettingsReadByIndexResp_setting :: Text
_msgSettingsReadByIndexResp_index :: Word16
..}

  put :: MsgSettingsReadByIndexResp -> Put
put MsgSettingsReadByIndexResp {Word16
Text
_msgSettingsReadByIndexResp_setting :: Text
_msgSettingsReadByIndexResp_index :: Word16
_msgSettingsReadByIndexResp_setting :: MsgSettingsReadByIndexResp -> Text
_msgSettingsReadByIndexResp_index :: MsgSettingsReadByIndexResp -> Word16
..} = do
    Word16 -> Put
putWord16le Word16
_msgSettingsReadByIndexResp_index
    ByteString -> Put
putByteString forall a b. (a -> b) -> a -> b
$ Text -> ByteString
encodeUtf8 Text
_msgSettingsReadByIndexResp_setting

$(makeSBP 'msgSettingsReadByIndexResp ''MsgSettingsReadByIndexResp)
$(makeJSON "_msgSettingsReadByIndexResp_" ''MsgSettingsReadByIndexResp)
$(makeLenses ''MsgSettingsReadByIndexResp)

msgSettingsReadByIndexDone :: Word16
msgSettingsReadByIndexDone :: Word16
msgSettingsReadByIndexDone = Word16
0x00A6

-- | SBP class for message MSG_SETTINGS_READ_BY_INDEX_DONE (0x00A6).
--
-- The settings message for indicating end of the settings values.
data MsgSettingsReadByIndexDone = MsgSettingsReadByIndexDone
  deriving ( Int -> MsgSettingsReadByIndexDone -> ShowS
[MsgSettingsReadByIndexDone] -> ShowS
MsgSettingsReadByIndexDone -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgSettingsReadByIndexDone] -> ShowS
$cshowList :: [MsgSettingsReadByIndexDone] -> ShowS
show :: MsgSettingsReadByIndexDone -> String
$cshow :: MsgSettingsReadByIndexDone -> String
showsPrec :: Int -> MsgSettingsReadByIndexDone -> ShowS
$cshowsPrec :: Int -> MsgSettingsReadByIndexDone -> ShowS
Show, ReadPrec [MsgSettingsReadByIndexDone]
ReadPrec MsgSettingsReadByIndexDone
Int -> ReadS MsgSettingsReadByIndexDone
ReadS [MsgSettingsReadByIndexDone]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgSettingsReadByIndexDone]
$creadListPrec :: ReadPrec [MsgSettingsReadByIndexDone]
readPrec :: ReadPrec MsgSettingsReadByIndexDone
$creadPrec :: ReadPrec MsgSettingsReadByIndexDone
readList :: ReadS [MsgSettingsReadByIndexDone]
$creadList :: ReadS [MsgSettingsReadByIndexDone]
readsPrec :: Int -> ReadS MsgSettingsReadByIndexDone
$creadsPrec :: Int -> ReadS MsgSettingsReadByIndexDone
Read, MsgSettingsReadByIndexDone -> MsgSettingsReadByIndexDone -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgSettingsReadByIndexDone -> MsgSettingsReadByIndexDone -> Bool
$c/= :: MsgSettingsReadByIndexDone -> MsgSettingsReadByIndexDone -> Bool
== :: MsgSettingsReadByIndexDone -> MsgSettingsReadByIndexDone -> Bool
$c== :: MsgSettingsReadByIndexDone -> MsgSettingsReadByIndexDone -> Bool
Eq )

instance Binary MsgSettingsReadByIndexDone where
  get :: Get MsgSettingsReadByIndexDone
get =
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgSettingsReadByIndexDone
MsgSettingsReadByIndexDone

  put :: MsgSettingsReadByIndexDone -> Put
put MsgSettingsReadByIndexDone
MsgSettingsReadByIndexDone =
    forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
$(makeSBP 'msgSettingsReadByIndexDone ''MsgSettingsReadByIndexDone)
$(makeJSON "_msgSettingsReadByIndexDone_" ''MsgSettingsReadByIndexDone)
$(makeLenses ''MsgSettingsReadByIndexDone)

msgSettingsRegister :: Word16
msgSettingsRegister :: Word16
msgSettingsRegister = Word16
0x00AE

-- | SBP class for message MSG_SETTINGS_REGISTER (0x00AE).
--
-- This message registers the presence and default value of a setting with a
-- settings daemon.  The host should reply with MSG_SETTINGS_WRITE for this
-- setting to set the initial value.
data MsgSettingsRegister = MsgSettingsRegister
  { MsgSettingsRegister -> Text
_msgSettingsRegister_setting :: !Text
    -- ^ A NULL-terminated and delimited string with contents
    -- "SECTION_SETTING\0SETTING\0VALUE".
  } deriving ( Int -> MsgSettingsRegister -> ShowS
[MsgSettingsRegister] -> ShowS
MsgSettingsRegister -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgSettingsRegister] -> ShowS
$cshowList :: [MsgSettingsRegister] -> ShowS
show :: MsgSettingsRegister -> String
$cshow :: MsgSettingsRegister -> String
showsPrec :: Int -> MsgSettingsRegister -> ShowS
$cshowsPrec :: Int -> MsgSettingsRegister -> ShowS
Show, ReadPrec [MsgSettingsRegister]
ReadPrec MsgSettingsRegister
Int -> ReadS MsgSettingsRegister
ReadS [MsgSettingsRegister]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgSettingsRegister]
$creadListPrec :: ReadPrec [MsgSettingsRegister]
readPrec :: ReadPrec MsgSettingsRegister
$creadPrec :: ReadPrec MsgSettingsRegister
readList :: ReadS [MsgSettingsRegister]
$creadList :: ReadS [MsgSettingsRegister]
readsPrec :: Int -> ReadS MsgSettingsRegister
$creadsPrec :: Int -> ReadS MsgSettingsRegister
Read, MsgSettingsRegister -> MsgSettingsRegister -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgSettingsRegister -> MsgSettingsRegister -> Bool
$c/= :: MsgSettingsRegister -> MsgSettingsRegister -> Bool
== :: MsgSettingsRegister -> MsgSettingsRegister -> Bool
$c== :: MsgSettingsRegister -> MsgSettingsRegister -> Bool
Eq )

instance Binary MsgSettingsRegister where
  get :: Get MsgSettingsRegister
get = do
    Text
_msgSettingsRegister_setting <- ByteString -> Text
decodeUtf8 forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. ByteString -> ByteString
toStrict forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get ByteString
getRemainingLazyByteString
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgSettingsRegister {Text
_msgSettingsRegister_setting :: Text
_msgSettingsRegister_setting :: Text
..}

  put :: MsgSettingsRegister -> Put
put MsgSettingsRegister {Text
_msgSettingsRegister_setting :: Text
_msgSettingsRegister_setting :: MsgSettingsRegister -> Text
..} = do
    ByteString -> Put
putByteString forall a b. (a -> b) -> a -> b
$ Text -> ByteString
encodeUtf8 Text
_msgSettingsRegister_setting

$(makeSBP 'msgSettingsRegister ''MsgSettingsRegister)
$(makeJSON "_msgSettingsRegister_" ''MsgSettingsRegister)
$(makeLenses ''MsgSettingsRegister)

msgSettingsRegisterResp :: Word16
msgSettingsRegisterResp :: Word16
msgSettingsRegisterResp = Word16
0x01AF

-- | SBP class for message MSG_SETTINGS_REGISTER_RESP (0x01AF).
--
-- This message responds to setting registration with the effective value. The
-- effective value shall differ from the given default value if setting was
-- already registered or is available in the permanent setting storage and had
-- a different value.
data MsgSettingsRegisterResp = MsgSettingsRegisterResp
  { MsgSettingsRegisterResp -> Word8
_msgSettingsRegisterResp_status :: !Word8
    -- ^ Register status
  , MsgSettingsRegisterResp -> Text
_msgSettingsRegisterResp_setting :: !Text
    -- ^ A NULL-terminated and delimited string with contents
    -- "SECTION_SETTING\0SETTING\0VALUE". The meaning of value is defined
    -- according to the status field.
  } deriving ( Int -> MsgSettingsRegisterResp -> ShowS
[MsgSettingsRegisterResp] -> ShowS
MsgSettingsRegisterResp -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MsgSettingsRegisterResp] -> ShowS
$cshowList :: [MsgSettingsRegisterResp] -> ShowS
show :: MsgSettingsRegisterResp -> String
$cshow :: MsgSettingsRegisterResp -> String
showsPrec :: Int -> MsgSettingsRegisterResp -> ShowS
$cshowsPrec :: Int -> MsgSettingsRegisterResp -> ShowS
Show, ReadPrec [MsgSettingsRegisterResp]
ReadPrec MsgSettingsRegisterResp
Int -> ReadS MsgSettingsRegisterResp
ReadS [MsgSettingsRegisterResp]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MsgSettingsRegisterResp]
$creadListPrec :: ReadPrec [MsgSettingsRegisterResp]
readPrec :: ReadPrec MsgSettingsRegisterResp
$creadPrec :: ReadPrec MsgSettingsRegisterResp
readList :: ReadS [MsgSettingsRegisterResp]
$creadList :: ReadS [MsgSettingsRegisterResp]
readsPrec :: Int -> ReadS MsgSettingsRegisterResp
$creadsPrec :: Int -> ReadS MsgSettingsRegisterResp
Read, MsgSettingsRegisterResp -> MsgSettingsRegisterResp -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MsgSettingsRegisterResp -> MsgSettingsRegisterResp -> Bool
$c/= :: MsgSettingsRegisterResp -> MsgSettingsRegisterResp -> Bool
== :: MsgSettingsRegisterResp -> MsgSettingsRegisterResp -> Bool
$c== :: MsgSettingsRegisterResp -> MsgSettingsRegisterResp -> Bool
Eq )

instance Binary MsgSettingsRegisterResp where
  get :: Get MsgSettingsRegisterResp
get = do
    Word8
_msgSettingsRegisterResp_status <- Get Word8
getWord8
    Text
_msgSettingsRegisterResp_setting <- ByteString -> Text
decodeUtf8 forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. ByteString -> ByteString
toStrict forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get ByteString
getRemainingLazyByteString
    forall (f :: * -> *) a. Applicative f => a -> f a
pure MsgSettingsRegisterResp {Word8
Text
_msgSettingsRegisterResp_setting :: Text
_msgSettingsRegisterResp_status :: Word8
_msgSettingsRegisterResp_setting :: Text
_msgSettingsRegisterResp_status :: Word8
..}

  put :: MsgSettingsRegisterResp -> Put
put MsgSettingsRegisterResp {Word8
Text
_msgSettingsRegisterResp_setting :: Text
_msgSettingsRegisterResp_status :: Word8
_msgSettingsRegisterResp_setting :: MsgSettingsRegisterResp -> Text
_msgSettingsRegisterResp_status :: MsgSettingsRegisterResp -> Word8
..} = do
    Word8 -> Put
putWord8 Word8
_msgSettingsRegisterResp_status
    ByteString -> Put
putByteString forall a b. (a -> b) -> a -> b
$ Text -> ByteString
encodeUtf8 Text
_msgSettingsRegisterResp_setting

$(makeSBP 'msgSettingsRegisterResp ''MsgSettingsRegisterResp)
$(makeJSON "_msgSettingsRegisterResp_" ''MsgSettingsRegisterResp)
$(makeLenses ''MsgSettingsRegisterResp)