⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smsrecv.c

📁 名厂车载GPS通信终端
💻 C
📖 第 1 页 / 共 5 页
字号:
{
	Con_Timer           = Create_Timer(SendMonitorProc);
	Reset_Program_Timer = Create_Timer(Reset_Program);
	Fix_Send_Timer      = Create_Timer(SendFixProc);
	Future_Timer        = Create_Timer(Future_Track_Proc);
	Hour24_Send_Timer   = Create_Timer(Hours_Send_Back);
	Send_Acc_On_Timer    = Create_Timer(Send_Acc_On_proc);
	send_ack_gprs_timer = Create_Timer(send_ack_gprs_proc);
	Custom_supervise_timer = Create_Timer(Custom_supervise_proc);//add by lxo;lable 122613
//Added by lxo 06081116 for none-signal-region-supplement condition compile
#if SUPPLEMENT == SUPPLEMENTENABLE
	BufferInitial();//added by lxo 1227061
	Resend_timer=Create_Timer(Resend_proc);//add by lxo;lable 1227062
#endif	
	future.status       = _IDLE;
	Start_Timer(Hour24_Send_Timer,1440,MINUTE);//1440
#ifdef DEBUG_AT
	//Uart1Word(Get_Lefttime(Hour24_Send_Timer));
#endif 
}


void Handle_0141Msg(void)
{
	Send_Gpsdata(0x0142,_SMS_COMMON,0);
}

void Handle_0241Msg(void)
{
	uint *ptr;
	ptr = (uint *)Cntermsg->data;
	monitor_interval = *ptr;
	ptr = (uint *)(Cntermsg->data+2);
	monitor_times = *ptr;
#ifdef DEBUG_AT
	Uart1Send("Handle 0241 the monitor times is :");
	Uart1Word(monitor_times);
#endif
	Stop_Timer(Con_Timer);
	if(monitor_interval==0)
	{
		monitor_times = 0;
		Stop_Timer(Con_Timer);
	}
	else
	{
//		if(monitor_interval<8) monitor_interval=8;
		SendMonitorProc();
	}
}

void Handle_0541Msg(void)
{
	uchar *ptr;
	uchar i;
	
	ptr = (uchar *)(&(future.interval));
	
	for(i=0; i<4; i++)
	{
		ptr[i] = Cntermsg->data[i];
	}
	future.date.year   = Cntermsg->data[i++];
	future.date.month  = Cntermsg->data[i++];
	future.date.day    = Cntermsg->data[i++];
	future.time.hour   = Cntermsg->data[i++];
	future.time.minute = Cntermsg->data[i++];
	future.time.second = Cntermsg->data[i];
#ifdef DEBUG_AT
	Uart1Send("future tracking:");
	Uart1Word(future.interval);
	Uart1Word(future.times);
	Uart1Word(future.date.day);
	Uart1Word(future.date.month);
	Uart1Word(future.date.year);
	Uart1Word(future.time.hour);
	Uart1Word(future.time.minute);
#endif 
	if(future.times==0)
	{
		future.status =_IDLE;
		Stop_Timer(Future_Timer);
	}
	else
	{
		future.status = _BUSY;
#ifdef DEBUG_AT
		Uart1Send("FURTRUE START BUSY!");
#endif 
	}
}

void Handle_2141Msg(void)
{
	if(gsmstatus.isupdate==TRUE)return; 
	//added by leon 050915
	if(save.basevalue.gprs_mode !=0)
	{
		_MemFillCpy(gprsmode_sim.IpAddr,cur_sim.IpAddr,'\0',16,_StrlenForKey(cur_sim.IpAddr,'\0',16));
		_MemFillCpy(gprsmode_sim.SocketPort,cur_sim.SocketPort,'\0',6,_StrlenForKey(cur_sim.SocketPort,'\0',6));
	}
	_MemFillCpy(cur_sim.IpAddr,Cntermsg->data,'\0',16,_StrlenForKey(Cntermsg->data,'F',15));
	_MemFillCpy(cur_sim.SocketPort,Cntermsg->data+15,'\0',6,_StrlenForKey(Cntermsg->data+15,'F',5));
	gsmstatus.isupdate = TRUE;
#ifdef DEBUG_AT
	Uart1Send("Begin to update:");
	hand_send(cur_sim.SocketPort,6);
#endif
	if(gsmstatus.gprsdata == TRUE)     //added by leon 050913
	{
		need_connect_update = 1;
		SwitchToAtCmd();
	}
	else
	{
		if(ring.ack !=0 || gsmstatus.tel!=_TEL_IDLE || AutoDial.state != _IDLE)
		{
			Send_H09Msg(0x00);
			Hangup();
		}
		SwitchToGprs();
	}
#ifdef DEBUG_AT
	Uart1Send("need switch gprs to update");
#endif 
}

void Handle_2241Msg(void)
{
	uchar len;
	uchar i;
	uchar flag = 0;
	uint  *ptr;
	
	if(gsmstatus.isupdate!=TRUE)return;
	if(gsmstatus.gprsdata!=TRUE)return;
	len = _Strlen(soft.sn,16);
	for(i=0; i< len; i++)
	{
		if(Cntermsg->data[i]!=soft.sn[i]){flag =1;break;}
	}
	if(flag==1){
		ClearFlashCode();
		ptr              = (uint *)(Cntermsg->data +17);
		soft.totalpack  = *ptr;
		ptr              = (uint *)(Cntermsg->data+19);
		soft.crc1        = *ptr;
		ptr              = (uint *)(Cntermsg->data+21);
		soft.crc2        = *ptr;
		ptr              = (uint *)(Cntermsg->data+23);
		soft.crc3        = *ptr;
		ptr              = (uint *)(Cntermsg->data+25);
		soft.crc4        = *ptr;
		soft.curpack     = 0x00;
		for(i=0; i<len; i++){bak_sn[i] = Cntermsg->data[i];}
		for(i=len;i<0x10;i++){bak_sn[i] = 0;}
		WriteSoftInfo();
		Send_Gprs_Ack_Update(1);
		gsmstatus.needupdate =TRUE;
#ifdef DEBUG_AT
		Uart1Send("need to update");
#endif 
	}
	else{
#ifdef DEBUG_AT
		Uart1Send("not need update");
#endif 
		Send_Gprs_Ack_Update(0);
		//added by leon 050915
		gsmstatus.needupdate = FALSE;
		gsmstatus.isupdate   = FALSE;
		if(save.basevalue.gprs_mode !=0)
		{
			_MemFillCpy(cur_sim.IpAddr,gprsmode_sim.IpAddr,'\0',16,_StrlenForKey(gprsmode_sim.IpAddr,'\0',16));
			_MemFillCpy(cur_sim.SocketPort,gprsmode_sim.SocketPort,'\0',6,_StrlenForKey(gprsmode_sim.SocketPort,'\0',6));
			need_connect_update = 1;
			SwitchToAtCmd();
		}
		else
		{
			SwitchToAtCmd();
		}
	}
}

void Handle_2341Msg(void)
{
	uint  *ptr;
	DWORD offset;
	DWORD ds;
	uint  i;
	send_ack_gprs_count=0;
	Stop_Timer(send_ack_gprs_timer);
	
	ptr = (uint *)(Cntermsg->data+1);
	if(gsmstatus.gprsdata!=TRUE)return;
	if(gsmstatus.isupdate!=TRUE)return;
	if(gsmstatus.needupdate!=TRUE)return;
	if(Cntermsg->data[0]==0)
	{
		soft.curpack = *ptr;
		ds           = (DWORD)UPDATESECTOR*(DWORD)4096;
		offset       = (DWORD)((DWORD)soft.curpack*(DWORD)512);
		ds          +=offset;
		for(i=0; i<(Cntermsg->len-20); i++)
		{
			Program_One_Byte(Cntermsg->data+3+i,ds+i);
		}
		send_ack_gprs_proc();
	}
	else
	{
		soft.curpack = *ptr;
		ds           = (DWORD)UPDATESECTOR*(DWORD)4096;
		offset       = (DWORD)((DWORD)soft.curpack*(DWORD)512);
		ds          +=offset;
		for(i=0; i<(Cntermsg->len-20); i++)
		{
			Program_One_Byte(Cntermsg->data+3+i,ds+i);
		}
		Send_Gprs_Packet_Update(1);
		if(SoftwareCrcCheck())
		{
#ifdef DEBUG_AT
			Uart1Send("recv update success prepare to update");
#endif
			for(i=0; i<0x10; i++)
			{
				soft.sn[i] = bak_sn[i];
			}
			WriteSoftInfo();
			Send_Gprs_Ack_Update(3);
			clr_watchdog();
			if(save.basevalue.gprs_mode ==0)
			{
				SwitchToAtCmd();
				Uart1Send(" RETURN SMS");
			}
			clr_watchdog();
			Delay10ms(50);
			clr_watchdog();
			Delay10ms(50);
			clr_watchdog();
			Delay10ms(50);
			clr_watchdog();
			Delay10ms(50);
			clr_watchdog();
			Uart1Send("DELAY 2S OK");
			_MemFillCpy(cur_sim.IpAddr,gprsmode_sim.IpAddr,'\0',16,_StrlenForKey(gprsmode_sim.IpAddr,'\0',16));  //added by leon 050919
			_MemFillCpy(cur_sim.SocketPort,gprsmode_sim.SocketPort,'\0',6,_StrlenForKey(gprsmode_sim.SocketPort,'\0',6));
			UpdateNewCode();
			Uart1Send("update SUCCESS");
		}
		else
		{
#ifdef DEBUG_AT
			Uart1Send("recv update software update err");
#endif
			Send_Gprs_Ack_Update(4);
			InitSoftWare();
			gsmstatus.needupdate = FALSE;
			gsmstatus.isupdate   = FALSE;
			if(save.basevalue.gprs_mode==0)
				SwitchToAtCmd();
			else    //added by leon 050919
			{
				_MemFillCpy(cur_sim.IpAddr,gprsmode_sim.IpAddr,'\0',16,_StrlenForKey(gprsmode_sim.IpAddr,'\0',16));
				_MemFillCpy(cur_sim.SocketPort,gprsmode_sim.SocketPort,'\0',6,_StrlenForKey(gprsmode_sim.SocketPort,'\0',6));
				need_connect_update = 1;
				SwitchToAtCmd();
			}
		}
	}
}

void Handle_0143Msg(void)
{
	UCHAR TempNumb[15];
	_MemFillCpy(TempNumb,save.simcard[!save.basevalue.mode.bit.simid].MyNumb,'\0',15,15);//lxo 112902 for initialize the factory configure
	Init_All_Para();
	save.basevalue.mode.bit.simid=gsc.Gprs_Simcard_bits.currsc ;//lxo 112901 for initialize the factory configure
	_MemFillCpy(save.simcard[!save.basevalue.mode.bit.simid].MyNumb,TempNumb,'\0',15,15);//lxo 112903 for initialize the factory configure
	_MemFillCpy(TempNumb,cur_sim.MyNumb,'\0',15,15);//lxo 112906 for initialize the factory configure
	if(gsmstatus.gprsdata == TRUE)      //added by leon 050913
	{//lxo 112403 for reconnect after initialize the factory configure
//		save.basevalue.mode.bit.simid=gsc.Gprs_Simcard_bits.currsc ;//lxo 112404 for reconnect after initialize the factory configure
		Init_SimInformation();//lxo 112405 for reconnect after initialize the factory configure
		Send_Gprs_Ack(0x0143,0x01);
	}//lxo 112406 for reconnect after initialize the factory configure
	else
		Send_Sms_Ack(0x0143,0x01);
	_MemFillCpy(save.simcard[save.basevalue.mode.bit.simid].MyNumb,TempNumb,'\0',15,15);//lxo 112904 for initialize the factory configure
	_MemFillCpy(cur_sim.MyNumb,TempNumb,'\0',15,15);//lxo 112907 for initialize the factory configure
	Store_All_Para();//lxo 112905 for initialize the factory configure
}

void Handle_1043Msg(void)
{
	/*if(Cntermsg->data[0]==0)
	{
		save.basevalue.gprs_mode = 0;
	}
	else if((Cntermsg->data[0]>0)&&(Cntermsg->data[0]<=10)) 
	{
		save.basevalue.gprs_mode = 1;
	}
	else if(Cntermsg->data[0]>10)
	{
		save.basevalue.gprs_mode = 2;
	}*/
	save.basevalue.gprs_mode = 2;  //modified by leon 050919 for 06B1 only support DOUBLE-MODE
	Store_All_Para();
	if(gsmstatus.gprsdata == TRUE)      //added by leon 050913
		Send_Gprs_Ack(0x1043,0x01);
	else
		Send_Sms_Ack(0x1043,0x01);
}

void Handle_1143Msg(void)
{
	_MemFillCpy(save.phonenumber.ManageCentreNumb[0], Cntermsg->data, '\0',15, _StrlenForKey(Cntermsg->data,'F',14));
	Store_All_Para();
	if(gsmstatus.gprsdata == TRUE)     //added by leon 050913
		Send_Gprs_Ack(0x1143,0x01);
	else
		Send_Sms_Ack(0x1143,0x01);
}

void Handle_5143Msg(void)  //added by leon 050923 for Set ManageNumber of Card 1
{
	if(Cntermsg->data[0])  //card type card 1
	{
		_MemFillCpy(save.phonenumber.ManageCentreNumb[1], &Cntermsg->data[1], '\0',15, _StrlenForKey(&Cntermsg->data[1],'F',14));
	}
	else //if(Cntermsg->data[0] ==0)  //card type card 0
	{
		_MemFillCpy(save.phonenumber.ManageCentreNumb[0], &Cntermsg->data[1], '\0',15, _StrlenForKey(&Cntermsg->data[1],'F',14));
	}
	Store_All_Para();
	if(gsmstatus.gprsdata == TRUE)      //added by leon 050913
		Send_Gprs_Ack(0x5143,0x01);
	else
		Send_Sms_Ack(0x5143,0x01);
}

void Handle_1243Msg(void)
{
	if(Cntermsg->data[0]!='+')
	{
		save.phonenumber.MessageServiceNumb[0][0] = '+';
		_MemFillCpy(save.phonenumber.MessageServiceNumb[0]+1,Cntermsg->data,'\0',14,_StrlenForKey(Cntermsg->data,'F',14));
	}
	else
	{
		_MemFillCpy(save.phonenumber.MessageServiceNumb[0],Cntermsg->data,'\0',15,_StrlenForKey(Cntermsg->data,'F',14));
	}
	if(gsmstatus.gprsdata == FALSE)  //added by leon 050923
	{
		if(save.basevalue.mode.bit.simid == 0)
			At_Cmd_Csca(save.phonenumber.MessageServiceNumb[0],_Strlen(save.phonenumber.MessageServiceNumb[0],15));
	}
	else
		need_set_messagenumber =1;
	//_MemFillCpy(save.phonenumber.ManageCentreNumb, Cntermsg->data, '\0',15, _StrlenForKey(Cntermsg->data,'F',16));
	Store_All_Para();
	if(gsmstatus.gprsdata == TRUE)      //added by leon 050913
		Send_Gprs_Ack(0x1243,0x01);
	else
		Send_Sms_Ack(0x1243,0x01);
}

void Handle_5243Msg(void)  //added by leon 050923 for Set MessageNumber of Card 1
{
	if(Cntermsg->data[0])  //card type card 1
	{
		if(Cntermsg->data[1]!='+')
		{
			save.phonenumber.MessageServiceNumb[1][0] = '+';
			_MemFillCpy(save.phonenumber.MessageServiceNumb[1]+1,&Cntermsg->data[1],'\0',14,_StrlenForKey(&Cntermsg->data[1],'F',14));
		}
		else
		{
			_MemFillCpy(save.phonenumber.MessageServiceNumb[1],&Cntermsg->data[1],'\0',15,_StrlenForKey(&Cntermsg->data[1],'F',14));
		}
	}
	else //if(Cntermsg->data[0]==0) //card type card 0
	{
		if(Cntermsg->data[1]!='+')
		{
			save.phonenumber.MessageServiceNumb[0][0] = '+';
			_MemFillCpy(save.phonenumber.MessageServiceNumb[0]+1,&Cntermsg->data[1],'\0',14,_StrlenForKey(&Cntermsg->data[1],'F',14));
		}
		else
		{
			_MemFillCpy(save.phonenumber.MessageServiceNumb[0],&Cntermsg->data[1],'\0',15,_StrlenForKey(&Cntermsg->data[1],'F',14));
		}
	}
	if(gsmstatus.gprsdata == FALSE)    //added by leon 050923
	{
		if(Cntermsg->data[0])
		{
			if(save.basevalue.mode.bit.simid ==1)
				At_Cmd_Csca(save.phonenumber.MessageServiceNumb[1],_Strlen(save.phonenumber.MessageServiceNumb[1],15));
		}
		else
		{
			if(save.basevalue.mode.bit.simid ==0)
				At_Cmd_Csca(save.phonenumber.MessageServiceNumb[0],_Strlen(save.phonenumber.MessageServiceNumb[0],15));
		}
	}
	else
		need_set_messagenumber = 1;
	//_MemFillCpy(save.phonenumber.ManageCentreNumb, Cntermsg->data, '\0',15, _StrlenForKey(Cntermsg->data,'F',16));
	Store_All_Para();
	if(gsmstatus.gprsdata == TRUE)      //added by leon 050913
		Send_Gprs_Ack(0x5243,0x01);
	else
		Send_Sms_Ack(0x5243,0x01);
}

void Handle_1343Msg(void)  
{
	_MemFillCpy(save.phonenumber.ListenNumb[0],Cntermsg->data,'\0',15,_StrlenForKey(Cntermsg->data,'F',14));
	Store_All_Para();
	if(gsmstatus.gprsdata == TRUE)      //added by leon 050913
		Send_Gprs_Ack(0x1343,0x01);
	else
		Send_Sms_Ack(0x1343,0x01);
}

void Handle_5343Msg(void)   //added by leon 050923 for Set listen Number of Card 1
{
	if(Cntermsg->data[0])  //card type card 1
	{
		_MemFillCpy(save.phonenumber.ListenNumb[1],&Cntermsg->data[1],'\0',15,_StrlenForKey(&Cntermsg->data[1],'F',14));
	}
	else //if(Cntermsg->data[0] ==0)  //card type card 0
	{
		_MemFillCpy(save.phonenumber.ListenNumb[0],&Cntermsg->data[1],'\0',15,_StrlenForKey(&Cntermsg->data[1],'F',14));
	}
	Store_All_Para();
	if(gsmstatus.gprsdata == TRUE)      //added by leon 050913
		Send_Gprs_Ack(0x5343,0x01);
	else
		Send_Sms_Ack(0x5343,0x01);
}

void Handle_1543msg(void)
{
	if(Cntermsg->data[0])
	{
		_MemFillCpy(save.simcard[1].MyNumb,Cntermsg->data+1,'\0',15,_StrlenForKey(Cntermsg->data+1,'F',14));
	}
	else
	{
		_MemFillCpy(save.simcard[0].MyNumb,Cntermsg->data+1,'\0',15,_StrlenForKey(Cntermsg->data+1,'F',14));
	}
	Store_All_Para();
	if(gsmstatus.gprsdata == TRUE)      //added by leon 050913
		Send_Gprs_Ack(0x1543,0x01);
	else
		Send_Sms_Ack(0x1543,0x01);
}

void Handle_1643msg(void)
{
	WORD tellen;
	WORD i;
	if(Auto_Dial(Cntermsg->data,_StrlenForKey(Cntermsg->data,'F',14),2,4))
	{
		if(gsmstatus.gprsdata == TRUE)
		{
			Send_Gprs_Ack(0x1643,0x01);
			SwitchToAtCmd();
			Start_Timer(Gprs_Service_Timer,1,MINUTE);
		}
		else
			Send_Sms_Ack(0x1643,0x01);
	}
	else
	{
		if(gsmstatus.gprsdata == TRUE)
			Send_Gprs_Ack(0x1643,0x0);
		else
			Send_Sms_Ack(0x1643,0x0);
	}
}

void Handle_1743msg(void)//reserve for limit call//
{
	if(Cntermsg->data[1]>9)
	{
		if(gsmstatus.gprsdata == TRUE)    //added by leon 050913
			Send_Gprs_Ack(0x1743,0x0);
		else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -