Skip to content

Commit

Permalink
Fix the signal quality calculation
Browse files Browse the repository at this point in the history
* It assumed that the maximum was always 70.
  • Loading branch information
imobachgs committed Feb 25, 2021
1 parent 620810a commit b8d2e1c
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 19 deletions.
2 changes: 1 addition & 1 deletion src/lib/y2network/widgets/wireless_networks.rb
Expand Up @@ -64,7 +64,7 @@ def items
network.mode,
network.channel,
network.rates.max.to_s,
network.quality_percent ? "#{network.quality_percent}%" : "",
network.quality ? "#{network.quality}%" : "",
network.auth_mode&.to_human_string
]
end
Expand Down
12 changes: 0 additions & 12 deletions src/lib/y2network/wireless_network.rb
Expand Up @@ -59,17 +59,5 @@ def initialize(essid:, mode:, channel:, rates:, quality:, auth_mode:)
@quality = quality
@auth_mode = auth_mode
end

# Returns the quality as a percentage
#
# @fixme This method assumes '70' as the max value. However, we could get the actual max from
# iwlist.
#
# @return [Integer] Quality as percentage
def quality_percent
return 0 if @quality.nil?

(@quality.to_f * 100 / 70).round
end
end
end
6 changes: 5 additions & 1 deletion src/lib/y2network/wireless_scanner.rb
Expand Up @@ -202,7 +202,11 @@ def fetch_quality(fields)
value = field_single_value("Quality", fields)
return nil if value.nil?

value[/(\d+)\/.+/, 1]&.to_i
match = value.match(/(\d+)\/(\d+)/)
return nil unless match

num, den = match.captures
num.to_i * 100 / den.to_i
end

# Returns the channel from the list of fields
Expand Down
2 changes: 1 addition & 1 deletion test/y2network/widgets/wireless_networks_test.rb
Expand Up @@ -36,7 +36,7 @@
Y2Network::WirelessNetwork.new(
essid: "MY_WIFI", mode: "Master", channel: 10,
rates: [Y2Network::Bitrate.parse("54 Mb/s")],
quality: 70, auth_mode: Y2Network::WirelessAuthMode::NONE
quality: 100, auth_mode: Y2Network::WirelessAuthMode::NONE
)
end

Expand Down
8 changes: 4 additions & 4 deletions test/y2network/wireless_scanner_test.rb
Expand Up @@ -41,19 +41,19 @@
expect(scanner.cells).to contain_exactly(
an_object_having_attributes(
address: "68:FF:7B:65:C0:D2", essid: "TP-Link_R2D2", mode: "Master",
channel: 10, quality: 70, auth_mode: Y2Network::WirelessAuthMode::WPA_PSK
channel: 10, quality: 100, auth_mode: Y2Network::WirelessAuthMode::WPA_PSK
),
an_object_having_attributes(
address: "7E:ED:69:D5:89:A5", essid: "TP-Link_C3PO", mode: "Master",
channel: 1, quality: 42, auth_mode: Y2Network::WirelessAuthMode::WEP_OPEN
channel: 1, quality: 60, auth_mode: Y2Network::WirelessAuthMode::WEP_OPEN
),
an_object_having_attributes(
address: "68:FF:7B:65:C0:D3", essid: "GUESTS", mode: "Master",
channel: 10, quality: 30, auth_mode: Y2Network::WirelessAuthMode::NONE
channel: 10, quality: 42, auth_mode: Y2Network::WirelessAuthMode::NONE
),
an_object_having_attributes(
address: "02:00:00:00:00:00", essid: "COMPANY", mode: "Master",
channel: 1, quality: 70, auth_mode: Y2Network::WirelessAuthMode::WPA_EAP
channel: 1, quality: 100, auth_mode: Y2Network::WirelessAuthMode::WPA_EAP
)
)
end
Expand Down

0 comments on commit b8d2e1c

Please sign in to comment.