Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1909c2cb authored by Zhanglong Xia's avatar Zhanglong Xia Committed by Automerger Merge Worker
Browse files

Merge "update the thread_radio based on latest definition of SpinelInterface"...

Merge "update the thread_radio based on latest definition of SpinelInterface" into main am: eec8babb

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2785560



Change-Id: Ifea576b23af88301a62ea3e38973c86e45cfdc94
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 3bde3289 eec8babb
Loading
Loading
Loading
Loading
+10 −13
Original line number Diff line number Diff line
@@ -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");
        }

+1 −0
Original line number Diff line number Diff line
@@ -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>