12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /*
- * log.c
- *
- * Created on: Nov 7, 2022
- * Author: tangm
- */
- #include "log.h"
- #include "usart.h"
- #include <stdarg.h>
- #include <stdio.h>
- #include "ucos_ii.h"
- #include "main.h"
- #include "udp_send.h"
- #include "stdlib.h"
- #include "malloc.h"
- ///重定向c库函数printf到串口,重定向后可使用printf函数
- int fputc(int ch, FILE *f)
- {
- /* 发送一个字节数据到串口 */
- USART_SendData(USART_485, (uint8_t) ch);
-
- /* 等待发送完毕 */
- while (USART_GetFlagStatus(USART_485, USART_FLAG_TXE) == RESET);
- return (ch);
- }
- ///重定向c库函数scanf到串口,重写向后可使用scanf、getchar等函数
- int fgetc(FILE *f)
- {
- /* 等待串口输入数据 */
- while (USART_GetFlagStatus(USART_485, USART_FLAG_RXNE) == RESET);
- return (int)USART_ReceiveData(USART_485);
- }
- static OS_EVENT *logMutex;
- uint8_t perr;
- void LogPrint(logLevel_t logLevel,const char *file, const char *func, const int line, char * fmt, ...)
- {
-
- OSMutexPend(logMutex, 5000, &perr);
- if(perr == OS_ERR_NONE)
- {
- udp_log_start();
- va_list args;
- va_start(args, fmt);
- char buf[LOG_LEN_MAX];
- vsnprintf(buf, sizeof(buf), fmt, args);
- va_end(args);
- char *p=mymalloc(SRAMEX, 1024);
- switch (logLevel)
- {
- #ifdef _LOG_INFO
- case LOG_INFO:
- sprintf(p,"[%s][%s][%s:%4d] %s\r\n", "INFO", file, func, line, buf);
- break;
- #endif
- #ifdef _LOG_DEBUG
- case LOG_DEBUG:
- sprintf(p,"[%s][%s][%s:%4d] %s\r\n", "DEBUG",file, func, line, buf);
- break;
- #endif
- #ifdef _LOG_WARN
- case LOG_WARN:
- sprintf(p,"[%s][%s][%s:%4d] %s\r\n", "WARN", file, func, line, buf);
- break;
- #endif
- case LOG_ERROR:
- sprintf(p,"[%s][%s][%s:%4d] %s\r\n", "ERROR",file, func, line, buf);
- break;
- default:
- break;
- }
- udp_send_printf(p);
- myfree(SRAMEX, p);
- udp_log_close();
- perr = OSMutexPost(logMutex);
- }
- }
- void log_init()
- {
-
- logMutex = OSMutexCreate (0, &perr);//创建一个log互斥量
- OSTimeDly(100);
- }
|