Methods Summary |
---|
public int | addNetwork()
return doIntCommand("ADD_NETWORK");
|
public boolean | addToBlacklist(java.lang.String bssid)
if (TextUtils.isEmpty(bssid)) return false;
return doBooleanCommand("BLACKLIST " + bssid);
|
public void | bssFlush()
doBooleanCommand("BSS_FLUSH 0");
|
private static native boolean | cancelRangeRequestNative(int iface, int id, RttManager.RttParams[] params)
|
public static synchronized boolean | cancelRtt(RttManager.RttParams[] params)
synchronized(mLock) {
if (sRttCmdId == 0) {
return false;
}
if (cancelRangeRequestNative(sWlan0Index, sRttCmdId, params)) {
sRttEventHandler = null;
return true;
} else {
return false;
}
}
|
public boolean | cancelWps()
return doBooleanCommand("WPS_CANCEL");
|
public boolean | clearBlacklist()
return doBooleanCommand("BLACKLIST clear");
|
public void | closeSupplicantConnection()
localLog(mInterfacePrefix + "closeSupplicantConnection");
closeSupplicantConnectionNative();
|
private native void | closeSupplicantConnectionNative()
|
public boolean | connectToSupplicant()
// No synchronization necessary .. it is implemented in WifiMonitor
localLog(mInterfacePrefix + "connectToSupplicant");
return connectToSupplicantNative();
|
private native boolean | connectToSupplicantNative()
|
public boolean | disableNetwork(int netId)
if (DBG) logDbg("disableNetwork nid=" + Integer.toString(netId));
return doBooleanCommand("DISABLE_NETWORK " + netId);
|
public boolean | disconnect()
if (DBG) logDbg("DISCONNECT ");
return doBooleanCommand("DISCONNECT");
|
private boolean | doBooleanCommand(java.lang.String command)
if (DBG) Log.d(mTAG, "doBoolean: " + command);
synchronized (mLock) {
int cmdId = getNewCmdIdLocked();
String toLog = Integer.toString(cmdId) + ":" + mInterfacePrefix + command;
boolean result = doBooleanCommandNative(mInterfacePrefix + command);
localLog(toLog + " -> " + result);
if (DBG) Log.d(mTAG, command + ": returned " + result);
return result;
}
|
private native boolean | doBooleanCommandNative(java.lang.String command)
|
private int | doIntCommand(java.lang.String command)
if (DBG) Log.d(mTAG, "doInt: " + command);
synchronized (mLock) {
int cmdId = getNewCmdIdLocked();
String toLog = Integer.toString(cmdId) + ":" + mInterfacePrefix + command;
int result = doIntCommandNative(mInterfacePrefix + command);
localLog(toLog + " -> " + result);
if (DBG) Log.d(mTAG, " returned " + result);
return result;
}
|
private native int | doIntCommandNative(java.lang.String command)
|
private java.lang.String | doStringCommand(java.lang.String command)
if (DBG) {
//GET_NETWORK commands flood the logs
if (!command.startsWith("GET_NETWORK")) {
Log.d(mTAG, "doString: [" + command + "]");
}
}
synchronized (mLock) {
int cmdId = getNewCmdIdLocked();
String toLog = Integer.toString(cmdId) + ":" + mInterfacePrefix + command;
String result = doStringCommandNative(mInterfacePrefix + command);
if (result == null) {
if (DBG) Log.d(mTAG, "doStringCommandNative no result");
} else {
if (!command.startsWith("STATUS-")) {
localLog(toLog + " -> " + result);
}
if (DBG) Log.d(mTAG, " returned " + result.replace("\n", " "));
}
return result;
}
|
private native java.lang.String | doStringCommandNative(java.lang.String command)
|
private java.lang.String | doStringCommandWithoutLogging(java.lang.String command)
if (DBG) {
//GET_NETWORK commands flood the logs
if (!command.startsWith("GET_NETWORK")) {
Log.d(mTAG, "doString: [" + command + "]");
}
}
synchronized (mLock) {
return doStringCommandNative(mInterfacePrefix + command);
}
|
public void | enableAutoConnect(boolean enable)
if (enable) {
doBooleanCommand("STA_AUTOCONNECT 1");
} else {
doBooleanCommand("STA_AUTOCONNECT 0");
}
|
public void | enableBackgroundScan(boolean enable)
if (enable) {
doBooleanCommand("SET pno 1");
} else {
doBooleanCommand("SET pno 0");
}
|
public boolean | enableNetwork(int netId, boolean disableOthers)
if (DBG) logDbg("enableNetwork nid=" + Integer.toString(netId)
+ " disableOthers=" + disableOthers);
if (disableOthers) {
return doBooleanCommand("SELECT_NETWORK " + netId);
} else {
return doBooleanCommand("ENABLE_NETWORK " + netId);
}
|
public void | enableSaveConfig()
doBooleanCommand("SET update_config 1");
|
void | enableVerboseLogging(int verbose)
if (verbose > 0) {
DBG = true;
} else {
DBG = false;
}
|
public boolean | fetchAnqp(java.lang.String bssid, java.lang.String subtypes)
return doBooleanCommand("ANQP_GET " + bssid + " " + subtypes);
|
public int | getBand()
String ret = doStringCommand("DRIVER GETBAND");
if (!TextUtils.isEmpty(ret)) {
//reply is "BAND X" where X is the band
String[] tokens = ret.split(" ");
try {
if (tokens.length == 2) return Integer.parseInt(tokens[1]);
} catch (NumberFormatException e) {
return -1;
}
}
return -1;
|
public java.lang.String | getBatchedScanResults()
return doStringCommand("DRIVER WLS_BATCHING GET");
|
public static synchronized int[] | getChannelsForBand(int band)
synchronized (mLock) {
if (startHal()) {
return getChannelsForBandNative(sWlan0Index, band);
} else {
return null;
}
}
|
private static native int[] | getChannelsForBandNative(int iface, int band)
|
public java.lang.String | getFreqCapability()
return doStringCommand("GET_CAPABILITY freq");
|
public int | getGroupCapability(java.lang.String deviceAddress)
int gc = 0;
if (TextUtils.isEmpty(deviceAddress)) return gc;
String peerInfo = p2pPeer(deviceAddress);
if (TextUtils.isEmpty(peerInfo)) return gc;
String[] tokens = peerInfo.split("\n");
for (String token : tokens) {
if (token.startsWith("group_capab=")) {
String[] nameValue = token.split("=");
if (nameValue.length != 2) break;
try {
return Integer.decode(nameValue[1]);
} catch(NumberFormatException e) {
return gc;
}
}
}
return gc;
|
public static synchronized java.lang.String | getInterfaceName(int index)
return getInterfaceNameNative(index);
|
private static native java.lang.String | getInterfaceNameNative(int index)
|
public static synchronized int | getInterfaces()
synchronized (mLock) {
if (sWifiIfaceHandles == null) {
int num = getInterfacesNative();
int wifi_num = 0;
for (int i = 0; i < num; i++) {
String name = getInterfaceNameNative(i);
Log.i(TAG, "interface[" + i + "] = " + name);
if (name.equals("wlan0")) {
sWlan0Index = i;
wifi_num++;
} else if (name.equals("p2p0")) {
sP2p0Index = i;
wifi_num++;
}
}
return wifi_num;
} else {
return sWifiIfaceHandles.length;
}
}
|
private static native int | getInterfacesNative()
|
public android.util.LocalLog | getLocalLog()
return mLocalLog;
|
public java.lang.String | getMacAddress()
//Macaddr = XX.XX.XX.XX.XX.XX
String ret = doStringCommand("DRIVER MACADDR");
if (!TextUtils.isEmpty(ret)) {
String[] tokens = ret.split(" = ");
if (tokens.length == 2) return tokens[1];
}
return null;
|
public java.lang.String | getNetworkVariable(int netId, java.lang.String name)
if (TextUtils.isEmpty(name)) return null;
// GET_NETWORK will likely flood the logs ...
return doStringCommandWithoutLogging("GET_NETWORK " + netId + " " + name);
|
private static int | getNewCmdIdLocked()
return sCmdId++;
|
public java.lang.String | getNfcHandoverRequest()
return doStringCommand("NFC_GET_HANDOVER_REQ NDEF P2P-CR");
|
public java.lang.String | getNfcHandoverSelect()
return doStringCommand("NFC_GET_HANDOVER_SEL NDEF P2P-CR");
|
public java.lang.String | getNfcWpsConfigurationToken(int netId)
return doStringCommand("WPS_NFC_CONFIG_TOKEN WPS " + netId);
|
public static boolean | getScanCapabilities(com.android.server.wifi.WifiNative$ScanCapabilities capabilities)
return getScanCapabilitiesNative(sWlan0Index, capabilities);
|
private static native boolean | getScanCapabilitiesNative(int iface, com.android.server.wifi.WifiNative$ScanCapabilities capabilities)
|
public static synchronized android.net.wifi.ScanResult[] | getScanResults()
synchronized (mLock) {
return getScanResultsNative(sWlan0Index, /* flush = */ false);
}
|
private static native android.net.wifi.ScanResult[] | getScanResultsNative(int iface, boolean flush)
|
public static synchronized int | getSupportedFeatureSet()
return getSupportedFeatureSetNative(sWlan0Index);
|
public static native int | getSupportedFeatureSetNative(int iface)
|
public static synchronized android.net.wifi.WifiLinkLayerStats | getWifiLinkLayerStats(java.lang.String iface)
// TODO: use correct iface name to Index translation
if (iface == null) return null;
synchronized (mLock) {
if (!sHalIsStarted)
startHal();
if (sHalIsStarted)
return getWifiLinkLayerStatsNative(sWlan0Index);
}
return null;
|
private static native android.net.wifi.WifiLinkLayerStats | getWifiLinkLayerStatsNative(int iface)
|
public boolean | initiatorReportNfcHandover(java.lang.String selectMessage)
return doBooleanCommand("NFC_REPORT_HANDOVER INIT P2P 00 " + selectMessage);
|
public static native boolean | isDriverLoaded()
|
public static native boolean | killSupplicant(boolean p2pSupported)
|
public java.lang.String | listNetworks()
return doStringCommand("LIST_NETWORKS");
|
public java.lang.String | listNetworks(int last_id)
return doStringCommand("LIST_NETWORKS LAST_ID=" + last_id);
|
public static native boolean | loadDriver()
|
private void | localLog(java.lang.String s)
if (mLocalLog != null)
mLocalLog.log(mInterfaceName + ": " + s);
|
private void | logDbg(java.lang.String debug)
long now = SystemClock.elapsedRealtimeNanos();
String ts = String.format("[%,d us] ", now/1000);
Log.e("WifiNative: ", ts+debug+ " stack:"
+ Thread.currentThread().getStackTrace()[2].getMethodName() +" - "
+ Thread.currentThread().getStackTrace()[3].getMethodName() +" - "
+ Thread.currentThread().getStackTrace()[4].getMethodName() +" - "
+ Thread.currentThread().getStackTrace()[5].getMethodName()+" - "
+ Thread.currentThread().getStackTrace()[6].getMethodName());
|
static synchronized void | onFullScanResult(int id, android.net.wifi.ScanResult result, byte[] bytes)
if (DBG) Log.i(TAG, "Got a full scan results event, ssid = " + result.SSID + ", " +
"num = " + bytes.length);
if (sScanEventHandler == null) {
return;
}
int num = 0;
for (int i = 0; i < bytes.length; ) {
int type = bytes[i] & 0xFF;
int len = bytes[i + 1] & 0xFF;
if (i + len + 2 > bytes.length) {
Log.w(TAG, "bad length " + len + " of IE " + type + " from " + result.BSSID);
Log.w(TAG, "ignoring the rest of the IEs");
break;
}
num++;
i += len + 2;
if (DBG) Log.i(TAG, "bytes[" + i + "] = [" + type + ", " + len + "]" + ", " +
"next = " + i);
}
ScanResult.InformationElement elements[] = new ScanResult.InformationElement[num];
for (int i = 0, index = 0; i < num; i++) {
int type = bytes[index] & 0xFF;
int len = bytes[index + 1] & 0xFF;
if (DBG) Log.i(TAG, "index = " + index + ", type = " + type + ", len = " + len);
ScanResult.InformationElement elem = new ScanResult.InformationElement();
elem.id = type;
elem.bytes = new byte[len];
for (int j = 0; j < len; j++) {
elem.bytes[j] = bytes[index + j + 2];
}
elements[i] = elem;
index += (len + 2);
}
result.informationElements = elements;
sScanEventHandler.onFullScanResult(result);
|
public static synchronized void | onHotlistApFound(int id, android.net.wifi.ScanResult[] results)
synchronized (mLock) {
if (sHotlistCmdId != 0) {
sHotlistEventHandler.onHotlistApFound(results);
} else {
/* this can happen because of race conditions */
Log.d(TAG, "Ignoring hotlist AP found change");
}
}
|
private static synchronized void | onRttResults(int id, RttManager.RttResult[] results)
if (id == sRttCmdId) {
Log.d(TAG, "Received " + results.length + " rtt results");
sRttEventHandler.onRttResults(results);
sRttCmdId = 0;
} else {
Log.d(TAG, "Received event for unknown cmd = " + id + ", current id = " + sRttCmdId);
}
|
static synchronized void | onScanResultsAvailable(int id)
if (sScanEventHandler != null) {
sScanEventHandler.onScanResultsAvailable();
}
|
static synchronized void | onScanStatus(int status)
Log.i(TAG, "Got a scan status changed event, status = " + status);
if (status == WIFI_SCAN_BUFFER_FULL) {
/* we have a separate event to take care of this */
} else if (status == WIFI_SCAN_COMPLETE) {
if (sScanEventHandler != null) {
sScanEventHandler.onSingleScanComplete();
}
}
|
static synchronized void | onSignificantWifiChange(int id, android.net.wifi.ScanResult[] results)
synchronized (mLock) {
if (sSignificantWifiChangeCmdId != 0) {
sSignificantWifiChangeHandler.onChangesFound(results);
} else {
/* this can happen because of race conditions */
Log.d(TAG, "Ignoring significant wifi change");
}
}
|
public boolean | p2pCancelConnect()
return doBooleanCommand("P2P_CANCEL");
|
public java.lang.String | p2pConnect(android.net.wifi.p2p.WifiP2pConfig config, boolean joinExistingGroup)
if (config == null) return null;
List<String> args = new ArrayList<String>();
WpsInfo wps = config.wps;
args.add(config.deviceAddress);
switch (wps.setup) {
case WpsInfo.PBC:
args.add("pbc");
break;
case WpsInfo.DISPLAY:
if (TextUtils.isEmpty(wps.pin)) {
args.add("pin");
} else {
args.add(wps.pin);
}
args.add("display");
break;
case WpsInfo.KEYPAD:
args.add(wps.pin);
args.add("keypad");
break;
case WpsInfo.LABEL:
args.add(wps.pin);
args.add("label");
default:
break;
}
if (config.netId == WifiP2pGroup.PERSISTENT_NET_ID) {
args.add("persistent");
}
if (joinExistingGroup) {
args.add("join");
} else {
//TODO: This can be adapted based on device plugged in state and
//device battery state
int groupOwnerIntent = config.groupOwnerIntent;
if (groupOwnerIntent < 0 || groupOwnerIntent > 15) {
groupOwnerIntent = DEFAULT_GROUP_OWNER_INTENT;
}
args.add("go_intent=" + groupOwnerIntent);
}
String command = "P2P_CONNECT ";
for (String s : args) command += s + " ";
return doStringCommand(command);
|
public boolean | p2pExtListen(boolean enable, int period, int interval)
if (enable && interval < period) {
return false;
}
return doBooleanCommand("P2P_EXT_LISTEN"
+ (enable ? (" " + period + " " + interval) : ""));
|
public boolean | p2pFind()
return doBooleanCommand("P2P_FIND");
|
public boolean | p2pFind(int timeout)
if (timeout <= 0) {
return p2pFind();
}
return doBooleanCommand("P2P_FIND " + timeout);
|
public boolean | p2pFlush()
return doBooleanCommand("P2P_FLUSH");
|
public java.lang.String | p2pGetDeviceAddress()
Log.d(TAG, "p2pGetDeviceAddress");
String status = null;
/* Explicitly calling the API without IFNAME= prefix to take care of the devices that
don't have p2p0 interface. Supplicant seems to be returning the correct address anyway. */
synchronized (mLock) {
status = doStringCommandNative("STATUS");
}
String result = "";
if (status != null) {
String[] tokens = status.split("\n");
for (String token : tokens) {
if (token.startsWith("p2p_device_address=")) {
String[] nameValue = token.split("=");
if (nameValue.length != 2)
break;
result = nameValue[1];
}
}
}
Log.d(TAG, "p2pGetDeviceAddress returning " + result);
return result;
|
private java.lang.String | p2pGetParam(java.lang.String deviceAddress, java.lang.String key)
if (deviceAddress == null) return null;
String peerInfo = p2pPeer(deviceAddress);
if (peerInfo == null) return null;
String[] tokens= peerInfo.split("\n");
key += "=";
for (String token : tokens) {
if (token.startsWith(key)) {
String[] nameValue = token.split("=");
if (nameValue.length != 2) break;
return nameValue[1];
}
}
return null;
|
public java.lang.String | p2pGetSsid(java.lang.String deviceAddress)
return p2pGetParam(deviceAddress, "oper_ssid");
|
public boolean | p2pGroupAdd(boolean persistent)
if (persistent) {
return doBooleanCommand("P2P_GROUP_ADD persistent");
}
return doBooleanCommand("P2P_GROUP_ADD");
|
public boolean | p2pGroupAdd(int netId)
return doBooleanCommand("P2P_GROUP_ADD persistent=" + netId);
|
public boolean | p2pGroupRemove(java.lang.String iface)
if (TextUtils.isEmpty(iface)) return false;
synchronized (mLock) {
return doBooleanCommandNative("IFNAME=" + iface + " P2P_GROUP_REMOVE " + iface);
}
|
public boolean | p2pInvite(android.net.wifi.p2p.WifiP2pGroup group, java.lang.String deviceAddress)
if (TextUtils.isEmpty(deviceAddress)) return false;
if (group == null) {
return doBooleanCommand("P2P_INVITE peer=" + deviceAddress);
} else {
return doBooleanCommand("P2P_INVITE group=" + group.getInterface()
+ " peer=" + deviceAddress + " go_dev_addr=" + group.getOwner().deviceAddress);
}
|
public boolean | p2pListen()
return doBooleanCommand("P2P_LISTEN");
|
public boolean | p2pListen(int timeout)
if (timeout <= 0) {
return p2pListen();
}
return doBooleanCommand("P2P_LISTEN " + timeout);
|
public java.lang.String | p2pPeer(java.lang.String deviceAddress)
return doStringCommand("P2P_PEER " + deviceAddress);
|
public boolean | p2pProvisionDiscovery(android.net.wifi.p2p.WifiP2pConfig config)
if (config == null) return false;
switch (config.wps.setup) {
case WpsInfo.PBC:
return doBooleanCommand("P2P_PROV_DISC " + config.deviceAddress + " pbc");
case WpsInfo.DISPLAY:
//We are doing display, so provision discovery is keypad
return doBooleanCommand("P2P_PROV_DISC " + config.deviceAddress + " keypad");
case WpsInfo.KEYPAD:
//We are doing keypad, so provision discovery is display
return doBooleanCommand("P2P_PROV_DISC " + config.deviceAddress + " display");
default:
break;
}
return false;
|
public boolean | p2pReinvoke(int netId, java.lang.String deviceAddress)
if (TextUtils.isEmpty(deviceAddress) || netId < 0) return false;
return doBooleanCommand("P2P_INVITE persistent=" + netId + " peer=" + deviceAddress);
|
public boolean | p2pReject(java.lang.String deviceAddress)
return doBooleanCommand("P2P_REJECT " + deviceAddress);
|
public boolean | p2pServDiscCancelReq(java.lang.String id)
return doBooleanCommand("P2P_SERV_DISC_CANCEL_REQ " + id);
|
public java.lang.String | p2pServDiscReq(java.lang.String addr, java.lang.String query)
String command = "P2P_SERV_DISC_REQ";
command += (" " + addr);
command += (" " + query);
return doStringCommand(command);
|
public boolean | p2pServiceAdd(android.net.wifi.p2p.nsd.WifiP2pServiceInfo servInfo)
/*
* P2P_SERVICE_ADD bonjour <query hexdump> <RDATA hexdump>
* P2P_SERVICE_ADD upnp <version hex> <service>
*
* e.g)
* [Bonjour]
* # IP Printing over TCP (PTR) (RDATA=MyPrinter._ipp._tcp.local.)
* P2P_SERVICE_ADD bonjour 045f697070c00c000c01 094d795072696e746572c027
* # IP Printing over TCP (TXT) (RDATA=txtvers=1,pdl=application/postscript)
* P2P_SERVICE_ADD bonjour 096d797072696e746572045f697070c00c001001
* 09747874766572733d311a70646c3d6170706c69636174696f6e2f706f7374736372797074
*
* [UPnP]
* P2P_SERVICE_ADD upnp 10 uuid:6859dede-8574-59ab-9332-123456789012
* P2P_SERVICE_ADD upnp 10 uuid:6859dede-8574-59ab-9332-123456789012::upnp:rootdevice
* P2P_SERVICE_ADD upnp 10 uuid:6859dede-8574-59ab-9332-123456789012::urn:schemas-upnp
* -org:device:InternetGatewayDevice:1
* P2P_SERVICE_ADD upnp 10 uuid:6859dede-8574-59ab-9322-123456789012::urn:schemas-upnp
* -org:service:ContentDirectory:2
*/
for (String s : servInfo.getSupplicantQueryList()) {
String command = "P2P_SERVICE_ADD";
command += (" " + s);
if (!doBooleanCommand(command)) {
return false;
}
}
return true;
|
public boolean | p2pServiceDel(android.net.wifi.p2p.nsd.WifiP2pServiceInfo servInfo)
/*
* P2P_SERVICE_DEL bonjour <query hexdump>
* P2P_SERVICE_DEL upnp <version hex> <service>
*/
for (String s : servInfo.getSupplicantQueryList()) {
String command = "P2P_SERVICE_DEL ";
String[] data = s.split(" ");
if (data.length < 2) {
return false;
}
if ("upnp".equals(data[0])) {
command += s;
} else if ("bonjour".equals(data[0])) {
command += data[0];
command += (" " + data[1]);
} else {
return false;
}
if (!doBooleanCommand(command)) {
return false;
}
}
return true;
|
public boolean | p2pServiceFlush()
return doBooleanCommand("P2P_SERVICE_FLUSH");
|
public boolean | p2pSetChannel(int lc, int oc)
if (DBG) Log.d(mTAG, "p2pSetChannel: lc="+lc+", oc="+oc);
if (lc >=1 && lc <= 11) {
if (!doBooleanCommand("P2P_SET listen_channel " + lc)) {
return false;
}
} else if (lc != 0) {
return false;
}
if (oc >= 1 && oc <= 165 ) {
int freq = (oc <= 14 ? 2407 : 5000) + oc * 5;
return doBooleanCommand("P2P_SET disallow_freq 1000-"
+ (freq - 5) + "," + (freq + 5) + "-6000");
} else if (oc == 0) {
/* oc==0 disables "P2P_SET disallow_freq" (enables all freqs) */
return doBooleanCommand("P2P_SET disallow_freq \"\"");
}
return false;
|
public boolean | p2pStopFind()
return doBooleanCommand("P2P_STOP_FIND");
|
public static synchronized void | pauseScan()
synchronized (mLock) {
if (sScanCmdId != 0 && sScanSettings != null && sScanEventHandler != null) {
Log.d(TAG, "Pausing scan");
stopScanNative(sWlan0Index, sScanCmdId);
sScanCmdId = 0;
sScanEventHandler.onScanPaused();
}
}
|
public boolean | ping()
String pong = doStringCommand("PING");
return (pong != null && pong.equals("PONG"));
|
public java.lang.String | pktcntPoll()Example outout:
TXGOOD=396
TXBAD=1
return doStringCommand("PKTCNT_POLL");
|
public boolean | reassociate()
if (DBG) logDbg("REASSOCIATE ");
return doBooleanCommand("REASSOCIATE");
|
public boolean | reconnect()
if (DBG) logDbg("RECONNECT ");
return doBooleanCommand("RECONNECT");
|
private static native int | registerNatives()
|
public boolean | removeNetwork(int netId)
return doBooleanCommand("REMOVE_NETWORK " + netId);
|
private static native boolean | requestRangeNative(int iface, int id, RttManager.RttParams[] params)
|
public static synchronized boolean | requestRtt(RttManager.RttParams[] params, com.android.server.wifi.WifiNative$RttEventHandler handler)
synchronized (mLock) {
if (sRttCmdId != 0) {
return false;
} else {
sRttCmdId = getNewCmdIdLocked();
}
sRttEventHandler = handler;
return requestRangeNative(sWlan0Index, sRttCmdId, params);
}
|
public static synchronized void | resetHotlist()
synchronized (mLock) {
if (sHotlistCmdId != 0) {
resetHotlistNative(sWlan0Index, sHotlistCmdId);
sHotlistCmdId = 0;
sHotlistEventHandler = null;
}
}
|
private static native boolean | resetHotlistNative(int iface, int id)
|
public boolean | responderReportNfcHandover(java.lang.String requestMessage)
return doBooleanCommand("NFC_REPORT_HANDOVER RESP P2P " + requestMessage + " 00");
|
public static synchronized void | restartScan()
synchronized (mLock) {
if (sScanCmdId == 0 && sScanSettings != null && sScanEventHandler != null) {
Log.d(TAG, "Restarting scan");
startScan(sScanSettings, sScanEventHandler);
sScanEventHandler.onScanRestarted();
}
}
|
public boolean | saveConfig()
return doBooleanCommand("SAVE_CONFIG");
|
public boolean | scan(int type, java.lang.String freqList)
if (type == SCAN_WITHOUT_CONNECTION_SETUP) {
if (freqList == null) return doBooleanCommand("SCAN TYPE=ONLY");
else return doBooleanCommand("SCAN TYPE=ONLY freq=" + freqList);
} else if (type == SCAN_WITH_CONNECTION_SETUP) {
if (freqList == null) return doBooleanCommand("SCAN");
else return doBooleanCommand("SCAN freq=" + freqList);
} else {
throw new IllegalArgumentException("Invalid scan type");
}
|
public java.lang.String | scanResult(java.lang.String bssid)Format of result:
id=1016
bssid=00:03:7f:40:84:10
freq=2462
beacon_int=200
capabilities=0x0431
qual=0
noise=0
level=-46
tsf=0000002669008476
age=5
ie=00105143412d485332302d52322d54455354010882848b960c12182403010b0706555...
flags=[WPA2-EAP-CCMP][ESS][P2P][HS20]
ssid=QCA-HS20-R2-TEST
p2p_device_name=
p2p_config_methods=0x0SET_NE
anqp_venue_name=02083d656e6757692d466920416c6c69616e63650a3239383920436f...
anqp_network_auth_type=010000
anqp_roaming_consortium=03506f9a05001bc504bd
anqp_ip_addr_type_availability=0c
anqp_nai_realm=0200300000246d61696c2e6578616d706c652e636f6d3b636973636f2...
anqp_3gpp=000600040132f465
anqp_domain_name=0b65786d61706c652e636f6d
hs20_operator_friendly_name=11656e6757692d466920416c6c69616e63650e636869...
hs20_wan_metrics=01c40900008001000000000a00
hs20_connection_capability=0100000006140001061600000650000106bb010106bb0...
hs20_osu_providers_list=0b5143412d4f53552d425353010901310015656e6757692d...
return doStringCommand("BSS " + bssid);
|
public java.lang.String | scanResults(int sid)Format of results:
=================
id=1
bssid=68:7f:74:d7:1b:6e
freq=2412
level=-43
tsf=1344621975160944
age=2623
flags=[WPA2-PSK-CCMP][WPS][ESS]
ssid=zubyb
====
RANGE=ALL gets all scan results
RANGE=ID- gets results from ID
MASK= see wpa_supplicant/src/common/wpa_ctrl.h for details
return doStringCommandWithoutLogging("BSS RANGE=" + sid + "- MASK=0x21987");
|
public boolean | setBand(int band)
return doBooleanCommand("DRIVER SETBAND " + band);
|
public java.lang.String | setBatchedScanSettings(android.net.wifi.BatchedScanSettings settings)Format of command
DRIVER WLS_BATCHING SET SCANFREQ=x MSCAN=r BESTN=y CHANNEL= RTT=s
where x is an ascii representation of an integer number of seconds between scans
r is an ascii representation of an integer number of scans per batch
y is an ascii representation of an integer number of the max AP to remember per scan
z, w, t represent a 1..n size list of channel numbers and/or 'A', 'B' values
indicating entire ranges of channels
s is an ascii representation of an integer number of highest-strength AP
for which we'd like approximate distance reported
The return value is an ascii integer representing a guess of the number of scans
the firmware can remember before it runs out of buffer space or -1 on error
if (settings == null) {
return doStringCommand("DRIVER WLS_BATCHING STOP");
}
String cmd = "DRIVER WLS_BATCHING SET SCANFREQ=" + settings.scanIntervalSec;
cmd += " MSCAN=" + settings.maxScansPerBatch;
if (settings.maxApPerScan != BatchedScanSettings.UNSPECIFIED) {
cmd += " BESTN=" + settings.maxApPerScan;
}
if (settings.channelSet != null && !settings.channelSet.isEmpty()) {
cmd += " CHANNEL=<";
int i = 0;
for (String channel : settings.channelSet) {
cmd += (i > 0 ? "," : "") + channel;
++i;
}
cmd += ">";
}
if (settings.maxApForDistance != BatchedScanSettings.UNSPECIFIED) {
cmd += " RTT=" + settings.maxApForDistance;
}
return doStringCommand(cmd);
|
public boolean | setBluetoothCoexistenceMode(int mode)Sets the bluetooth coexistence mode.
return doBooleanCommand("DRIVER BTCOEXMODE " + mode);
|
public boolean | setBluetoothCoexistenceScanMode(boolean setCoexScanMode)Enable or disable Bluetooth coexistence scan mode. When this mode is on,
some of the low-level scan parameters used by the driver are changed to
reduce interference with A2DP streaming.
if (setCoexScanMode) {
return doBooleanCommand("DRIVER BTCOEXSCAN-START");
} else {
return doBooleanCommand("DRIVER BTCOEXSCAN-STOP");
}
|
public boolean | setConcurrencyPriority(java.lang.String s)"sta" prioritizes STA connection over P2P and "p2p" prioritizes
P2P connection over STA
return doBooleanCommand("P2P_SET conc_pref " + s);
|
public boolean | setConfigMethods(java.lang.String cfg)
return doBooleanCommand("SET config_methods " + cfg);
|
public boolean | setCountryCode(java.lang.String countryCode)
return doBooleanCommand("DRIVER COUNTRY " + countryCode.toUpperCase(Locale.ROOT));
|
public boolean | setDeviceName(java.lang.String name)
return doBooleanCommand("SET device_name " + name);
|
public boolean | setDeviceType(java.lang.String type)
return doBooleanCommand("SET device_type " + type);
|
public boolean | setExternalSim(boolean external)
synchronized (mLock) {
String value = external ? "1" : "0";
Log.d(TAG, "Setting external_sim to " + value);
return doBooleanCommand("SET external_sim " + value);
}
|
public static synchronized boolean | setHotlist(WifiScanner.HotlistSettings settings, com.android.server.wifi.WifiNative$HotlistEventHandler eventHandler)
synchronized (mLock) {
if (sHotlistCmdId != 0) {
return false;
} else {
sHotlistCmdId = getNewCmdIdLocked();
}
sHotlistEventHandler = eventHandler;
if (setHotlistNative(sWlan0Index, sScanCmdId, settings) == false) {
sHotlistEventHandler = null;
return false;
}
return true;
}
|
private static native boolean | setHotlistNative(int iface, int id, WifiScanner.HotlistSettings settings)
|
public boolean | setManufacturer(java.lang.String value)
return doBooleanCommand("SET manufacturer " + value);
|
public void | setMiracastMode(int mode)
// Note: optional feature on the driver. It is ok for this to fail.
doBooleanCommand("DRIVER MIRACAST " + mode);
|
public boolean | setModelName(java.lang.String value)
return doBooleanCommand("SET model_name " + value);
|
public boolean | setModelNumber(java.lang.String value)
return doBooleanCommand("SET model_number " + value);
|
public boolean | setNetworkVariable(int netId, java.lang.String name, java.lang.String value)
if (TextUtils.isEmpty(name) || TextUtils.isEmpty(value)) return false;
return doBooleanCommand("SET_NETWORK " + netId + " " + name + " " + value);
|
public boolean | setP2pGroupIdle(java.lang.String iface, int time)
synchronized (mLock) {
return doBooleanCommandNative("IFNAME=" + iface + " SET p2p_group_idle " + time);
}
|
public boolean | setP2pPowerSave(java.lang.String iface, boolean enabled)
synchronized (mLock) {
if (enabled) {
return doBooleanCommandNative("IFNAME=" + iface + " P2P_SET ps 1");
} else {
return doBooleanCommandNative("IFNAME=" + iface + " P2P_SET ps 0");
}
}
|
public boolean | setP2pSsidPostfix(java.lang.String postfix)
return doBooleanCommand("SET p2p_ssid_postfix " + postfix);
|
public boolean | setPersistentReconnect(boolean enabled)
int value = (enabled == true) ? 1 : 0;
return doBooleanCommand("SET persistent_reconnect " + value);
|
public void | setPowerSave(boolean enabled)
if (enabled) {
doBooleanCommand("SET ps 1");
} else {
doBooleanCommand("SET ps 0");
}
|
public void | setScanInterval(int scanInterval)
doBooleanCommand("SCAN_INTERVAL " + scanInterval);
|
public static synchronized boolean | setScanningMacOui(byte[] oui)
synchronized (mLock) {
if (startHal()) {
return setScanningMacOuiNative(sWlan0Index, oui);
} else {
return false;
}
}
|
private static native boolean | setScanningMacOuiNative(int iface, byte[] oui)
|
public boolean | setSerialNumber(java.lang.String value)
return doBooleanCommand("SET serial_number " + value);
|
public void | setSupplicantLogLevel(java.lang.String level)
doStringCommand("LOG_LEVEL " + level);
|
public boolean | setSuspendOptimizations(boolean enabled)
// if (mSuspendOptEnabled == enabled) return true;
mSuspendOptEnabled = enabled;
Log.e("native", "do suspend " + enabled);
if (enabled) {
return doBooleanCommand("DRIVER SETSUSPENDMODE 1");
} else {
return doBooleanCommand("DRIVER SETSUSPENDMODE 0");
}
|
public boolean | setWfdDeviceInfo(java.lang.String hex)
return doBooleanCommand("WFD_SUBELEM_SET 0 " + hex);
|
public boolean | setWfdEnable(boolean enable)
return doBooleanCommand("SET wifi_display " + (enable ? "1" : "0"));
|
public java.lang.String | signalPoll()Example output:
RSSI=-65
LINKSPEED=48
NOISE=9999
FREQUENCY=0
return doStringCommandWithoutLogging("SIGNAL_POLL");
|
public boolean | simAuthResponse(int id, java.lang.String response)
synchronized (mLock) {
return doBooleanCommand("CTRL-RSP-SIM-" + id + ":GSM-AUTH" + response);
}
|
public boolean | startDriver()
return doBooleanCommand("DRIVER START");
|
public boolean | startFilteringMulticastV4Packets()Start filtering out Multicast V4 packets
return doBooleanCommand("DRIVER RXFILTER-STOP")
&& doBooleanCommand("DRIVER RXFILTER-REMOVE 2")
&& doBooleanCommand("DRIVER RXFILTER-START");
|
public boolean | startFilteringMulticastV6Packets()Start filtering out Multicast V6 packets
return doBooleanCommand("DRIVER RXFILTER-STOP")
&& doBooleanCommand("DRIVER RXFILTER-REMOVE 3")
&& doBooleanCommand("DRIVER RXFILTER-START");
|
public static synchronized boolean | startHal()
Log.i(TAG, "startHal");
synchronized (mLock) {
if (sHalIsStarted)
return true;
if (sHalFailed)
return false;
if (startHalNative() && (getInterfaces() != 0) && (sWlan0Index != -1)) {
new MonitorThread().start();
sHalIsStarted = true;
return true;
} else {
Log.i(TAG, "Could not start hal");
sHalIsStarted = false;
sHalFailed = true;
return false;
}
}
|
private static native boolean | startHalNative()
|
public static synchronized boolean | startScan(com.android.server.wifi.WifiNative$ScanSettings settings, com.android.server.wifi.WifiNative$ScanEventHandler eventHandler)
synchronized (mLock) {
if (sScanCmdId != 0) {
stopScan();
} else if (sScanSettings != null || sScanEventHandler != null) {
/* current scan is paused; no need to stop it */
}
sScanCmdId = getNewCmdIdLocked();
sScanSettings = settings;
sScanEventHandler = eventHandler;
if (startScanNative(sWlan0Index, sScanCmdId, settings) == false) {
sScanEventHandler = null;
sScanSettings = null;
return false;
}
return true;
}
|
private static native boolean | startScanNative(int iface, int id, com.android.server.wifi.WifiNative$ScanSettings settings)
|
public static native boolean | startSupplicant(boolean p2pSupported)
|
public void | startTdls(java.lang.String macAddr, boolean enable)
if (enable) {
doBooleanCommand("TDLS_DISCOVER " + macAddr);
doBooleanCommand("TDLS_SETUP " + macAddr);
} else {
doBooleanCommand("TDLS_TEARDOWN " + macAddr);
}
|
public boolean | startWpsPbc(java.lang.String bssid)
if (TextUtils.isEmpty(bssid)) {
return doBooleanCommand("WPS_PBC");
} else {
return doBooleanCommand("WPS_PBC " + bssid);
}
|
public boolean | startWpsPbc(java.lang.String iface, java.lang.String bssid)
synchronized (mLock) {
if (TextUtils.isEmpty(bssid)) {
return doBooleanCommandNative("IFNAME=" + iface + " WPS_PBC");
} else {
return doBooleanCommandNative("IFNAME=" + iface + " WPS_PBC " + bssid);
}
}
|
public java.lang.String | startWpsPinDisplay(java.lang.String bssid)
if (TextUtils.isEmpty(bssid)) {
return doStringCommand("WPS_PIN any");
} else {
return doStringCommand("WPS_PIN " + bssid);
}
|
public java.lang.String | startWpsPinDisplay(java.lang.String iface, java.lang.String bssid)
synchronized (mLock) {
if (TextUtils.isEmpty(bssid)) {
return doStringCommandNative("IFNAME=" + iface + " WPS_PIN any");
} else {
return doStringCommandNative("IFNAME=" + iface + " WPS_PIN " + bssid);
}
}
|
public boolean | startWpsPinKeypad(java.lang.String pin)
if (TextUtils.isEmpty(pin)) return false;
return doBooleanCommand("WPS_PIN any " + pin);
|
public boolean | startWpsPinKeypad(java.lang.String iface, java.lang.String pin)
if (TextUtils.isEmpty(pin)) return false;
synchronized (mLock) {
return doBooleanCommandNative("IFNAME=" + iface + " WPS_PIN any " + pin);
}
|
public boolean | startWpsRegistrar(java.lang.String bssid, java.lang.String pin)
if (TextUtils.isEmpty(bssid) || TextUtils.isEmpty(pin)) return false;
return doBooleanCommand("WPS_REG " + bssid + " " + pin);
|
public java.lang.String | status()
return status(false);
|
public java.lang.String | status(boolean noEvents)
if (noEvents) {
return doStringCommand("STATUS-NO_EVENTS");
} else {
return doStringCommand("STATUS");
}
|
public boolean | stopDriver()
return doBooleanCommand("DRIVER STOP");
|
public boolean | stopFilteringMulticastV4Packets()Stop filtering out Multicast V4 packets.
return doBooleanCommand("DRIVER RXFILTER-STOP")
&& doBooleanCommand("DRIVER RXFILTER-ADD 2")
&& doBooleanCommand("DRIVER RXFILTER-START");
|
public boolean | stopFilteringMulticastV6Packets()Stop filtering out Multicast V6 packets.
return doBooleanCommand("DRIVER RXFILTER-STOP")
&& doBooleanCommand("DRIVER RXFILTER-ADD 3")
&& doBooleanCommand("DRIVER RXFILTER-START");
|
public static synchronized void | stopHal()
stopHalNative();
|
private static native void | stopHalNative()
|
public static synchronized void | stopScan()
synchronized (mLock) {
stopScanNative(sWlan0Index, sScanCmdId);
sScanSettings = null;
sScanEventHandler = null;
sScanCmdId = 0;
}
|
private static native boolean | stopScanNative(int iface, int id)
|
public boolean | stopSupplicant()
return doBooleanCommand("TERMINATE");
|
public static synchronized boolean | trackSignificantWifiChange(WifiScanner.WifiChangeSettings settings, com.android.server.wifi.WifiNative$SignificantWifiChangeEventHandler handler)
synchronized (mLock) {
if (sSignificantWifiChangeCmdId != 0) {
return false;
} else {
sSignificantWifiChangeCmdId = getNewCmdIdLocked();
}
sSignificantWifiChangeHandler = handler;
if (trackSignificantWifiChangeNative(sWlan0Index, sScanCmdId, settings) == false) {
sSignificantWifiChangeHandler = null;
return false;
}
return true;
}
|
private static native boolean | trackSignificantWifiChangeNative(int iface, int id, WifiScanner.WifiChangeSettings settings)
|
public static native boolean | unloadDriver()
|
static synchronized void | untrackSignificantWifiChange()
synchronized (mLock) {
if (sSignificantWifiChangeCmdId != 0) {
untrackSignificantWifiChangeNative(sWlan0Index, sSignificantWifiChangeCmdId);
sSignificantWifiChangeCmdId = 0;
sSignificantWifiChangeHandler = null;
}
}
|
private static native boolean | untrackSignificantWifiChangeNative(int iface, int id)
|
public java.lang.String | waitForEvent()
// No synchronization necessary .. it is implemented in WifiMonitor
return waitForEventNative();
|
private native java.lang.String | waitForEventNative()Wait for the supplicant to send an event, returning the event string.
|
private static native void | waitForHalEventNative()
|