/*
 * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
 * above copyright notice and this permission notice appear in all
 * copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 */

/**
 * DOC: This file contains centralized definitions of converged configuration.
 */

#ifndef __CFG_GREEN_AP_PARAMS_H
#define __CFG_GREEN_AP_PARAMS_H

/*
 * <ini>
 * gEnableGreenAp - Enable green ap feature
 * @Min: 0
 * @Max: 1
 * @Default: 0
 *
 * This ini is used to enable green ap feature
 *
 * Related: None
 *
 * Supported Feature: SAP
 *
 * Usage: Internal/External
 *
 * </ini>
 */

#define CFG_ENABLE_GREEN_AP_FEATURE CFG_INI_BOOL( \
		"gEnableGreenAp", \
		PLATFORM_VALUE(1, 0), \
		"enable green ap")

/*
 * <ini>
 * gEnableEGAP - Enable the enhanced green ap feature
 * @Min: 0
 * @Max: 1
 * @Default: 1
 *
 * This ini is used to enable the enhanced green ap feature
 *
 * Related: None
 *
 * Supported Feature: SAP
 *
 * Usage: Internal/External
 *
 * </ini>
 */

#define CFG_ENABLE_EGAP_FEATURE CFG_INI_BOOL( \
		"gEnableEGAP", \
		PLATFORM_VALUE(1, 0), \
		"enable e-gap")
/*
 * <ini>
 * gEGAPInactTime - configure the inactive time for EGAP
 * @Min: 0
 * @Max: 300000
 * @Default: 2000
 *
 * This ini is used to configure the inactive time for EGAP
 *
 * Related: None
 *
 * Supported Feature: SAP
 *
 * Usage: Internal/External
 *
 * </ini>
 */

#define CFG_EGAP_INACT_TIME_FEATURE CFG_INI_UINT( \
		"gEGAPInactTime", \
		0, \
		300000, \
		2000, \
		CFG_VALUE_OR_DEFAULT, \
		"egap inactivity time")

#ifdef WLAN_SUPPORT_GAP_LL_PS_MODE
/*
 * <ini>
 * gGAPLowBeaconMult - configure Low Beacon interval multiplier.
 * @Min: 0
 * @Max: 10
 * @Default: 10
 *
 * This ini is used to configure the Low Beacon interval
 * multiplier which is used to calculate Low Beacon interval for
 * power save.
 *
 * Related: None
 *
 * Supported Feature: SAP
 *
 * Usage: External
 *
 * </ini>
 */

#define CFG_GAP_LL_PS_LOW_BEACON_MULT CFG_INI_UINT( \
		"gGAPLowBeaconMult", \
		0, \
		10, \
		10, \
		CFG_VALUE_OR_DEFAULT, \
		"low beacon interval multiplier")

#define CFG_GAP_LL_PS_ALL_CFG CFG(CFG_GAP_LL_PS_LOW_BEACON_MULT)
#else
#define CFG_GAP_LL_PS_ALL_CFG
#endif

/*
 * <ini>
 * gEGAPWaitTime - configure the wait time for EGAP
 * @Min: 0
 * @Max: 300000
 * @Default: 150
 *
 * This ini is used to configure the wait time for EGAP
 *
 * Related: None
 *
 * Supported Feature: SAP
 *
 * Usage: Internal/External
 *
 * </ini>
 */

#define CFG_EGAP_WAIT_TIME_FEATURE CFG_INI_UINT( \
		"gEGAPWaitTime", \
		0, \
		300000, \
		150, \
		CFG_VALUE_OR_DEFAULT, \
		"egap wait time")
/*
 * <ini>
 * gEGAPFeatures - Configure the EGAP flags
 * @Min: 0
 * @Max: 15
 * @Default: 3
 *
 * This ini is used to configure the EGAP flags
 *
 * Related: None
 *
 * Supported Feature: SAP
 *
 * Usage: Internal/External
 *
 * </ini>
 */

#define CFG_EGAP_FLAGS_FEATURE CFG_INI_UINT( \
		"gEGAPFeatures", \
		0, \
		15, \
		3, \
		CFG_VALUE_OR_DEFAULT, \
		"egap flag")

#ifdef WLAN_SUPPORT_GREEN_AP
#define CFG_GREEN_AP_ALL \
	CFG(CFG_ENABLE_GREEN_AP_FEATURE) \
	CFG(CFG_ENABLE_EGAP_FEATURE) \
	CFG(CFG_EGAP_INACT_TIME_FEATURE) \
	CFG(CFG_EGAP_WAIT_TIME_FEATURE) \
	CFG(CFG_EGAP_FLAGS_FEATURE) \
	CFG_GAP_LL_PS_ALL_CFG
#else
#define CFG_GREEN_AP_ALL
#endif

#endif /* __CFG_GREEN_AP_PARAMS_H */