yincheng.zhong
3 天以前 2ebb8217f43b69f491620423ea4d5d5944d1f91d
keil/include/components/internet/src/AIR780EDriver.c
@@ -19,18 +19,18 @@
#include "HIDO_Util.h"
#include "HIDO_Debug.h"
#include "HIDO_Log.h"
#include "DBG.h"
/*******************************************************************************
 *                                  Macro                                      *
 *******************************************************************************/
/* 串口相关 */
#define AIR780E_UART_TX_BUF_SIZE                              (100)                  /* 串口未使用DMA模式,不需要buff */
#define AIR780E_UART_RX_BUF_SIZE                              (1024)
#define AIR780E_UART_TX_QUEUE_MEMBER_CNT                      8                   /* 串口未使用DMA模式,不需要 */
#define AIR780E_UART_RX_BUF_SIZE                              (1024  + 512)
#define AIR780E_UART_TX_QUEUE_MEMBER_CNT                      16                   /* 串口未使用DMA模式,不需要 */
/* AT相关 */
#define AIR780E_AT_SEND_BUF_SIZE                              (128)         /* 发送的单条AT指令的最大长度 */
#define AIR780E_AT_RECV_BUF_SIZE                              (128)         /* 单挑AT指令 */
#define AIR780E_AT_SEND_BUF_SIZE                              (( 0*1024) + 512)         /* 发送的单条AT指令的最大长度 */
#define AIR780E_AT_RECV_BUF_SIZE                              (( 1024) + 512)         /* 单挑AT指令 */
/*******************************************************************************
 *                             Type Definition                                 *
@@ -112,7 +112,7 @@
    { "9", AIR780E_EVENT_NUM_9 },
};
static const HIDO_CHAR * const l_apcEventName[AIR780E_EVENT_LAST]={
static const HIDO_CHAR * const l_apcEventName[AIR780E_EVENT_LAST]= {
    HIDO_EVENT_ENTRY_NAME,
    HIDO_EVENT_EXIT_NAME,
    "HIDO_AT_EVENT_OK",
@@ -167,7 +167,7 @@
    "AIR780E_EVENT_QMTSTAT",
    "AIR780E_EVENT_RDY",
   "AIR780E_EVENT_QTTS",
    "AIR780E_EVENT_QTTS",
    "AIR780E_EVENT_QLTONE",
    "AIR780E_EVENT_RECEIVE",
@@ -215,6 +215,7 @@
 * Author            : 杜键
 * Modified Date:    : 2018年5月22日
 *******************************************************************************/
extern uint8_t log_4g_enable_flag;
static HIDO_INT32 AIR780E_ReadLine(HIDO_ATLiteDeviceStruct *_pstATDevice)
{
    static HIDO_UINT8 l_u8Mode = 0;
@@ -237,8 +238,8 @@
        _pstATDevice->m_pcLineBuf[_pstATDevice->m_u32LineLen++] = cCh;
        _pstATDevice->m_pcLineBuf[_pstATDevice->m_u32LineLen] = '\0';
        /* +RECEIVE, */
        /* +RECEIVE, */
        if (9 == _pstATDevice->m_u32LineLen && memcmp("+RECEIVE,", _pstATDevice->m_pcLineBuf, 9) == 0)
        {
            l_u8Mode = 1;
@@ -261,7 +262,7 @@
                /* 获取真实需要接收的长度 */
                if (HIDO_UtilParseFormat((HIDO_UINT8 *) _pstATDevice->m_pcLineBuf, _pstATDevice->m_u32LineLen, "+RECEIVE,%*,%d:",
                         &u32ReqLen) != 2)
                                         &u32ReqLen) != 2)
                {
                    break;
                }
@@ -333,12 +334,14 @@
    {
        if((_pstATDevice->m_u32LineLen > 0) && (_pstATDevice->m_pcLineBuf[_pstATDevice->m_u32LineLen - 1] == '\n'))
        {
            LOG_INFO(TRACE_MODULE_APP, "[AT Recv] %s", _pstATDevice->m_pcLineBuf);
            if(log_4g_enable_flag&&DBG_GetMode() == DBG_MODE_SHELL)
                LOG_INFO(TRACE_MODULE_APP, "[AT Recv] %s", _pstATDevice->m_pcLineBuf);//修改4G
            //HIDO_Debug( "[AT Recv] %s", _pstATDevice->m_pcLineBuf);
        }
        else
        {
            LOG_INFO(TRACE_MODULE_APP, "[AT Recv] %s\r\n", _pstATDevice->m_pcLineBuf);
            if(log_4g_enable_flag&&DBG_GetMode() == DBG_MODE_SHELL)
                LOG_INFO(TRACE_MODULE_APP, "[AT Recv] %s\r\n", _pstATDevice->m_pcLineBuf);//修改4G
            //HIDO_Debug("[AT Recv] %s\r\n", _pstATDevice->m_pcLineBuf);
        }
    }
@@ -358,24 +361,26 @@
 * Modified Date:    : 2018年5月22日
 *******************************************************************************/
static HIDO_INT32 AIR780E_Output(HIDO_ATLiteDeviceStruct *_pstATDevice, HIDO_UINT8 *_pu8Data,
        HIDO_UINT32 _u32Len)
                                 HIDO_UINT32 _u32Len)
{
   if(HIDO_UtilIsAsciiString(_pu8Data, _u32Len) == HIDO_TRUE)
   {
      if(_pu8Data[_u32Len] == '\0')
      {
          if((_u32Len > 0) && (_pu8Data[_u32Len - 1] == '\n'))
          {
              // HIDO_Debug("[AT Send] %s", _pu8Data);
                LOG_INFO(TRACE_MODULE_APP, "[AT Send] %s", _pu8Data);
          }
          else
          {
              // HIDO_Debug("[AT Send] %s\r\n", _pu8Data);
                LOG_INFO(TRACE_MODULE_APP, "[AT Send] %s", _pu8Data);
          }
      }
   }
    if(HIDO_UtilIsAsciiString(_pu8Data, _u32Len) == HIDO_TRUE)
    {
        if(_pu8Data[_u32Len] == '\0')
        {
            if((_u32Len > 0) && (_pu8Data[_u32Len - 1] == '\n'))
            {
                // HIDO_Debug("[AT Send] %s", _pu8Data);
                if(log_4g_enable_flag&&DBG_GetMode() == DBG_MODE_SHELL)
                    LOG_INFO(TRACE_MODULE_APP, "[AT Send] %s", _pu8Data);//修改4G
            }
            else
            {
                // HIDO_Debug("[AT Send] %s\r\n", _pu8Data);
                if(log_4g_enable_flag&&DBG_GetMode() == DBG_MODE_SHELL)
                    LOG_INFO(TRACE_MODULE_APP, "[AT Send] %s", _pu8Data);//修改4G
            }
        }
    }
    return Uart_Send(UART_ID_4G, _pu8Data, _u32Len);
}
@@ -386,10 +391,10 @@
/*******************************************************************************
 * Function Name     : AIR780E_PinRegister
 * Description       :
 * Input             :
 * Output            :
 * Return            :
 * Description       :
 * Input             :
 * Output            :
 * Return            :
 * Author            : 杜键
 * Modified Date:    : 2018年5月22日
 *******************************************************************************/
@@ -507,7 +512,7 @@
HIDO_INT32 AIR780EDriver_SetConnectLen(HIDO_UINT32 _u32ConnectLen)
{
    l_u32ConnectLen = _u32ConnectLen;
    return HIDO_OK;
}
@@ -520,15 +525,17 @@
 * Author            : 杜键
 * Modified Date:    : 2018年5月22日
 *******************************************************************************/
extern uint8_t log_4g_enable_flag;
HIDO_INT32 AIR780EDriver_FSMDebug(HIDO_FSMStruct *_pstStateMachine, HIDO_INT32 _i32Level, HIDO_CHAR *_pcFmt, va_list _ap)
{
    HIDO_CHAR acBuff[384];
    vsnprintf(acBuff, sizeof(acBuff), _pcFmt, _ap);
  //  HIDO_Log(HIDO_LOG_LEVEL_DEBUG, "%s", acBuff);
    //  HIDO_Log(HIDO_LOG_LEVEL_DEBUG, "%s", acBuff);
    //HIDO_Debug(acBuff);
    LOG_INFO(TRACE_MODULE_APP, acBuff);
    if(log_4g_enable_flag&&DBG_GetMode() == DBG_MODE_SHELL)
        LOG_INFO(TRACE_MODULE_APP, acBuff);//修改4G
    return HIDO_OK;
}
@@ -545,7 +552,7 @@
HIDO_INT32 AIR780EDriver_Reset(void)
{
    HIDO_FSMEventExecute(HIDO_FSM(AIR780E), HIDO_AT_EVENT_TIMEOUT, HIDO_NULL);
    return HIDO_OK;
}
@@ -558,10 +565,85 @@
 * Author            : 杜键
 * Modified Date:    : 2018年5月22日
 *******************************************************************************/
//#ifdef _UWB_4G
//#else
//#endif
#ifdef _4G_115200
void AIR780EUartInit(void)
{
io_pin_mux_set(_4G_USART_RX_Pin,IO_FUNC4);
 ST_UartInit stUartInit;
    ST_UartInit stUartInit;
    /* 串口初始化 */
    stUartInit.m_eRxMode = UART_RX_MODE_INT;
    stUartInit.m_eTxMode = UART_TX_MODE_POLL;
    stUartInit.m_pu8RxBuf = l_au8AIR780EUartRxBuf;
    stUartInit.m_u32RxBufSize = AIR780E_UART_RX_BUF_SIZE;
    stUartInit.m_pu8TxBuf = l_au8AIR780EUartTxBuf;
    stUartInit.m_u32TxBufSize = AIR780E_UART_TX_BUF_SIZE;
    stUartInit.m_u32TxQueueMemberCnt = AIR780E_UART_TX_QUEUE_MEMBER_CNT;
    stUartInit.m_u32BaudRate = 115200;
    if(Uart_Init(UART_ID_4G, &stUartInit) != HIDO_OK)
    {
    }
}
HIDO_INT32 AIR780EDriver_Init(void)
{
    ST_UartInit stUartInit;
    /* 串口初始化 */
    stUartInit.m_eRxMode = UART_RX_MODE_INT;
    stUartInit.m_eTxMode = UART_TX_MODE_POLL;
    stUartInit.m_pu8RxBuf = l_au8AIR780EUartRxBuf;
    stUartInit.m_u32RxBufSize = AIR780E_UART_RX_BUF_SIZE;
    stUartInit.m_pu8TxBuf = l_au8AIR780EUartTxBuf;
    stUartInit.m_u32TxBufSize = AIR780E_UART_TX_BUF_SIZE;
    stUartInit.m_u32TxQueueMemberCnt = AIR780E_UART_TX_QUEUE_MEMBER_CNT;
    stUartInit.m_u32BaudRate = 115200;
    if(Uart_Init(UART_ID_4G, &stUartInit) != HIDO_OK)
    {
        return HIDO_ERR;
    }
    /* 定时器初始化 */
    if (HIDO_TimerCreate(&l_stDriverData.m_u32FSMTimerID) != HIDO_OK)
    {
        return HIDO_ERR;
    }
    /* AT驱动初始化 */
    HIDO_ATLiteDeviceInitStruct stATInit;
    stATInit.m_pstFSM = HIDO_FSM(AIR780E);
    stATInit.m_pstAtSets = l_astATCmdSetList;
    stATInit.m_u32AtSetsCount = HIDO_ARRARY_COUNT(l_astATCmdSetList);
    stATInit.m_fnGetc = AIR780E_GetChar;
    stATInit.m_fnReadLine = AIR780E_ReadLine;
    stATInit.m_fnOutput = AIR780E_Output;
    stATInit.m_pcSendBuf = (HIDO_CHAR *) l_au8ATSendBuf;
    stATInit.m_u32SendBufSize = HIDO_ARRARY_COUNT(l_au8ATSendBuf);
    stATInit.m_pcLineBuf = (HIDO_CHAR *) l_au8ATRecvBuf;
    stATInit.m_u32LineBufSize = HIDO_ARRARY_COUNT(l_au8ATRecvBuf);
    stATInit.m_pUserData = &l_stDriverData;
    /* AT设备初始化 */
    if (HIDO_ATLiteDeviceInit(&l_stAIR780EDevice, &stATInit) != HIDO_OK)
    {
        return HIDO_ERR;
    }
    /* 状态机初始化 */
    HIDO_FSMRegister(HIDO_FSM(AIR780E), HIDO_FSM_STATE(AIR780E), "AIR780E", l_apcEventName, &l_stAIR780EDevice,
                     HIDO_FSM_DBG_FLAG_ON);
    HIDO_FSMRegisterDebugFunc(HIDO_FSM(AIR780E), AIR780EDriver_FSMDebug);
    return HIDO_OK;
}
#else
void AIR780EUartInit(void)
{
    ST_UartInit stUartInit;
    /* 串口初始化 */
    stUartInit.m_eRxMode = UART_RX_MODE_INT;
@@ -574,7 +656,7 @@
    stUartInit.m_u32BaudRate = 9600;
    if(Uart_Init(UART_ID_4G, &stUartInit) != HIDO_OK)
    {
    }
}
HIDO_INT32 AIR780EDriver_Init(void)
@@ -624,9 +706,10 @@
    /* 状态机初始化 */
    HIDO_FSMRegister(HIDO_FSM(AIR780E), HIDO_FSM_STATE(AIR780E), "AIR780E", l_apcEventName, &l_stAIR780EDevice,
            HIDO_FSM_DBG_FLAG_ON);
                     HIDO_FSM_DBG_FLAG_ON);
    HIDO_FSMRegisterDebugFunc(HIDO_FSM(AIR780E), AIR780EDriver_FSMDebug);
    return HIDO_OK;
}
#endif