package org.pyneo.tabulae.fawlty;
import android.annotation.TargetApi;
import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.util.Log;
import java.util.Iterator;
import java.util.List;
import static org.pyneo.tabulae.fawlty.Constants.*;
public class WifiId implements Iterator<TheDictionary>, Iterable<TheDictionary> {
private List<ScanResult> scanResults;
private int i;
public WifiId(List<ScanResult> scanResults) {
this.scanResults = scanResults;
this.i = 0;
}
///////////////////// test
static public String test(Context context) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
int a = 0;
int b = 0;
int c = 0;
for (TheDictionary o : new WifiId(wifiManager.getScanResults())) {
a++;
if (DEBUG) Log.d(TAG, "got: " + o);
}
return "counts: " + a + '/' + b + '/' + c;
}
///////////////////////// enumerator stuff
@Override
public Iterator<TheDictionary> iterator() {
return this;
}
@Override
public boolean hasNext() {
return scanResults != null && i < scanResults.size();
}
@Override
public TheDictionary next() {
TheDictionary map = new TheDictionary();
try {
fill(map, scanResults.get(i));
}
catch (Exception e) {
throw new RuntimeException(e);
}
i++;
return map;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
/////////////////////
private String unify(String bssid) {
return bssid;
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private void fill_API17(TheDictionary map, ScanResult value) throws Exception {
map.put("timestamp", value.timestamp);
}
private void fill(TheDictionary map, ScanResult value) throws Exception {
map.put("type", "w");
map.put("bssid", unify(value.BSSID));
map.put("ssid", unify(value.SSID));
map.put("capabilities", unify(value.capabilities));
map.put("frequency", value.frequency);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
fill_API17(map, value);
}
map.put("level", value.level);
}
}