static jintArray android_net_wifi_getValidChannels(JNIEnv *env, jclass cls, jint iface, jint band) { wifi_interface_handle handle = getIfaceHandle(env, cls, iface); ALOGD("getting valid channels %p", handle); static const int MaxChannels = 64; wifi_channel channels[64]; int num_channels = 0; wifi_error result = wifi_get_valid_channels(handle, band, MaxChannels, channels, &num_channels); if (result == WIFI_SUCCESS) { jintArray channelArray = env->NewIntArray(num_channels); if (channelArray == NULL) { ALOGE("failed to allocate channel list"); return NULL; } env->SetIntArrayRegion(channelArray, 0, num_channels, channels); return channelArray; } else { ALOGE("failed to get channel list : %d", result); return NULL; } }
void getChannelList(void) { wifi_channel channel[MAX_CH_BUF_SIZE]; int num_channels = 0, i; int result = wifi_get_valid_channels(wlan0Handle, band, MAX_CH_BUF_SIZE, channel, &num_channels); printMsg("Number of channels - %d\nChannel List:\n",num_channels); for (i = 0; i < num_channels; i++) { printMsg("%d MHz\n", channel[i]); } }