Skip to content

Commit

Permalink
fix(web2): save configured wifi channel in GWT interface [backport re…
Browse files Browse the repository at this point in the history
…lease-5.3.0] (#4667)

fix(web2): save configured wifi channel in GWT interface (#4665)

Signed-off-by: Marcello Martina <[email protected]>
(cherry picked from commit aa78602)

Co-authored-by: Marcello Rinaldo Martina <[email protected]>
  • Loading branch information
github-actions[bot] and marcellorinaldo authored May 19, 2023
1 parent dc4577e commit eb08408
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ private void setWifiMasterProperties() {
EnumsParser.getGwtWifiCiphers(this.properties.getWifiMasterPairwiseCiphers(this.ifName)));
gwtWifiConfig.setGroupCiphers(
EnumsParser.getGwtWifiCiphers(this.properties.getWifiMasterGroupCiphers(this.ifName)));
gwtWifiConfig.setChannels(this.properties.getWifiMasterChannel(this.ifName));

// wifi master specific properties

Expand Down Expand Up @@ -216,7 +217,8 @@ private void setWifiInfraProperties() {
EnumsParser.getGwtWifiCiphers(this.properties.getWifiInfraPairwiseCiphers(this.ifName)));
gwtWifiConfig.setGroupCiphers(
EnumsParser.getGwtWifiCiphers(this.properties.getWifiInfraGroupCiphers(this.ifName)));

gwtWifiConfig.setChannels(this.properties.getWifiInfraChannel(this.ifName));

// wifi infra specific properties

Optional<String> radioMode = EnumsParser
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -296,37 +296,62 @@ private void setWifiStateProperties(GwtNetInterfaceConfig gwtNetInterfaceConfig,
WifiInterfaceStatus wifiInterfaceInfo = (WifiInterfaceStatus) networkInterfaceInfo;
gwtWifiNetInterfaceConfig.setHwState(wifiInterfaceInfo.getState().toString());

ChannelsBuilder channelsBuilder = new ChannelsBuilder();
Optional<WifiAccessPoint> activeAP = wifiInterfaceInfo.getActiveWifiAccessPoint();
if (activeAP.isPresent()) {
channelsBuilder.setActiveChannel(activeAP.get().getChannel());
}
channelsBuilder.addChannels(wifiInterfaceInfo.getChannels());


if (wifiInterfaceInfo.getMode() == WifiMode.MASTER) {
if (Objects.nonNull(gwtWifiNetInterfaceConfig.getAccessPointWifiConfig())) {
gwtWifiNetInterfaceConfig.getAccessPointWifiConfig()
.setChannels(channelsBuilder.getChannelsIntegers());
} else {
GwtWifiConfig gwtConfig = gwtWifiNetInterfaceConfig.getActiveWifiConfig();
gwtConfig.setChannels(channelsBuilder.getChannelsIntegers());
gwtWifiNetInterfaceConfig.setAccessPointWifiConfig(gwtConfig);
}
setWifiMasterStateProperties(gwtWifiNetInterfaceConfig, wifiInterfaceInfo);
} else if (wifiInterfaceInfo.getMode() == WifiMode.INFRA) {
AtomicReference<String> rssi = new AtomicReference<>("N/A");
wifiInterfaceInfo.getActiveWifiAccessPoint()
.ifPresent(accessPoint -> rssi.set(String.valueOf(accessPoint.getSignalStrength())));
gwtWifiNetInterfaceConfig.setHwRssi(rssi.get());

if (Objects.nonNull(gwtWifiNetInterfaceConfig.getStationWifiConfig())) {
gwtWifiNetInterfaceConfig.getStationWifiConfig().setChannels(channelsBuilder.getChannelsIntegers());
} else {
GwtWifiConfig gwtConfig = gwtWifiNetInterfaceConfig.getActiveWifiConfig();
gwtConfig.setChannels(channelsBuilder.getChannelsIntegers());
gwtWifiNetInterfaceConfig.setStationWifiConfig(gwtConfig);
}
setWifiInfraStateProperties(gwtWifiNetInterfaceConfig, wifiInterfaceInfo);
}
}
}

private void setWifiMasterStateProperties(GwtWifiNetInterfaceConfig gwtWifiNetInterfaceConfig, WifiInterfaceStatus wifiInterfaceInfo) {
GwtWifiConfig gwtConfig;
if (Objects.nonNull(gwtWifiNetInterfaceConfig.getAccessPointWifiConfig())) {
gwtConfig = gwtWifiNetInterfaceConfig.getAccessPointWifiConfig();
} else {
gwtConfig = gwtWifiNetInterfaceConfig.getActiveWifiConfig();
gwtWifiNetInterfaceConfig.setAccessPointWifiConfig(gwtConfig);
}

ChannelsBuilder channelsBuilder = new ChannelsBuilder();
Optional<WifiAccessPoint> activeAP = wifiInterfaceInfo.getActiveWifiAccessPoint();
if (activeAP.isPresent()) {
channelsBuilder.setActiveChannel(activeAP.get().getChannel());
} else {
List<Integer> activeChannel = gwtConfig.getChannels();
if (activeChannel != null && activeChannel.size() == 1) {
channelsBuilder.setActiveChannel(activeChannel.get(0));
}
}
channelsBuilder.addChannels(wifiInterfaceInfo.getChannels());
gwtConfig.setChannels(channelsBuilder.getChannelsIntegers());
}

private void setWifiInfraStateProperties(GwtWifiNetInterfaceConfig gwtWifiNetInterfaceConfig, WifiInterfaceStatus wifiInterfaceInfo) {
AtomicReference<String> rssi = new AtomicReference<>("N/A");
wifiInterfaceInfo.getActiveWifiAccessPoint()
.ifPresent(accessPoint -> rssi.set(String.valueOf(accessPoint.getSignalStrength())));
gwtWifiNetInterfaceConfig.setHwRssi(rssi.get());

GwtWifiConfig gwtConfig;

if (Objects.nonNull(gwtWifiNetInterfaceConfig.getStationWifiConfig())) {
gwtConfig = gwtWifiNetInterfaceConfig.getStationWifiConfig();
} else {
gwtConfig = gwtWifiNetInterfaceConfig.getActiveWifiConfig();
gwtWifiNetInterfaceConfig.setStationWifiConfig(gwtConfig);
}

ChannelsBuilder channelsBuilder = new ChannelsBuilder();
List<Integer> activeChannel = gwtConfig.getChannels();
if (activeChannel != null && activeChannel.size() == 1) {
channelsBuilder.setActiveChannel(activeChannel.get(0));
}
channelsBuilder.addChannels(wifiInterfaceInfo.getChannels());

gwtConfig.setChannels(channelsBuilder.getChannelsIntegers());
}

private void parseAndSetWifiSecurity(GwtWifiHotspotEntry entryToModify, Set<WifiSecurity> supportedSecurity) {
Expand Down Expand Up @@ -386,6 +411,11 @@ public ChannelsBuilder setActiveChannel(WifiChannel channel) {
return this;
}

public ChannelsBuilder setActiveChannel(int channel) {
this.channels.add(0, WifiChannel.builder(channel, 0).build());
return this;
}

public ChannelsBuilder addChannels(List<WifiChannel> otherChannels) {
this.channels.addAll(otherChannels);
return this;
Expand Down

0 comments on commit eb08408

Please sign in to comment.