/*
|
* HIDO_ATLite.h
|
*
|
* Created on: 2017Äê9ÔÂ5ÈÕ
|
* Author: YIYI
|
*/
|
|
#ifndef _HIDO_ATLITE_H_
|
#define _HIDO_ATLITE_H_
|
|
#include "HIDO_TypeDef.h"
|
#include "HIDO_FSM.h"
|
|
/* Ö´Ðнá¹ûÃèÊö */
|
typedef enum
|
{
|
HIDO_AT_EVENT_OK = HIDO_EVENT_EXIT + 1, /* Ö´Ðгɹ¦ */
|
HIDO_AT_EVENT_ERROR, /* Ö´ÐÐʧ°Ü */
|
HIDO_AT_EVENT_TIMEOUT, /* Ö´Ðг¬Ê± */
|
HIDO_AT_EVENT_SEND_ERROR, /* ·¢ËÍʧ°Ü */
|
HIDO_AT_EVENT_LAST,
|
}HIDO_ATEventEnum;
|
|
typedef struct HIDO_ATLiteDevice HIDO_ATLiteDeviceStruct;
|
typedef struct HIDO_ATLiteDeviceInitStruct HIDO_ATLiteDeviceInitStruct;
|
|
/* ATÖ¸ÁÃèÊö */
|
typedef struct HIDO_ATLiteCmdSet
|
{
|
const HIDO_CHAR *m_pcCmd;
|
HIDO_UINT32 m_u32CmdEvent;
|
}HIDO_ATLiteCmdSetStruct;
|
|
typedef HIDO_INT32 (*HIDO_ATLiteGetcFunc)(HIDO_ATLiteDeviceStruct *, HIDO_CHAR *);
|
typedef HIDO_INT32 (*HIDO_ATLiteReadLineFunc)(HIDO_ATLiteDeviceStruct *);
|
typedef HIDO_INT32 (*HIDO_ATLiteOutputFunc)(HIDO_ATLiteDeviceStruct *, HIDO_UINT8 *, HIDO_UINT32 );
|
|
#define AT_READ_CHAR_LF 0x0A
|
#define AT_READ_CHAR_CR 0x0D
|
|
typedef enum
|
{
|
AT_RAED_FLAG_NONE = 0,
|
AT_RAED_FLAG_GET_CR,
|
AT_RAED_FLAG_GET_LF,
|
}HIDO_ATReadFlagEnum;
|
|
/* Çý¶¯³õʼ»¯ÃèÊö */
|
struct HIDO_ATLiteDeviceInitStruct
|
{
|
HIDO_FSMStruct *m_pstFSM;
|
const HIDO_ATLiteCmdSetStruct *m_pstAtSets; /* Ö¸ÁÊ×µØÖ· */
|
HIDO_UINT32 m_u32AtSetsCount; /* Ö¸Á¸öÊý */
|
HIDO_ATLiteGetcFunc m_fnGetc;
|
HIDO_ATLiteReadLineFunc m_fnReadLine;
|
HIDO_ATLiteOutputFunc m_fnOutput;
|
HIDO_CHAR *m_pcSendBuf;
|
HIDO_UINT32 m_u32SendBufSize;
|
HIDO_CHAR *m_pcLineBuf;
|
HIDO_UINT32 m_u32LineBufSize;
|
|
HIDO_VOID *m_pUserData;
|
};
|
|
/* Çý¶¯·½·¨ÃèÊö */
|
struct HIDO_ATLiteDevice
|
{
|
HIDO_ATLiteDeviceStruct *m_pstNext;
|
const HIDO_ATLiteCmdSetStruct *m_pstAtSets; /* Ö¸ÁÊ×µØÖ· */
|
HIDO_UINT32 m_u32AtSetsCount; /* Ö¸Á¸öÊý */
|
|
HIDO_ATLiteGetcFunc m_fnGetc;
|
HIDO_ATLiteReadLineFunc m_fnReadLine;
|
HIDO_ATLiteOutputFunc m_fnOutput;
|
|
HIDO_CHAR *m_pcSendBuf;
|
HIDO_UINT32 m_u32SendBufSize;
|
HIDO_UINT32 m_u32SendLen;
|
|
HIDO_CHAR *m_pcLineBuf;
|
HIDO_UINT32 m_u32LineBufSize;
|
HIDO_UINT32 m_u32LineLen;
|
HIDO_ATReadFlagEnum m_eLineReadFlag;
|
|
HIDO_VOID *m_pUserData;
|
HIDO_UINT32 m_u32TimerID;
|
HIDO_FSMStruct *m_pstFSM;
|
|
#define HIDO_AT_LITE_MAX_CMD_COUNT 64 /* ×î´óATÖ¸Áî¸öÊý */
|
#define HIDO_AT_LITE_MATCH_FLAG_SET 0x01 /* Æ¥Åä±ê¼Ç±»ÉèÖà */
|
#define HIDO_AT_LITE_MATCH_FLAG_CLEAR 0x00 /* Æ¥Åä±ê¼Ç±»Çå¿Õ */
|
#define HIDO_AT_LITE_MATCH_END_CHAR '\0' /* Æ¥Åä½áÊø×Ö·û */
|
|
HIDO_UINT8 m_au8MatchFlag[HIDO_AT_LITE_MAX_CMD_COUNT];
|
};
|
|
HIDO_VOID HIDO_ATLiteRecvReset(HIDO_ATLiteDeviceStruct *_pstATDevice);
|
HIDO_VOID HIDO_ATLiteEvent(HIDO_ATLiteDeviceStruct *_pstATDevice, HIDO_UINT32 _u32Event, HIDO_VOID *_pArg);
|
HIDO_INT32 HIDO_ATLiteCmdSend(HIDO_ATLiteDeviceStruct *_pstATDevice, HIDO_UINT32 _u32TimeoutMs, const HIDO_CHAR *_pcCmdFmt, ...);
|
HIDO_INT32 HIDO_ATLiteDataSend(HIDO_ATLiteDeviceStruct *_pstATDevice, HIDO_UINT32 _u32TimeoutMs, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len);
|
HIDO_INT32 HIDO_ATLiteCmdSendOver(HIDO_ATLiteDeviceStruct *_pstATDevice);
|
HIDO_VOID HIDO_ATLitePoll(void);
|
HIDO_VOID HIDO_ATLiteClean(HIDO_ATLiteDeviceStruct *_pstATDevice);
|
HIDO_VOID HIDO_ATLiteDebugOn(void);
|
HIDO_VOID HIDO_ATLiteDebugOff(void);
|
HIDO_BOOL HIDO_ATLiteGetDebugFlag(void);
|
HIDO_INT32 HIDO_ATLiteDeviceInit(HIDO_ATLiteDeviceStruct *_pstDevice, HIDO_ATLiteDeviceInitStruct *_pstInit);
|
HIDO_INT32 HIDO_ATLiteDeviceRegister(HIDO_ATLiteDeviceStruct *_pstDevice);
|
|
#endif /* _HIDO_ATLITE_H_ */
|