📄 do_reset.c
字号:
/********************************************************\
* 文件名: Do_Reset.h
* 创建时间:2004年10月20日
* 创建人:
* 版本号: 1.00
* 功能:
*
* 修改历史:(每条详述)
\********************************************************/
#include <msp430x14x.h>
#include "General.h"
#include "Other_Define.h"
#include "Main_Init.h"
#include "Do_Reset.h"
#include "M22_AT.h"
#include "Check_GSM.h"
#include "Sub_C.h"
#include "Define_Bit.h"
#include "Uart01.h"
#include "SPI45DB041.h"
#include "D_Buffer.h"
#include "W_Protocol.h"
#include "Do_SRAM.h"
/*
#include "Disp_Protocol.h"
*/
//#define Debug_GSM_COM1
void Wait_Return_M22(unsigned char Next_Step);
/********************************************************\
* 函数名:Do_OFF_Power
作用域:外部文件调用
* 功能: 进行GPS和GSM模块掉电重启的操作。
* 参数:
* 返回值:需要对一些相关的全局变量进行附值
* 创建人:
*
* 修改历史:(每条详述)
\********************************************************/
void Do_OFF_Power(void)
{
//设置高电平,以关断2576输出
Clear_Exter_WatchDog();
gM22_GSM_ECHO_Timer=0;
gGet_Driver_Info_Count=0;
gRecord_Data_Timer=0;
if(gOFF_Power_S==1)
{
P6OUT|=POWER_ON_OFF;
gTimer=0;
gOFF_Power_S=2;
}
//延长OFF_TIME时间后,则重新设置低电平,开启2576输出
else if((gOFF_Power_S==2)&&(gTimer>OFF_TIME))
{
P6OUT&=~POWER_ON_OFF;
gOFF_Power_S=3;
gTimer=0;
}
else if((gOFF_Power_S==3)&&(gTimer>DELAY_TIME))
{
gTimer=0;
gOFF_Power_S=0;
if(gGeneral_Flag&OFF_M22_F_1)
{
Send_COM1_Byte('M');
}
else if(gGeneral_Flag&OFF_GPS_F_1)
{
Send_COM1_Byte('G');
}
Send_COM1_String((unsigned char *)POWER_OFF,sizeof(POWER_OFF));
Reset_Variable();
gGeneral_Flag&=~OFF_M22_F_1; //取消掉电M22的标志位
gGeneral_Flag&=~OFF_GPS_F_1; //取消掉电GPS的标志位
gPhone_Status=READY;
gStatus1_Flag&=~PHONE_ONLINE_F_1;
}
}
/********************************************************\
* 函数名:Do_Reset_GSM_On
作用域:外部文件调用
* 功能: 针对G20模块在上电后的启动步骤的操作,进行一些AT指令的初始化
* 参数:
* 返回值:需要对一些相关的全局变量进行附值
* 创建人:
*
* 修改历史:(每条详述)
\********************************************************/
void Do_Reset_GSM_On(void)
{
static unsigned char M22_ReturnER_Count=0; //AT指令返回错误的记数
unsigned int i=0,j=0;
gVolume=TWO;
gGeneral_Flag&=~LAND_TCP_F_1;
Clear_Exter_WatchDog();
gGet_Driver_Info_Count=0;
gSet_Distance_Info_Count=0;
//1,AT
if(gReset_M22_On_Setp==1)
{
if(gTimer_GSM_AT>300)
{
Send_COM0_String((unsigned char *)AT,sizeof(AT));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=2;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==2)
{
if(Check_GSM()!=0)
{
gTimer_GSM_AT=0;
if(Compare_String(gGeneral_Buffer,(unsigned char *)String_OK,sizeof(String_OK))!=0)
{
M22_ReturnER_Count=0;
gReset_M22_On_Setp=3;
}
else if(Compare_String(gGeneral_Buffer,(unsigned char *)String_ER,sizeof(String_ER))!=0)
{
M22_ReturnER_Count++;
if(M22_ReturnER_Count>10)
{
M22_ReturnER_Count=0;
gGeneral_Flag|=OFF_M22_F_1;
gOFF_Power_S=1;
gPhone_Status=READY;
gStatus1_Flag&=~PHONE_ONLINE_F_1;
return;
}
else gReset_M22_On_Setp=1;
}
}
else if(gTimer_GSM_AT>3000)
{
M22_ReturnER_Count++;
if(M22_ReturnER_Count>10)
{
M22_ReturnER_Count=0;
gGeneral_Flag|=OFF_M22_F_1;
gOFF_Power_S=1;
gPhone_Status=READY;
gStatus1_Flag&=~PHONE_ONLINE_F_1;
return;
}
else gReset_M22_On_Setp=1;
}
}
//2,ATZ
else if(gReset_M22_On_Setp==3)
{
if(gTimer_GSM_AT>300)
{
Send_COM0_String((unsigned char *)ATZ,sizeof(ATZ));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=4;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==4)
{
Wait_Return_M22(5);
/*
if(Check_GSM()!=0)
{
gTimer_GSM_AT=0;
if(Compare_String(gGeneral_Buffer,(unsigned char *)String_OK,sizeof(String_OK))!=0)
{
gReset_M22_On_Setp=5;
}
else if(Compare_String(gGeneral_Buffer,(unsigned char *)String_ER,sizeof(String_ER))!=0)
{
gReset_M22_On_Setp=1;
}
}
else if(gTimer_GSM_AT>3000)
{
gReset_M22_On_Setp=1;
}
*/
}
//3,AT+CGMM
else if(gReset_M22_On_Setp==5)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_CGMM,sizeof(AT_CGMM));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=6;
}
else Check_GSM();
}
//4,AT+CGMR
else if(gReset_M22_On_Setp==6)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_CGMR,sizeof(AT_CGMR));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=7;
}
else Check_GSM();
}
//5,AT+CGSN
else if(gReset_M22_On_Setp==7)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_CGSN,sizeof(AT_CGSN));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=8;
}
else Check_GSM();
}
//6,AT+CMGF=0
else if(gReset_M22_On_Setp==8)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_CMGF0,sizeof(AT_CMGF0));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=9;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==9)
{
Wait_Return_M22(10);
/*
if(Check_GSM()!=0)
{
gTimer_GSM_AT=0;
if(Compare_String(gGeneral_Buffer,(unsigned char *)String_OK,sizeof(String_OK))!=0)
{
gReset_M22_On_Setp=10;
}
else if(Compare_String(gGeneral_Buffer,(unsigned char *)String_ER,sizeof(String_ER))!=0)
{
gReset_M22_On_Setp=1;
}
}
else if(gTimer_GSM_AT>6000)
{
gReset_M22_On_Setp=1;
}
*/
}
//6-1,AT+CREG?
else if(gReset_M22_On_Setp==10)
{
if(gTimer_GSM_AT>2000)
{
Send_COM0_String((unsigned char *)AT_CREG,sizeof(AT_CREG));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=11;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==11)
{
if(Check_GSM()!=0)
{
gTimer_GSM_AT=0;
if(Compare_String(gGeneral_Buffer,(unsigned char *)String_CREG,sizeof(String_CREG))!=0)
{
if( (gGeneral_Buffer[8]==',')&&(gGeneral_Buffer[10]=='1') )
{
gReset_M22_On_Setp=12;
gM22_ReturnER_SIM_Count=0;
}
else
{
gM22_ReturnER_SIM_Count++;
if(gM22_ReturnER_SIM_Count>60)
{
gGeneral_Flag|=OFF_M22_F_1;
gOFF_Power_S=1;
gPhone_Status=READY;
gM22_ReturnER_SIM_Count=0;
return;
}
else
{
gReset_M22_On_Setp=10;
gTimer_GSM_AT=0;
}
}
}
}
else if(gTimer_GSM_AT>6000)
{
gReset_M22_On_Setp=1;
}
}
//7,AT+COPS?
else if(gReset_M22_On_Setp==12)
{
if(gTimer_GSM_AT>2000)
{
Send_COM0_String((unsigned char *)AT_COPS_C,sizeof(AT_COPS_C));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=13;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==13)
{
if(Check_GSM()!=0)
{
gTimer_GSM_AT=0;
if(Compare_String(gGeneral_Buffer,(unsigned char *)String_COPS,sizeof(String_COPS))!=0)
{
if( (gGeneral_Buffer[8]==',')&&(gGeneral_Buffer[9]=='0') )
{
//表示已经找到SIM卡的网络
gReset_M22_On_Setp=14;
gM22_ReturnER_SIM_Count=0;
}
else
{
gM22_ReturnER_SIM_Count++;
if(gM22_ReturnER_SIM_Count>60)
{
gGeneral_Flag|=OFF_M22_F_1;
gOFF_Power_S=1;
gPhone_Status=READY;
gM22_ReturnER_SIM_Count=0;
gStatus1_Flag&=~PHONE_ONLINE_F_1;
return;
}
else
{
gReset_M22_On_Setp=12;
}
}
}
}
else if(gTimer_GSM_AT>6000)
{
gReset_M22_On_Setp=1;
}
}
//8,AT+CIMI
else if(gReset_M22_On_Setp==14)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_CIMI,sizeof(AT_CIMI));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=15;
}
else Check_GSM();
}
//9,AT+CSCA?
else if(gReset_M22_On_Setp==15)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_CSCA_C,sizeof(AT_CSCA_C));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=16;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==16)
{
if(Check_GSM()!=0)
{
gTimer_GSM_AT=0;
if(Compare_String(gGeneral_Buffer,(unsigned char *)String_CSCA,sizeof(String_CSCA))!=0)
{
//具体将读出的短消息中心号码存储在buffer1相应的区域中(直接以ASCII形式存储)
if(gGeneral_Buffer[7]=='"')
{
i=8;
while(1)
{
if(gGeneral_Buffer[i]=='"') break;
i++;if(i>8+20) {gReset_M22_On_Setp=1;return;} //非法长度,则退出
}
if(i>8+1)
{
Load_SMS_CenterNum(i);
gInternal_Flag|=CENTER_NUM_VAILD_F_1;
gInternal_Flag&=~SET_CSCA_F_1;
}
else
{
gInternal_Flag&=~CENTER_NUM_VAILD_F_1;
gInternal_Flag|=SET_CSCA_F_1;
}
gReset_M22_On_Setp=17;
}
else gReset_M22_On_Setp=1;
}
else if(Compare_String(gGeneral_Buffer,(unsigned char *)String_ER,sizeof(String_ER))!=0)
{
gReset_M22_On_Setp=1;
}
}
}
//10,AT$NOSLEEP=1
else if(gReset_M22_On_Setp==17)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_NOSLEEP1,sizeof(AT_NOSLEEP1));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=18;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==18)
{
Wait_Return_M22(19);
}
//11,AT+COLP=1
else if(gReset_M22_On_Setp==19)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_COLP1,sizeof(AT_COLP1));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=20;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==20)
{
Wait_Return_M22(21);
}
//12,AT+CLIP=1
else if(gReset_M22_On_Setp==21)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_CLIP1,sizeof(AT_CLIP1));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=22;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==22)
{
Wait_Return_M22(23);
}
//13,AT$AUPATH=3,1,选择差分的语音通道
else if(gReset_M22_On_Setp==23)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_AUPATH,sizeof(AT_AUPATH));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=24;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==24)
{
Wait_Return_M22(25);
}
//14,AT$AUGAIN=(0-2),(1,9)
else if(gReset_M22_On_Setp==25)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_AUGAIN,sizeof(AT_AUGAIN));
Send_COM0_Byte('1');Send_COM0_Byte(',');
Send_COM0_Byte('5');Send_COM0_Byte(0x0d);
gTimer_GSM_AT=0;
gReset_M22_On_Setp=26;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==26)
{
Wait_Return_M22(27);
}
else if(gReset_M22_On_Setp==27)
{
if(gTimer_GSM_AT>1000)
{
//2,固定调节SPEKER的接收增益
Send_COM0_String((unsigned char *)AT_AUGAIN,sizeof(AT_AUGAIN));
Send_COM0_Byte('2');Send_COM0_Byte(',');Send_COM0_Byte(Handle_VOL[TWO]);Send_COM0_Byte(0x0d);
gTimer_GSM_AT=0;
gReset_M22_On_Setp=28;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==28)
{
Wait_Return_M22(29);
}
else if(gReset_M22_On_Setp==29)
{
if(gTimer_GSM_AT>1000)
{
//3,调节AT$AUVOL的接收增益
Send_COM0_String((unsigned char *)AT_AUVOL,sizeof(AT_AUVOL));
Send_COM0_Byte('5');Send_COM0_Byte(0x0d);
gTimer_GSM_AT=0;
gReset_M22_On_Setp=30;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==30)
{
Wait_Return_M22(31);
}
//15,AT+CNMI=2,2,0,0,0
else if(gReset_M22_On_Setp==31)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_CNMI,sizeof(AT_CNMI));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=32;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==32)
{
Wait_Return_M22(33);
}
//16,AT$TIMEOUT=XX(XX表示100--5000毫秒)
else if(gReset_M22_On_Setp==33)
{
if(gTimer_GSM_AT>1000)
{
Send_COM0_String((unsigned char *)AT_TIMEOUT,sizeof(AT_TIMEOUT));
gTimer_GSM_AT=0;
gReset_M22_On_Setp=34;
}
else Check_GSM();
}
else if(gReset_M22_On_Setp==34)
{
Wait_Return_M22(35);
}
//17,AT+CMGD=1,4
else if(gReset_M22_On_Setp==35)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -