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
This commit is contained in:
Zhanglong Xia 2023-10-12 15:24:35 +08:00
parent b8c23a8a7d
commit 5cc95e3373
2 changed files with 11 additions and 13 deletions

View file

@ -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<ot::Posix::SpiInterface>(handleReceivedFrameJump, this,
mRxFrameBuffer);
} else if (memcmp(protocol, kHdlcProtocol, strlen(kHdlcProtocol)) == 0) {
mSpinelInterface = std::make_shared<ot::Posix::HdlcInterface>(handleReceivedFrameJump, this,
mRxFrameBuffer);
if (ot::Posix::SpiInterface::IsInterfaceNameMatch(interfaceName)) {
mSpinelInterface = std::make_shared<ot::Posix::SpiInterface>(mUrl);
} else if (ot::Posix::HdlcInterface::IsInterfaceNameMatch(interfaceName)) {
mSpinelInterface = std::make_shared<ot::Posix::HdlcInterface>(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_ptr<IThreadChipCallbac
if (in_callback == nullptr) {
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
} else if (mCallback == nullptr) {
if (mSpinelInterface->Init(mUrl) != OT_ERROR_NONE) {
if (mSpinelInterface->Init(handleReceivedFrameJump, this, mRxFrameBuffer) !=
OT_ERROR_NONE) {
return errorStatus(ERROR_FAILED, "Failed to initialize the interface");
}

View file

@ -20,6 +20,7 @@
#include <aidl/android/hardware/threadnetwork/IThreadChipCallback.h>
#include "lib/spinel/spinel_interface.hpp"
#include "lib/url/url.hpp"
#include "mainloop.hpp"
#include <android/binder_auto_utils.h>