/***************************************************************************** * Copyright (c) 2019, Nations Technologies Inc. * * All rights reserved. * **************************************************************************** * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the disclaimer below. * * Nations' name may not be used to endorse or promote products derived from * this software without specific prior written permission. * * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY NATIONS "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE * DISCLAIMED. IN NO EVENT SHALL NATIONS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************/ /** * @file log.h * @author Nations * @version v1.0.0 * * @copyright Copyright (c) 2019, Nations Technologies Inc. All rights reserved. */ #ifndef __LOG_H__ #define __LOG_H__ #include "rtthread.h" #ifndef LOG_ENABLE #define LOG_ENABLE 1 #endif #if LOG_ENABLE #include #define LOG_NONE 0 #define LOG_ERROR 10 #define LOG_WARNING 20 #define LOG_INFO 30 #define LOG_DEBUG 40 #ifndef LOG_LEVEL #define LOG_LEVEL LOG_INFO #endif #if LOG_LEVEL >= LOG_INFO #define log_info(...) rt_kprintf(__VA_ARGS__) #else #define log_info(...) #endif #if LOG_LEVEL >= LOG_ERROR #define log_error(...) rt_kprintf(__VA_ARGS__) #else #define log_error(...) #endif #if LOG_LEVEL >= LOG_WARNING #define log_warning(...) rt_kprintf(__VA_ARGS__) #else #define log_warning(...) #endif #if LOG_LEVEL >= LOG_DEBUG #define log_debug(...) rt_kprintf(__VA_ARGS__) #else #define log_debug(...) #endif #else /* !LOG_ENABLE */ #define log_info(...) #define log_warning(...) #define log_error(...) #define log_debug(...) #define log_init() #endif #define RECV_BUF_LEN (32) ///////////////////////////////////////////////////////////////////////////////////////// typedef struct uart_cache { rt_sem_t sem; uint8_t idx; uint8_t tmp; uint8_t buf[RECV_BUF_LEN]; } ts_UartCache; ///////////////////////////////////////////////////////////////////////////////////////// extern ts_UartCache rx_cache; ///////////////////////////////////////////////////////////////////////////////////////// #define log_func() log_debug("call %s\r\n", __FUNCTION__) // if((x== y) == z) 则停止 #define log_assert(x, y, z) \ do \ { \ if ((y == x) == z) \ { \ while (1) \ { \ log_error("assert error at %s:%d\n", __FILE__, __LINE__); \ }; \ } \ } while (0) ///////////////////////////////////////////////////////////////////////////////////////// #define dbg_mem_info() \ do \ { \ uint32_t totle_mem = 0; \ uint32_t used_mem = 0; \ uint32_t max_used = 0; \ rt_memory_info(&totle_mem, &used_mem, &max_used); \ log_debug("meminfo = %d, used mem = %d, max used = %d\n", totle_mem, used_mem, max_used); \ } while (0) void log_init(void); int uart_reset(int bandrate); int uart_transmit_bytes(uint8_t *data, uint32_t len); void uart_transmit_bytes_dma(uint8_t *data, uint32_t len); #endif /* __LOG_H__ */