summaryrefslogtreecommitdiffstats
path: root/service/java/com/android/server/wifi/WifiMonitor.java
diff options
context:
space:
mode:
authorJan Nordqvist <jannq@google.com>2015-11-19 11:19:46 -0800
committerMitchell Wills <mwills@google.com>2015-12-17 03:51:07 +0000
commit6dd42662e45750910d8743f7f154269c2755df93 (patch)
tree75487abd7cddc31a281fa416aa436331d4b2fc83 /service/java/com/android/server/wifi/WifiMonitor.java
parent9f897f3976bf83113925828088483b77a97f251b (diff)
downloadandroid_frameworks_opt_net_wifi-6dd42662e45750910d8743f7f154269c2755df93.tar.gz
android_frameworks_opt_net_wifi-6dd42662e45750910d8743f7f154269c2755df93.tar.bz2
android_frameworks_opt_net_wifi-6dd42662e45750910d8743f7f154269c2755df93.zip
DO NOT MERGE Changed to use special "in-memory" icon command to wpa_supplicant.
Hotspot2.0: Icon query changed to use new command. Cherry-picked from e511ec7a4f53f7204a85075b23318f9f11c46d94 Bug: 24681079 Change-Id: Iac65eddff82763d42193edfb683266e7b0b8d720
Diffstat (limited to 'service/java/com/android/server/wifi/WifiMonitor.java')
-rw-r--r--service/java/com/android/server/wifi/WifiMonitor.java51
1 files changed, 8 insertions, 43 deletions
diff --git a/service/java/com/android/server/wifi/WifiMonitor.java b/service/java/com/android/server/wifi/WifiMonitor.java
index 8bf2a3ee3..aeacc400f 100644
--- a/service/java/com/android/server/wifi/WifiMonitor.java
+++ b/service/java/com/android/server/wifi/WifiMonitor.java
@@ -34,6 +34,7 @@ import android.util.LocalLog;
import android.util.Log;
import android.util.SparseArray;
+import com.android.server.wifi.hotspot2.IconEvent;
import com.android.server.wifi.hotspot2.Utils;
import com.android.server.wifi.p2p.WifiP2pServiceImpl.P2pStatus;
@@ -1250,55 +1251,19 @@ public class WifiMonitor {
}
}
- private final Map<String, String[]> mIconFragmentMap =
- new LinkedHashMap<String, String[]>() {
- @Override
- protected boolean removeEldestEntry(Entry eldest) {
- return size() > 3;
- }
- };
-
private void handleIconResult(String eventStr, String iface) {
- // RX-HS20-ICON c0:c5:20:27:d1:e8 9 10 OMJjkpWlDpC+UC...
+ // RX-HS20-ICON c0:c5:20:27:d1:e8 <file> <size>
String[] segments = eventStr.split(" ");
- if (segments.length != 5) {
+ if (segments.length != 4) {
throw new IllegalArgumentException("Incorrect number of segments");
}
+
try {
String bssid = segments[1];
- int fragmentIndex = Integer.parseInt(segments[2]);
- int fragmentEnd = Integer.parseInt(segments[3]);
-
- String[] fragments = mIconFragmentMap.get(bssid);
- if (fragments == null) {
- fragments = new String[fragmentEnd+1];
- mIconFragmentMap.put(bssid, fragments);
- }
- if (fragmentEnd >= fragments.length) {
- fragments = new String[fragmentEnd+1];
- mIconFragmentMap.put(bssid, fragments);
- Log.w(TAG, String.format("Icon fragment %d out of %d exceeds %d",
- fragmentIndex, fragmentEnd, fragments.length));
- }
- fragments[fragmentIndex] = segments[4];
-
- boolean incomplete = false;
- for (String fragment : fragments) {
- if (fragment == null) {
- incomplete = true;
- break;
- }
- }
- if (!incomplete) {
- StringBuilder b64 = new StringBuilder();
- for (String fragment : fragments) {
- b64.append(fragment);
- }
- mIconFragmentMap.remove(bssid);
- long mac = Utils.parseMac(bssid);
- byte[] octets = Base64.decode(b64.toString(), Base64.DEFAULT);
- sendMessage(iface, RX_HS20_ANQP_ICON_EVENT, (int)(mac >>> 32), (int)mac, octets);
- }
+ String fileName = segments[2];
+ int size = Integer.parseInt(segments[3]);
+ sendMessage(iface, RX_HS20_ANQP_ICON_EVENT,
+ new IconEvent(Utils.parseMac(bssid), fileName, size));
}
catch (NumberFormatException nfe) {
throw new IllegalArgumentException("Bad numeral");