Merge "Add feature flag to disable wifi AP on the watch." into pi-dev

am: c571b68074

Change-Id: I0d41fcc51b18a6d247caa323b22eb41b61a03888
This commit is contained in:
Nick James 2018-05-16 14:53:39 -07:00 committed by android-build-merger
commit 0313f937de
6 changed files with 85 additions and 3 deletions

View file

@ -27,6 +27,9 @@ endif
ifdef WIFI_HIDL_FEATURE_DUAL_INTERFACE
LOCAL_CPPFLAGS += -DWIFI_HIDL_FEATURE_DUAL_INTERFACE
endif
ifdef WIFI_HIDL_FEATURE_DISABLE_AP
LOCAL_CPPFLAGS += -DWIFI_HIDL_FEATURE_DISABLE_AP
endif
LOCAL_SRC_FILES := \
hidl_struct_util.cpp \
hidl_sync_util.cpp \

View file

@ -34,6 +34,7 @@ class MockWifiFeatureFlags : public WifiFeatureFlags {
MOCK_METHOD0(isAwareSupported, bool());
MOCK_METHOD0(isDualInterfaceSupported, bool());
MOCK_METHOD0(isApDisabled, bool());
};
} // namespace feature_flags

View file

@ -48,6 +48,8 @@ class WifiChipTest : public Test {
.WillRepeatedly(testing::Return(false));
EXPECT_CALL(*feature_flags_, isDualInterfaceSupported())
.WillRepeatedly(testing::Return(false));
EXPECT_CALL(*feature_flags_, isApDisabled())
.WillRepeatedly(testing::Return(false));
}
void setupV1_AwareIfaceCombination() {
@ -55,6 +57,17 @@ class WifiChipTest : public Test {
.WillRepeatedly(testing::Return(true));
EXPECT_CALL(*feature_flags_, isDualInterfaceSupported())
.WillRepeatedly(testing::Return(false));
EXPECT_CALL(*feature_flags_, isApDisabled())
.WillRepeatedly(testing::Return(false));
}
void setupV1_AwareDisabledApIfaceCombination() {
EXPECT_CALL(*feature_flags_, isAwareSupported())
.WillRepeatedly(testing::Return(true));
EXPECT_CALL(*feature_flags_, isDualInterfaceSupported())
.WillRepeatedly(testing::Return(false));
EXPECT_CALL(*feature_flags_, isApDisabled())
.WillRepeatedly(testing::Return(true));
}
void setupV2_AwareIfaceCombination() {
@ -62,6 +75,17 @@ class WifiChipTest : public Test {
.WillRepeatedly(testing::Return(true));
EXPECT_CALL(*feature_flags_, isDualInterfaceSupported())
.WillRepeatedly(testing::Return(true));
EXPECT_CALL(*feature_flags_, isApDisabled())
.WillRepeatedly(testing::Return(false));
}
void setupV2_AwareDisabledApIfaceCombination() {
EXPECT_CALL(*feature_flags_, isAwareSupported())
.WillRepeatedly(testing::Return(true));
EXPECT_CALL(*feature_flags_, isDualInterfaceSupported())
.WillRepeatedly(testing::Return(true));
EXPECT_CALL(*feature_flags_, isApDisabled())
.WillRepeatedly(testing::Return(true));
}
void assertNumberOfModes(uint32_t num_modes) {
@ -515,6 +539,39 @@ TEST_F(WifiChipV2_AwareIfaceCombinationTest,
ASSERT_FALSE(ap_iface_name.empty());
ASSERT_NE(sta_iface_name, ap_iface_name);
}
////////// V1 Iface Combinations when AP creation is disabled //////////
class WifiChipV1_AwareDisabledApIfaceCombinationTest : public WifiChipTest {
public:
void SetUp() override {
setupV1_AwareDisabledApIfaceCombination();
WifiChipTest::SetUp();
}
};
TEST_F(WifiChipV1_AwareDisabledApIfaceCombinationTest,
StaMode_CreateSta_ShouldSucceed) {
findModeAndConfigureForIfaceType(IfaceType::STA);
ASSERT_FALSE(createIface(IfaceType::STA).empty());
ASSERT_TRUE(createIface(IfaceType::AP).empty());
}
////////// V2 Iface Combinations when AP creation is disabled //////////
class WifiChipV2_AwareDisabledApIfaceCombinationTest: public WifiChipTest {
public:
void SetUp() override {
setupV2_AwareDisabledApIfaceCombination();
WifiChipTest::SetUp();
}
};
TEST_F(WifiChipV2_AwareDisabledApIfaceCombinationTest,
CreateSta_ShouldSucceed) {
findModeAndConfigureForIfaceType(IfaceType::STA);
ASSERT_FALSE(createIface(IfaceType::STA).empty());
ASSERT_TRUE(createIface(IfaceType::AP).empty());
}
} // namespace implementation
} // namespace V1_2
} // namespace wifi

View file

@ -1211,10 +1211,17 @@ void WifiChip::populateModes() {
{chip_iface_combination_limit_1, chip_iface_combination_limit_2}};
const IWifiChip::ChipIfaceCombination chip_iface_combination_2 = {
{chip_iface_combination_limit_1, chip_iface_combination_limit_3}};
const IWifiChip::ChipMode chip_mode = {
if (feature_flags_.lock()->isApDisabled()) {
const IWifiChip::ChipMode chip_mode = {
kV2ChipModeId,
{chip_iface_combination_2}};
modes_ = {chip_mode};
} else {
const IWifiChip::ChipMode chip_mode = {
kV2ChipModeId,
{chip_iface_combination_1, chip_iface_combination_2}};
modes_ = {chip_mode};
modes_ = {chip_mode};
}
} else {
// V1 Iface combinations for Mode Id = 0. (STA Mode)
const IWifiChip::ChipIfaceCombinationLimit
@ -1238,7 +1245,11 @@ void WifiChip::populateModes() {
{ap_chip_iface_combination_limit}};
const IWifiChip::ChipMode ap_chip_mode = {kV1ApChipModeId,
{ap_chip_iface_combination}};
modes_ = {sta_chip_mode, ap_chip_mode};
if (feature_flags_.lock()->isApDisabled()) {
modes_ = {sta_chip_mode};
} else {
modes_ = {sta_chip_mode, ap_chip_mode};
}
}
}

View file

@ -27,6 +27,12 @@ static const bool wifiHidlFeatureDualInterface = true;
#else
static const bool wifiHidlFeatureDualInterface = false;
#endif // WIFI_HIDL_FEATURE_DUAL_INTERFACE
#ifdef WIFI_HIDL_FEATURE_DISABLE_AP
static const bool wifiHidlFeatureDisableAp = true;
#else
static const bool wifiHidlFeatureDisableAp = false;
#endif // WIFI_HIDL_FEATURE_DISABLE_AP
} // namespace
namespace android {
@ -41,6 +47,9 @@ bool WifiFeatureFlags::isAwareSupported() { return wifiHidlFeatureAware; }
bool WifiFeatureFlags::isDualInterfaceSupported() {
return wifiHidlFeatureDualInterface;
}
bool WifiFeatureFlags::isApDisabled() {
return wifiHidlFeatureDisableAp;
}
} // namespace feature_flags
} // namespace implementation

View file

@ -31,6 +31,7 @@ class WifiFeatureFlags {
virtual bool isAwareSupported();
virtual bool isDualInterfaceSupported();
virtual bool isApDisabled();
};
} // namespace feature_flags