/*******************************************************************************
|
* 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);
|
}
|