/******************************************************************************* * File Name : DBG.c * Description : * Created on : 2018Äê7ÔÂ23ÈÕ * Author : ¶Å¼ü *******************************************************************************/ /******************************************************************************* * Include Files * *******************************************************************************/ #include "stdio.h" #include "stdarg.h" #include "string.h" #include "AppConfig.h" #include "HIDO_VLQueue.h" #include "HIDO_Input.h" #include "HIDO_Timer.h" #include "HIDO_Util.h" #include "Uart.h" #include "DBG.h" /******************************************************************************* * Macro * *******************************************************************************/ #define OUTPUT_BUF_SIZE 512 #define DBG_UART_RX_BUF_SIZE 256 #define DBG_UART_TX_BUF_SIZE (1024*1) #define DBG_UART_TX_QUEUE_MEMBER_CNT 64 /******************************************************************************* * Local Variable * *******************************************************************************/ static HIDO_InputStruct l_stSerialInput = { 0 }; static HIDO_UINT8 l_au8DBGUartRxBuf[DBG_UART_RX_BUF_SIZE]; //static HIDO_UINT8 l_au8DBGUartTxBuf[DBG_UART_TX_BUF_SIZE]; static HIDO_UINT8 l_u8DBGFlag = DBG_FLAG_ON; /******************************************************************************* * Local Function Declaration * *******************************************************************************/ static HIDO_INT32 DBG_SerialGetChar(HIDO_UINT8 *_pu8Char); static HIDO_INT32 DBG_SerialPutString(const char *_pcString); static HIDO_INT32 DBG_SerialPutChar(HIDO_UINT8 _u8Char); /******************************************************************************* * Local Function * *******************************************************************************/ /******************************************************************************* * Function Name : DBG_SerialGetChar * Description : * Input : * Output : * Return : * Author : ¶Å¼ü * Modified Date: : 2018Äê7ÔÂ23ÈÕ *******************************************************************************/ static HIDO_INT32 DBG_SerialGetChar(HIDO_UINT8 *_pu8Char) { return Uart_GetChar(UART_ID_DBG, _pu8Char); } /******************************************************************************* * Function Name : DBG_SerialPrintf * Description : * Input : * Output : * Return : * Author : ¶Å¼ü * Modified Date: : 2018Äê7ÔÂ23ÈÕ *******************************************************************************/ static HIDO_INT32 DBG_SerialPrintf(const HIDO_CHAR *_pcFmt, ...) { va_list ap; HIDO_CHAR acOutputBuf[OUTPUT_BUF_SIZE]; va_start(ap, _pcFmt); vsnprintf(acOutputBuf, sizeof(acOutputBuf), _pcFmt, ap); va_end(ap); return Uart_Send(UART_ID_DBG, (HIDO_UINT8 *) acOutputBuf, strlen(acOutputBuf)); } /******************************************************************************* * Function Name : DBG_SerialPutString * Description : * Input : _pcString Êä³ö×Ö·û´® * Output : * Return : HIDO_OK ³É¹¦ * HIDO_ERR ʧ°Ü * Author : ¶Å¼ü * Modified Date: : 2018Äê7ÔÂ23ÈÕ *******************************************************************************/ static HIDO_INT32 DBG_SerialPutString(const char *_pcString) { HIDO_INT32 s32Ret = 0; s32Ret = Uart_Send(UART_ID_DBG, (HIDO_UINT8 *) _pcString, strlen(_pcString)); return s32Ret; } /******************************************************************************* * Function Name : DBG_SerialPutChar * Description : DBGÊä³öÒ»¸ö×Ö·û * Input : _u8Char Êä³ö×Ö·û * Output : * Return : HIDO_OK ³É¹¦ * HIDO_ERR ʧ°Ü * Author : ¶Å¼ü * Modified Date: : 2018Äê7ÔÂ23ÈÕ *******************************************************************************/ static HIDO_INT32 DBG_SerialPutChar(HIDO_UINT8 _u8Char) { HIDO_INT32 s32Ret = 0; s32Ret = Uart_Send(UART_ID_DBG, &_u8Char, 1); return s32Ret; } /******************************************************************************* * Global Function * *******************************************************************************/ /******************************************************************************* * Function Name : HIDO_Debug * Description : * Input : * Output : * Return : * Author : ¶Å¼ü * Modified Date: : 2018Äê7ÔÂ23ÈÕ *******************************************************************************/ HIDO_INT32 HIDO_Debug(const HIDO_CHAR *_pcFmt, ...) { va_list ap; HIDO_CHAR acOutputBuf[OUTPUT_BUF_SIZE]; if(l_u8DBGFlag != DBG_FLAG_ON) { return HIDO_OK; } va_start(ap, _pcFmt); vsnprintf(acOutputBuf, sizeof(acOutputBuf), _pcFmt, ap); va_end(ap); return Uart_Send(UART_ID_DBG, (HIDO_UINT8 *) acOutputBuf, strlen(acOutputBuf)); } /******************************************************************************* * Function Name : HIDO_DebugHex * Description : * Input : * Output : * Return : * Author : ¶Å¼ü * Modified Date: : 2018Äê7ÔÂ23ÈÕ *******************************************************************************/ HIDO_INT32 HIDO_DebugHex(const HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len) { HIDO_UINT32 u32Len = 0; HIDO_CHAR acOutputBuf[64]; if(l_u8DBGFlag != DBG_FLAG_ON) { return HIDO_OK; } do { if(_u32Len > 16) { u32Len = 16; } else { u32Len = _u32Len; } memset(acOutputBuf, 0, sizeof(acOutputBuf)); HIDO_UtilByteArrayToHexString(_pu8Data, u32Len, acOutputBuf, sizeof(acOutputBuf), HIDO_TRUE); _u32Len -= u32Len; _pu8Data += u32Len; if(_u32Len != 0) { strcat(acOutputBuf, "\r\n"); } Uart_Send(UART_ID_DBG, (HIDO_UINT8 *) acOutputBuf, strlen(acOutputBuf)); } while(_u32Len != 0); return HIDO_OK; } /******************************************************************************* * Function Name : HIDO_DebugString * Description : * Input : * Output : * Return : * Author : ¶Å¼ü * Modified Date: : 2018Äê7ÔÂ23ÈÕ *******************************************************************************/ HIDO_INT32 HIDO_DebugString(const HIDO_CHAR *_pu8String, HIDO_UINT32 _u32StringLen) { if(l_u8DBGFlag != DBG_FLAG_ON) { return HIDO_OK; } return Uart_Send(UART_ID_DBG, (HIDO_UINT8 *) _pu8String, _u32StringLen); } /******************************************************************************* * Function Name : DBG_SetDebugFlag * Description : * Input : * Output : * Return : * Author : ¶Å¼ü * Modified Date: : 2018Äê7ÔÂ23ÈÕ *******************************************************************************/ HIDO_VOID DBG_SetDebugFlag(HIDO_UINT8 _u8Flag) { l_u8DBGFlag = _u8Flag; } /******************************************************************************* * Function Name : DBG_Init * Description : * Input : * Output : * Return : * Author : ¶Å¼ü * Modified Date: : 2018Äê7ÔÂ23ÈÕ *******************************************************************************/ HIDO_VOID DBG_Init(void) { ST_UartInit stInit; stInit.m_eRxMode = UART_RX_MODE_INT; stInit.m_eTxMode = UART_TX_MODE_POLL; stInit.m_pu8RxBuf = l_au8DBGUartRxBuf; stInit.m_u32RxBufSize = DBG_UART_RX_BUF_SIZE; //stInit.m_pu8TxBuf = l_au8DBGUartTxBuf; stInit.m_u32TxBufSize = DBG_UART_TX_BUF_SIZE; stInit.m_u32TxQueueMemberCnt = DBG_UART_TX_QUEUE_MEMBER_CNT; Uart_Init(UART_ID_DBG, &stInit); l_stSerialInput.m_fnPrintf = DBG_SerialPrintf; l_stSerialInput.m_fnGetc = DBG_SerialGetChar; l_stSerialInput.m_fnPutc = DBG_SerialPutChar; l_stSerialInput.m_fnPuts = DBG_SerialPutString; HIDO_InputRegister(&l_stSerialInput); }