packages feed

amazonka-iotwireless-2.0: gen/Amazonka/IoTWireless/Types/LoRaWANGateway.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.IoTWireless.Types.LoRaWANGateway
-- 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.IoTWireless.Types.LoRaWANGateway where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.IoTWireless.Types.Beaconing
import qualified Amazonka.Prelude as Prelude

-- | LoRaWANGateway object.
--
-- /See:/ 'newLoRaWANGateway' smart constructor.
data LoRaWANGateway = LoRaWANGateway'
  { -- | Beaconing object information, which consists of the data rate and
    -- frequency parameters.
    beaconing :: Prelude.Maybe Beaconing,
    -- | The gateway\'s EUI value.
    gatewayEui :: Prelude.Maybe Prelude.Text,
    joinEuiFilters :: Prelude.Maybe [Prelude.NonEmpty Prelude.Text],
    netIdFilters :: Prelude.Maybe [Prelude.Text],
    -- | The frequency band (RFRegion) value.
    rfRegion :: Prelude.Maybe Prelude.Text,
    subBands :: Prelude.Maybe [Prelude.Natural]
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'LoRaWANGateway' 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:
--
-- 'beaconing', 'loRaWANGateway_beaconing' - Beaconing object information, which consists of the data rate and
-- frequency parameters.
--
-- 'gatewayEui', 'loRaWANGateway_gatewayEui' - The gateway\'s EUI value.
--
-- 'joinEuiFilters', 'loRaWANGateway_joinEuiFilters' - Undocumented member.
--
-- 'netIdFilters', 'loRaWANGateway_netIdFilters' - Undocumented member.
--
-- 'rfRegion', 'loRaWANGateway_rfRegion' - The frequency band (RFRegion) value.
--
-- 'subBands', 'loRaWANGateway_subBands' - Undocumented member.
newLoRaWANGateway ::
  LoRaWANGateway
newLoRaWANGateway =
  LoRaWANGateway'
    { beaconing = Prelude.Nothing,
      gatewayEui = Prelude.Nothing,
      joinEuiFilters = Prelude.Nothing,
      netIdFilters = Prelude.Nothing,
      rfRegion = Prelude.Nothing,
      subBands = Prelude.Nothing
    }

-- | Beaconing object information, which consists of the data rate and
-- frequency parameters.
loRaWANGateway_beaconing :: Lens.Lens' LoRaWANGateway (Prelude.Maybe Beaconing)
loRaWANGateway_beaconing = Lens.lens (\LoRaWANGateway' {beaconing} -> beaconing) (\s@LoRaWANGateway' {} a -> s {beaconing = a} :: LoRaWANGateway)

-- | The gateway\'s EUI value.
loRaWANGateway_gatewayEui :: Lens.Lens' LoRaWANGateway (Prelude.Maybe Prelude.Text)
loRaWANGateway_gatewayEui = Lens.lens (\LoRaWANGateway' {gatewayEui} -> gatewayEui) (\s@LoRaWANGateway' {} a -> s {gatewayEui = a} :: LoRaWANGateway)

-- | Undocumented member.
loRaWANGateway_joinEuiFilters :: Lens.Lens' LoRaWANGateway (Prelude.Maybe [Prelude.NonEmpty Prelude.Text])
loRaWANGateway_joinEuiFilters = Lens.lens (\LoRaWANGateway' {joinEuiFilters} -> joinEuiFilters) (\s@LoRaWANGateway' {} a -> s {joinEuiFilters = a} :: LoRaWANGateway) Prelude.. Lens.mapping Lens.coerced

-- | Undocumented member.
loRaWANGateway_netIdFilters :: Lens.Lens' LoRaWANGateway (Prelude.Maybe [Prelude.Text])
loRaWANGateway_netIdFilters = Lens.lens (\LoRaWANGateway' {netIdFilters} -> netIdFilters) (\s@LoRaWANGateway' {} a -> s {netIdFilters = a} :: LoRaWANGateway) Prelude.. Lens.mapping Lens.coerced

-- | The frequency band (RFRegion) value.
loRaWANGateway_rfRegion :: Lens.Lens' LoRaWANGateway (Prelude.Maybe Prelude.Text)
loRaWANGateway_rfRegion = Lens.lens (\LoRaWANGateway' {rfRegion} -> rfRegion) (\s@LoRaWANGateway' {} a -> s {rfRegion = a} :: LoRaWANGateway)

-- | Undocumented member.
loRaWANGateway_subBands :: Lens.Lens' LoRaWANGateway (Prelude.Maybe [Prelude.Natural])
loRaWANGateway_subBands = Lens.lens (\LoRaWANGateway' {subBands} -> subBands) (\s@LoRaWANGateway' {} a -> s {subBands = a} :: LoRaWANGateway) Prelude.. Lens.mapping Lens.coerced

instance Data.FromJSON LoRaWANGateway where
  parseJSON =
    Data.withObject
      "LoRaWANGateway"
      ( \x ->
          LoRaWANGateway'
            Prelude.<$> (x Data..:? "Beaconing")
            Prelude.<*> (x Data..:? "GatewayEui")
            Prelude.<*> (x Data..:? "JoinEuiFilters" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "NetIdFilters" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "RfRegion")
            Prelude.<*> (x Data..:? "SubBands" Data..!= Prelude.mempty)
      )

instance Prelude.Hashable LoRaWANGateway where
  hashWithSalt _salt LoRaWANGateway' {..} =
    _salt
      `Prelude.hashWithSalt` beaconing
      `Prelude.hashWithSalt` gatewayEui
      `Prelude.hashWithSalt` joinEuiFilters
      `Prelude.hashWithSalt` netIdFilters
      `Prelude.hashWithSalt` rfRegion
      `Prelude.hashWithSalt` subBands

instance Prelude.NFData LoRaWANGateway where
  rnf LoRaWANGateway' {..} =
    Prelude.rnf beaconing
      `Prelude.seq` Prelude.rnf gatewayEui
      `Prelude.seq` Prelude.rnf joinEuiFilters
      `Prelude.seq` Prelude.rnf netIdFilters
      `Prelude.seq` Prelude.rnf rfRegion
      `Prelude.seq` Prelude.rnf subBands

instance Data.ToJSON LoRaWANGateway where
  toJSON LoRaWANGateway' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("Beaconing" Data..=) Prelude.<$> beaconing,
            ("GatewayEui" Data..=) Prelude.<$> gatewayEui,
            ("JoinEuiFilters" Data..=)
              Prelude.<$> joinEuiFilters,
            ("NetIdFilters" Data..=) Prelude.<$> netIdFilters,
            ("RfRegion" Data..=) Prelude.<$> rfRegion,
            ("SubBands" Data..=) Prelude.<$> subBands
          ]
      )