From 921df5cbc44c00abe85f04093afe7692e73d490a Mon Sep 17 00:00:00 2001 From: Irfan Sheriff Date: Mon, 26 Sep 2011 16:30:15 -0700 Subject: Switch to cfg based signal_poll command Bug: 5352916 Change-Id: Id2ba7091a5e4cc4c1e14aa2c49e5b943519019bf --- wifi/java/android/net/wifi/WifiNative.java | 16 +++++++++------ wifi/java/android/net/wifi/WifiStateMachine.java | 25 ++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 8 deletions(-) (limited to 'wifi') diff --git a/wifi/java/android/net/wifi/WifiNative.java b/wifi/java/android/net/wifi/WifiNative.java index a6ea6d4..6ff1bc2 100644 --- a/wifi/java/android/net/wifi/WifiNative.java +++ b/wifi/java/android/net/wifi/WifiNative.java @@ -106,12 +106,6 @@ public class WifiNative { public native static String statusCommand(); - public native static int getRssiCommand(); - - public native static int getRssiApproxCommand(); - - public native static int getLinkSpeedCommand(); - public native static String getMacAddressCommand(); public native static String scanResultsCommand(); @@ -209,6 +203,16 @@ public class WifiNative { private native static String doStringCommand(String command); + /** Example output: + * RSSI=-65 + * LINKSPEED=48 + * NOISE=9999 + * FREQUENCY=0 + */ + public static String signalPoll() { + return doStringCommand("SIGNAL_POLL"); + } + public static boolean wpsPbc() { return doBooleanCommand("WPS_PBC"); } diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index 052d332..41fc55d 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -1362,7 +1362,28 @@ public class WifiStateMachine extends StateMachine { * Fetch RSSI and linkspeed on current connection */ private void fetchRssiAndLinkSpeedNative() { - int newRssi = WifiNative.getRssiCommand(); + int newRssi = -1; + int newLinkSpeed = -1; + + String signalPoll = WifiNative.signalPoll(); + + if (signalPoll != null) { + String[] lines = signalPoll.split("\n"); + for (String line : lines) { + String[] prop = line.split("="); + if (prop.length < 2) continue; + try { + if (prop[0].equals("RSSI")) { + newRssi = Integer.parseInt(prop[1]); + } else if (prop[0].equals("LINKSPEED")) { + newLinkSpeed = Integer.parseInt(prop[1]); + } + } catch (NumberFormatException e) { + //Ignore, defaults on rssi and linkspeed are assigned + } + } + } + if (newRssi != -1 && MIN_RSSI < newRssi && newRssi < MAX_RSSI) { // screen out invalid values /* some implementations avoid negative values by adding 256 * so we need to adjust for that here. @@ -1390,7 +1411,7 @@ public class WifiStateMachine extends StateMachine { } else { mWifiInfo.setRssi(MIN_RSSI); } - int newLinkSpeed = WifiNative.getLinkSpeedCommand(); + if (newLinkSpeed != -1) { mWifiInfo.setLinkSpeed(newLinkSpeed); } -- cgit v1.1