mirror of
https://github.com/espressif/openthread.git
synced 2026-06-06 05:24:51 +00:00
b3d3b5c3c7
When `OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE` is active, this change mandates that the vendor name string MUST begin with the "RD:" prefix. This ensures that reference devices are clearly and consistently identifiable through network diagnostic queries. The enforcement is applied at two levels: - A compile-time `static_assert` is added to validate the default `OPENTHREAD_CONFIG_NET_DIAG_VENDOR_NAME` at build time. This uses a new `constexpr` helper utility `CheckConstStringPrefix()`. - A runtime check is added to `otThreadSetVendorName()`, which will now return `OT_ERROR_INVALID_ARGS` if an invalid name is provided on a reference device build. All related test configurations (`scan-build`, `toranj`, `nexus`) and CLI tests are updated to reflect this new requirement and validate it.
OpenThread Control Interface
The OpenThread Control Interface (OTCI) is a library which provides uniform Python interfaces to connect and control various kinds of devices running OpenThread.
Supported device types
- OpenThread CLI
- SOC device via Serial
- OpenThread NCP (limited support via pyspinel)
- SOC device via Serial
- OpenThread Border Router
- OTBR device via SSH
Example
import otci
# Connect to an OTBR device via SSH
node1 = otci.connect_otbr_ssh("192.168.1.101")
# Connect to an OpenThread CLI device via Serial
node2 = otci.connect_cli_serial("/dev/ttyACM0"))
# Start node1 and wait for it to become the Leader
node1.dataset_init_buffer()
node1.dataset_set_buffer(network_name='test', network_key='00112233445566778899aabbccddeeff', panid=0xface, channel=11)
node1.dataset_commit_buffer('active')
node1.ifconfig_up()
node1.thread_start()
node1.wait(5)
assert node1.get_state() == "leader"
# Start the Commissioner role on node1
node1.commissioner_start()
node1.wait(3)
node1.commissioner_add_joiner("TEST123",eui64='*')
# Start node2
node2.ifconfig_up()
node2.set_router_selection_jitter(1)
# Start the Joiner role on node2 and wait for it to join the network
node2.joiner_start("TEST123")
node2.wait(10, expect_line="Join success")
# Wait for node 2 to become a Router
node2.thread_start()
node2.wait(5)
assert node2.get_state() == "router"