WPA_SUPPLICANT的LOG打印信息分析与调整

http://androidxref.com/8.0.0_r4


// MSG_INFO默认打印   MSG_DEBUG 默认不打印
wpa_msg(wpa_s, MSG_INFO, "Associated with " MACSTR, MAC2STR(bssid)); 
wpa_dbg(wpa_s, MSG_DEBUG, "State: %s -> %s",wpa_supplicant_state_txt(wpa_s->wpa_state),wpa_supplicant_state_txt(state));
  // #define wpa_dbg(args...) wpa_msg(args)      //wpa_dbg最终也调用到 wpa_msg
int wpa_debug_level = MSG_INFO;   
//打印日志的级别默认为MSG_INFO 【4】 
//那么意味着 MSG_EXCESSIVE 【1】, MSG_MSGDUMP 【2】, MSG_DEBUG 【3】  将不打印 不会输出很多有用信息
措施1: 在代码中修改此处 默认为  int wpa_debug_level = MSG_DEBUG; 
措施2: 编译时的 prject_xxx.rc 文件中的 service wpa_supplicant /system/bin/wpa_supplicant 多几个 -dddd 提高打印级别
措施3: 在开发者模式下选中   启动WLAN详细日志记录功能 按钮  

enum {
	MSG_EXCESSIVE 【1】, MSG_MSGDUMP 【2】, MSG_DEBUG 【3】, MSG_INFO 【4】, MSG_WARNING 【5】, MSG_ERROR【6】
};


void wpa_msg(void *ctx, int level, const char *fmt, ...)
{
	va_list ap;
	char *buf;
	int buflen;
	int len;
	char prefix[130];

	va_start(ap, fmt);
	buflen = vsnprintf(NULL, 0, fmt, ap) + 1;
	va_end(ap);

	buf = os_malloc(buflen);
	if (buf == NULL) {
		wpa_printf(MSG_ERROR, "wpa_msg: Failed to allocate message "
			   "buffer");
		return;
	}
	va_start(ap, fmt);
	prefix[0] = '\0';
	if (wpa_msg_ifname_cb) {
		const char *ifname = wpa_msg_ifname_cb(ctx);
		if (ifname) {
			int res = os_snprintf(prefix, sizeof(prefix), "%s: ",
					      ifname);
			if (os_snprintf_error(sizeof(prefix), res))
				prefix[0] = '\0';
		}
	}
	len = vsnprintf(buf, buflen, fmt, ap);
	va_end(ap);
	wpa_printf(level, "%s%s", prefix, buf);   // 调用到此处 把当前 MSG_XXX 传入
	if (wpa_msg_cb)
		wpa_msg_cb(ctx, level, WPA_MSG_PER_INTERFACE, buf, len);
	bin_clear_free(buf, buflen);
}


void wpa_printf(int level, const char *fmt, ...)
{
	va_list ap;

	va_start(ap, fmt);
	
// 如果当前的等级大于 默认等级 打印输出, 小于默认等级则不输出 
//	 MSG_DEBUG 【3】小于MSG_INFO 【4】  所以一般不输出  直接 if(false) 跳过了
	if (level >= wpa_debug_level【 MSG_INFO 4】) {

		__android_log_vprint(wpa_to_android_level(level),ANDROID_LOG_NAME, fmt, ap);

		if (wpa_debug_syslog) {
			vsyslog(syslog_priority(level), fmt, ap);
		} else {

		wpa_debug_print_timestamp();

		if (out_file) {
			vfprintf(out_file, fmt, ap);
			fprintf(out_file, "\n");
		} else {

		vprintf(fmt, ap);
		printf("\n");

		}

		}

	}
	va_end(ap);

	if (wpa_debug_tracing_file != NULL) {
		va_start(ap, fmt);
		fprintf(wpa_debug_tracing_file, WPAS_TRACE_PFX, level);
		vfprintf(wpa_debug_tracing_file, fmt, ap);
		fprintf(wpa_debug_tracing_file, "\n");
		fflush(wpa_debug_tracing_file);
		va_end(ap);
	}

}


static int wpa_to_android_level(int level)
{
	if (level == MSG_ERROR)
		return ANDROID_LOG_ERROR;
	if (level == MSG_WARNING)
		return ANDROID_LOG_WARN;
	if (level == MSG_INFO)
		return ANDROID_LOG_INFO;  //  MSG_INFO
	return ANDROID_LOG_DEBUG;  // MSG_DEBUG
}


typedef enum android_LogPriority {
    ANDROID_LOG_UNKNOWN = 0,
    ANDROID_LOG_DEFAULT,   
    ANDROID_LOG_VERBOSE,
    ANDROID_LOG_DEBUG,
    ANDROID_LOG_INFO,
    ANDROID_LOG_WARN,
    ANDROID_LOG_ERROR,
    ANDROID_LOG_FATAL,
    ANDROID_LOG_SILENT,     
} android_LogPriority;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值