From 5cc95e3373fd75b99a91d40f8fd0d3a2053bc0e8 Mon Sep 17 00:00:00 2001 From: Zhanglong Xia Date: Thu, 12 Oct 2023 15:24:35 +0800 Subject: [PATCH] update the thread_radio based on latest definition of SpinelInterface OpenThread has changed the functions of SpinelInterface, which causes the build errors of the Thread HAL service. This commit updates the thread_radio based on the latest definition of SpinelInterface. Bug: b/304914440 Test: Build and run Thread stack on cuttlefish. Change-Id: Ie92aedc925c771748424bdbae0ae1d340b154bb2 --- threadnetwork/aidl/default/thread_chip.cpp | 23 ++++++++++------------ threadnetwork/aidl/default/thread_chip.hpp | 1 + 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/threadnetwork/aidl/default/thread_chip.cpp b/threadnetwork/aidl/default/thread_chip.cpp index 9358ebae2c..ed34e630b8 100644 --- a/threadnetwork/aidl/default/thread_chip.cpp +++ b/threadnetwork/aidl/default/thread_chip.cpp @@ -32,23 +32,19 @@ namespace hardware { namespace threadnetwork { ThreadChip::ThreadChip(char* url) : mUrl(), mRxFrameBuffer(), mCallback(nullptr) { - static const char kHdlcProtocol[] = "spinel+hdlc"; - static const char kSpiProtocol[] = "spinel+spi"; - const char* protocol; + const char* interfaceName; CHECK_EQ(mUrl.Init(url), 0); - protocol = mUrl.GetProtocol(); - CHECK_NE(protocol, nullptr); + interfaceName = mUrl.GetProtocol(); + CHECK_NE(interfaceName, nullptr); - if (memcmp(protocol, kSpiProtocol, strlen(kSpiProtocol)) == 0) { - mSpinelInterface = std::make_shared(handleReceivedFrameJump, this, - mRxFrameBuffer); - } else if (memcmp(protocol, kHdlcProtocol, strlen(kHdlcProtocol)) == 0) { - mSpinelInterface = std::make_shared(handleReceivedFrameJump, this, - mRxFrameBuffer); + if (ot::Posix::SpiInterface::IsInterfaceNameMatch(interfaceName)) { + mSpinelInterface = std::make_shared(mUrl); + } else if (ot::Posix::HdlcInterface::IsInterfaceNameMatch(interfaceName)) { + mSpinelInterface = std::make_shared(mUrl); } else { - ALOGE("The protocol \"%s\" is not supported", protocol); + ALOGE("The interface \"%s\" is not supported", interfaceName); exit(EXIT_FAILURE); } @@ -106,7 +102,8 @@ ndk::ScopedAStatus ThreadChip::initChip(const std::shared_ptrInit(mUrl) != OT_ERROR_NONE) { + if (mSpinelInterface->Init(handleReceivedFrameJump, this, mRxFrameBuffer) != + OT_ERROR_NONE) { return errorStatus(ERROR_FAILED, "Failed to initialize the interface"); } diff --git a/threadnetwork/aidl/default/thread_chip.hpp b/threadnetwork/aidl/default/thread_chip.hpp index 680580a29d..30046ef040 100644 --- a/threadnetwork/aidl/default/thread_chip.hpp +++ b/threadnetwork/aidl/default/thread_chip.hpp @@ -20,6 +20,7 @@ #include #include "lib/spinel/spinel_interface.hpp" +#include "lib/url/url.hpp" #include "mainloop.hpp" #include