//////////////////////////////////////////////////////////////// // Technomaint 2004 (c) SofTech di Germinara Francesco 2000,2004 // www.germinara.it info@germinara.it // Story: // //////////////////////////////////////////////////////////////// // Checked Version: 6/5/2004 //////////////////////////////////////////////////////////////// //Definition on standard GSM AT MODEM COMMAND BY Francesco Germinara (c) 2001 #include"stdafx.h" #include"CGsmAtCommand.h" //NOTE: RESPONSE START AND END WITH strCmdEnd sequence //Contructor CGsmAtCommand::CGsmAtCommand(){ Init(); } //Destructor CGsmAtCommand::~CGsmAtCommand(){ } CGsmAtCommand::CGsmAtCommand(CString name,CString code,CString parm1,CString m_strCmdRetCode1){ Init(); SetCmd(name,code,parm1,m_strCmdRetCode1); } CGsmAtCommand::CGsmAtCommand(CString name,CString code,CString parm1,CString parm2,CString parm3,CString parm4,CString m_strCmdRetCode1,CString m_strCmdRetCode2,CString m_strCmdRetCode3,CString m_strCmdRetCode4){ Init(); SetCmd(name,code,parm1,parm2,parm3,parm4,m_strCmdRetCode1,m_strCmdRetCode2,m_strCmdRetCode3,m_strCmdRetCode4); } //Set a Command Information short format int CGsmAtCommand::SetCmd(CString name,CString code,CString parm1,CString m_strCmdRetCode1){ if(name.IsEmpty() || code.IsEmpty()) return 1; //Error m_nNumOfParm=0; m_nNumOfRetCode=0; m_strCmdName=name; m_strCmdCode=code; m_strCmdParm1=parm1; if(!m_strCmdParm1.IsEmpty()) m_nNumOfParm++; m_strCmdParm2=_T(""); m_strCmdParm3=_T(""); m_strCmdParm4=_T(""); m_strCmdRetCode1=m_strCmdRetCode1; if(!m_strCmdRetCode1.IsEmpty()) m_nNumOfRetCode++; m_strCmdRetCode2=_T(""); m_strCmdRetCode3=_T(""); m_strCmdRetCode4=_T(""); return 0; //Ok } //Set a Command Information complete format int CGsmAtCommand::SetCmd(CString name,CString code,CString parm1,CString parm2,CString parm3,CString parm4,CString m_strCmdRetCode1,CString m_strCmdRetCode2,CString m_strCmdRetCode3,CString m_strCmdRetCode4){ m_nNumOfParm=0; m_nNumOfRetCode=0; if(name.IsEmpty() || code.IsEmpty()) return 1; //Error m_strCmdName=name; m_strCmdCode=code; m_strCmdParm1=parm1; if(!m_strCmdParm1.IsEmpty()) m_nNumOfParm++; m_strCmdParm2=parm2; if(!m_strCmdParm2.IsEmpty()) m_nNumOfParm++; m_strCmdParm3=parm3; if(!m_strCmdParm3.IsEmpty()) m_nNumOfParm++; m_strCmdParm4=parm4; if(!m_strCmdParm4.IsEmpty()) m_nNumOfParm++; m_strCmdRetCode1=m_strCmdRetCode1; if(!m_strCmdRetCode1.IsEmpty()) m_nNumOfRetCode++; m_strCmdRetCode2=m_strCmdRetCode2; if(!m_strCmdRetCode2.IsEmpty()) m_nNumOfRetCode++; m_strCmdRetCode3=m_strCmdRetCode3; if(!m_strCmdRetCode3.IsEmpty()) m_nNumOfRetCode++; m_strCmdRetCode4=m_strCmdRetCode4; if(!m_strCmdRetCode4.IsEmpty()) m_nNumOfRetCode++; return 0; //Ok } CString CGsmAtCommand::GetResponse(){ CString rxMsg; rxMsg = (const char) m_rxBuf; return rxMsg; } BOOL CGsmAtCommand::CheckError(CString &error){ CString strResult; BOOL bError=FALSE; int pos=-1; strResult=GetResponse(); pos=strResult.Find("ERROR"); if(pos > -1) bError=TRUE; return bError; } void CGsmAtCommand::Init(){ m_nNumOfParm=0; m_nNumOfRetCode=0; m_strCmdDelimiter=_T(","); m_strCmdEnd.AppendChar(0x0d); m_strCmdEnd.AppendChar(0x0a); m_strCmdEndSend.AppendChar(0x0d); m_strCmdName=_T(""); m_strCmdCode=_T(""); m_strCmdParm1=_T(""); m_strCmdParm2=_T(""); m_strCmdParm3=_T(""); m_strCmdParm4=_T(""); m_strCmdRetCode1=_T(""); m_strCmdRetCode2=_T(""); m_strCmdRetCode3=_T(""); m_strCmdRetCode4=_T(""); memset(m_txBuf,0x00,_AT_MAX_TX_BUFFER); memset(m_rxBuf,0x00,_AT_MAX_TX_BUFFER); } //End