/*******************************************************************************
|
* File Name : EC600SDriver.c
|
* Description :
|
* Created on : 2018Äê5ÔÂ22ÈÕ
|
* Author : ¶Å¼ü
|
*******************************************************************************/
|
|
/*******************************************************************************
|
* Include Files *
|
*******************************************************************************/
|
#include "EC600SDriver.h"
|
|
#include "EC600SFSM.h"
|
#include "string.h"
|
#include "GPIO.h"
|
#include "UART.h"
|
#include "HIDO_Timer.h"
|
#include "HIDO_Util.h"
|
#include "HIDO_Debug.h"
|
#include "HIDO_Log.h"
|
|
/*******************************************************************************
|
* Macro *
|
*******************************************************************************/
|
/* ´®¿ÚÏà¹Ø */
|
#define EC600S_UART_TX_BUF_SIZE (4) /* ´®¿ÚδʹÓÃDMAģʽ£¬²»ÐèÒªbuff */
|
#define EC600S_UART_RX_BUF_SIZE (1024 * 2 + 512)
|
#define EC600S_UART_TX_QUEUE_MEMBER_CNT 16 /* ´®¿ÚδʹÓÃDMAģʽ£¬²»ÐèÒª */
|
|
/* ATÏà¹Ø */
|
#define EC600S_AT_SEND_BUF_SIZE (1024 + 512) /* ·¢Ë͵ĵ¥ÌõATÖ¸ÁîµÄ×î´ó³¤¶È */
|
#define EC600S_AT_RECV_BUF_SIZE (1024 + 512) /* µ¥ÌôATÖ¸Áî */
|
|
/*******************************************************************************
|
* Type Definition *
|
*******************************************************************************/
|
|
/*******************************************************************************
|
* Local Variable *
|
*******************************************************************************/
|
static HIDO_UINT8 l_au8EC600SUartRxBuf[EC600S_UART_RX_BUF_SIZE];
|
static HIDO_UINT8 l_au8EC600SUartTxBuf[EC600S_UART_TX_BUF_SIZE];
|
|
static HIDO_UINT8 l_au8ATSendBuf[EC600S_AT_SEND_BUF_SIZE];
|
static HIDO_UINT8 l_au8ATRecvBuf[EC600S_AT_RECV_BUF_SIZE];
|
|
static ST_EC600SDriverData l_stDriverData;
|
static HIDO_ATLiteDeviceStruct l_stEC600SDevice;
|
static HIDO_UINT32 l_u32ConnectLen = 0;
|
|
static const HIDO_ATLiteCmdSetStruct l_astATCmdSetList[] =
|
{
|
{ "OK", HIDO_AT_EVENT_OK },
|
{ "SHUT OK", HIDO_AT_EVENT_OK },
|
{ "+CME ERROR:", HIDO_AT_EVENT_ERROR },
|
{ "ERROR", HIDO_AT_EVENT_ERROR },
|
{ "+CEREG:", EC600S_EVENT_CREG },
|
{ "+CGREG:", EC600S_EVENT_CGREG },
|
{ "+CGATT:", EC600S_EVENT_CGATT },
|
{ "+CSQ:", EC600S_EVENT_CSQ },
|
{ "+QLBS:", EC600S_EVENT_LBS_LOCATION },
|
{ "+CPIN:", EC600S_EVENT_CPIN },
|
{ ">", EC600S_EVENT_ACK },
|
{ "+CMTI:", EC600S_EVENT_NEW_SMS },
|
{ "+CMGR:", EC600S_EVENT_READ_SMS },
|
{ "SEND OK", EC600S_EVENT_SEND_OK },
|
{ "SEND FAIL", EC600S_EVENT_SEND_FAIL },
|
|
{ "+QIOPEN:", EC600S_EVENT_OPEN },
|
{ "+QIURC: \"recv\",", EC600S_EVENT_NEW_IP_DATA },
|
{ "+QIURC: \"closed\",", EC600S_EVENT_CLOSE },
|
{ "+QISEND:", EC600S_EVENT_SEND },
|
{ "+QIRD:", EC600S_EVENT_READ },
|
{ "CONNECT", EC600S_EVENT_CONNECT },
|
{ "+QFLST:", EC600S_EVENT_QFLST },
|
{ "+QFOPEN:", EC600S_EVENT_QFOPEN },
|
{ "+QHTTPGET:", EC600S_EVENT_QHTTPGET },
|
{ "+QHTTPPOST:", EC600S_EVENT_QHTTPPOST },
|
{ "+QHTTPREAD:", EC600S_EVENT_QHTTPREAD },
|
{ "+QHTTPREADFILE:", EC600S_EVENT_QHTTPREADFILE },
|
{ "+QHTTPPOSTFILE:", EC600S_EVENT_QHTTPPOSTFILE },
|
{ "+QGPSLOC:", EC600S_EVENT_QGPSLOC },
|
{ "+CCLK:", EC600S_EVENT_CCLK },
|
{ "+QGPSXTRADATA:", EC600S_EVENT_QGPSXTRADATA },
|
{ "+QIURC: \"pdpdeact\"", EC600S_EVENT_PDPDEACT },
|
{ "+QMTOPEN:", EC600S_EVENT_QMTOPEN },
|
{ "+QMTCLOSE:", EC600S_EVENT_QMTCLOSE },
|
{ "+QMTCONN:", EC600S_EVENT_QMTCONN },
|
{ "+QMTDISC:", EC600S_EVENT_QMTDISC },
|
{ "+QMTSUB:", EC600S_EVENT_QMTSUB },
|
{ "+QMTUNS:", EC600S_EVENT_QMTUNS },
|
{ "+QMTPUBEX:", EC600S_EVENT_QMTPUBEX },
|
{ "+QMTRECV:", EC600S_EVENT_QMTRECV },
|
{ "+QMTPING:", EC600S_EVENT_QMTPING },
|
{ "+QMTSTAT:", EC600S_EVENT_QMTSTAT },
|
{ "+CCID:", EC600S_EVENT_CCID },
|
{ "RDY", EC600S_EVENT_RDY },
|
{ "+QTTS:", EC600S_EVENT_QTTS },
|
{ "+QLTONE:", EC600S_EVENT_QLTONE },
|
|
{ "0\r", EC600S_EVENT_NUM_0 },
|
{ "1\r", EC600S_EVENT_NUM_1 },
|
{ "2\r", EC600S_EVENT_NUM_2 },
|
{ "3\r", EC600S_EVENT_NUM_3 },
|
{ "4\r", EC600S_EVENT_NUM_4 },
|
{ "5\r", EC600S_EVENT_NUM_5 },
|
{ "6\r", EC600S_EVENT_NUM_6 },
|
{ "7\r", EC600S_EVENT_NUM_7 },
|
{ "8\r", EC600S_EVENT_NUM_8 },
|
{ "9\r", EC600S_EVENT_NUM_9 },
|
};
|
|
static const HIDO_CHAR * const l_apcEventName[EC600S_EVENT_LAST]={
|
HIDO_EVENT_ENTRY_NAME,
|
HIDO_EVENT_EXIT_NAME,
|
"HIDO_AT_EVENT_OK",
|
"HIDO_AT_EVENT_ERROR",
|
"HIDO_AT_EVENT_TIMEOUT",
|
"HIDO_AT_EVENT_SEND_ERROR",
|
"EC600S_EVENT_OK",
|
"EC600S_EVENT_CREG",
|
"EC600S_EVENT_CGREG",
|
"EC600S_EVENT_CGATT",
|
"EC600S_EVENT_CSQ",
|
"EC600S_EVENT_LBS_LOCATION",
|
"EC600S_EVENT_CPIN",
|
"EC600S_EVENT_INIT_TIMEOUT",
|
|
"EC600S_EVENT_DELAY",
|
"-EC600S_EVENT_POLL",
|
"EC600S_EVENT_ACK",
|
"EC600S_EVENT_NEW_SMS",
|
"EC600S_EVENT_READ_SMS",
|
"EC600S_EVENT_SMS_DATA",
|
"EC600S_EVENT_NEW_IP_DATA",
|
|
"EC600S_EVENT_CCID",
|
"EC600S_EVENT_OPEN",
|
"EC600S_EVENT_SEND",
|
"EC600S_EVENT_SEND_OK",
|
"EC600S_EVENT_SEND_FAIL",
|
"EC600S_EVENT_CLOSE",
|
"EC600S_EVENT_READ",
|
"EC600S_EVENT_CONNECT",
|
"EC600S_EVENT_QFLST",
|
"EC600S_EVENT_QFOPEN",
|
"EC600S_EVENT_QHTTPGET",
|
"EC600S_EVENT_QHTTPPOST",
|
"EC600S_EVENT_QHTTPREAD",
|
"EC600S_EVENT_QHTTPREADFILE",
|
"EC600S_EVENT_QHTTPPOSTFILE",
|
"EC600S_EVENT_QGPSLOC",
|
"EC600S_EVENT_CCLK",
|
"EC600S_EVENT_QGPSXTRADATA",
|
"EC600S_EVENT_PDPDEACT",
|
"EC600S_EVENT_QMTOPEN",
|
"EC600S_EVENT_QMTCLOSE",
|
"EC600S_EVENT_QMTCONN",
|
"EC600S_EVENT_QMTDISC",
|
"EC600S_EVENT_QMTSUB",
|
"EC600S_EVENT_QMTUNS",
|
"EC600S_EVENT_QMTPUBEX",
|
"EC600S_EVENT_QMTRECV",
|
"EC600S_EVENT_QMTPING",
|
"EC600S_EVENT_QMTSTAT",
|
|
"EC600S_EVENT_RDY",
|
"EC600S_EVENT_QTTS",
|
"EC600S_EVENT_QLTONE",
|
|
"EC600S_EVENT_NUM_0",
|
"EC600S_EVENT_NUM_1",
|
"EC600S_EVENT_NUM_2",
|
"EC600S_EVENT_NUM_3",
|
"EC600S_EVENT_NUM_4",
|
"EC600S_EVENT_NUM_5",
|
"EC600S_EVENT_NUM_6",
|
"EC600S_EVENT_NUM_7",
|
"EC600S_EVENT_NUM_8",
|
"EC600S_EVENT_NUM_9",
|
};
|
|
static ST_GPIO l_stEC600SPin[EC600S_PIN_LAST];
|
|
/*******************************************************************************
|
* Local Function Declaration *
|
*******************************************************************************/
|
|
/*******************************************************************************
|
* Local Function *
|
*******************************************************************************/
|
/*******************************************************************************
|
* Function Name : EC600S_GetChar
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
static HIDO_INT32 EC600S_GetChar(HIDO_ATLiteDeviceStruct *_pstATDevice, HIDO_CHAR *_pcRecvChar)
|
{
|
return Uart_GetChar(UART_ID_4G, (HIDO_UINT8 *) _pcRecvChar);
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600S_ReadLine
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
static HIDO_INT32 EC600S_ReadLine(HIDO_ATLiteDeviceStruct *_pstATDevice)
|
{
|
static HIDO_UINT8 l_u8Mode = 0;
|
static HIDO_UINT32 l_u32ExpectedLen = 0;
|
static HIDO_UINT32 l_u32LastTick = 0;
|
HIDO_CHAR cCh = 0;
|
|
if ((HIDO_NULL == _pstATDevice) || (HIDO_NULL == _pstATDevice->m_fnGetc)
|
|| (HIDO_NULL == _pstATDevice->m_pcLineBuf) || (0 == _pstATDevice->m_u32LineBufSize))
|
{
|
return HIDO_ERR;
|
}
|
|
while (_pstATDevice->m_u32LineLen < _pstATDevice->m_u32LineBufSize - 1)
|
{
|
if (_pstATDevice->m_fnGetc(_pstATDevice, &cCh) != HIDO_OK)
|
{
|
return HIDO_ERR;
|
}
|
|
_pstATDevice->m_pcLineBuf[_pstATDevice->m_u32LineLen++] = cCh;
|
_pstATDevice->m_pcLineBuf[_pstATDevice->m_u32LineLen] = '\0';
|
|
/* +QIRD: */
|
if (7 == _pstATDevice->m_u32LineLen && memcmp("+QIRD: ", _pstATDevice->m_pcLineBuf, 7) == 0)
|
{
|
l_u8Mode = 1;
|
l_u32LastTick = HAL_GetTick();
|
}
|
|
/* CONNECT */
|
if (7 == _pstATDevice->m_u32LineLen && memcmp("CONNECT", _pstATDevice->m_pcLineBuf, 7) == 0)
|
{
|
l_u8Mode = 2;
|
l_u32LastTick = HAL_GetTick();
|
}
|
|
/* +QMTRECV: */
|
if (10 == _pstATDevice->m_u32LineLen && memcmp("+QMTRECV: ", _pstATDevice->m_pcLineBuf, 10) == 0)
|
{
|
l_u8Mode = 3;
|
l_u32LastTick = HAL_GetTick();
|
}
|
|
/* ³¬Ê±¼ì²é£¬·ÀÖ¹³¤Ê±¼ä´¦ÓÚIPDATAµÄ״̬ */
|
if(((l_u8Mode == 1) || (l_u8Mode == 2) || (l_u8Mode == 3)) && (HAL_GetTick() - l_u32LastTick) > 1500)
|
{
|
break;
|
}
|
|
if(1 == l_u8Mode)
|
{
|
HIDO_CHAR *pcTmp = strstr(_pstATDevice->m_pcLineBuf, "\r\n");
|
|
if(pcTmp != HIDO_NULL)
|
{
|
HIDO_UINT32 u32ReqLen = 0;
|
|
/* »ñÈ¡ÕæÊµÐèÒª½ÓÊյij¤¶È */
|
if (HIDO_UtilParseFormat((HIDO_UINT8 *) _pstATDevice->m_pcLineBuf, _pstATDevice->m_u32LineLen, "+QIRD: %d",
|
&u32ReqLen) != 1)
|
{
|
break;
|
}
|
|
if(0 == u32ReqLen)
|
{
|
break;
|
}
|
|
l_u32ExpectedLen = pcTmp - _pstATDevice->m_pcLineBuf + 2 + u32ReqLen;
|
l_u8Mode = 10;
|
}
|
}
|
else if(2 == l_u8Mode)
|
{
|
HIDO_CHAR *pcTmp = strstr(_pstATDevice->m_pcLineBuf, "\r\n");
|
|
if(pcTmp != HIDO_NULL)
|
{
|
if(CONNECT_LEN_UNKONW == l_u32ConnectLen)
|
{
|
HIDO_UINT32 u32ConnectLen = 0;
|
|
if (HIDO_UtilParseFormat((HIDO_UINT8 *) _pstATDevice->m_pcLineBuf, _pstATDevice->m_u32LineLen, "CONNECT %d",
|
&u32ConnectLen) != 1)
|
{
|
break;
|
}
|
|
l_u32ConnectLen = u32ConnectLen;
|
}
|
|
if(0 == l_u32ConnectLen)
|
{
|
break;
|
}
|
|
l_u32ExpectedLen = pcTmp - _pstATDevice->m_pcLineBuf + 2 + l_u32ConnectLen;
|
l_u8Mode = 10;
|
}
|
}
|
else if(3 == l_u8Mode)
|
{
|
HIDO_UINT32 u32ReqLen = 0;
|
HIDO_CHAR *pcTmp = strstr(_pstATDevice->m_pcLineBuf, "\r\n");
|
|
if(pcTmp != HIDO_NULL)
|
{
|
/* »ñÈ¡ÕæÊµÐèÒª½ÓÊյij¤¶È */
|
if (HIDO_UtilParseFormat((HIDO_UINT8 *) _pstATDevice->m_pcLineBuf, _pstATDevice->m_u32LineLen, "+QMTRECV: %*,%*,%*,%u,%e",
|
&u32ReqLen, &pcTmp) != 5)
|
{
|
break;
|
}
|
|
l_u32ExpectedLen = pcTmp - _pstATDevice->m_pcLineBuf + 4 + u32ReqLen;
|
l_u8Mode = 10;
|
|
if(_pstATDevice->m_u32LineLen == l_u32ExpectedLen)
|
{
|
break;
|
}
|
}
|
}
|
else if(10 == l_u8Mode)
|
{
|
if(_pstATDevice->m_u32LineLen == l_u32ExpectedLen)
|
{
|
break;
|
}
|
}
|
else
|
{
|
/* ¼ì²éCR */
|
if (AT_READ_CHAR_CR == cCh)
|
{
|
_pstATDevice->m_eLineReadFlag = AT_RAED_FLAG_GET_CR;
|
}
|
/* ¼ì²éLF */
|
else if (AT_READ_CHAR_LF == cCh)
|
{
|
if (AT_RAED_FLAG_GET_CR == _pstATDevice->m_eLineReadFlag)
|
{
|
_pstATDevice->m_eLineReadFlag = AT_RAED_FLAG_GET_LF;
|
}
|
}
|
|
if (AT_RAED_FLAG_GET_LF == _pstATDevice->m_eLineReadFlag)
|
{
|
if (2 == _pstATDevice->m_u32LineLen)
|
{
|
_pstATDevice->m_u32LineLen = 0;
|
_pstATDevice->m_eLineReadFlag = AT_RAED_FLAG_NONE;
|
}
|
else
|
{
|
_pstATDevice->m_eLineReadFlag = AT_RAED_FLAG_NONE;
|
|
if(l_u8Mode == 10)
|
{
|
l_u8Mode = 0;
|
_pstATDevice->m_u32LineLen = 0;
|
_pstATDevice->m_eLineReadFlag = AT_RAED_FLAG_NONE;
|
}
|
else
|
{
|
break;
|
}
|
}
|
}
|
|
if (1 == _pstATDevice->m_u32LineLen && '>' == _pstATDevice->m_pcLineBuf[0])
|
{
|
break;
|
}
|
}
|
}
|
|
if(HIDO_UtilIsAsciiString((HIDO_UINT8 *)_pstATDevice->m_pcLineBuf, _pstATDevice->m_u32LineLen) == HIDO_TRUE)
|
{
|
if((_pstATDevice->m_u32LineLen > 0) && (_pstATDevice->m_pcLineBuf[_pstATDevice->m_u32LineLen - 1] == '\n'))
|
{
|
HIDO_DebugEx( "[AT Recv] %s", _pstATDevice->m_pcLineBuf);
|
}
|
else
|
{
|
HIDO_DebugEx("[AT Recv] %s\r\n", _pstATDevice->m_pcLineBuf);
|
}
|
}
|
|
l_u8Mode = 0;
|
|
return HIDO_OK;
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600S_Output
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
static HIDO_INT32 EC600S_Output(HIDO_ATLiteDeviceStruct *_pstATDevice, HIDO_UINT8 *_pu8Data,
|
HIDO_UINT32 _u32Len)
|
{
|
//if(HIDO_UtilIsAsciiString(_pu8Data, _u32Len) == HIDO_TRUE)
|
{
|
if(_pu8Data[_u32Len] == '\0')
|
{
|
if((_u32Len > 0) && (_pu8Data[_u32Len - 1] == '\n'))
|
{
|
HIDO_DebugEx("[AT Send] %s", _pu8Data);
|
}
|
else
|
{
|
HIDO_DebugEx("[AT Send] %s\r\n", _pu8Data);
|
}
|
}
|
}
|
|
return Uart_Send(UART_ID_4G, _pu8Data, _u32Len);
|
}
|
|
/*******************************************************************************
|
* Global Function *
|
*******************************************************************************/
|
|
/*******************************************************************************
|
* Function Name : EC600S_PinRegister
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
HIDO_INT32 EC600SDriver_PinRegister(E_EC600SPin _ePin, HIDO_VOID *_pGroup, HIDO_UINT16 _u16Pin)
|
{
|
l_stEC600SPin[_ePin].m_pstGPIOx = (GPIO_TypeDef *)_pGroup;
|
l_stEC600SPin[_ePin].m_u16GPIOPin = _u16Pin;
|
|
return HIDO_OK;
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600S_PowerOn
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
extern u8 bat_percent2;
|
HIDO_INT32 EC600SDriver_PowerOn(void)
|
{
|
if(l_stEC600SPin[EC600S_PIN_3V8_EN].m_pstGPIOx != HIDO_NULL)
|
{
|
GPIO_SET(&l_stEC600SPin[EC600S_PIN_3V8_EN]);
|
//TODO bat_percent2=Get_Battary();
|
}
|
|
return HIDO_OK;
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600S_PowerOff
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
HIDO_INT32 EC600SDriver_PowerOff(void)
|
{
|
if(l_stEC600SPin[EC600S_PIN_3V8_EN].m_pstGPIOx != HIDO_NULL)
|
{
|
GPIO_RESET(&l_stEC600SPin[EC600S_PIN_3V8_EN]);
|
}
|
|
return HIDO_OK;
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600SDriver_PowerEnable
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
HIDO_INT32 EC600SDriver_PWRKEYSet(void)
|
{
|
if(l_stEC600SPin[EC600S_PIN_PWRKEY].m_pstGPIOx != HIDO_NULL)
|
{
|
GPIO_RESET(&l_stEC600SPin[EC600S_PIN_PWRKEY]);
|
}
|
|
return HIDO_OK;
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600SDriver_PowerEnable
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
HIDO_INT32 EC600SDriver_PWRKEYReset(void)
|
{
|
if(l_stEC600SPin[EC600S_PIN_PWRKEY].m_pstGPIOx != HIDO_NULL)
|
{
|
GPIO_SET(&l_stEC600SPin[EC600S_PIN_PWRKEY]);
|
}
|
|
return HIDO_OK;
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600SDriver_DebugOn
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
HIDO_INT32 EC600SDriver_DebugOn(void)
|
{
|
HIDO_FSM(EC600S)->m_u16DbgFlag = HIDO_FSM_DBG_FLAG_ON;
|
|
return HIDO_OK;
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600SDriver_DebugOff
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
HIDO_INT32 EC600SDriver_DebugOff(void)
|
{
|
HIDO_FSM(EC600S)->m_u16DbgFlag = HIDO_FSM_DBG_FLAG_OFF;
|
|
return HIDO_OK;
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600SDriver_SetConnectLen
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
HIDO_INT32 EC600SDriver_SetConnectLen(HIDO_UINT32 _u32ConnectLen)
|
{
|
l_u32ConnectLen = _u32ConnectLen;
|
|
return HIDO_OK;
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600SDriver_FSMDebug
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
HIDO_INT32 EC600SDriver_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_Debug(acBuff);
|
|
return HIDO_OK;
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600SDriver_Reset
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
HIDO_INT32 EC600SDriver_Reset(void)
|
{
|
HIDO_FSMEventExecute(HIDO_FSM(EC600S), HIDO_AT_EVENT_TIMEOUT, HIDO_NULL);
|
|
return HIDO_OK;
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600SDriver_TimerPoll
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
void EC600SDriver_TimerPoll(void)
|
{
|
HIDO_TimerPollByID(l_stDriverData.m_u32FSMTimerID);
|
HIDO_TimerPollByID(l_stEC600SDevice.m_u32TimerID);
|
}
|
|
/*******************************************************************************
|
* Function Name : EC600SDriver_Init
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : ¶Å¼ü
|
* Modified Date: : 2018Äê5ÔÂ22ÈÕ
|
*******************************************************************************/
|
HIDO_INT32 EC600SDriver_Init(void)
|
{
|
ST_UartInit stUartInit;
|
|
/* ´®¿Ú³õʼ»¯ */
|
stUartInit.m_eRxMode = UART_RX_MODE_DMA;
|
stUartInit.m_eTxMode = UART_TX_MODE_POLL;
|
stUartInit.m_pu8RxBuf = l_au8EC600SUartRxBuf;
|
stUartInit.m_u32RxBufSize = EC600S_UART_RX_BUF_SIZE;
|
stUartInit.m_pu8TxBuf = l_au8EC600SUartTxBuf;
|
stUartInit.m_u32TxBufSize = EC600S_UART_TX_BUF_SIZE;
|
stUartInit.m_u32TxQueueMemberCnt = EC600S_UART_TX_QUEUE_MEMBER_CNT;
|
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(EC600S);
|
stATInit.m_pstAtSets = l_astATCmdSetList;
|
stATInit.m_u32AtSetsCount = HIDO_ARRARY_COUNT(l_astATCmdSetList);
|
stATInit.m_fnGetc = EC600S_GetChar;
|
stATInit.m_fnReadLine = EC600S_ReadLine;
|
stATInit.m_fnOutput = EC600S_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_stEC600SDevice, &stATInit) != HIDO_OK)
|
{
|
return HIDO_ERR;
|
}
|
|
/* ״̬»ú³õʼ»¯ */
|
HIDO_FSMRegister(HIDO_FSM(EC600S), HIDO_FSM_STATE(EC600S), "EC600S", l_apcEventName, &l_stEC600SDevice,
|
HIDO_FSM_DBG_FLAG_ON);
|
|
HIDO_FSMRegisterDebugFunc(HIDO_FSM(EC600S), EC600SDriver_FSMDebug);
|
|
return HIDO_OK;
|
}
|