packages feed

amazonka-iotfleetwise-2.0: gen/Amazonka/IoTFleetWise/Types/ObdInterface.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.IoTFleetWise.Types.ObdInterface
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.IoTFleetWise.Types.ObdInterface where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | A network interface that specifies the On-board diagnostic (OBD) II
-- network protocol.
--
-- /See:/ 'newObdInterface' smart constructor.
data ObdInterface = ObdInterface'
  { -- | The maximum number message requests per diagnostic trouble code per
    -- second.
    dtcRequestIntervalSeconds :: Prelude.Maybe Prelude.Natural,
    -- | Whether the vehicle has a transmission control module (TCM).
    hasTransmissionEcu :: Prelude.Maybe Prelude.Bool,
    -- | The standard OBD II PID.
    obdStandard :: Prelude.Maybe Prelude.Text,
    -- | The maximum number message requests per second.
    pidRequestIntervalSeconds :: Prelude.Maybe Prelude.Natural,
    -- | Whether to use extended IDs in the message.
    useExtendedIds :: Prelude.Maybe Prelude.Bool,
    -- | The name of the interface.
    name :: Prelude.Text,
    -- | The ID of the message requesting vehicle data.
    requestMessageId :: Prelude.Natural
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ObdInterface' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'dtcRequestIntervalSeconds', 'obdInterface_dtcRequestIntervalSeconds' - The maximum number message requests per diagnostic trouble code per
-- second.
--
-- 'hasTransmissionEcu', 'obdInterface_hasTransmissionEcu' - Whether the vehicle has a transmission control module (TCM).
--
-- 'obdStandard', 'obdInterface_obdStandard' - The standard OBD II PID.
--
-- 'pidRequestIntervalSeconds', 'obdInterface_pidRequestIntervalSeconds' - The maximum number message requests per second.
--
-- 'useExtendedIds', 'obdInterface_useExtendedIds' - Whether to use extended IDs in the message.
--
-- 'name', 'obdInterface_name' - The name of the interface.
--
-- 'requestMessageId', 'obdInterface_requestMessageId' - The ID of the message requesting vehicle data.
newObdInterface ::
  -- | 'name'
  Prelude.Text ->
  -- | 'requestMessageId'
  Prelude.Natural ->
  ObdInterface
newObdInterface pName_ pRequestMessageId_ =
  ObdInterface'
    { dtcRequestIntervalSeconds =
        Prelude.Nothing,
      hasTransmissionEcu = Prelude.Nothing,
      obdStandard = Prelude.Nothing,
      pidRequestIntervalSeconds = Prelude.Nothing,
      useExtendedIds = Prelude.Nothing,
      name = pName_,
      requestMessageId = pRequestMessageId_
    }

-- | The maximum number message requests per diagnostic trouble code per
-- second.
obdInterface_dtcRequestIntervalSeconds :: Lens.Lens' ObdInterface (Prelude.Maybe Prelude.Natural)
obdInterface_dtcRequestIntervalSeconds = Lens.lens (\ObdInterface' {dtcRequestIntervalSeconds} -> dtcRequestIntervalSeconds) (\s@ObdInterface' {} a -> s {dtcRequestIntervalSeconds = a} :: ObdInterface)

-- | Whether the vehicle has a transmission control module (TCM).
obdInterface_hasTransmissionEcu :: Lens.Lens' ObdInterface (Prelude.Maybe Prelude.Bool)
obdInterface_hasTransmissionEcu = Lens.lens (\ObdInterface' {hasTransmissionEcu} -> hasTransmissionEcu) (\s@ObdInterface' {} a -> s {hasTransmissionEcu = a} :: ObdInterface)

-- | The standard OBD II PID.
obdInterface_obdStandard :: Lens.Lens' ObdInterface (Prelude.Maybe Prelude.Text)
obdInterface_obdStandard = Lens.lens (\ObdInterface' {obdStandard} -> obdStandard) (\s@ObdInterface' {} a -> s {obdStandard = a} :: ObdInterface)

-- | The maximum number message requests per second.
obdInterface_pidRequestIntervalSeconds :: Lens.Lens' ObdInterface (Prelude.Maybe Prelude.Natural)
obdInterface_pidRequestIntervalSeconds = Lens.lens (\ObdInterface' {pidRequestIntervalSeconds} -> pidRequestIntervalSeconds) (\s@ObdInterface' {} a -> s {pidRequestIntervalSeconds = a} :: ObdInterface)

-- | Whether to use extended IDs in the message.
obdInterface_useExtendedIds :: Lens.Lens' ObdInterface (Prelude.Maybe Prelude.Bool)
obdInterface_useExtendedIds = Lens.lens (\ObdInterface' {useExtendedIds} -> useExtendedIds) (\s@ObdInterface' {} a -> s {useExtendedIds = a} :: ObdInterface)

-- | The name of the interface.
obdInterface_name :: Lens.Lens' ObdInterface Prelude.Text
obdInterface_name = Lens.lens (\ObdInterface' {name} -> name) (\s@ObdInterface' {} a -> s {name = a} :: ObdInterface)

-- | The ID of the message requesting vehicle data.
obdInterface_requestMessageId :: Lens.Lens' ObdInterface Prelude.Natural
obdInterface_requestMessageId = Lens.lens (\ObdInterface' {requestMessageId} -> requestMessageId) (\s@ObdInterface' {} a -> s {requestMessageId = a} :: ObdInterface)

instance Data.FromJSON ObdInterface where
  parseJSON =
    Data.withObject
      "ObdInterface"
      ( \x ->
          ObdInterface'
            Prelude.<$> (x Data..:? "dtcRequestIntervalSeconds")
            Prelude.<*> (x Data..:? "hasTransmissionEcu")
            Prelude.<*> (x Data..:? "obdStandard")
            Prelude.<*> (x Data..:? "pidRequestIntervalSeconds")
            Prelude.<*> (x Data..:? "useExtendedIds")
            Prelude.<*> (x Data..: "name")
            Prelude.<*> (x Data..: "requestMessageId")
      )

instance Prelude.Hashable ObdInterface where
  hashWithSalt _salt ObdInterface' {..} =
    _salt
      `Prelude.hashWithSalt` dtcRequestIntervalSeconds
      `Prelude.hashWithSalt` hasTransmissionEcu
      `Prelude.hashWithSalt` obdStandard
      `Prelude.hashWithSalt` pidRequestIntervalSeconds
      `Prelude.hashWithSalt` useExtendedIds
      `Prelude.hashWithSalt` name
      `Prelude.hashWithSalt` requestMessageId

instance Prelude.NFData ObdInterface where
  rnf ObdInterface' {..} =
    Prelude.rnf dtcRequestIntervalSeconds
      `Prelude.seq` Prelude.rnf hasTransmissionEcu
      `Prelude.seq` Prelude.rnf obdStandard
      `Prelude.seq` Prelude.rnf pidRequestIntervalSeconds
      `Prelude.seq` Prelude.rnf useExtendedIds
      `Prelude.seq` Prelude.rnf name
      `Prelude.seq` Prelude.rnf requestMessageId

instance Data.ToJSON ObdInterface where
  toJSON ObdInterface' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("dtcRequestIntervalSeconds" Data..=)
              Prelude.<$> dtcRequestIntervalSeconds,
            ("hasTransmissionEcu" Data..=)
              Prelude.<$> hasTransmissionEcu,
            ("obdStandard" Data..=) Prelude.<$> obdStandard,
            ("pidRequestIntervalSeconds" Data..=)
              Prelude.<$> pidRequestIntervalSeconds,
            ("useExtendedIds" Data..=)
              Prelude.<$> useExtendedIds,
            Prelude.Just ("name" Data..= name),
            Prelude.Just
              ("requestMessageId" Data..= requestMessageId)
          ]
      )