chen
2025-05-15 67ca69985af9109a0603a1cde71f21b940c059ff
keil/include/components/hido/Include/HIDO_ATLite.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,110 @@
/*
 * 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_ */