Lines Matching refs:env

38 static bool doCommand(JNIEnv* env, jstring javaCommand,
40 ScopedUtfChars command(env, javaCommand);
63 static jint doIntCommand(JNIEnv* env, jstring javaCommand) {
65 if (!doCommand(env, javaCommand, reply, sizeof(reply))) {
71 static jboolean doBooleanCommand(JNIEnv* env, jstring javaCommand) {
73 if (!doCommand(env, javaCommand, reply, sizeof(reply))) {
80 static jstring doStringCommand(JNIEnv* env, jstring javaCommand) {
82 if (!doCommand(env, javaCommand, reply, sizeof(reply))) {
85 return env->NewStringUTF(reply);
88 static jboolean android_net_wifi_isDriverLoaded(JNIEnv* env, jobject)
93 static jboolean android_net_wifi_loadDriver(JNIEnv* env, jobject)
98 static jboolean android_net_wifi_unloadDriver(JNIEnv* env, jobject)
103 static jboolean android_net_wifi_startSupplicant(JNIEnv* env, jobject, jboolean p2pSupported)
108 static jboolean android_net_wifi_killSupplicant(JNIEnv* env, jobject, jboolean p2pSupported)
113 static jboolean android_net_wifi_connectToSupplicant(JNIEnv* env, jobject)
118 static void android_net_wifi_closeSupplicantConnection(JNIEnv* env, jobject)
123 static jstring android_net_wifi_waitForEvent(JNIEnv* env, jobject)
128 return env->NewStringUTF(buf);
134 static jboolean android_net_wifi_doBooleanCommand(JNIEnv* env, jobject, jstring javaCommand) {
135 return doBooleanCommand(env, javaCommand);
138 static jint android_net_wifi_doIntCommand(JNIEnv* env, jobject, jstring javaCommand) {
139 return doIntCommand(env, javaCommand);
142 static jstring android_net_wifi_doStringCommand(JNIEnv* env, jobject, jstring javaCommand) {
143 return doStringCommand(env,javaCommand);
156 JNIEnv *env = NULL;
157 mVM->AttachCurrentThread(&env, NULL);
158 return env;
161 static wifi_handle getWifiHandle(JNIEnv *env, jclass cls) {
162 return (wifi_handle) getStaticLongField(env, cls, WifiHandleVarName);
165 static wifi_interface_handle getIfaceHandle(JNIEnv *env, jclass cls, jint index) {
166 return (wifi_interface_handle) getStaticLongArrayField(env, cls, WifiIfaceHandleVarName, index);
169 static jobject createScanResult(JNIEnv *env, wifi_scan_result *result) {
173 jobject scanResult = createObject(env, "android/net/wifi/ScanResult");
180 setStringField(env, scanResult, "SSID", result->ssid);
186 setStringField(env, scanResult, "BSSID", bssid);
188 setIntField(env, scanResult, "level", result->rssi);
189 setIntField(env, scanResult, "frequency", result->channel);
190 setLongField(env, scanResult, "timestamp", result->ts);
195 static jboolean android_net_wifi_startHal(JNIEnv* env, jclass cls) {
196 wifi_handle halHandle = getWifiHandle(env, cls);
201 setStaticLongField(env, cls, WifiHandleVarName, (jlong)halHandle);
204 env->GetJavaVM(&mVM);
205 mCls = (jclass) env->NewGlobalRef(cls);
216 JNIEnv * env = getEnv();
217 setStaticLongField(env, mCls, WifiHandleVarName, 0);
218 env->DeleteGlobalRef(mCls);
223 static void android_net_wifi_stopHal(JNIEnv* env, jclass cls) {
225 wifi_handle halHandle = getWifiHandle(env, cls);
229 static void android_net_wifi_waitForHalEvents(JNIEnv* env, jclass cls) {
231 ALOGD("waitForHalEvents called, vm = %p, obj = %p, env = %p", mVM, mCls, env);
233 wifi_handle halHandle = getWifiHandle(env, cls);
237 static int android_net_wifi_getInterfaces(JNIEnv *env, jclass cls) {
239 wifi_handle halHandle = getWifiHandle(env, cls);
247 THROW(env, "android_net_wifi_getInterfaces no interfaces");
252 THROW(env, "android_net_wifi_getInterfaces null interface array");
257 THROW(env, "Too many interfaces");
261 jlongArray array = (env)->NewLongArray(n);
263 THROW(env, "Error in accessing array");
271 env->SetLongArrayRegion(array, 0, n, elems);
272 setStaticLongArrayField(env, cls, WifiIfaceHandleVarName, array);
277 static jstring android_net_wifi_getInterfaceName(JNIEnv *env, jclass cls, jint i) {
280 jlong value = getStaticLongArrayField(env, cls, WifiIfaceHandleVarName, i);
286 return env->NewStringUTF(buf);
293 JNIEnv *env = NULL;
294 mVM->AttachCurrentThread(&env, NULL);
296 ALOGD("onScanResultsAvailable called, vm = %p, obj = %p, env = %p", mVM, mCls, env);
298 reportEvent(env, mCls, "onScanResultsAvailable", "(I)V", id);
302 JNIEnv *env = NULL;
303 mVM->AttachCurrentThread(&env, NULL);
305 ALOGD("onScanStatus called, vm = %p, obj = %p, env = %p", mVM, mCls, env);
307 reportEvent(env, mCls, "onScanStatus", "(I)V", status);
312 JNIEnv *env = NULL;
313 mVM->AttachCurrentThread(&env, NULL);
315 ALOGD("onFullScanResult called, vm = %p, obj = %p, env = %p", mVM, mCls, env);
317 jobject scanResult = createScanResult(env, result);
321 jbyteArray elements = env->NewByteArray(result->ie_length);
330 env->SetByteArrayRegion(elements, 0, result->ie_length, bytes);
334 reportEvent(env, mCls, "onFullScanResult", "(ILandroid/net/wifi/ScanResult;[B)V", id,
337 env->DeleteLocalRef(scanResult);
338 env->DeleteLocalRef(elements);
342 JNIEnv *env, jclass cls, jint iface, jint id, jobject settings) {
344 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
350 params.base_period = getIntField(env, settings, "base_period_ms");
351 params.max_ap_per_scan = getIntField(env, settings, "max_ap_per_scan");
352 params.report_threshold = getIntField(env, settings, "report_threshold");
360 jobjectArray buckets = (jobjectArray)getObjectField(env, settings, "buckets", bucket_array_type);
361 params.num_buckets = getIntField(env, settings, "num_buckets");
366 jobject bucket = getObjectArrayField(env, settings, "buckets", bucket_array_type, i);
368 params.buckets[i].bucket = getIntField(env, bucket, "bucket");
369 params.buckets[i].band = (wifi_band) getIntField(env, bucket, "band");
370 params.buckets[i].period = getIntField(env, bucket, "period_ms");
375 int report_events = getIntField(env, bucket, "report_events");
381 env, bucket, "channels", channel_array_type);
383 params.buckets[i].num_channels = getIntField(env, bucket, "num_channels");
387 jobject channel = getObjectArrayField(env, bucket, "channels", channel_array_type, j);
389 params.buckets[i].channels[j].channel = getIntField(env, channel, "frequency");
390 params.buckets[i].channels[j].dwellTimeMs = getIntField(env, channel, "dwell_time_ms");
392 bool passive = getBoolField(env, channel, "passive");
410 static jboolean android_net_wifi_stopScan(JNIEnv *env, jclass cls, jint iface, jint id) {
411 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
418 JNIEnv *env, jclass cls, jint iface, jboolean flush) {
423 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
428 jclass clsScanResult = (env)->FindClass("android/net/wifi/ScanResult");
434 jobjectArray scanResults = env->NewObjectArray(num_results, clsScanResult, NULL);
442 jobject scanResult = createObject(env, "android/net/wifi/ScanResult");
448 setStringField(env, scanResult, "SSID", results[i].ssid);
455 setStringField(env, scanResult, "BSSID", bssid);
457 setIntField(env, scanResult, "level", results[i].rssi);
458 setIntField(env, scanResult, "frequency", results[i].channel);
459 setLongField(env, scanResult, "timestamp", results[i].ts);
461 env->SetObjectArrayElement(scanResults, i, scanResult);
462 env->DeleteLocalRef(scanResult);
473 JNIEnv *env, jclass cls, jint iface, jobject capabilities) {
475 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
486 setIntField(env, capabilities, "max_scan_cache_size", c.max_scan_cache_size);
487 setIntField(env, capabilities, "max_scan_buckets", c.max_scan_buckets);
488 setIntField(env, capabilities, "max_ap_cache_per_scan", c.max_ap_cache_per_scan);
489 setIntField(env, capabilities, "max_rssi_sample_size", c.max_rssi_sample_size);
490 setIntField(env, capabilities, "max_scan_reporting_threshold", c.max_scan_reporting_threshold);
491 setIntField(env, capabilities, "max_hotlist_aps", c.max_hotlist_aps);
492 setIntField(env, capabilities, "max_significant_wifi_change_aps",
533 static bool parseMacAddress(JNIEnv *env, jobject obj, mac_addr addr) {
535 env, obj, "bssid", "Ljava/lang/String;");
542 const char *bssid = env->GetStringUTFChars(macAddrString, NULL);
555 JNIEnv *env = NULL;
556 mVM->AttachCurrentThread(&env, NULL);
558 ALOGD("onHotlistApFound called, vm = %p, obj = %p, env = %p, num_results = %d",
559 mVM, mCls, env, num_results);
561 jclass clsScanResult = (env)->FindClass("android/net/wifi/ScanResult");
567 jobjectArray scanResults = env->NewObjectArray(num_results, clsScanResult, NULL);
575 jobject scanResult = createObject(env, "android/net/wifi/ScanResult");
581 setStringField(env, scanResult, "SSID", results[i].ssid);
587 setStringField(env, scanResult, "BSSID", bssid);
589 setIntField(env, scanResult, "level", results[i].rssi);
590 setIntField(env, scanResult, "frequency", results[i].channel);
591 setLongField(env, scanResult, "timestamp", results[i].ts);
593 env->SetObjectArrayElement(scanResults, i, scanResult);
598 reportEvent(env, mCls, "onHotlistApFound", "(I[Landroid/net/wifi/ScanResult;)V",
603 JNIEnv *env, jclass cls, jint iface, jint id, jobject ap) {
605 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
611 jobjectArray array = (jobjectArray) getObjectField(env, ap,
613 params.num_ap = env->GetArrayLength(array);
621 jobject objAp = env->GetObjectArrayElement(array, i);
624 env, objAp, "bssid", "Ljava/lang/String;");
630 const char *bssid = env->GetStringUTFChars(macAddrString, NULL);
646 params.ap[i].low = getIntField(env, objAp, "low");
647 params.ap[i].high = getIntField(env, objAp, "high");
658 JNIEnv *env, jclass cls, jint iface, jint id) {
660 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
668 JNIEnv *env = NULL;
669 mVM->AttachCurrentThread(&env, NULL);
671 ALOGD("onSignificantWifiChange called, vm = %p, obj = %p, env = %p", mVM, mCls, env);
673 jclass clsScanResult = (env)->FindClass("android/net/wifi/ScanResult");
679 jobjectArray scanResults = env->NewObjectArray(num_results, clsScanResult, NULL);
689 jobject scanResult = createObject(env, "android/net/wifi/ScanResult");
695 // setStringField(env, scanResult, "SSID", results[i].ssid);
701 setStringField(env, scanResult, "BSSID", bssid);
703 setIntField(env, scanResult, "level", result.rssi[0]);
704 setIntField(env, scanResult, "frequency", result.channel);
705 // setLongField(env, scanResult, "timestamp", result.ts);
707 env->SetObjectArrayElement(scanResults, i, scanResult);
710 reportEvent(env, mCls, "onSignificantWifiChange", "(I[Landroid/net/wifi/ScanResult;)V",
716 JNIEnv *env, jclass cls, jint iface, jint id, jobject settings) {
718 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
724 params.rssi_sample_size = getIntField(env, settings, "rssiSampleSize");
725 params.lost_ap_sample_size = getIntField(env, settings, "lostApSampleSize");
726 params.min_breaching = getIntField(env, settings, "minApsBreachingThreshold");
730 env, settings, "bssidInfos", bssid_info_array_type);
731 params.num_ap = env->GetArrayLength(bssids);
742 jobject objAp = env->GetObjectArrayElement(bssids, i);
745 env, objAp, "bssid", "Ljava/lang/String;");
751 const char *bssid = env->GetStringUTFChars(macAddrString, NULL);
765 params.ap[i].low = getIntField(env, objAp, "low");
766 params.ap[i].high = getIntField(env, objAp, "high");
781 JNIEnv *env, jclass cls, jint iface, jint id) {
783 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
808 static jobject android_net_wifi_getLinkLayerStats (JNIEnv *env, jclass cls, jint iface) {
813 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
820 jobject wifiLinkLayerStats = createObject(env, "android/net/wifi/WifiLinkLayerStats");
826 setIntField(env, wifiLinkLayerStats, "beacon_rx", link_stat.beacon_rx);
827 setIntField(env, wifiLinkLayerStats, "rssi_mgmt", link_stat.rssi_mgmt);
828 setLongField(env, wifiLinkLayerStats, "rxmpdu_be", link_stat.ac[WIFI_AC_BE].rx_mpdu);
829 setLongField(env, wifiLinkLayerStats, "rxmpdu_bk", link_stat.ac[WIFI_AC_BK].rx_mpdu);
830 setLongField(env, wifiLinkLayerStats, "rxmpdu_vi", link_stat.ac[WIFI_AC_VI].rx_mpdu);
831 setLongField(env, wifiLinkLayerStats, "rxmpdu_vo", link_stat.ac[WIFI_AC_VO].rx_mpdu);
832 setLongField(env, wifiLinkLayerStats, "txmpdu_be", link_stat.ac[WIFI_AC_BE].tx_mpdu);
833 setLongField(env, wifiLinkLayerStats, "txmpdu_bk", link_stat.ac[WIFI_AC_BK].tx_mpdu);
834 setLongField(env, wifiLinkLayerStats, "txmpdu_vi", link_stat.ac[WIFI_AC_VI].tx_mpdu);
835 setLongField(env, wifiLinkLayerStats, "txmpdu_vo", link_stat.ac[WIFI_AC_VO].tx_mpdu);
836 setLongField(env, wifiLinkLayerStats, "lostmpdu_be", link_stat.ac[WIFI_AC_BE].mpdu_lost);
837 setLongField(env, wifiLinkLayerStats, "lostmpdu_bk", link_stat.ac[WIFI_AC_BK].mpdu_lost);
838 setLongField(env, wifiLinkLayerStats, "lostmpdu_vi", link_stat.ac[WIFI_AC_VI].mpdu_lost);
839 setLongField(env, wifiLinkLayerStats, "lostmpdu_vo", link_stat.ac[WIFI_AC_VO].mpdu_lost);
840 setLongField(env, wifiLinkLayerStats, "retries_be", link_stat.ac[WIFI_AC_BE].retries);
841 setLongField(env, wifiLinkLayerStats, "retries_bk", link_stat.ac[WIFI_AC_BK].retries);
842 setLongField(env, wifiLinkLayerStats, "retries_vi", link_stat.ac[WIFI_AC_VI].retries);
843 setLongField(env, wifiLinkLayerStats, "retries_vo", link_stat.ac[WIFI_AC_VO].retries);
846 setIntField(env, wifiLinkLayerStats, "on_time", radio_stat.on_time);
847 setIntField(env, wifiLinkLayerStats, "tx_time", radio_stat.tx_time);
848 setIntField(env, wifiLinkLayerStats, "rx_time", radio_stat.rx_time);
849 setIntField(env, wifiLinkLayerStats, "on_time_scan", radio_stat.on_time_scan);
854 static jint android_net_wifi_getSupportedFeatures(JNIEnv *env, jclass cls, jint iface) {
855 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
884 JNIEnv *env = NULL;
885 mVM->AttachCurrentThread(&env, NULL);
887 ALOGD("onRttResults called, vm = %p, obj = %p, env = %p", mVM, mCls, env);
889 jclass clsRttResult = (env)->FindClass("android/net/wifi/RttManager$RttResult");
895 jobjectArray rttResults = env->NewObjectArray(num_results, clsRttResult, NULL);
905 jobject rttResult = createObject(env, "android/net/wifi/RttManager$RttResult");
915 setStringField(env, rttResult, "bssid", bssid);
916 setIntField(env, rttResult, "status", result.status);
917 setIntField(env, rttResult, "requestType", result.type);
918 setLongField(env, rttResult, "ts", result.ts);
919 setIntField(env, rttResult, "rssi", result.rssi);
920 setIntField(env, rttResult, "rssi_spread", result.rssi_spread);
921 setIntField(env, rttResult, "tx_rate", result.tx_rate.bitrate);
922 setLongField(env, rttResult, "rtt_ns", result.rtt);
923 setLongField(env, rttResult, "rtt_sd_ns", result.rtt_sd);
924 setLongField(env, rttResult, "rtt_spread_ns", result.rtt_spread);
925 setIntField(env, rttResult, "distance_cm", result.distance);
926 setIntField(env, rttResult, "distance_sd_cm", result.distance_sd);
927 setIntField(env, rttResult, "distance_spread_cm", result.distance_spread);
929 env->SetObjectArrayElement(rttResults, i, rttResult);
932 reportEvent(env, mCls, "onRttResults", "(I[Landroid/net/wifi/RttManager$RttResult;)V",
939 JNIEnv *env, jclass cls, jint iface, jint id, jobject params) {
941 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
947 int len = env->GetArrayLength((jobjectArray)params);
954 jobject param = env->GetObjectArrayElement((jobjectArray)params, i);
962 parseMacAddress(env, param, config.addr);
963 config.type = (wifi_rtt_type)getIntField(env, param, "requestType");
964 config.peer = (wifi_peer_type)getIntField(env, param, "deviceType");
965 config.channel.center_freq = getIntField(env, param, "frequency");
966 config.channel.width = (wifi_channel_width)getIntField(env, param, "channelWidth");
967 config.num_samples_per_measurement = getIntField(env, param, "num_samples");
968 config.num_retries_per_measurement = getIntField(env, param, "num_retries");
978 JNIEnv *env, jclass cls, jint iface, jint id, jobject params) {
980 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
986 int len = env->GetArrayLength((jobjectArray)params);
993 jobject param = env->GetObjectArrayElement((jobjectArray)params, i);
999 parseMacAddress(env, param, addrs[i]);
1005 static jboolean android_net_wifi_setScanningMacOui(JNIEnv *env, jclass cls,
1008 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
1012 int len = env->GetArrayLength(param);
1018 jbyte* bytes = env->GetByteArrayElements(param, NULL);
1027 static jintArray android_net_wifi_getValidChannels(JNIEnv *env, jclass cls,
1030 wifi_interface_handle handle = getIfaceHandle(env, cls, iface);
1040 jintArray channelArray = env->NewIntArray(num_channels);
1046 env->SetIntArrayRegion(channelArray, 0, num_channels, channels);
1106 int register_android_net_wifi_WifiNative(JNIEnv* env) {
1107 return AndroidRuntime::registerNativeMethods(env,
1114 jint Java_com_android_server_wifi_WifiNative_registerNatives(JNIEnv* env, jclass clazz) {
1115 return AndroidRuntime::registerNativeMethods(env,