Files
openthread/tests/scripts/expect/cli-tcat-advertisement.exp
Esko Dijk d28ced5a9a [ble][tcat] add BLE 'non-advertising' state, TCAT active/standby states, and timed activation (#11802)
This adds a BLE 'non-advertising' state in which BLE is enabled for connections, but not advertising.
- If the TCAT agent is not started and BLE is started, BLE advertising will be enabled by default.
- If the TCAT agent is started, then BLE advertising is under control of the TCAT agent - depending on its state.

The TCAT agent, while started, can be now in standby mode or in active mode. In standby, it doesn't
advertise and doesn't allow incoming TCAT connections. In active mode, it allows both advertising and incoming
connections. Timed activation of the active mode is also possible. CLI commands are added to test the new modes and
timed activation.

Existing architecture is not changed (BLE-Secure is in control and has all APIs to access TCAT agent).
It also fixes some (API) documentation and clarifies this where needed. Also, an error-value bugfix is done.

The TcatAgent is now added to instance.hpp/cpp, because that is required to use a timer from within
TcatAgent.

Log messages of TcatAgent are shortened and more often try to use an identical constant string value.
This saves memory in the binary, due to string re-use.

The "join callback" is clarified and extended to support callback to the application when the TCAT Commissioner
instructs the TCAT Device to try join a Thread network, or leave a Thread network.
2025-10-06 12:27:01 -07:00

120 lines
3.1 KiB
Plaintext
Executable File

#!/usr/bin/expect -f
#
# Copyright (c) 2022, 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.
#
source "tests/scripts/expect/_common.exp"
spawn_node 1 "cli"
send "tcat advid ianapen f378\n"
expect_line "Done"
send "tcat advid\n"
expect_line "type ianapen, value: f378"
expect_line "Done"
send "tcat advid ianapen f378aabb\n"
expect_line "Done"
send "tcat advid\n"
expect_line "type ianapen, value: f378aabb"
expect_line "Done"
send "tcat advid oui24 f378aa\n"
expect_line "Done"
send "tcat advid\n"
expect_line "type oui24, value: f378aa"
expect_line "Done"
send "tcat advid oui36 f378aabbcc\n"
expect_line "Done"
send "tcat advid\n"
expect_line "type oui36, value: f378aabbcc"
expect_line "Done"
send "tcat advid discriminator f378aabbdd\n"
expect_line "Done"
send "tcat advid\n"
expect_line "type discriminator, value: f378aabbdd"
expect_line "Done"
send "tcat advid clear\n"
expect_line "Done"
send "tcat advid\n"
expect_line "Done"
send "tcat devid\n"
expect_line "Done"
send "tcat devid aaaa\n"
expect_line "aaaa"
expect_line "Done"
send "tcat devid\n"
expect_line "aaaa"
expect_line "Done"
send "tcat devid clear\n"
expect_line "Done"
send "tcat devid\n"
expect_line "Done"
# do TCAT agent state transitions. Initially, TCAT agent is stopped by default.
#
send "tcat start\n"
expect_line "Done"
send "tcat standby\n"
expect_line "Done"
send "tcat active\n"
expect_line "Done"
send "tcat standby\n"
expect_line "Done"
send "tcat active 1000 3000\n"
expect_line "Done"
send "tcat standby\n"
expect_line "Done"
send "tcat active 1200000\n"
expect_line "Done"
send "tcat stop\n"
expect_line "Done"
dispose_all