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;