大屏共建-miracast投屏多source端需求-第二路投屏失败问题分析
问题现象:
1.大屏作为sink端,小米作为source端,成功投屏到大屏上
2.然后荣耀手机也作为source端,可以搜索大屏设备但投屏到大屏上失败。
日志分析:大屏端日志

代码流程分析:
// 注意这里面的size!
void P2pStateMachine::DhcpResultNotify::OnDhcpServerSuccess(const char *ifname,
DhcpStationInfo *stationInfos, size_t size)
{
WIFI_LOGI("Dhcp notify ServerSuccess. ifname:%{private}s", ifname);
std::vector<GcInfo> gcInfos;
for (size_t i = 0; i < size; i++) {
GcInfo gcInfo;
gcInfo.mac = stationInfos[i].macAddr;
gcInfo.ip = stationInfos[i].ipAddr;
gcInfo.host = stationInfos[i].deviceName;
gcInfos.emplace_back(gcInfo);
}
pP2pStateMachine->AddClientInfo(gcInfos);
}
ErrCode P2pStateMachine::AddClientInfo(std::vector<GcInfo> &gcInfos)
{
std::lock_guard<std::mutex> lock(m_gcJoinmutex);
WifiP2pGroupInfo groupInfo = groupManager.GetCurrentGroup();
if (!groupInfo.IsGroupOwner()) {
WIFI_LOGE("this device is not Group owner");
return ErrCode::WIFI_OPT_FAILED;
}
WifiP2pDevice device;
GcInfo gcInfo;
if (!IsMatchClientDevice(gcInfos, device, gcInfo)) {
WIFI_LOGE("current connected device not found the Gc"); // 日志中没有这句打印!
return ErrCode::WIFI_OPT_FAILED;
}
GcInfo joinGc;
joinGc.ip = gcInfo.ip;
joinGc.host = device.GetDeviceName();
joinGc.mac = device.GetDeviceAddress();
BroadcastP2pGcJoinGroup(joinGc);
return ErrCode::WIFI_OPT_FAILED;
}

原因及解决方案:


更多推荐
所有评论(0)