0
我在wpa_supplicant中使用下面的代碼來獲取Android中的wifi信號強度。雖然路由器距離1米,但我能夠獲得鏈接速度,但信號強度總是顯示-110dB。android wifi信號強度不能正常傳送
代碼:
if ((os_strcasecmp(cmd, "rssi") == 0) || (os_strcasecmp(cmd, "rssi-approx") == 0)) {
struct iwreq wrq;
struct iw_statistics stats;
signed int rssi;
wpa_printf(MSG_DEBUG, ">>>. DRIVER AWEXT RSSI ");
wrq.u.data.pointer = (caddr_t) &stats;
wrq.u.data.length = sizeof(stats);
wrq.u.data.flags = 1; /* Clear updated flag */
os_strncpy(wrq.ifr_name, drv->wext->ifname, IFNAMSIZ);
if (ioctl(drv->wext->ioctl_sock, SIOCGIWSTATS, &wrq) < 0) {
perror("ioctl[SIOCGIWSTATS]");
ret = -1;
} else {
if (stats.qual.updated & IW_QUAL_DBM) {
/* Values in dBm, stored in u8 with range 63 : -192 */
rssi = (wrq.u.qual.level > 63) ?
wrq.u.qual.level - 0x100 :
wrq.u.qual.level;
} else {
rssi = wrq.u.qual.level;
}
if (drv->ssid_len != 0 && drv->ssid_len < buf_len) {
os_memcpy((void *) buf, (void *) (drv->ssid),
drv->ssid_len);
ret = drv->ssid_len;
ret += snprintf(&buf[ret], buf_len-ret,
" rssi %d\n", rssi);
if (ret < (int)buf_len) {
return(ret);
}
ret = -1;
}
}
}
感謝名單ndsmyter :) – bhupesh