mirror of
https://github.com/espressif/openthread.git
synced 2026-06-05 21:14:49 +00:00
86b8bf6de4
This commit adds support for interacting with nodes via the CLI in the Nexus simulation framework. This enables writing higher-level integration tests that verify stack behavior and state through standard CLI commands. Key changes: - Integrated `Cli::Interpreter` into the `Nexus::Node` class. - Added `Node::InputCli()` to allow sending commands to a node with `printf`-style formatting. - Implemented output capturing logic in `Node::HandleCliOutput()` to buffer and parse CLI responses into individual lines, stored in a `CliOutputArray`. - Added helper methods to `CliOutputLine` for matching and validating the captured output. - Added a new `cli_basic` Nexus test to demonstrate and validate the CLI interaction functionality.
187 lines
9.0 KiB
C
187 lines
9.0 KiB
C
/*
|
|
* Copyright (c) 2024, The OpenThread Authors.
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. Neither the name of the copyright holder nor the
|
|
* names of its contributors may be used to endorse or promote products
|
|
* derived from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
/**
|
|
* This header file defines the OpenThread core configuration for Nexus simulation
|
|
*/
|
|
|
|
#ifndef OT_NEXUS_OPENTHREAD_CORE_NEXUS_CONFIG_H_
|
|
#define OT_NEXUS_OPENTHREAD_CORE_NEXUS_CONFIG_H_
|
|
|
|
#ifndef OPENTHREAD_RADIO
|
|
#define OPENTHREAD_RADIO 0
|
|
#endif
|
|
|
|
#ifndef OPENTHREAD_RADIO
|
|
#define OPENTHREAD_RADIO_CLI 0
|
|
#endif
|
|
|
|
#define OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BLE_TCAT_ENABLE 0
|
|
#define OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BORDER_AGENT_ADMITTER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BORDER_AGENT_ADMITTER_ENABLED_BY_DEFAULT 0
|
|
#define OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BORDER_AGENT_ID_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BORDER_AGENT_COMMISSIONER_EVICTION_API_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BORDER_AGENT_TRACKER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BORDER_AGENT_TXT_DATA_PARSER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_CLIENT_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BORDER_ROUTING_TESTING_API_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BORDER_ROUTING_USE_HEAP_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_CLI_PROMPT_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_COAP_API_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_COAP_BLOCKWISE_TRANSFER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_COAP_OBSERVE_API_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_COMMISSIONER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_COMMISSIONER_MAX_JOINER_ENTRIES 4
|
|
#define OPENTHREAD_CONFIG_DATASET_UPDATER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_DELAY_AWARE_QUEUE_MANAGEMENT_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_DIAG_ENABLE 0
|
|
#define OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_DNS_CLIENT_BIND_UDP_TO_THREAD_NETIF 1
|
|
#define OPENTHREAD_CONFIG_DNS_DSO_ENABLE 0
|
|
#define OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_DNSSD_DISCOVERY_PROXY_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_DNSSD_SERVER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_ECDSA_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_HEAP_EXTERNAL_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_IP6_BR_COUNTERS_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_IP6_MAX_EXT_MCAST_ADDRS 80
|
|
#define OPENTHREAD_CONFIG_MAX_MULTICAST_LISTENERS 80
|
|
#define OPENTHREAD_CONFIG_IP6_MAX_EXT_UCAST_ADDRS 8
|
|
#define OPENTHREAD_CONFIG_IP6_FRAGMENTATION_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_IP6_SLAAC_NUM_ADDRESSES 4
|
|
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_JOINER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
|
|
#define OPENTHREAD_CONFIG_LOG_LEVEL_DYNAMIC_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_LOG_LEVEL_INIT OT_LOG_LEVEL_CRIT
|
|
#define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED
|
|
#define OPENTHREAD_CONFIG_LOG_LEVEL_OVERRIDE_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_LOG_PLATFORM 0
|
|
#define OPENTHREAD_CONFIG_LOG_PREPEND_LEVEL 1
|
|
#define OPENTHREAD_CONFIG_LOG_PREPEND_UPTIME 0
|
|
#define OPENTHREAD_CONFIG_LOG_SUFFIX ""
|
|
#define OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MAC_FILTER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MAC_FILTER_SIZE 80
|
|
#define OPENTHREAD_CONFIG_MESH_DIAG_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MESSAGE_USE_HEAP_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MLE_DEVICE_PROPERTY_LEADER_WEIGHT_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MLE_DISCOVERY_SCAN_REQUEST_CALLBACK_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MLE_INFORM_PREVIOUS_PARENT_ON_REATTACH 1
|
|
#define OPENTHREAD_CONFIG_MLE_IP_ADDRS_PER_CHILD 10
|
|
#define OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MLE_MAX_CHILDREN 128
|
|
#define OPENTHREAD_CONFIG_MLE_LINK_REQUEST_MARGIN_MIN 5
|
|
#define OPENTHREAD_CONFIG_MLE_PARTITION_MERGE_MARGIN_MIN 5
|
|
#define OPENTHREAD_CONFIG_MLR_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MULTICAST_DNS_AUTO_ENABLE_ON_INFRA_IF 1
|
|
#define OPENTHREAD_CONFIG_MULTICAST_DNS_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MULTICAST_DNS_PUBLIC_API_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_NAT64_IDLE_TIMEOUT_SECONDS 600
|
|
#define OPENTHREAD_CONFIG_NET_DIAG_VENDOR_INFO_SET_API_ENABLE OPENTHREAD_FTD
|
|
#define OPENTHREAD_CONFIG_NET_DIAG_VENDOR_MODEL "Nexus Simulation"
|
|
#define OPENTHREAD_CONFIG_NET_DIAG_VENDOR_NAME "RD:OpenThread by Google Nest"
|
|
#define OPENTHREAD_CONFIG_NET_DIAG_VENDOR_SW_VERSION "OT-simul-nexus"
|
|
#define OPENTHREAD_CONFIG_NET_DIAG_VENDOR_OUI 0x020100
|
|
#define OPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_NUM_MESSAGE_BUFFERS 256
|
|
#define OPENTHREAD_CONFIG_PARENT_SEARCH_BACKOFF_INTERVAL (10 * 60)
|
|
#define OPENTHREAD_CONFIG_PLATFORM_DNS_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_PLATFORM_DNSSD_ALLOW_RUN_TIME_SELECTION 0
|
|
#define OPENTHREAD_CONFIG_PLATFORM_DNSSD_ENABLE 0
|
|
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
|
#define OPENTHREAD_CONFIG_PLATFORM_UDP_ENABLE 1
|
|
#endif
|
|
#define OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE 0
|
|
#define OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE 0
|
|
#define OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE 0
|
|
#define OPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_RADIO_STATS_ENABLE 0
|
|
#define OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_SEEKER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_DEFAULT_MODE 0
|
|
#define OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_SRP_SERVER_ADVERTISING_PROXY_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_SRP_SERVER_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_TCP_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_TLS_ENABLE 0
|
|
#define OPENTHREAD_CONFIG_TMF_ADDRESS_CACHE_ENTRIES 256
|
|
#define OPENTHREAD_CONFIG_TMF_ADDRESS_CACHE_MAX_SNOOP_ENTRIES 16
|
|
#define OPENTHREAD_CONFIG_TMF_ADDRESS_QUERY_INITIAL_RETRY_DELAY 4
|
|
#define OPENTHREAD_CONFIG_TMF_ADDRESS_QUERY_MAX_RETRY_DELAY 120
|
|
#define OPENTHREAD_CONFIG_TMF_ADDRESS_QUERY_TIMEOUT 6
|
|
#define OPENTHREAD_CONFIG_TMF_ANYCAST_LOCATOR_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_TMF_NETDIAG_CLIENT_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_TMF_SNOOP_CACHE_ENTRY_TIMEOUT 3
|
|
#define OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS 4
|
|
#define OPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_TREL_MANAGE_DNSSD_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_TREL_USE_HEAP_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_UPTIME_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_USE_STD_NEW 1
|
|
#define OPENTHREAD_CONFIG_VERHOEFF_CHECKSUM_ENABLE 1
|
|
|
|
/**
|
|
* @def OPENTHREAD_NEXUS_CONFIG_GRPC_ENABLE
|
|
*
|
|
* Define to 1 to enable gRPC support in Nexus simulation.
|
|
*
|
|
*/
|
|
#ifndef OPENTHREAD_NEXUS_CONFIG_GRPC_ENABLE
|
|
#define OPENTHREAD_NEXUS_CONFIG_GRPC_ENABLE 0
|
|
#endif
|
|
|
|
// CLI configs
|
|
#define OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH 800
|
|
#define OPENTHREAD_CONFIG_CLI_LOG_INPUT_OUTPUT_ENABLE 1
|
|
#define OPENTHREAD_CONFIG_CLI_LOG_INPUT_OUTPUT_LEVEL OT_LOG_LEVEL_INFO
|
|
|
|
#endif // OT_NEXUS_OPENTHREAD_CORE_NEXUS_CONFIG_H_
|