关键字

软总线,OpenSession

问题描述

XX开发版同RK3568 eth组网,无法打开对端设备的音乐应用。

问题原因

应用侧StartAility 时,软总线OpenSession 失败,导致应用扭转业务失败。

分析过程

查看日志,可以看见,OpenSession 失败,往前查看日志,软总线在选路时,本地的网络能力值为local 0。导致软总线选路失败。

img

在eth 组网的情况下,该local 值应该为64,可见,软总线模块没有正确获取网络特征值。手动插拔开发版网线,软总线模块的网络监听log没有打印对应的网络特征值变化。

抓取开发板开机log,可以看见软总线的网络监听注册失败。开机后,获取hdc shell 获取一下网络模块的进程,网络模块的进程存在,根据分析软总线模块的代码,该问题应该是软总线SA在网络模块SA前启动导致。

软总线的网络监听注册失败:

img


代码位置:foundation/communication/dsoftbus/adapter/common/bus_center/network/lnn_netmanager_listener.cpp

解决方案

软总线SA在网络模块SA前启动,导致注册网络模块监听失败,调用可以调用元能力的SubscribeSystemAbility 方法在软总线中注册网络模块SA的启动监听。

int32_t LnnSubcribeNetManagerService(void)
{
    LNN_LOGI(LNN_BUILDER, "subscribe net manager service call");
    OHOS::sptr<OHOS::ISystemAbilityManager> samgrProxy =
        OHOS::SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
    if (samgrProxy == nullptr) {
        LNN_LOGE(LNN_BUILDER, "abilityManager is nullptr");
        return false;
    }
    OHOS::sptr<OHOS::NetManagerChangeListener> listener = new (std::nothrow) OHOS::NetManagerChangeListener();
    if (listener == nullptr) {
        LNN_LOGE(LNN_BUILDER, "failed to create listener");
        return false;
    }
    int32_t ret = samgrProxy->SubscribeSystemAbility(OHOS::COMM_NET_CONN_MANAGER_SYS_ABILITY_ID, listener);
    if (ret != OHOS::ERR_OK) {
        LNN_LOGE(LNN_BUILDER, "subscribe system ability failed, ret=%{public}d", ret);
        return false;
    }
    LNN_LOGI(LNN_BUILDER, "subscribe net manager service success");
    return SOFTBUS_OK;
}

void NetManagerChangeListener::OnAddSystemAbility(int32_t systemAbilityId, const std::string& deviceId)
{
    LNN_LOGI(LNN_BUILDER, "net manager SA add %{public}d", systemAbilityId);
    if (systemAbilityId == COMM_NET_CONN_MANAGER_SYS_ABILITY_ID) {
        LNN_LOGE(LNN_BUILDER, "net manager SA add");
        LnnInitNetManagerMonitorImpl();
    }
}

完整代码可以参考附件patch。

合入patch 修改后,在开发板在开机启动时,有 RegisterIfacesStateChanged succ 打印。

分布式组网认证并进行扭转业务,app 扭转成功。日志显示网络特特征值local =64,进行eth热插拔,网络监听正常相应,问题解决。

相关文件下载
dsoftbus_oh.patch.txt
8.12 KB
下载
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐