/*
 * Copyright (c) 2020 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
 */

#ifndef LIBZBOSS_CONFIG_ED_H__
#define LIBZBOSS_CONFIG_ED_H__

/**
 * This is an autogenerated file.
 * Please use Kconfig to change it.
 */


/**
 * Include NCP related code in ZBOSS library.
 *
 * Compile NCP related code in ZBOSS library.
 * This enables building NCP architecture with common ZBOSS library.
 */
#define CONFIG_ZB_NCP_MODE y

/**
 * NCP trasnport type - Serial (UART)
 */
#define CONFIG_ZB_NCP_TRANSPORT_TYPE_SERIAL y

/**
 * Enable UART serial interface for ZBOSS CLI
 */
#define CONFIG_ZB_HAVE_SERIAL y

/**
 * Serial (SPI) [UNSUPPORTED]
 */
/* #undef CONFIG_ZB_NCP_TRANSPORT_TYPE_SPI */

/**
 * Simulator (linux pipe) [UNSUPPORTED]
 */
/* #undef CONFIG_ZB_NCP_TRANSPORT_TYPE_NSNG */

/**
 * SDK Type (HA, SE, etc.) - Home Automation
 */
#define CONFIG_ZB_SDK_TYPE_HA y

/**
 * SDK Type (HA, SE, etc.) - Smart Energy
 */
/* #undef CONFIG_ZB_SDK_TYPE_SE */

/**
 * ZB_SDK_TYPE
 */
#define CONFIG_ZB_SDK_TYPE 1

/**
 * Compiled-in trace mask of ZBOSS stack logs
 *
 * Selectively enable Zigbee binary trace logs.
 * The mask value should be a bitwise OR of values assigned to selected modules.
 *
 * Available modules are:
 *
 * - 0x04000000 Reserved
 * - 0x02000000 Reserved
 * - 0x01000000 Reserved
 * - 0x00800000 Reserved
 * - 0x00400000 Reserved
 * - 0x00200000 Zigbee NCP: transport (LL)
 * - 0x00100000 Zigbee NCP: command adapters (HL)
 * - 0x00080000 ZCL: Over The Air firmware upgrade
 * - 0x00040000 IAS zone device: battery monitoring
 * - 0x00020000 Reserved
 * - 0x00010000 MAC Lower Layer
 * - 0x00008000 MAC layer API calls
 * - 0x00004000 Zigbee Green Power
 * - 0x00002000 Custom components
 * - 0x00001000 Reserved
 * - 0x00000800 Application
 * - 0x00000400 Reserved
 * - 0x00000200 Zigbee Light Link
 * - 0x00000100 Zigbee Cluster Library
 * - 0x00000080 Security
 * - 0x00000040 Zigbee Device Object
 * - 0x00000020 Zigbee Smart Energy
 * - 0x00000010 Application Support layer
 * - 0x00000008 Network layer
 * - 0x00000004 MAC layer
 * - 0x00000002 Memory management
 * - 0x00000001 Common
 *
 * For example, in order to enable traces related to OTA DFU,
 * one should set this option to 0x00080100.
 *
 * Note: For general debugging purposes, please use 0x00000C48.
 */
#define CONFIG_ZB_TRACE_MASK 0xFFFFFFFF

/**
 * Max compiled-in log level for ZBOSS traces - Off
 */
/* #undef CONFIG_ZB_LOG_LEVEL_OFF */

/**
 * Max compiled-in log level for ZBOSS traces - Error
 */
/* #undef CONFIG_ZB_LOG_LEVEL_ERR */

/**
 * Max compiled-in log level for ZBOSS traces - Warning
 */
#define CONFIG_ZB_LOG_LEVEL_WRN y

/**
 * Max compiled-in log level for ZBOSS traces - Info
 */
/* #undef CONFIG_ZB_LOG_LEVEL_INF */

/**
 * Max compiled-in log level for ZBOSS traces - Debug
 */
/* #undef CONFIG_ZB_LOG_LEVEL_DBG */

/**
 * Off - ZB_TRACE_LOG_LEVEL
 */
#define CONFIG_ZB_TRACE_LOG_LEVEL 2

/**
 * Initialize and flush logger directly from ZBOSS kernel
 */
/* #undef CONFIG_ZB_ASYNC_TRACE_CONTROL */

/**
 * Enable UART test commands support
 *
 * Enable reception of test commands on UART interface
 * (enabled in ZBOSS test configs only)
 */
#define CONFIG_ZB_NRF_TRACE_RX_ENABLE y

/**
 * Enable Zigbee test mode and features
 */
#define CONFIG_ZB_TEST_MODE y

/**
 * Enable LEDs abstract for ZBOSS OSIF
 */
#define CONFIG_ZB_USE_LEDS y

/**
 * Enable dimmable LED (PWM) abstract for ZBOSS OSIF
 */
/* #undef CONFIG_ZB_USE_DIMMABLE_LED */

/**
 * Enable buttons abstract for ZBOSS OSIF
 */
#define CONFIG_ZB_USE_BUTTONS y

/**
 * NVRAM migration
 *
 * Include procedures to migrate legacy NVRAM structures
 */
#define CONFIG_ZB_NVRAM_ENABLE_VER_MIGRATION y

/**
 * Finding and Binding
 *
 * Enable finding and binding, as defined in BDB specification
 */
#define CONFIG_ZB_BDB_ENABLE_FINDING_BINDING y

/**
 * Distributed security
 *
 * Enable forming and joining Zigbee networks with distributed security
 */
#define CONFIG_ZB_DISTRIBUTED_SECURITY_ON y

/**
 * Install codes
 *
 * Enable commissioning with install codes
 */
#define CONFIG_ZB_SECURITY_INSTALLCODES y

/**
 * Production configuration
 *
 * Enable production configuration
 */
#define CONFIG_ZB_PRODUCTION_CONFIG y

/**
 * APS user frames
 *
 * Include API to send raw APS frames
 */
#define CONFIG_ZB_APS_USER_PAYLOAD y

/**
 * NWK security API
 *
 * Include API to disable NWK security
 */
#define CONFIG_ZB_LOW_SECURITY_MODE y

/**
 * APS fragmentation
 *
 * Enable APS fragmentation inside ZBOSS
 */
#define CONFIG_ZB_APS_FRAGMENTATION y

/**
 * PAN ID blacklist
 *
 * Enable PAN ID blacklisting during rejoin
 */
#define CONFIG_ZB_NWK_BLACKLIST y

/**
 * PAN ID blacklist length
 */
#define CONFIG_ZB_NWK_BLACKLIST_SIZE 16

/**
 * Enable Control4 network support
 */
#define CONFIG_ZB_CONTROL4_NETWORK_SUPPORT y

/**
 * Enable R22 extension for for mutitple MAC interfaces support.
 */
/* #undef CONFIG_ZB_R22_MULTIMAC_MODE */

/**
 * Enable R22 extension for for mutitple MAC interfaces support. - Enable single-MAC interface support
 */
#define CONFIG_ZB_MAC_INTERFACE_SINGLE y

/**
 * WWAH cluster
 *
 * Include Works With All Hubs cluster
 */
#define CONFIG_ZB_ZCL_SUPPORT_CLUSTER_WWAH y

/**
 * WWAH cluster - WWAHu client
 *
 * Include WWAHu cluster client implementation
 */
#define CONFIG_ZB_ZCL_ENABLE_WWAH_CLIENT y

/**
 * WWAH cluster - WWAHu server
 *
 * Include WWAHu cluster server implementation
 */
#define CONFIG_ZB_ZCL_ENABLE_WWAH_SERVER y

/**
 * WWAHu server - NWK retransmissions
 *
 * Enable retransmissions on NWK layer
 */
#define CONFIG_ZB_NWK_RETRY_COUNT y

/**
 * WWAHu server - Beacon survey
 *
 * Enable beacon survey
 */
#define CONFIG_ZB_BEACON_SURVEY y

/**
 * WWAHu server - Parent classification
 *
 * Enable parent classification
 */
#define CONFIG_ZB_PARENT_CLASSIFICATION y

/**
 * Check for Out Of Memory state
 *
 * If Zigbee packet buffer pool is in OOM state for a period, specified
 * by ZB_OOM_THRESHOLD, then assertion is triggered.
 */
/* #undef CONFIG_ZB_CHECK_OOM_STATUS */

/**
 * Check for Out Of Memory state - Generate NWK status frame in OOM
 *
 * Send broadcast frame once OOM state is detected.
 */
/* #undef CONFIG_ZB_SEND_OOM_STATUS */

/**
 * Touchlink commissioning (experimental)
 */
/* #undef CONFIG_ZB_BDB_TOUCHLINK */

/**
 * Enable Zigbee MAC features, used by the verification framework - Enable API for sending inter-pan packets at non default channel
 */
#define CONFIG_ZB_ENABLE_INTER_PAN_NON_DEFAULT_CHANNEL y

/**
 * Enable Zigbee test mode and features - Enable Zigbee MAC features, used by the verification framework
 */
/* #undef CONFIG_ZB_MAC_TESTING_MODE */

/**
 * Certification specific behavior
 *
 * Enable behaviors specific to golden devices used during certification
 */
#define CONFIG_ZB_CERTIFICATION_HACKS y

/**
 * MAC filtering
 *
 * Enables filtering frames at MAC level, based on device's short or
 * long address
 */
#define CONFIG_ZB_LIMIT_VISIBILITY y

/**
 * Groups of test cases to be included - Enable both TH and DUT test cases
 */
#define CONFIG_ZB_TEST_GROUP_ALL y

/**
 * Enable Zigbee test mode and features - Enable Zigbee MAC test mode extensions
 */
/* #undef CONFIG_ZB_TEST_MODE_MAC */

/**
 * Enable Zigbee test mode and features - Enable Zigbee PRO test mode extensions
 */
#define CONFIG_ZB_TEST_MODE_PRO y

/**
 * Groups of test cases to be included - Enable DUT test cases
 */
/* #undef CONFIG_ZB_TEST_GROUP_ALL_DUT */

/**
 * Groups of test cases to be included - Enable TH test cases
 */
/* #undef CONFIG_ZB_TEST_GROUP_ALL_TH */

/**
 * Enable Zigbee test mode and features - Enable Zigbee profile, used by verification framework
 */
#define CONFIG_ZB_TEST_PROFILE y

/**
 * Disable auto reboot for CI
 */
#define CONFIG_ZB_DISABLE_AUTO_REBOOT_FOR_CI y

/**
 * Enable Zigbee test mode and features - Serial console RX timeout
 */
#define CONFIG_ZB_MULTITEST_CONSOLE_SLEEP_TIMEOUT 4000000

/**
 * Disable TRACE_FILE_ID assert
 *
 * Disable sanity check for ZB_TRACE_FILE_ID macro definition in each file
 */
#define CONFIG_ZB_DONT_NEED_TRACE_FILE_ID y

/**
 * Use delayed TX feature of the radio driver instead of entering busy loop in GP implementation
 *
 * While communicating with Green Power device, ZBOSS will wait before issuing
 * mcps-data.req using MAC features instead of waiting in a busy loop
 */
#define CONFIG_ZB_MAC_AUTO_DELAY_IN_MAC_GP_SEND y

/**
 * NWK requests with aliases
 *
 * Enables making NWK requests with aliases (see sec. 3.2.1.1.1) or
 * R21 Zigbee PRO specification)
 */
/* #undef CONFIG_ZB_USEALIAS */

/**
 * Enable MAC duty cycle monitoring
 */
/* #undef CONFIG_ZB_MAC_DUTY_CYCLE_MONITORING */

/**
 * Enable per-device MAC TX power control
 */
/* #undef CONFIG_ZB_MAC_POWER_CONTROL */

/**
 * Enable per-channel MAC TX power control
 */
#define CONFIG_ZB_MAC_CONFIGURABLE_TX_POWER y

/**
 * Length of the internal ZBOSS MAC TX queue
 *
 * The value of NRF_802154_RX_BUFFERS (ZIGBEE_RX_QUEUE_LENGTH in nRF5 SDK)
 * should not be greater than ZB_MAC_QUEUE_SIZE.
 * If the node is flooded with requests, that require a response to be sent,
 * the node should be able to schedule responses for each buffer,
 * stored inside MAC LL RX queue.
 * The receiver gets disabled only if the MAC LL RX queue is full.
 * The TX queue is unable to block incoming requests.
 */
#define CONFIG_ZB_MAC_QUEUE_SIZE 17

/**
 * Acceptable noise floor (in ED units) to form a network
 *
 * If the MAC LL layer returns energy higher than this value for a given channel,
 * the node will skip this channel after passive channel scan.
 */
#define CONFIG_ZB_NWK_CHANNEL_ACCEPT_LEVEL 200

/**
 * Enable internal clusters through filters
 */
/* #undef CONFIG_ZB_FILTER_OUT_CLUSTERS */

/**
 * Enable enhanced beacon support
 */
#define CONFIG_ZB_ENHANCED_BEACON_SUPPORT y

/**
 * Enable joining list support
 */
#define CONFIG_ZB_JOINING_LIST_SUPPORT y

/**
 * PAN ID translation table size
 *
 * NWK: size of the long-short Pan ID translation table
 *
 * Must be <= (packet buffer size - sizeof(*discovery_confirm)) /
 *            sizeof(*network_descriptor)
 * That value limits number of Pan IDs visible for device during active scan.
 */
#define CONFIG_ZB_PANID_TABLE_SIZE 28

/**
 * long addresses compression table size
 *
 * Size of table used for long addresses compression: 3 bytes of
 * manufacturer id.
 *
 * ZBOSS implements long address compression: 3 bytes of manufacturer
 * id are stored in the separate table; reference to manufacturer
 * entry is stored in the long address giving 2 bytes economy.
 *
 * That is an absolute limit of number of manufacturers known to the device.
 *
 * Note: All that machinery will not work if instead of legal
 * manufacturer ids (or illegal, but fixed ids) use random values.
 */
#define CONFIG_ZB_DEV_MANUFACTURER_TABLE_SIZE 32

/**
 * Packet buffer wait queue size
 *
 * Size of queue for wait for free packet buffer
 *
 * Note: To prevent deadlocks ZB_BUF_Q_SIZE must be < ZB_IOBUF_POOL_SIZE/2
 */
#define CONFIG_ZB_BUF_Q_SIZE 8

/**
 * ZDO transactions table size
 */
#define CONFIG_ZB_ZDO_TRAN_TABLE_SIZE 16

/**
 * number of endpoints per APS group table entry
 */
#define CONFIG_ZB_APS_ENDPOINTS_IN_GROUP_TABLE 8

/**
 * Broadcast transaction record table size
 *
 * See Zigbee Specification subclause 3.6.5
 */
#define CONFIG_ZB_NWK_BTR_TABLE_SIZE 16

/**
 * Broadcast Retransmission table size
 */
#define CONFIG_ZB_NWK_BRR_TABLE_SIZE 16

/**
 * Number of endpoints
 *
 * Maximum number of supported endpoints per device
 */
#define CONFIG_ZB_MAX_EP_NUMBER 8

/**
 * Number of supported APS groups
 */
#define CONFIG_ZB_APS_GROUP_TABLE_SIZE 8

/**
 * Green Power Sink table size
 */
#define CONFIG_ZB_ZGP_SINK_TBL_SIZE 24

/**
 * Green Power Proxy table size
 */
#define CONFIG_ZB_ZGP_PROXY_TBL_SIZE 5

/**
 * Dynamic memory configuration
 *
 * Enable dynamic memory configuration feature that allows to change memory
 * footprint if application uses ZBOSS binaries
 */
#define CONFIG_ZB_CONFIGURABLE_MEM y

/**
 * Dynamic memory configuration - Expected overall network size
 */
#define CONFIG_ZB_CONFIG_OVERALL_NETWORK_SIZE 128

/**
 * Expected Zigbee traffic intensity - high
 */
#define CONFIG_ZB_CONFIG_HIGH_TRAFFIC y

/**
 * Expected Zigbee traffic intensity - moderate
 */
/* #undef CONFIG_ZB_CONFIG_MODERATE_TRAFFIC */

/**
 * Expected Zigbee traffic intensity - light
 */
/* #undef CONFIG_ZB_CONFIG_LIGHT_TRAFFIC */

/**
 * Expected Zigbee application complexity - complex
 */
#define CONFIG_ZB_CONFIG_APPLICATION_COMPLEX y

/**
 * Expected Zigbee application complexity - moderate
 */
/* #undef CONFIG_ZB_CONFIG_APPLICATION_MODERATE */

/**
 * Expected Zigbee application complexity - simple
 */
/* #undef CONFIG_ZB_CONFIG_APPLICATION_SIMPLE */

/**
 * Dynamic memory configuration - Source APS binding table size
 */
/* #undef CONFIG_ZB_APS_SRC_BINDING_TABLE_SIZE */

/**
 * Dynamic memory configuration - Destination APS binding table size
 */
/* #undef CONFIG_ZB_APS_DST_BINDING_TABLE_SIZE */

/**
 * Dynamic memory configuration - Number of packet buffers
 */
/* #undef CONFIG_ZB_IOBUF_POOL_SIZE */

/**
 * Dynamic memory configuration - Packet buffer wait queue size
 *
 * Scheduler callbacks queue size
 */
/* #undef CONFIG_ZB_SCHEDULER_Q_SIZE */

/**
 * API for regression tests
 */
/* #undef CONFIG_ZB_STACK_REGRESSION_TESTING_API */

/**
 * MAC only stack
 */
/* #undef CONFIG_ZB_MAC_ONLY_STACK */

/**
 * Allow platform sleep
 */
#define CONFIG_ZB_USE_SLEEP y

#endif /* LIBZBOSS_CONFIG_ED_H__ */
