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

http://androidxref.com/8.0.0_r4



[java]  view plain  copy
  1. // MSG_INFO默认打印   MSG_DEBUG 默认不打印  
  2. wpa_msg(wpa_s, MSG_INFO, "Associated with " MACSTR, MAC2STR(bssid));   
  3. wpa_dbg(wpa_s, MSG_DEBUG, "State: %s -> %s",wpa_supplicant_state_txt(wpa_s->wpa_state),wpa_supplicant_state_txt(state));  
  4.   // #define wpa_dbg(args...) wpa_msg(args)      //wpa_dbg最终也调用到 wpa_msg  
  5. int wpa_debug_level = MSG_INFO;     
  6. //打印日志的级别默认为MSG_INFO 【4】   
  7. //那么意味着 MSG_EXCESSIVE 【1】, MSG_MSGDUMP 【2】, MSG_DEBUG 【3】  将不打印 不会输出很多有用信息  
  8. 措施1: 在代码中修改此处 默认为  int wpa_debug_level = MSG_DEBUG;   
  9. 措施2: 编译时的 prject_xxx.rc 文件中的 service wpa_supplicant /system/bin/wpa_supplicant 多几个 -dddd 提高打印级别  
  10. 措施3: 在开发者模式下选中   启动WLAN详细日志记录功能 按钮    
  11.   
  12. enum {  
  13.     MSG_EXCESSIVE 【1】, MSG_MSGDUMP 【2】, MSG_DEBUG 【3】, MSG_INFO 【4】, MSG_WARNING 【5】, MSG_ERROR【6】  
  14. };  
  15.   
  16.   
  17. void wpa_msg(void *ctx, int level, const char *fmt, ...)  
  18. {  
  19.     va_list ap;  
  20.     char *buf;  
  21.     int buflen;  
  22.     int len;  
  23.     char prefix[130];  
  24.   
  25.     va_start(ap, fmt);  
  26.     buflen = vsnprintf(NULL, 0, fmt, ap) + 1;  
  27.     va_end(ap);  
  28.   
  29.     buf = os_malloc(buflen);  
  30.     if (buf == NULL) {  
  31.         wpa_printf(MSG_ERROR, "wpa_msg: Failed to allocate message "  
  32.                "buffer");  
  33.         return;  
  34.     }  
  35.     va_start(ap, fmt);  
  36.     prefix[0] = '\0';  
  37.     if (wpa_msg_ifname_cb) {  
  38.         const char *ifname = wpa_msg_ifname_cb(ctx);  
  39.         if (ifname) {  
  40.             int res = os_snprintf(prefix, sizeof(prefix), "%s: ",  
  41.                           ifname);  
  42.             if (os_snprintf_error(sizeof(prefix), res))  
  43.                 prefix[0] = '\0';  
  44.         }  
  45.     }  
  46.     len = vsnprintf(buf, buflen, fmt, ap);  
  47.     va_end(ap);  
  48.     wpa_printf(level, "%s%s", prefix, buf);   // 调用到此处 把当前 MSG_XXX 传入  
  49.     if (wpa_msg_cb)  
  50.         wpa_msg_cb(ctx, level, WPA_MSG_PER_INTERFACE, buf, len);  
  51.     bin_clear_free(buf, buflen);  
  52. }  
  53.   
  54.   
  55. void wpa_printf(int level, const char *fmt, ...)  
  56. {  
  57.     va_list ap;  
  58.   
  59.     va_start(ap, fmt);  
  60.       
  61. // 如果当前的等级大于 默认等级 打印输出, 小于默认等级则不输出   
  62. //   MSG_DEBUG 【3】小于MSG_INFO 【4】  所以一般不输出  直接 if(false) 跳过了  
  63.     if (level >= wpa_debug_level【 MSG_INFO 4】) {  
  64.   
  65.         __android_log_vprint(wpa_to_android_level(level),ANDROID_LOG_NAME, fmt, ap);  
  66.   
  67.         if (wpa_debug_syslog) {  
  68.             vsyslog(syslog_priority(level), fmt, ap);  
  69.         } else {  
  70.   
  71.         wpa_debug_print_timestamp();  
  72.   
  73.         if (out_file) {  
  74.             vfprintf(out_file, fmt, ap);  
  75.             fprintf(out_file, "\n");  
  76.         } else {  
  77.   
  78.         vprintf(fmt, ap);  
  79.         printf("\n");  
  80.   
  81.         }  
  82.   
  83.         }  
  84.   
  85.     }  
  86.     va_end(ap);  
  87.   
  88.     if (wpa_debug_tracing_file != NULL) {  
  89.         va_start(ap, fmt);  
  90.         fprintf(wpa_debug_tracing_file, WPAS_TRACE_PFX, level);  
  91.         vfprintf(wpa_debug_tracing_file, fmt, ap);  
  92.         fprintf(wpa_debug_tracing_file, "\n");  
  93.         fflush(wpa_debug_tracing_file);  
  94.         va_end(ap);  
  95.     }  
  96.   
  97. }  
  98.   
  99.   
  100. static int wpa_to_android_level(int level)  
  101. {  
  102.     if (level == MSG_ERROR)  
  103.         return ANDROID_LOG_ERROR;  
  104.     if (level == MSG_WARNING)  
  105.         return ANDROID_LOG_WARN;  
  106.     if (level == MSG_INFO)  
  107.         return ANDROID_LOG_INFO;  //  MSG_INFO  
  108.     return ANDROID_LOG_DEBUG;  // MSG_DEBUG  
  109. }  
  110.   
  111.   
  112. typedef enum android_LogPriority {  
  113.     ANDROID_LOG_UNKNOWN = 0,  
  114.     ANDROID_LOG_DEFAULT,     
  115.     ANDROID_LOG_VERBOSE,  
  116.     ANDROID_LOG_DEBUG,  
  117.     ANDROID_LOG_INFO,  
  118.     ANDROID_LOG_WARN,  
  119.     ANDROID_LOG_ERROR,  
  120.     ANDROID_LOG_FATAL,  
  121.     ANDROID_LOG_SILENT,       
  122. } android_LogPriority;  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值