www.pudn.com > SendMsgOCX.rar > WMsgFrameParser.h


// WMsgFrameParser.h: interface for the CWMsgFrameParser class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_WMSGFRAMEPARSER_H__6ED367EE_17B2_4D4C_9E7B_05A5B185442F__INCLUDED_) 
#define AFX_WMSGFRAMEPARSER_H__6ED367EE_17B2_4D4C_9E7B_05A5B185442F__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include "WMsgPacket.h" 
#include "WCmdParseResult.h" 
 
class CWMsgFrameParser   
{ 
public: 
 
	CWMsgFrameParser(); 
	 ~CWMsgFrameParser(); 
 
	enum ParseResult ParseOneByte(BYTE byData); 
 
	const CWMsgPacket& GetParseResult() const; 
 
	void Reset(); 
 
	enum ParseState 
	{ 
		MSG_SMS_LEADING_BEGIN, 
		MSG_SMS_LEADING, 
		MSG_SMS_LEADING_END, 
		 
		MSG_PHONE_NUMBER_BEGIN, 
		MSG_PHONE_NUMBER_END, 
		MSG_PHONE_NUMBER, 
		 
		MSG_SMS_FOLLOWING_BEGIN, 
		MSG_SMS_FOLLOWING, 
		MSG_SMS_FOLLOWING_END, 
 
		MSG_FRAME_BEGIN, 
		MSG_FRAME_NO, 
		MSG_PACKET_NO, 
		MSG_LAST_PACKET_FLAG, 
		MSG_CONTENT_TYPE, 
		MSG_CONTENT_OR_CHECKSUM, 
		MSG_FRAME_END 
	}; 
 
private: 
 
	// return MSG_FRAME_END  to indicate error 
	enum ParseState ParseSMSLeading(BYTE toParse); 
	enum ParseState ParseSMSFollowing(BYTE toParse); 
	BOOL IsValidSMSFollowing(BYTE toCheck); 
	int m_smsLeadingBytesReceived; 
 
	CWMsgPacket m_frame; 
	enum ParseState m_state; 
}; 
 
#endif // !defined(AFX_WMSGFRAMEPARSER_H__6ED367EE_17B2_4D4C_9E7B_05A5B185442F__INCLUDED_)