mirror of
https://github.com/espressif/openthread.git
synced 2026-06-06 05:24:51 +00:00
5d09e9ca4f
This commit updates the MLE attach process so that in the first attach cycle device tries a total of six MLE Parent Requests, the first two to routers only followed by four to routers and REEDs. For example, the six Parent Request message will be used before device can decide to act the leader. An MTD in the next attach attempt (if cannot find a parent in first attempt cycle), will go to the model of two Parent Requests (first to routers, then to routers/REEDs). This change impacts the time it takes for a device to start as leader (due to increased number of Parent Request and wait time). This commit updates different test scripts to address the change in the wait time. It adds a new `config.LEADER_STARTUP_DELAY` constants which is used for wait time for leader to start.
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 to become 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 Commissioner 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 Joiner on node2 to join the network
node2.joiner_start("TEST123")
node2.wait(10, expect_line="Join success")
# Wait for node 2 to become Router
node2.thread_start()
node2.wait(5)
assert node2.get_state() == "router"