⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sos_logging.c

📁 嵌入式操作系统内核
💻 C
字号:
#include <sos.h>#include <sos_logging.h>#include <led.h>#ifdef SOS_USE_LOGGINGstatic sos_log_t *log_buffer = NULL;static uint8_t   log_index = 0;static bool log_started = false;static bool log_in_logging = false;static bool log_in_flush = false;void ker_log( uint8_t type, sos_pid_t mod_id, uint16_t val ){	HAS_CRITICAL_SECTION;	if( log_started == false ) {		return;	}		if( mod_id == KER_LOG_PID || mod_id == KER_UART_PID || 		mod_id == UART_PID || mod_id == MSG_QUEUE_PID || mod_id == RADIO_PID) {		return;	}		ENTER_CRITICAL_SECTION();	if( log_in_logging == true || log_in_flush == true) {		LEAVE_CRITICAL_SECTION();		return;	}	log_in_logging = true;	if( log_buffer == NULL ) {		log_buffer = ker_malloc( sizeof( sos_log_t ) * SOS_LOG_NUM_BUFFERS, KER_LOG_PID );		if( log_buffer == NULL ) {			log_in_logging = false;			LEAVE_CRITICAL_SECTION();			return;		}		log_index = 0;	}		log_buffer[log_index].pid = mod_id;	log_buffer[log_index].type = type;	log_buffer[log_index].val = val;		log_index++;		if( log_index >= SOS_LOG_NUM_BUFFERS ) {		ker_log_flush();	}	log_in_logging = false;	LEAVE_CRITICAL_SECTION();}void ker_log_flush( void ){	sos_log_t *tmp;	uint8_t idx;	HAS_CRITICAL_SECTION;		ENTER_CRITICAL_SECTION();	if( log_index != 0 ) {		log_in_flush = true;		tmp = log_buffer;		idx = log_index;		log_buffer = NULL;		log_index = 0;		post_uart( KER_LOG_PID, KER_LOG_PID, 			0, sizeof( sos_log_t ) * idx,			tmp, SOS_MSG_RELEASE, BCAST_ADDRESS);		log_in_flush = false;	}	LEAVE_CRITICAL_SECTION();}void ker_log_start(){	log_started = true;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -