aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Lin <simonlin@google.com>2021-05-06 14:28:45 +0800
committerGitHub <noreply@github.com>2021-05-05 23:28:45 -0700
commit473be9c04c7525902ba6b59df9733bb6848399a3 (patch)
treea7d10e2af792823cadacc4d31fb14e7c54735759 /src
parent0152e5b1bf34177dc7459103eaa036ad22520bfd (diff)
downloadot-br-posix-473be9c04c7525902ba6b59df9733bb6848399a3.tar.gz
[trel] enable TREL by default (#803)
Diffstat (limited to 'src')
-rw-r--r--src/agent/main.cpp28
-rw-r--r--src/agent/ncp_openthread.cpp15
-rw-r--r--src/agent/ncp_openthread.hpp6
-rw-r--r--src/agent/otbr-agent.default.in2
4 files changed, 32 insertions, 19 deletions
diff --git a/src/agent/main.cpp b/src/agent/main.cpp
index 09b0ae69..a429a5b2 100644
--- a/src/agent/main.cpp
+++ b/src/agent/main.cpp
@@ -191,7 +191,8 @@ static int Mainloop(otbr::AgentInstance &aInstance, const char *aInterfaceName)
static void PrintHelp(const char *aProgramName)
{
- fprintf(stderr, "Usage: %s [-I interfaceName] [-B backboneIfName] [-d DEBUG_LEVEL] [-v] RADIO_URL\n", aProgramName);
+ fprintf(stderr, "Usage: %s [-I interfaceName] [-B backboneIfName] [-d DEBUG_LEVEL] [-v] RADIO_URL [RADIO_URL]\n",
+ aProgramName);
fprintf(stderr, "%s", otSysGetRadioUrlHelpString());
}
@@ -213,13 +214,14 @@ static void OnAllocateFailed(void)
static int realmain(int argc, char *argv[])
{
- otbrLogLevel logLevel = OTBR_LOG_INFO;
- int opt;
- int ret = EXIT_SUCCESS;
- const char * interfaceName = kDefaultInterfaceName;
- const char * backboneInterfaceName = "";
- bool verbose = false;
- bool printRadioVersion = false;
+ otbrLogLevel logLevel = OTBR_LOG_INFO;
+ int opt;
+ int ret = EXIT_SUCCESS;
+ const char * interfaceName = kDefaultInterfaceName;
+ const char * backboneInterfaceName = "";
+ bool verbose = false;
+ bool printRadioVersion = false;
+ std::vector<const char *> radioUrls;
std::set_new_handler(OnAllocateFailed);
@@ -268,13 +270,17 @@ static int realmain(int argc, char *argv[])
otbrLogInit(kSyslogIdent, logLevel, verbose);
otbrLogInfo("Running %s", OTBR_PACKAGE_VERSION);
otbrLogInfo("Thread version: %s", otbr::Ncp::ControllerOpenThread::GetThreadVersion());
- VerifyOrExit(optind < argc, ret = EXIT_FAILURE);
-
otbrLogInfo("Thread interface: %s", interfaceName);
otbrLogInfo("Backbone interface: %s", backboneInterfaceName);
+ for (int i = optind; i < argc; i++)
+ {
+ otbrLogInfo("Radio URL: %s", argv[i]);
+ radioUrls.push_back(argv[i]);
+ }
+
{
- otbr::Ncp::ControllerOpenThread ncpOpenThread{interfaceName, argv[optind], backboneInterfaceName};
+ otbr::Ncp::ControllerOpenThread ncpOpenThread{interfaceName, radioUrls, backboneInterfaceName};
otbr::AgentInstance instance(ncpOpenThread);
otbr::InstanceParams::Get().SetThreadIfName(interfaceName);
diff --git a/src/agent/ncp_openthread.cpp b/src/agent/ncp_openthread.cpp
index 0b50f4a4..a78eeeb1 100644
--- a/src/agent/ncp_openthread.cpp
+++ b/src/agent/ncp_openthread.cpp
@@ -60,17 +60,22 @@ namespace Ncp {
static const uint16_t kThreadVersion11 = 2; ///< Thread Version 1.1
static const uint16_t kThreadVersion12 = 3; ///< Thread Version 1.2
-ControllerOpenThread::ControllerOpenThread(const char *aInterfaceName,
- const char *aRadioUrl,
- const char *aBackboneInterfaceName)
+ControllerOpenThread::ControllerOpenThread(const char * aInterfaceName,
+ const std::vector<const char *> &aRadioUrls,
+ const char * aBackboneInterfaceName)
: mInstance(nullptr)
{
+ VerifyOrDie(aRadioUrls.size() <= OT_PLATFORM_CONFIG_MAX_RADIO_URLS, "Too many Radio URLs!");
+
memset(&mConfig, 0, sizeof(mConfig));
mConfig.mInterfaceName = aInterfaceName;
mConfig.mBackboneInterfaceName = aBackboneInterfaceName;
- mConfig.mRadioUrl = aRadioUrl;
- mConfig.mSpeedUpFactor = 1;
+ for (const char *url : aRadioUrls)
+ {
+ mConfig.mRadioUrls[mConfig.mRadioUrlNum++] = url;
+ }
+ mConfig.mSpeedUpFactor = 1;
}
ControllerOpenThread::~ControllerOpenThread(void)
diff --git a/src/agent/ncp_openthread.hpp b/src/agent/ncp_openthread.hpp
index b9ea069f..f7bf5596 100644
--- a/src/agent/ncp_openthread.hpp
+++ b/src/agent/ncp_openthread.hpp
@@ -63,11 +63,13 @@ public:
* This constructor initializes this object.
*
* @param[in] aInterfaceName A string of the NCP interface name.
- * @param[in] aRadioUrl The URL describes the radio chip.
+ * @param[in] aRadioUrls The radio URLs (can be IEEE802.15.4 or TREL radio).
* @param[in] aBackboneInterfaceName The Backbone network interface name.
*
*/
- ControllerOpenThread(const char *aInterfaceName, const char *aRadioUrl, const char *aBackboneInterfaceName);
+ ControllerOpenThread(const char * aInterfaceName,
+ const std::vector<const char *> &aRadioUrls,
+ const char * aBackboneInterfaceName);
/**
* This method initalize the NCP controller.
diff --git a/src/agent/otbr-agent.default.in b/src/agent/otbr-agent.default.in
index 417abbde..a353d84d 100644
--- a/src/agent/otbr-agent.default.in
+++ b/src/agent/otbr-agent.default.in
@@ -1,4 +1,4 @@
# Default settings for otbr-agent. This file is sourced by systemd
# Options to pass to otbr-agent
-OTBR_AGENT_OPTS="-I wpan0 -B @OTBR_INFRA_IF_NAME@ spinel+hdlc+uart:///dev/ttyACM0"
+OTBR_AGENT_OPTS="-I wpan0 -B @OTBR_INFRA_IF_NAME@ spinel+hdlc+uart:///dev/ttyACM0 trel://@OTBR_INFRA_IF_NAME@"