# 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
  # TODO - Add Specifics when the design is refined
  chip_enable_icd_server = false

  chip_enable_icd_lit = false

  # Matter SDK Configuration flag to enable ICD client functionality
  # TODO - Add Specifics when the design is refined
  chip_enable_icd_client = 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 to enforce SIT Slow Polling Max value to 15seconds (spec 9.16.1.5)
  icd_enforce_sit_slow_poll_limit = 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
}
