/* * Copyright (c) 2018 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ /** * @file * This file includes Zephyr compile-time configuration constants * for OpenThread. */ #ifndef OPENTHREAD_CORE_ZEPHYR_CONFIG_H_ #define OPENTHREAD_CORE_ZEPHYR_CONFIG_H_ #include #include /** * @def OPENTHREAD_CONFIG_PLATFORM_ASSERT_MANAGEMENT * * The assert is managed by platform defined logic when this flag is set. * */ #ifndef OPENTHREAD_CONFIG_PLATFORM_ASSERT_MANAGEMENT #define OPENTHREAD_CONFIG_PLATFORM_ASSERT_MANAGEMENT 1 #endif /** * @def OPENTHREAD_CONFIG_NUM_MESSAGE_BUFFERS * * The number of message buffers in the buffer pool. * */ #ifdef CONFIG_OPENTHREAD_NUM_MESSAGE_BUFFERS #define OPENTHREAD_CONFIG_NUM_MESSAGE_BUFFERS \ CONFIG_OPENTHREAD_NUM_MESSAGE_BUFFERS #endif /** * @def OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS * * The maximum number of state-changed callback handlers * (set using `otSetStateChangedCallback()`). * */ #ifdef CONFIG_OPENTHREAD_MAX_STATECHANGE_HANDLERS #define OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS \ CONFIG_OPENTHREAD_MAX_STATECHANGE_HANDLERS #endif /** * @def OPENTHREAD_CONFIG_TMF_ADDRESS_CACHE_ENTRIES * * The number of EID-to-RLOC cache entries. * */ #ifdef CONFIG_OPENTHREAD_TMF_ADDRESS_CACHE_ENTRIES #define OPENTHREAD_CONFIG_TMF_ADDRESS_CACHE_ENTRIES \ CONFIG_OPENTHREAD_TMF_ADDRESS_CACHE_ENTRIES #endif /** * @def CONFIG_OPENTHREAD_TMF_ADDRESS_CACHE_MAX_SNOOP_ENTRIES * * The maximum number of EID-to-RLOC cache entries that can be used for * "snoop optimization" where an entry is created by inspecting a received message. * */ #ifdef CONFIG_OPENTHREAD_TMF_ADDRESS_CACHE_MAX_SNOOP_ENTRIES #define OPENTHREAD_CONFIG_TMF_ADDRESS_CACHE_MAX_SNOOP_ENTRIES \ CONFIG_OPENTHREAD_TMF_ADDRESS_CACHE_MAX_SNOOP_ENTRIES #endif /** * @def OPENTHREAD_CONFIG_LOG_PREPEND_LEVEL * * Define to prepend the log level to all log messages. * */ #ifdef CONFIG_OPENTHREAD_LOG_PREPEND_LEVEL_ENABLE #define OPENTHREAD_CONFIG_LOG_PREPEND_LEVEL 1 #endif /** * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_ACK_TIMEOUT_ENABLE * * Define to 1 to enable software ACK timeout logic. * */ #ifdef CONFIG_OPENTHREAD_MAC_SOFTWARE_ACK_TIMEOUT_ENABLE #define OPENTHREAD_CONFIG_MAC_SOFTWARE_ACK_TIMEOUT_ENABLE 1 #endif /** * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_RETRANSMIT_ENABLE * * Define to 1 to enable software retransmission logic. * */ #ifdef CONFIG_OPENTHREAD_MAC_SOFTWARE_RETRANSMIT_ENABLE #define OPENTHREAD_CONFIG_MAC_SOFTWARE_RETRANSMIT_ENABLE 1 #endif /** * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_CSMA_BACKOFF_ENABLE * * Define to 1 if you want to enable software CSMA-CA backoff logic. * */ #ifdef CONFIG_OPENTHREAD_MAC_SOFTWARE_CSMA_BACKOFF_ENABLE #define OPENTHREAD_CONFIG_MAC_SOFTWARE_CSMA_BACKOFF_ENABLE 1 #endif /** * @def OPENTHREAD_CONFIG_MLE_INFORM_PREVIOUS_PARENT_ON_REATTACH * * Define as 1 for a child to inform its previous parent when it attaches to a new parent. * */ #ifdef CONFIG_OPENTHREAD_MLE_INFORM_PREVIOUS_PARENT_ON_REATTACH #define OPENTHREAD_CONFIG_MLE_INFORM_PREVIOUS_PARENT_ON_REATTACH 1 #endif /** * @def OPENTHREAD_CONFIG_PARENT_SEARCH_ENABLE * * Define as 1 to enable periodic parent search feature. * */ #ifdef CONFIG_OPENTHREAD_PARENT_SEARCH #define OPENTHREAD_CONFIG_PARENT_SEARCH_ENABLE 1 /** * @def OPENTHREAD_CONFIG_PARENT_SEARCH_CHECK_INTERVAL * * Specifies the interval in seconds for a child to check the trigger condition * to perform a parent search. * */ #define OPENTHREAD_CONFIG_PARENT_SEARCH_CHECK_INTERVAL \ CONFIG_OPENTHREAD_PARENT_SEARCH_CHECK_INTERVAL /** * @def OPENTHREAD_CONFIG_PARENT_SEARCH_BACKOFF_INTERVAL * * Specifies the backoff interval in seconds for a child to not perform a parent * search after triggering one. * */ #define OPENTHREAD_CONFIG_PARENT_SEARCH_BACKOFF_INTERVAL \ CONFIG_OPENTHREAD_PARENT_SEARCH_BACKOFF_INTERVAL /** * @def OPENTHREAD_CONFIG_PARENT_SEARCH_RSS_THRESHOLD * * Specifies the RSS threshold used to trigger a parent search. * */ #define OPENTHREAD_CONFIG_PARENT_SEARCH_RSS_THRESHOLD \ CONFIG_OPENTHREAD_PARENT_SEARCH_RSS_THRESHOLD #endif /** * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_TX_TIMING_ENABLE * * Define to 1 to enable software transmission target time logic. * */ #ifndef OPENTHREAD_CONFIG_MAC_SOFTWARE_TX_TIMING_ENABLE #define OPENTHREAD_CONFIG_MAC_SOFTWARE_TX_TIMING_ENABLE \ (OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2) #endif /** * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_RX_TIMING_ENABLE * * Define to 1 to enable software reception target time logic. * */ #ifndef OPENTHREAD_CONFIG_MAC_SOFTWARE_RX_TIMING_ENABLE #define OPENTHREAD_CONFIG_MAC_SOFTWARE_RX_TIMING_ENABLE \ (OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2) #endif /** * @def OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT * * Define as 1 to support IEEE 802.15.4-2015 Header IE (Information Element) generation and parsing, * it must be set to support following features: * 1. Time synchronization service feature (i.e., OPENTHREAD_CONFIG_TIME_SYNC_ENABLE is set). * 2. Thread 1.2. * * @note If it's enabled, platform must support interrupt context and concurrent access AES. * */ #ifndef OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT #if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE || \ (OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2) #define OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT 1 #else #define OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT 0 #endif #endif /** * @def OPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE * * Define to 1 if you want to enable microsecond backoff timer implemented * in platform. * */ #define OPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE \ (CONFIG_OPENTHREAD_CSL_RECEIVER && \ (OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2)) /* Zephyr does not use OpenThread's heap. mbedTLS will use heap memory allocated * by Zephyr. Here, we use some dummy values to prevent OpenThread warnings. */ /** * @def OPENTHREAD_CONFIG_HEAP_SIZE * * The size of heap buffer when DTLS is enabled. * */ #define OPENTHREAD_CONFIG_HEAP_INTERNAL_SIZE (4 * sizeof(void *)) /** * @def OPENTHREAD_CONFIG_HEAP_SIZE_NO_DTLS * * The size of heap buffer when DTLS is disabled. * */ #define OPENTHREAD_CONFIG_HEAP_INTERNAL_SIZE_NO_DTLS (4 * sizeof(void *)) /* Disable software source address matching. */ /** * @def RADIO_CONFIG_SRC_MATCH_SHORT_ENTRY_NUM * * The number of short source address table entries. * */ #define RADIO_CONFIG_SRC_MATCH_SHORT_ENTRY_NUM 0 /** * @def OPENTHREAD_CONFIG_PLATFORM_INFO * * The platform-specific string to insert into the OpenThread version string. * */ #ifdef CONFIG_OPENTHREAD_CONFIG_PLATFORM_INFO #define OPENTHREAD_CONFIG_PLATFORM_INFO CONFIG_OPENTHREAD_CONFIG_PLATFORM_INFO #endif /* CONFIG_OPENTHREAD_CONFIG_PLATFORM_INFO */ /** * @def OPENTHREAD_CONFIG_MLE_MAX_CHILDREN * * The maximum number of children. * */ #ifdef CONFIG_OPENTHREAD_MAX_CHILDREN #define OPENTHREAD_CONFIG_MLE_MAX_CHILDREN CONFIG_OPENTHREAD_MAX_CHILDREN #endif /* CONFIG_OPENTHREAD_MAX_CHILDREN */ /** * @def OPENTHREAD_CONFIG_MLE_IP_ADDRS_PER_CHILD * * The maximum number of supported IPv6 address registrations per child. * */ #ifdef CONFIG_OPENTHREAD_MAX_IP_ADDR_PER_CHILD #define OPENTHREAD_CONFIG_MLE_IP_ADDRS_PER_CHILD \ CONFIG_OPENTHREAD_MAX_IP_ADDR_PER_CHILD #endif /* CONFIG_OPENTHREAD_MAX_IP_ADDR_PER_CHILD */ /** * @def RADIO_CONFIG_SRC_MATCH_EXT_ENTRY_NUM * * The number of extended source address table entries. * */ #define RADIO_CONFIG_SRC_MATCH_EXT_ENTRY_NUM 0 /** * @def OPENTHREAD_CONFIG_CSL_RECEIVE_TIME_AHEAD * * For some reasons, CSL receivers wake up a little later than expected. This * variable specifies how much time that CSL receiver would wake up earlier * than the expected sample window. The time is in unit of microseconds. * */ #ifdef CONFIG_OPENTHREAD_CSL_RECEIVE_TIME_AHEAD #define OPENTHREAD_CONFIG_CSL_RECEIVE_TIME_AHEAD \ CONFIG_OPENTHREAD_CSL_RECEIVE_TIME_AHEAD #endif /* CONFIG_OPENTHREAD_CSL_RECEIVE_TIME_AHEAD */ /** * @def OPENTHREAD_CONFIG_MIN_RECEIVE_ON_AHEAD * * The minimum time (microseconds) that radio has to be in receive mode before the start of the MHR. * */ #ifdef CONFIG_OPENTHREAD_MIN_RECEIVE_ON_AHEAD #define OPENTHREAD_CONFIG_MIN_RECEIVE_ON_AHEAD CONFIG_OPENTHREAD_MIN_RECEIVE_ON_AHEAD #endif /* CONFIG_OPENTHREAD_MIN_RECEIVE_ON_AHEAD */ /** * @def OPENTHREAD_CONFIG_MIN_RECEIVE_ON_AFTER * * The minimum time (microseconds) that radio has to be in receive mode after the start of the MHR . * */ #ifdef CONFIG_OPENTHREAD_MIN_RECEIVE_ON_AFTER #define OPENTHREAD_CONFIG_MIN_RECEIVE_ON_AFTER CONFIG_OPENTHREAD_MIN_RECEIVE_ON_AFTER #endif /* CONFIG_OPENTHREAD_MIN_RECEIVE_ON_AFTER */ /** * @def OPENTHREAD_CONFIG_CSL_TIMEOUT * * The default CSL timeout in seconds. * */ #ifdef CONFIG_OPENTHREAD_CSL_TIMEOUT #define OPENTHREAD_CONFIG_CSL_TIMEOUT CONFIG_OPENTHREAD_CSL_TIMEOUT #endif /* CONFIG_OPENTHREAD_CSL_TIMEOUT */ /** * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_TX_SECURITY_ENABLE * * Set to 1 to enable software transmission security logic. * */ #ifdef CONFIG_OPENTHREAD_MAC_SOFTWARE_TX_SECURITY_ENABLE #define OPENTHREAD_CONFIG_MAC_SOFTWARE_TX_SECURITY_ENABLE \ CONFIG_OPENTHREAD_MAC_SOFTWARE_TX_SECURITY_ENABLE #endif /* CONFIG_OPENTHREAD_MAC_SOFTWARE_TX_SECURITY_ENABLE */ /** * @def OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH * * The maximum size of the CLI line in bytes. * */ #ifdef CONFIG_OPENTHREAD_CLI_MAX_LINE_LENGTH #define OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH CONFIG_OPENTHREAD_CLI_MAX_LINE_LENGTH #endif /* CONFIG_OPENTHREAD_CLI_MAX_LINE_LENGTH */ /** * @def OPENTHREAD_CONFIG_CLI_PROMPT_ENABLE * * Enable CLI prompt. * * When enabled, the CLI will print prompt on the output after processing a command. * Otherwise, no prompt is added to the output. * */ #define OPENTHREAD_CONFIG_CLI_PROMPT_ENABLE 0 /** * @def OPENTHREAD_CONFIG_IP6_MAX_EXT_UCAST_ADDRS * * The maximum number of supported IPv6 addresses allows to be externally added. * */ #ifdef CONFIG_OPENTHREAD_IP6_MAX_EXT_UCAST_ADDRS #define OPENTHREAD_CONFIG_IP6_MAX_EXT_UCAST_ADDRS CONFIG_OPENTHREAD_IP6_MAX_EXT_UCAST_ADDRS #endif /* CONFIG_OPENTHREAD_IP6_MAX_EXT_UCAST_ADDRS */ /** * @def OPENTHREAD_CONFIG_IP6_MAX_EXT_MCAST_ADDRS * * The maximum number of supported IPv6 multicast addresses allows to be externally added. * */ #ifdef CONFIG_OPENTHREAD_IP6_MAX_EXT_MCAST_ADDRS #define OPENTHREAD_CONFIG_IP6_MAX_EXT_MCAST_ADDRS CONFIG_OPENTHREAD_IP6_MAX_EXT_MCAST_ADDRS #endif /* CONFIG_OPENTHREAD_IP6_MAX_EXT_MCAST_ADDRS */ /** * @def OPENTHREAD_CONFIG_CLI_TCP_ENABLE * * Enable TCP in the CLI tool. * */ #define OPENTHREAD_CONFIG_CLI_TCP_ENABLE IS_ENABLED(CONFIG_OPENTHREAD_CLI_TCP_ENABLE) /** * @def OPENTHREAD_CONFIG_CRYPTO_LIB * * Selects crypto backend library for OpenThread. * */ #ifdef CONFIG_OPENTHREAD_CRYPTO_PSA #define OPENTHREAD_CONFIG_CRYPTO_LIB OPENTHREAD_CONFIG_CRYPTO_LIB_PSA #endif /** * @def OPENTHREAD_CONFIG_PLATFORM_MAC_KEYS_EXPORTABLE_ENABLE * * Set to 1 if you want to make MAC keys exportable. * */ #ifdef CONFIG_OPENTHREAD_PLATFORM_KEYS_EXPORTABLE_ENABLE #define OPENTHREAD_CONFIG_PLATFORM_MAC_KEYS_EXPORTABLE_ENABLE 1 #endif /** * @def OPENTHREAD_CONFIG_MESSAGE_BUFFER_SIZE * * The size of a message buffer in bytes. * */ #ifdef CONFIG_OPENTHREAD_MESSAGE_BUFFER_SIZE #define OPENTHREAD_CONFIG_MESSAGE_BUFFER_SIZE CONFIG_OPENTHREAD_MESSAGE_BUFFER_SIZE #endif /** * @def OPENTHREAD_CONFIG_MAC_STAY_AWAKE_BETWEEN_FRAGMENTS * * Enable to stay awake between fragments while transmitting a large packet, * and to stay awake after receiving a packet with frame pending set to true. * */ #ifdef CONFIG_OPENTHREAD_MAC_STAY_AWAKE_BETWEEN_FRAGMENTS #define OPENTHREAD_CONFIG_MAC_STAY_AWAKE_BETWEEN_FRAGMENTS \ CONFIG_OPENTHREAD_MAC_STAY_AWAKE_BETWEEN_FRAGMENTS #endif /** * @def OPENTHREAD_CONFIG_POWER_CALIBRATION_ENABLE * * In Zephyr, power calibration is handled by Radio Driver, so it can't be handled on OT level. * */ #ifndef OPENTHREAD_CONFIG_POWER_CALIBRATION_ENABLE #define OPENTHREAD_CONFIG_POWER_CALIBRATION_ENABLE 0 #endif /** * @def OPENTHREAD_CONFIG_RADIO_STATS * * Enable support for Radio Statistics. * */ #ifdef CONFIG_OPENTHREAD_RADIO_STATS #define OPENTHREAD_CONFIG_RADIO_STATS_ENABLE CONFIG_OPENTHREAD_RADIO_STATS #endif #endif /* OPENTHREAD_CORE_ZEPHYR_CONFIG_H_ */