# Copyright (c) 2023 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

declare_args() {
  # Matter SDK Configuration flag to enable ICD server functionality
  chip_enable_icd_server = false

  chip_enable_icd_lit = false

  # Matter SDK Configuration flag to make the ICD manager emit a report on entering active mode
  chip_icd_report_on_active_mode = false

  icd_max_notification_subscribers = 1

  # Set to true if device supports dynamic switching from SIT to LIT operating modes (DSLS)
  chip_enable_icd_dsls = false
}

# Set the defaults for CIP and UAT features to be consistent with the LIT value.
declare_args() {
  chip_enable_icd_checkin = chip_enable_icd_lit
  chip_enable_icd_user_active_mode_trigger = chip_enable_icd_lit
}
