📄 smsrecv.c
字号:
{
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 + -