/* * @Description: * @Date: 2020-12-22 18:27:24 * @LastEditors: CK.Zh * @LastEditTime: 2021-01-07 17:54:00 * @FilePath: \NaviKit_stm32\Middlewares\Log\log.c */ /* * log.c * * Created on: Dec 16, 2020 * Author: bookshiyi */ #include "log.h" static bool mutex =false; void Log(LogLevel_t level,LogPositon_t positon,char *format,...) { if(mutex){ unsigned char time_out = 100; while(mutex && time_out--){//100ms timout for multi-thread use log function osDelay(1); } } if(!mutex){ mutex = true; switch(level){ case trace: { printf("[Trace] ") ; }break; case debug: { printf("[Debug] ") ; }break; case info: { printf("[Info ] ") ; }break; case warning:{ printf("[Warn ] ") ; }break; case error: { printf("[Error] ") ; }break; case fatal: { printf("[Fatal] ") ; }break; default: { printf("[Undefined Level] ") ; }break; } printf("%10.3f | ",osKernelGetTickCount()/1000.0); switch (positon) { case sys:{ printf("SYS: ") ; }break; case som:{ printf("SOM: ") ; }break; case pmb:{ printf("PMB: ") ; }break; default: { printf("Undefined Position: ") ;}break; } // va_list args; // va_start( args, format ); // print(0, format, args ); va_list ap; va_start(ap, format); vprintf(format, ap); va_end(ap); printf("\n") ; mutex = false; } }