/* * 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_ */