📄 at_cmd.c
字号:
********************************************************************************
* AT+CCLK Set Real Time Clock
********************************************************************************
*/
INT16U AT_CCLK(INT8U *ptr, DATE_STRUCT *date, TIME_STRUCT *time)
{
INT8U len;
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CCLK=");
WriteBYTE_Strm(&tmpstrm, '"');
len = DecToAscii(GetStrmPtr(&tmpstrm), date->year, 2);
MovStrmPtr(&tmpstrm, len);
WriteBYTE_Strm(&tmpstrm, '/');
len = DecToAscii(GetStrmPtr(&tmpstrm), date->month, 2);
MovStrmPtr(&tmpstrm, len);
WriteBYTE_Strm(&tmpstrm, '/');
len = DecToAscii(GetStrmPtr(&tmpstrm), date->day, 2);
MovStrmPtr(&tmpstrm, len);
WriteBYTE_Strm(&tmpstrm, ',');
len = DecToAscii(GetStrmPtr(&tmpstrm), time->hour, 2);
MovStrmPtr(&tmpstrm, len);
WriteBYTE_Strm(&tmpstrm, ':');
len = DecToAscii(GetStrmPtr(&tmpstrm), time->minute, 2);
MovStrmPtr(&tmpstrm, len);
WriteBYTE_Strm(&tmpstrm, ':');
len = DecToAscii(GetStrmPtr(&tmpstrm), time->second, 2);
MovStrmPtr(&tmpstrm, len);
WriteBYTE_Strm(&tmpstrm, '"');
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*
********************************************************************************
* AT+CCLK? Read Real Time Clock
********************************************************************************
*/
INT16U AT_R_CCLK(INT8U *ptr)
{
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CCLK?");
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
#endif
/*
********************************************************************************
* AT+CLCC List current calls of ME
********************************************************************************
*/
INT16U AT_CLCC(INT8U *ptr)
{
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CLCC");
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*********************************************************************************
** *
** *
** AT Commands originating from GSM 07.05 for SMS *
** *
** *
*********************************************************************************/
/*
********************************************************************************
* AT+CMGF Select SMS message format
********************************************************************************
*/
INT16U AT_CMGF(INT8U *ptr, INT8U mode)
{
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CMGF=");
if (mode == MODE_PDU)
WriteBYTE_Strm(&tmpstrm, '0'); /* select PDU mode */
else
WriteBYTE_Strm(&tmpstrm, '1'); /* select TEXT mode */
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*
********************************************************************************
* AT+CSCA SMS service centre address
********************************************************************************
*/
INT16U AT_CSCA(INT8U *ptr, INT8U *telptr, INT8U tellen)
{
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CSCA=");
WriteBYTE_Strm(&tmpstrm, '"');
WriteDATA_Strm(&tmpstrm, telptr, tellen);
WriteBYTE_Strm(&tmpstrm, '"');
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*
********************************************************************************
* AT+CSMS Select Message Service
********************************************************************************
*/
INT16U AT_CSMS(INT8U *ptr, INT8U service)
{
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CSMS=");
if (service == SERVICE_PHASE2)
WriteBYTE_Strm(&tmpstrm, '0');
else
WriteBYTE_Strm(&tmpstrm, '1');
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*
********************************************************************************
* AT+CNMI New SMS message indications
********************************************************************************
*/
INT16U AT_CNMI(INT8U *ptr)
{
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CNMI=1,2");
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*
********************************************************************************
* AT+CNMI? Query New SMS message indications
********************************************************************************
*/
INT16U AT_R_CNMI(INT8U *ptr)
{
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CNMI?");
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*
********************************************************************************
* AT+CNMA New SMS message acknowledge to ME/TE, only phase 2+
********************************************************************************
*/
INT16U AT_CNMA(INT8U *ptr,INT8U *DataPtr,INT8U Len)
{
#if GSM_BENQ
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CNMA=1,");
WriteDATA_Strm(&tmpstrm, DataPtr, Len);
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
#else
DataPtr=DataPtr;
Len=Len;
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CNMA=0");
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
#endif
}
/*
********************************************************************************
* AT+CMGS Send SMS message
********************************************************************************
*/
INT16U AT_CMGS(INT8U *ptr, INT16U pdulen)
{
INT16U len;
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "at+cmgs=");
len = DecToAscii(GetStrmPtr(&tmpstrm), pdulen, 0);
MovStrmPtr(&tmpstrm, len);
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*
********************************************************************************
* ESCAPE Abort message
********************************************************************************
*/
INT16U AT_ESCAPE(INT8U *ptr)
{
*ptr = ESC;
return 1;
}
/*
********************************************************************************
* AT+CMGD Delete SMS Message
********************************************************************************
*/
INT16U AT_CMGD(INT8U *ptr, INT8U index)
{
INT8U len;
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CMGD=");
len = DecToAscii(GetStrmPtr(&tmpstrm), index, 0);
MovStrmPtr(&tmpstrm, len);
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*
********************************************************************************
* AT+CMGR Read SMS Message
********************************************************************************
*/
INT16U AT_CMGR(INT8U *ptr, INT8U index)
{
INT8U len;
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CMGR=");
len = DecToAscii(GetStrmPtr(&tmpstrm), index, 0);
MovStrmPtr(&tmpstrm, len);
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*
********************************************************************************
* AT+CMGL List SMS Message
********************************************************************************
*/
INT16U AT_CMGL(INT8U *ptr)
{
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CMGL=4");
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*********************************************************************************
** *
** *
** Siemens defined AT Commands for enhanced functions *
** *
** *
*********************************************************************************/
#if GSM_BENQ
#else
/*
********************************************************************************
* AT^SNFS Select audio hardware set
********************************************************************************
*/
INT16U AT_SNFS(INT8U *ptr, char audmode)
{
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT^SNFS=");
WriteBYTE_Strm(&tmpstrm, audmode);
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*
********************************************************************************
* AT^SNFO Set audio output(=louderspeaker path) parameter
********************************************************************************
*/
INT16U AT_SNFO(INT8U *ptr, char audmode, char gain, char step)
{
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT^SNFO=");
WriteBYTE_Strm(&tmpstrm, gain);
switch (audmode)
{
case '1':
WriteSTR_Strm(&tmpstrm, ",16384,16384,16384,16384,16384,");
WriteBYTE_Strm(&tmpstrm, step);
WriteSTR_Strm(&tmpstrm, ",4096");
break;
case '2':
WriteSTR_Strm(&tmpstrm, ",4685,6301,8500,11205,15115,");
WriteBYTE_Strm(&tmpstrm, step);
WriteSTR_Strm(&tmpstrm, ",0");
break;
case '3':
WriteSTR_Strm(&tmpstrm, ",1253,2452,4891,9759,16383,");
WriteBYTE_Strm(&tmpstrm, step);
WriteSTR_Strm(&tmpstrm, ",1365");
break;
case '4':
WriteSTR_Strm(&tmpstrm, ",10337,11598,13014,14602,16384,");
WriteBYTE_Strm(&tmpstrm, step);
WriteSTR_Strm(&tmpstrm, ",4096");
break;
case '5':
WriteSTR_Strm(&tmpstrm, ",16384,16384,16384,16384,16384,");
WriteBYTE_Strm(&tmpstrm, step);
WriteSTR_Strm(&tmpstrm, ",0");
break;
case '6':
WriteSTR_Strm(&tmpstrm, ",16384,16384,16384,16384,16384,");
WriteBYTE_Strm(&tmpstrm, step);
WriteSTR_Strm(&tmpstrm, ",0");
break;
default:
WriteSTR_Strm(&tmpstrm, ",16384,16384,16384,16384,16384,");
WriteBYTE_Strm(&tmpstrm, step);
WriteSTR_Strm(&tmpstrm, ",0");
}
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*
********************************************************************************
* AT^SNFI Set microphone path parameters
********************************************************************************
*/
INT16U AT_SNFI(INT8U *ptr, char gain)
{
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT^SNFI=");
WriteBYTE_Strm(&tmpstrm, gain);
WriteSTR_Strm(&tmpstrm, ",17767");
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
/*
********************************************************************************
* AT^SNFD Set audio parameters to manufacturer default values
********************************************************************************
*/
INT16U AT_SNFD(INT8U *ptr)
{
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT^SNFD");
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
}
#endif
/*
********************************************************************************
* AT^SCKS? Quuery SIM connection status
********************************************************************************
*/
INT16U AT_R_SCKS(INT8U *ptr)
{
#if GSM_BENQ
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT+CPIN?");
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
#else
InitStrm(&tmpstrm, ptr, 1024);
WriteSTR_Strm(&tmpstrm, "AT^SCKS?");
WriteCR_Strm(&tmpstrm);
return GetStrmLen(&tmpstrm);
#endif
}
#if GSM_BENQ
#else
/*
********************************************************************************
* ATI版本显示模式
********************************************************************************
*/
static BOOLEAN VarIsMC35i;
BOOLEAN IsMC35i(void)
{
if(VarIsMC35i) return TRUE;
else return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -