Loading wifi/1.5/default/hidl_struct_util.cpp +16 −14 Original line number Diff line number Diff line Loading @@ -954,27 +954,29 @@ bool convertLegacyVectorOfDebugRxPacketFateToHidl( bool convertLegacyLinkLayerRadioStatsToHidl( const legacy_hal::LinkLayerRadioStats& legacy_radio_stat, V1_3::StaLinkLayerRadioStats* hidl_radio_stat) { V1_5::StaLinkLayerRadioStats* hidl_radio_stat) { if (!hidl_radio_stat) { return false; } *hidl_radio_stat = {}; hidl_radio_stat->V1_0.onTimeInMs = legacy_radio_stat.stats.on_time; hidl_radio_stat->V1_0.txTimeInMs = legacy_radio_stat.stats.tx_time; hidl_radio_stat->V1_0.rxTimeInMs = legacy_radio_stat.stats.rx_time; hidl_radio_stat->V1_0.onTimeInMsForScan = hidl_radio_stat->radioId = legacy_radio_stat.stats.radio; hidl_radio_stat->V1_3.V1_0.onTimeInMs = legacy_radio_stat.stats.on_time; hidl_radio_stat->V1_3.V1_0.txTimeInMs = legacy_radio_stat.stats.tx_time; hidl_radio_stat->V1_3.V1_0.rxTimeInMs = legacy_radio_stat.stats.rx_time; hidl_radio_stat->V1_3.V1_0.onTimeInMsForScan = legacy_radio_stat.stats.on_time_scan; hidl_radio_stat->V1_0.txTimeInMsPerLevel = hidl_radio_stat->V1_3.V1_0.txTimeInMsPerLevel = legacy_radio_stat.tx_time_per_levels; hidl_radio_stat->onTimeInMsForNanScan = legacy_radio_stat.stats.on_time_nbd; hidl_radio_stat->onTimeInMsForBgScan = hidl_radio_stat->V1_3.onTimeInMsForNanScan = legacy_radio_stat.stats.on_time_nbd; hidl_radio_stat->V1_3.onTimeInMsForBgScan = legacy_radio_stat.stats.on_time_gscan; hidl_radio_stat->onTimeInMsForRoamScan = hidl_radio_stat->V1_3.onTimeInMsForRoamScan = legacy_radio_stat.stats.on_time_roam_scan; hidl_radio_stat->onTimeInMsForPnoScan = hidl_radio_stat->V1_3.onTimeInMsForPnoScan = legacy_radio_stat.stats.on_time_pno_scan; hidl_radio_stat->onTimeInMsForHs20Scan = hidl_radio_stat->V1_3.onTimeInMsForHs20Scan = legacy_radio_stat.stats.on_time_hs20; std::vector<V1_3::WifiChannelStats> hidl_channel_stats; Loading @@ -996,7 +998,7 @@ bool convertLegacyLinkLayerRadioStatsToHidl( hidl_channel_stats.push_back(hidl_channel_stat); } hidl_radio_stat->channelStats = hidl_channel_stats; hidl_radio_stat->V1_3.channelStats = hidl_channel_stats; return true; } Loading Loading @@ -1089,9 +1091,9 @@ bool convertLegacyLinkLayerStatsToHidl( } hidl_stats->iface.peers = hidl_peers_info_stats; // radio legacy_stats conversion. std::vector<V1_3::StaLinkLayerRadioStats> hidl_radios_stats; std::vector<V1_5::StaLinkLayerRadioStats> hidl_radios_stats; for (const auto& legacy_radio_stats : legacy_stats.radios) { V1_3::StaLinkLayerRadioStats hidl_radio_stats; V1_5::StaLinkLayerRadioStats hidl_radio_stats; if (!convertLegacyLinkLayerRadioStatsToHidl(legacy_radio_stats, &hidl_radio_stats)) { return false; Loading wifi/1.5/default/tests/hidl_struct_util_unit_tests.cpp +27 −21 Original line number Diff line number Diff line Loading @@ -180,6 +180,7 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { legacy_stats.iface.num_peers = 1; for (auto& radio : legacy_stats.radios) { radio.stats.radio = rand(); radio.stats.on_time = rand(); radio.stats.tx_time = rand(); radio.stats.rx_time = rand(); Loading Loading @@ -314,48 +315,53 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { EXPECT_EQ(legacy_stats.radios.size(), converted.radios.size()); for (size_t i = 0; i < legacy_stats.radios.size(); i++) { EXPECT_EQ(legacy_stats.radios[i].stats.radio, converted.radios[i].radioId); EXPECT_EQ(legacy_stats.radios[i].stats.on_time, converted.radios[i].V1_0.onTimeInMs); converted.radios[i].V1_3.V1_0.onTimeInMs); EXPECT_EQ(legacy_stats.radios[i].stats.tx_time, converted.radios[i].V1_0.txTimeInMs); converted.radios[i].V1_3.V1_0.txTimeInMs); EXPECT_EQ(legacy_stats.radios[i].stats.rx_time, converted.radios[i].V1_0.rxTimeInMs); converted.radios[i].V1_3.V1_0.rxTimeInMs); EXPECT_EQ(legacy_stats.radios[i].stats.on_time_scan, converted.radios[i].V1_0.onTimeInMsForScan); converted.radios[i].V1_3.V1_0.onTimeInMsForScan); EXPECT_EQ(legacy_stats.radios[i].tx_time_per_levels.size(), converted.radios[i].V1_0.txTimeInMsPerLevel.size()); converted.radios[i].V1_3.V1_0.txTimeInMsPerLevel.size()); for (size_t j = 0; j < legacy_stats.radios[i].tx_time_per_levels.size(); j++) { EXPECT_EQ(legacy_stats.radios[i].tx_time_per_levels[j], converted.radios[i].V1_0.txTimeInMsPerLevel[j]); converted.radios[i].V1_3.V1_0.txTimeInMsPerLevel[j]); } EXPECT_EQ(legacy_stats.radios[i].stats.on_time_nbd, converted.radios[i].onTimeInMsForNanScan); converted.radios[i].V1_3.onTimeInMsForNanScan); EXPECT_EQ(legacy_stats.radios[i].stats.on_time_gscan, converted.radios[i].onTimeInMsForBgScan); converted.radios[i].V1_3.onTimeInMsForBgScan); EXPECT_EQ(legacy_stats.radios[i].stats.on_time_roam_scan, converted.radios[i].onTimeInMsForRoamScan); converted.radios[i].V1_3.onTimeInMsForRoamScan); EXPECT_EQ(legacy_stats.radios[i].stats.on_time_pno_scan, converted.radios[i].onTimeInMsForPnoScan); converted.radios[i].V1_3.onTimeInMsForPnoScan); EXPECT_EQ(legacy_stats.radios[i].stats.on_time_hs20, converted.radios[i].onTimeInMsForHs20Scan); converted.radios[i].V1_3.onTimeInMsForHs20Scan); EXPECT_EQ(legacy_stats.radios[i].channel_stats.size(), converted.radios[i].channelStats.size()); converted.radios[i].V1_3.channelStats.size()); for (size_t k = 0; k < legacy_stats.radios[i].channel_stats.size(); k++) { auto& legacy_channel_st = legacy_stats.radios[i].channel_stats[k]; EXPECT_EQ(WifiChannelWidthInMhz::WIDTH_20, converted.radios[i].channelStats[k].channel.width); EXPECT_EQ(WifiChannelInMhz(legacy_channel_st.channel.center_freq), converted.radios[i].channelStats[k].channel.centerFreq); EXPECT_EQ(WifiChannelInMhz(legacy_channel_st.channel.center_freq0), converted.radios[i].channelStats[k].channel.centerFreq0); EXPECT_EQ(WifiChannelInMhz(legacy_channel_st.channel.center_freq1), converted.radios[i].channelStats[k].channel.centerFreq1); converted.radios[i].V1_3.channelStats[k].channel.width); EXPECT_EQ( WifiChannelInMhz(legacy_channel_st.channel.center_freq), converted.radios[i].V1_3.channelStats[k].channel.centerFreq); EXPECT_EQ( WifiChannelInMhz(legacy_channel_st.channel.center_freq0), converted.radios[i].V1_3.channelStats[k].channel.centerFreq0); EXPECT_EQ( WifiChannelInMhz(legacy_channel_st.channel.center_freq1), converted.radios[i].V1_3.channelStats[k].channel.centerFreq1); EXPECT_EQ(legacy_channel_st.cca_busy_time, converted.radios[i].channelStats[k].ccaBusyTimeInMs); converted.radios[i].V1_3.channelStats[k].ccaBusyTimeInMs); EXPECT_EQ(legacy_channel_st.on_time, converted.radios[i].channelStats[k].onTimeInMs); converted.radios[i].V1_3.channelStats[k].onTimeInMs); } } Loading wifi/1.5/types.hal +15 −0 Original line number Diff line number Diff line Loading @@ -253,6 +253,21 @@ struct StaLinkLayerIfaceStats { vec<StaPeerInfo> peers; }; struct StaLinkLayerRadioStats { /** * Baseline information as defined in HAL 1.3. */ @1.3::StaLinkLayerRadioStats V1_3; /** * Radio ID: An implementation specific value identifying the radio interface for which the * stats are produced. Framework must not interpret this value. It must use this value for * persistently identifying the statistics between calls, * e.g. if the HAL provides them in different order. */ int32_t radioId; }; /** * Link layer stats retrieved via |getLinkLayerStats|. */ Loading Loading
wifi/1.5/default/hidl_struct_util.cpp +16 −14 Original line number Diff line number Diff line Loading @@ -954,27 +954,29 @@ bool convertLegacyVectorOfDebugRxPacketFateToHidl( bool convertLegacyLinkLayerRadioStatsToHidl( const legacy_hal::LinkLayerRadioStats& legacy_radio_stat, V1_3::StaLinkLayerRadioStats* hidl_radio_stat) { V1_5::StaLinkLayerRadioStats* hidl_radio_stat) { if (!hidl_radio_stat) { return false; } *hidl_radio_stat = {}; hidl_radio_stat->V1_0.onTimeInMs = legacy_radio_stat.stats.on_time; hidl_radio_stat->V1_0.txTimeInMs = legacy_radio_stat.stats.tx_time; hidl_radio_stat->V1_0.rxTimeInMs = legacy_radio_stat.stats.rx_time; hidl_radio_stat->V1_0.onTimeInMsForScan = hidl_radio_stat->radioId = legacy_radio_stat.stats.radio; hidl_radio_stat->V1_3.V1_0.onTimeInMs = legacy_radio_stat.stats.on_time; hidl_radio_stat->V1_3.V1_0.txTimeInMs = legacy_radio_stat.stats.tx_time; hidl_radio_stat->V1_3.V1_0.rxTimeInMs = legacy_radio_stat.stats.rx_time; hidl_radio_stat->V1_3.V1_0.onTimeInMsForScan = legacy_radio_stat.stats.on_time_scan; hidl_radio_stat->V1_0.txTimeInMsPerLevel = hidl_radio_stat->V1_3.V1_0.txTimeInMsPerLevel = legacy_radio_stat.tx_time_per_levels; hidl_radio_stat->onTimeInMsForNanScan = legacy_radio_stat.stats.on_time_nbd; hidl_radio_stat->onTimeInMsForBgScan = hidl_radio_stat->V1_3.onTimeInMsForNanScan = legacy_radio_stat.stats.on_time_nbd; hidl_radio_stat->V1_3.onTimeInMsForBgScan = legacy_radio_stat.stats.on_time_gscan; hidl_radio_stat->onTimeInMsForRoamScan = hidl_radio_stat->V1_3.onTimeInMsForRoamScan = legacy_radio_stat.stats.on_time_roam_scan; hidl_radio_stat->onTimeInMsForPnoScan = hidl_radio_stat->V1_3.onTimeInMsForPnoScan = legacy_radio_stat.stats.on_time_pno_scan; hidl_radio_stat->onTimeInMsForHs20Scan = hidl_radio_stat->V1_3.onTimeInMsForHs20Scan = legacy_radio_stat.stats.on_time_hs20; std::vector<V1_3::WifiChannelStats> hidl_channel_stats; Loading @@ -996,7 +998,7 @@ bool convertLegacyLinkLayerRadioStatsToHidl( hidl_channel_stats.push_back(hidl_channel_stat); } hidl_radio_stat->channelStats = hidl_channel_stats; hidl_radio_stat->V1_3.channelStats = hidl_channel_stats; return true; } Loading Loading @@ -1089,9 +1091,9 @@ bool convertLegacyLinkLayerStatsToHidl( } hidl_stats->iface.peers = hidl_peers_info_stats; // radio legacy_stats conversion. std::vector<V1_3::StaLinkLayerRadioStats> hidl_radios_stats; std::vector<V1_5::StaLinkLayerRadioStats> hidl_radios_stats; for (const auto& legacy_radio_stats : legacy_stats.radios) { V1_3::StaLinkLayerRadioStats hidl_radio_stats; V1_5::StaLinkLayerRadioStats hidl_radio_stats; if (!convertLegacyLinkLayerRadioStatsToHidl(legacy_radio_stats, &hidl_radio_stats)) { return false; Loading
wifi/1.5/default/tests/hidl_struct_util_unit_tests.cpp +27 −21 Original line number Diff line number Diff line Loading @@ -180,6 +180,7 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { legacy_stats.iface.num_peers = 1; for (auto& radio : legacy_stats.radios) { radio.stats.radio = rand(); radio.stats.on_time = rand(); radio.stats.tx_time = rand(); radio.stats.rx_time = rand(); Loading Loading @@ -314,48 +315,53 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) { EXPECT_EQ(legacy_stats.radios.size(), converted.radios.size()); for (size_t i = 0; i < legacy_stats.radios.size(); i++) { EXPECT_EQ(legacy_stats.radios[i].stats.radio, converted.radios[i].radioId); EXPECT_EQ(legacy_stats.radios[i].stats.on_time, converted.radios[i].V1_0.onTimeInMs); converted.radios[i].V1_3.V1_0.onTimeInMs); EXPECT_EQ(legacy_stats.radios[i].stats.tx_time, converted.radios[i].V1_0.txTimeInMs); converted.radios[i].V1_3.V1_0.txTimeInMs); EXPECT_EQ(legacy_stats.radios[i].stats.rx_time, converted.radios[i].V1_0.rxTimeInMs); converted.radios[i].V1_3.V1_0.rxTimeInMs); EXPECT_EQ(legacy_stats.radios[i].stats.on_time_scan, converted.radios[i].V1_0.onTimeInMsForScan); converted.radios[i].V1_3.V1_0.onTimeInMsForScan); EXPECT_EQ(legacy_stats.radios[i].tx_time_per_levels.size(), converted.radios[i].V1_0.txTimeInMsPerLevel.size()); converted.radios[i].V1_3.V1_0.txTimeInMsPerLevel.size()); for (size_t j = 0; j < legacy_stats.radios[i].tx_time_per_levels.size(); j++) { EXPECT_EQ(legacy_stats.radios[i].tx_time_per_levels[j], converted.radios[i].V1_0.txTimeInMsPerLevel[j]); converted.radios[i].V1_3.V1_0.txTimeInMsPerLevel[j]); } EXPECT_EQ(legacy_stats.radios[i].stats.on_time_nbd, converted.radios[i].onTimeInMsForNanScan); converted.radios[i].V1_3.onTimeInMsForNanScan); EXPECT_EQ(legacy_stats.radios[i].stats.on_time_gscan, converted.radios[i].onTimeInMsForBgScan); converted.radios[i].V1_3.onTimeInMsForBgScan); EXPECT_EQ(legacy_stats.radios[i].stats.on_time_roam_scan, converted.radios[i].onTimeInMsForRoamScan); converted.radios[i].V1_3.onTimeInMsForRoamScan); EXPECT_EQ(legacy_stats.radios[i].stats.on_time_pno_scan, converted.radios[i].onTimeInMsForPnoScan); converted.radios[i].V1_3.onTimeInMsForPnoScan); EXPECT_EQ(legacy_stats.radios[i].stats.on_time_hs20, converted.radios[i].onTimeInMsForHs20Scan); converted.radios[i].V1_3.onTimeInMsForHs20Scan); EXPECT_EQ(legacy_stats.radios[i].channel_stats.size(), converted.radios[i].channelStats.size()); converted.radios[i].V1_3.channelStats.size()); for (size_t k = 0; k < legacy_stats.radios[i].channel_stats.size(); k++) { auto& legacy_channel_st = legacy_stats.radios[i].channel_stats[k]; EXPECT_EQ(WifiChannelWidthInMhz::WIDTH_20, converted.radios[i].channelStats[k].channel.width); EXPECT_EQ(WifiChannelInMhz(legacy_channel_st.channel.center_freq), converted.radios[i].channelStats[k].channel.centerFreq); EXPECT_EQ(WifiChannelInMhz(legacy_channel_st.channel.center_freq0), converted.radios[i].channelStats[k].channel.centerFreq0); EXPECT_EQ(WifiChannelInMhz(legacy_channel_st.channel.center_freq1), converted.radios[i].channelStats[k].channel.centerFreq1); converted.radios[i].V1_3.channelStats[k].channel.width); EXPECT_EQ( WifiChannelInMhz(legacy_channel_st.channel.center_freq), converted.radios[i].V1_3.channelStats[k].channel.centerFreq); EXPECT_EQ( WifiChannelInMhz(legacy_channel_st.channel.center_freq0), converted.radios[i].V1_3.channelStats[k].channel.centerFreq0); EXPECT_EQ( WifiChannelInMhz(legacy_channel_st.channel.center_freq1), converted.radios[i].V1_3.channelStats[k].channel.centerFreq1); EXPECT_EQ(legacy_channel_st.cca_busy_time, converted.radios[i].channelStats[k].ccaBusyTimeInMs); converted.radios[i].V1_3.channelStats[k].ccaBusyTimeInMs); EXPECT_EQ(legacy_channel_st.on_time, converted.radios[i].channelStats[k].onTimeInMs); converted.radios[i].V1_3.channelStats[k].onTimeInMs); } } Loading
wifi/1.5/types.hal +15 −0 Original line number Diff line number Diff line Loading @@ -253,6 +253,21 @@ struct StaLinkLayerIfaceStats { vec<StaPeerInfo> peers; }; struct StaLinkLayerRadioStats { /** * Baseline information as defined in HAL 1.3. */ @1.3::StaLinkLayerRadioStats V1_3; /** * Radio ID: An implementation specific value identifying the radio interface for which the * stats are produced. Framework must not interpret this value. It must use this value for * persistently identifying the statistics between calls, * e.g. if the HAL provides them in different order. */ int32_t radioId; }; /** * Link layer stats retrieved via |getLinkLayerStats|. */ Loading