//////////////////////////////////////////////////////////////// // 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"CGsmAtCommands.h" //Contructor CGsmAtCommands::CGsmAtCommands(){ m_nNumOfCmd=0; } //Destructor CGsmAtCommands::~CGsmAtCommands(){ for(int i=0; i< m_nNumOfCmd; i++) delete m_pCGsmAtCommands[i]; } int CGsmAtCommands::SetupCommands(){ m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("Attention"),_T("AT")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("Dial"),_T("ATD")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("Answer"),_T("ATA")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("Hangup"),_T("ATH")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("GSMHangup"),_T("AT+CHUP")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("GetSignal"),_T("AT+CSQ")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("GetPhoneBookIndex"),_T("AT+CPBR=?")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("GetPhoneBookEntry"),_T("AT+CPBR=")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("WriteRegisterS"),_T("ATS")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("ReadRegisterS"),_T("ATS")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("Reset"),_T("ATZ")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("LoadFactorySetting"),_T("AT&F")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("SetErrorControl"),_T("AT\\N")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("EchoOn"),_T("ATE1")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("EchoOff"),_T("ATE0")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("Echo"),_T("ATE")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("ResultCodeFormat"),_T("ATV")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("ResultCodeResponse"),_T("ATQ")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("ErrCorrSpeedReport"),_T("ATW")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("ExtendedResulCode"),_T("ATX")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("RTSCTSOptions"),_T("AT&R")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("DCDOptions"),_T("AT&C")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("DSROptions"),_T("AT&S")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("DTROptions"),_T("AT&D")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("ReqManufacturedId"),_T("AT+CGMI")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("GetBatteryStatus"),_T("AT+CBC")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("GetModel"),_T("AT+CGMM")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("IdentifyModem"),_T("ATI")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("GetRevisionId"),_T("AT+CGMR")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("GetSerialNumber"),_T("AT+GSN")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("GetMessageFormat"),_T("AT+CMGF=?")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("SetMessageFormat"),_T("AT+CMGF=")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("SetMessageFormatText"),_T("AT+CMGF=1")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("SetMessageFormatHex"),_T("AT+CMGF=0")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("DeleteAllMessage"),_T("AT+CMGD=1,4")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("GetErrorMessage"),_T("AT+CMEE?")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("SetErrorMessageMode"),_T("AT+CMEE=")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("ListMessage"),_T("AT+CMGL")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("ListMessageStat"),_T("AT+CMGL=")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("ReadMessage"),_T("AT+CMGR=")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("SendMessage"),_T("AT+CMGS=")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("SendPIN"),_T("AT+CPIN=")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("SetFormatOperatorName"),_T("AT+COPS=3,0")); m_pCGsmAtCommands[m_nNumOfCmd++]=new CGsmAtCommand(_T("ReadOperatorName"),_T("AT+COPS?")); return m_nNumOfCmd; } //Return the name of command and the numeric index of command CString CGsmAtCommands::LookUpCmd(CString code,int& nIndex){ for(nIndex=0; nIndex < m_nNumOfCmd; nIndex++){ if(code == m_pCGsmAtCommands[nIndex]->GetCode()) return m_pCGsmAtCommands[nIndex]->GetName(); } nIndex=-1; //Error return _T(""); } //Return the complete string to send and the numeric index of command CString CGsmAtCommands::GetCmd(CString name,int& nIndex){ CString strCmd; CString strParm1; CString strParm2; CString strParm3; CString strParm4; for(nIndex=0; nIndex < m_nNumOfCmd; nIndex++){ if(name == m_pCGsmAtCommands[nIndex]->GetName()){ strCmd=m_pCGsmAtCommands[nIndex]->GetCode(); strParm1=m_pCGsmAtCommands[nIndex]->GetParm1().TrimRight(); strParm2=m_pCGsmAtCommands[nIndex]->GetParm2().TrimRight(); strParm3=m_pCGsmAtCommands[nIndex]->GetParm3().TrimRight(); strParm4=m_pCGsmAtCommands[nIndex]->GetParm4().TrimRight(); if(!strParm1.IsEmpty())strCmd+=strParm1; if(!strParm2.IsEmpty())strCmd+=strParm2; if(!strParm3.IsEmpty())strCmd+=strParm3; if(!strParm4.IsEmpty())strCmd+=strParm4; strCmd+=m_pCGsmAtCommands[nIndex]->GetSendEndCode(); return strCmd; } } nIndex=-1; //Error return _T(""); } //Return the complete string to send CString CGsmAtCommands::GetCmd(int nIndex){ CString strCmd; CString strParm1; CString strParm2; CString strParm3; CString strParm4; if(nIndex >= 0 && nIndex < m_nNumOfCmd){ strCmd=m_pCGsmAtCommands[nIndex]->GetCode(); strParm1=m_pCGsmAtCommands[nIndex]->GetParm1().TrimRight(); strParm2=m_pCGsmAtCommands[nIndex]->GetParm2().TrimRight(); strParm3=m_pCGsmAtCommands[nIndex]->GetParm3().TrimRight(); strParm4=m_pCGsmAtCommands[nIndex]->GetParm4().TrimRight(); if(!strParm1.IsEmpty())strCmd+=strParm1; if(!strParm2.IsEmpty())strCmd+=strParm2; if(!strParm3.IsEmpty())strCmd+=strParm3; if(!strParm4.IsEmpty())strCmd+=strParm4; strCmd+=m_pCGsmAtCommands[nIndex]->GetSendEndCode(); return strCmd; } return _T(""); } //Return ptr of command object CGsmAtCommand *CGsmAtCommands::GetPtrCmd(int nIndex){ if(nIndex >= 0 && nIndex < m_nNumOfCmd) return m_pCGsmAtCommands[nIndex]; return NULL; } //End