diff options
author | Jan Nordqvist <jannq@google.com> | 2015-11-19 11:19:46 -0800 |
---|---|---|
committer | Mitchell Wills <mwills@google.com> | 2015-12-17 03:51:07 +0000 |
commit | 6dd42662e45750910d8743f7f154269c2755df93 (patch) | |
tree | 75487abd7cddc31a281fa416aa436331d4b2fc83 /service/java/com/android/server/wifi/WifiMonitor.java | |
parent | 9f897f3976bf83113925828088483b77a97f251b (diff) | |
download | android_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.java | 51 |
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"); |