📄 hanset.c
字号:
case 0x13:
case 0x14:
case 0x15:
case 0x16:
case 0x17:
case 0x18:
case 0x19:
case 0x1a:
case 0x1b:
At_Cmd_Vts(0x20+handmsg.userdata[0]);
break;
}
}
void Handle_04Msg(void) //文字信息//
{
Send_H5FMsg(0x04,0xff,0xff);
#ifdef DEBUG_AT
// Uart1Send("Send Text Message:");
// hand_send(handmsg.userdata,handmsg.len-9);
#endif
if((gsmstatus.mode&INIT_OK && !gsc.Gprs_Simcard_bits.isconnecting)&&gsmstatus.isupdate == FALSE) //added by leon 051110
Send_Message_Data(handmsg.userdata,handmsg.len-9);
else
Send_H06Msg(0);
}
void Send_Sms_Proc() //added by leon
{
if(!(gsmstatus.mode&INIT_OK))
{
if(need_send_sms_again)
{
need_send_sms_again = 0;
Send_H06Msg(0);
return;
}
if(need_handle_dialing)
{
need_handle_dialing = 0;
Send_H09Msg(0);
return;
}
}
else if(gsc.Gprs_Simcard_bits.isconnecting)
{
if(need_send_sms_again)
{
Start_Timer(Send_Sms_Timer,1,SECOND);
}
else if(need_handle_dialing)
{
Send_H09Msg(0x03);
}
}
else
{
if(need_send_sms_again)
{
need_send_sms_again = 0;
if(alarm_flag&0xfe53 || gsmstatus.isupdate == TRUE)
{
Send_H06Msg(0x04);
}
else
{
Handle_06Msg();
}
}
}
}
void Handle_05Msg(void) //拨号//
{
uchar flag;
uchar i;
uchar emergflag;
emergflag = 0;
flag = 0;
if(handmsg.len<10)
{
return;
}
Send_H5FMsg(0x05,0xff,0xff);
#ifdef DEBUG_AT
// Uart1Word(gsmstatus.mode);
// Uart1Word(gsc.Gprs_Simcard_bits.isconnecting);
#endif
if(!(gsmstatus.mode&INIT_OK) || gsc.Gprs_Simcard_bits.isconnecting)
{
need_handle_dialing = 1;
need_send_sms_again = 0;
Start_Timer(Send_Sms_Timer,1,SECOND);
return;
}
if(handmsg.len==12)
{
if(Str_Cmp(handmsg.userdata,"110", 3))
{
emergflag = 1;
}
if(Str_Cmp(handmsg.userdata,"112", 3))
{
emergflag = 1;
}
if(Str_Cmp(handmsg.userdata,"119", 3))
{
emergflag = 1;
}
if(Str_Cmp(handmsg.userdata,"120", 3))
{
emergflag = 1;
}
}
if(handmsg.len==13)
{
if(Str_Cmp(handmsg.userdata,"1860", 4))
{
emergflag = 1;
}
}
if(handmsg.len==20)
{
if(Str_Cmp(handmsg.userdata,"13800138000", 11))
{
emergflag = 1;
}
}
if(emergflag==0)
switch(save.basevalue.phone_mode)
{
case 0:
flag = 1;
Send_H06Msg(0x02);
break;
case 2:
flag = 1;
for(i=0; i<10; i++)
{
if(save.basevalue.mode.bit.simid==0)
{
if(Str_Cmp(save.phonenumber.User0Limit[i], handmsg.userdata, _Strlen(save.phonenumber.User0Limit[i],15)))
{
flag = 0;
}
}
else
{
if(Str_Cmp(save.phonenumber.User1Limit[i], handmsg.userdata, _Strlen(save.phonenumber.User1Limit[i],15)))
{
flag = 0;
}
}
}
if(flag==1)
{
Send_H06Msg(0x02);
}
break;
case 4:
flag = 1;
Send_H06Msg(0x02);
break;
}
if(flag==0||emergflag==1)
{
Dial(handmsg.userdata,handmsg.len-9,TRUE,FALSE);
}
}
void Handle_06Msg(void)
{
uchar tel[15];
uchar i;
if(handmsg.len<=23)return;
Send_H5FMsg(0x06,0xff,0xff);
#ifdef DEBUG_AT
// Uart1Word(gsmstatus.mode);
// Uart1Word(gsc.Gprs_Simcard_bits.isconnecting);
#endif
if(!(gsmstatus.mode&INIT_OK) || gsc.Gprs_Simcard_bits.isconnecting)
{
need_send_sms_again = 1;
need_handle_dialing = 0;
Start_Timer(Send_Sms_Timer,1,SECOND);
return;
}
if(gsmstatus.gprsdata == TRUE) //added by leon 051012
{
need_send_sms_again = 1;
need_handle_dialing = 0;
if(alarm_flag&0xfe53 || gsmstatus.isupdate == TRUE)
{
Start_Timer(Send_Sms_Timer,1,SECOND);
return;
}
else
{
SwitchToAtCmd();
Start_Timer(Send_Sms_Timer,5,HMSEL);
return;
}
}
for(i=0; i<14; i++)
{
if(handmsg.userdata[i]=='F')
tel[i] = '\0';
else
tel[i] = handmsg.userdata[i];
}
tel[14] ='\0';
#ifdef DEBUG_AT
//Uart1Send("send sms to the tel:");
//hand_send(tel,15);
//Uart1Send("sms msg is:");
//hand_send(handmsg.userdata+14,handmsg.len-23);
#endif
//#ifdef _HAVE_UNICODE
Start_Timer(Gprs_Service_Timer,30,SECOND);
SendSM(handmsg.userdata+14,handmsg.len-23,TRUE,tel,_SMS_COMMON,_INDEX_LCD);
//#else
// SendSM(handmsg.userdata+14,handmsg.len-23,FALSE,tel,_SMS_COMMON,_INDEX_LCD);
//#endif
}
void Handle_07Msg(void)
{
uchar flag;
uchar *ptr;
uchar port_number; //added by leon 051013
uint i; //added by leon 051013
uchar *bakptr; //added by leon 051013
flag = 0;
if(handmsg.userdata[1]==0x00)
{
if(handmsg.userdata[0]==0x0c || handmsg.userdata[0] == 0x0e)
Send_H0BMsg(handmsg.userdata[0],handmsg.userdata[2]-'0',handmsg.userdata[2]);
else
Send_H0BMsg(handmsg.userdata[0],handmsg.userdata[2]-'0',handmsg.userdata[3]);
}
else if(handmsg.userdata[1]==0x01){
switch(handmsg.userdata[0])
{
case 0x01:
_MemFillCpy(save.simcard[handmsg.userdata[2]-'0'].MyNumb,handmsg.userdata+3,'\0',15,handmsg.len-12);
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
flag = 1;
break;
case 0x02:
flag = 1;
_Memcpy(save.psw.handpsw,handmsg.userdata+2,8);
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x03:
flag = 1;
_MemFillCpy(save.simcard[handmsg.userdata[2]-'0'].IpAddr,handmsg.userdata+3,'\0',16,_StrlenForKey(handmsg.userdata+3,'F',15));
_MemFillCpy(save.simcard[handmsg.userdata[2]-'0'].SocketPort,handmsg.userdata+18,'\0',6,_StrlenForKey(handmsg.userdata+18,'F',5));
_MemFillCpy(save.simcard[handmsg.userdata[2]-'0'].User,handmsg.userdata+23,'\0',21,_StrlenForKey(handmsg.userdata+23,'F',20));
_MemFillCpy(save.simcard[handmsg.userdata[2]-'0'].Password,handmsg.userdata+43,'\0',21,_StrlenForKey(handmsg.userdata+43,'F',20));
Send_H5FMsg(0x07,handmsg.userdata[0],handmsg.userdata[2]);
//added by leon 051013
if((handmsg.userdata[2]-'0')==save.basevalue.mode.bit.simid)
{
bakptr = (uchar *)(save.simcard[handmsg.userdata[2]-'0'].MyNumb);
ptr = (uchar *)(cur_sim.MyNumb);
for(i=0; i<sizeof(_CURRENT_SIMCARD); i++)
{
ptr[i] = bakptr[i];
}
Start_Timer(Gprs_Service_Timer,5,HMSEL);
ParaSet.IPChange=1; //add lxo 112312 for reconnect after IP&Port change.
}
break;
case 0x04:
flag = 1;
_MemFillCpy(save.simcard[handmsg.userdata[2]-'0'].Apn,handmsg.userdata+3,'\0',21,_StrlenForKey(handmsg.userdata+3,'F',20));
Send_H5FMsg(0x07,handmsg.userdata[0],handmsg.userdata[2]);
//added by leon 051013
if((handmsg.userdata[2]-'0')==save.basevalue.mode.bit.simid)
{
bakptr = (uchar *)(save.simcard[handmsg.userdata[2]-'0'].MyNumb);
ptr = (uchar *)(cur_sim.MyNumb);
for(i=0; i<sizeof(_CURRENT_SIMCARD); i++)
{
ptr[i] = bakptr[i];
}
Start_Timer(Gprs_Service_Timer,5,HMSEL);
}
break;
case 0x05:
flag = 1;
/*(handmsg.userdata[2]>10) //modified by leon for 06B1 whatever choose from handset the 06B1 always DOUBLE-MODE.
{
save.basevalue.gprs_mode = 2;
}
else if(handmsg.userdata[2]>0)
{
save.basevalue.gprs_mode = 1;
}
else
{
save.basevalue.gprs_mode = 0;
}*/
save.basevalue.gprs_mode =2; //added by leon 0050921
//save.basevalue.gprs_mode = handmsg.userdata[2];
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x06: //modified by leon 050923
flag = 1;
//if(handmsg.userdata[2]=='8'&&handmsg.userdata[3]=='6')
//{
// _MemFillCpy(save.phonenumber.ManageCentreNumb, handmsg.userdata+2, '\0',15, handmsg.len-11);
//}
//else
//{
//save.phonenumber.ManageCentreNumb[0] = '8';
//save.phonenumber.ManageCentreNumb[1] = '6';
_MemFillCpy(save.phonenumber.ManageCentreNumb[0],handmsg.userdata+2,'\0',15,handmsg.len-11);
//}
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x07: //modified by leon 050923
flag = 1;
if(handmsg.userdata[2]!='+')
{
save.phonenumber.MessageServiceNumb[0][0] = '+';
_MemFillCpy(save.phonenumber.MessageServiceNumb[0]+1, handmsg.userdata+2, '\0', 14, handmsg.len-11);
}
else
{
_MemFillCpy(save.phonenumber.MessageServiceNumb[0],handmsg.userdata+2,'\0',15,handmsg.len-11);
}
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;
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x08: //modified by len 050923
flag = 1;
_MemFillCpy(save.phonenumber.ListenNumb[0],handmsg.userdata+2,'\0',15,handmsg.len-11);
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x16: //added by leon 050923
flag =1;
_MemFillCpy(save.phonenumber.ManageCentreNumb[1],handmsg.userdata+2,'\0',15,handmsg.len-11);
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x17: //added by leon 050923
flag = 1;
if(handmsg.userdata[2]!='+')
{
save.phonenumber.MessageServiceNumb[1][0] = '+';
_MemFillCpy(save.phonenumber.MessageServiceNumb[1]+1, handmsg.userdata+2, '\0', 14, handmsg.len-11);
}
else
{
_MemFillCpy(save.phonenumber.MessageServiceNumb[1],handmsg.userdata+2,'\0',15,handmsg.len-11);
}
if(gsmstatus.gprsdata == FALSE) //added by leon 050923
{
if(save.basevalue.mode.bit.simid == 1)
At_Cmd_Csca(save.phonenumber.MessageServiceNumb[1],_Strlen(save.phonenumber.MessageServiceNumb[1],15));
}
else
need_set_messagenumber = 1;
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x18: //added by leon 050923
flag = 1;
_MemFillCpy(save.phonenumber.ListenNumb[1],handmsg.userdata+2,'\0',15,handmsg.len-11);
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x09:
flag = 1;
if(handmsg.userdata[2]=='0')
{
_MemFillCpy(save.phonenumber.User0Limit[handmsg.userdata[3]], handmsg.userdata+4, '\0', 15,handmsg.len-13);
}
else
{
_MemFillCpy(save.phonenumber.User1Limit[handmsg.userdata[3]], handmsg.userdata+4, '\0', 15,handmsg.len-13);
}
Send_H5FMsg(0x07,handmsg.userdata[0],handmsg.userdata[2]);
break;
case 0x0a:
flag = 1;
_Memcpy((LPBYTE)&save.basevalue.max_speed,handmsg.userdata+2,2);
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x0b:
flag = 1;
_Memcpy((LPBYTE)&save.basevalue.low_voltage,handmsg.userdata+2,2);
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x0c:
flag = 1;
ptr = &save.alarmtime.voltage;
ptr[handmsg.userdata[2]-1] = handmsg.userdata[3];
Send_H5FMsg(0x07,handmsg.userdata[0],handmsg.userdata[2]);
break;
case 0x0d:
flag =1;
save.basevalue.gprs_time = handmsg.userdata[2]*1000;
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x0e: //modified by leon 051013
flag = 1;
if(handmsg.userdata[2] < MAX_PORT_AREA)
{
if(handmsg.userdata[2] >= save.simsel.set_port_number)
{
port_number = save.simsel.set_port_number;
save.simsel.set_port_number++;
}
else
port_number = handmsg.userdata[2];
ptr = (uchar *)&save.simsel.judge_port[port_number].mainland_port.top_left.lati;
_Memcpy((LPBYTE)ptr,handmsg.userdata+3,48);
}
//ptr = (uchar *)&save.simsel.sim_longi;
//_Memcpy((LPBYTE)ptr, handmsg.userdata+2,10);
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x0f:
flag = 1;
save.basevalue.io.ch = handmsg.userdata[2];
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x10:
flag = 1;
save.basevalue.mode.bit.voice = Get_Char_Bit(&handmsg.userdata[2], 1);
save.basevalue.mode.bit.dial = Get_Char_Bit(&handmsg.userdata[2], 0);
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
case 0x11:
flag = 1;
save.basevalue.mode.bit.consume = Get_Char_Bit(&handmsg.userdata[2],0);
Send_H5FMsg(0x07,handmsg.userdata[0],0xff);
break;
}
}
if(flag==1)
{
Store_All_Para();
}
}
void Handle_08Msg(void)
{
#ifdef DEBUG_HANDSET
hand_send(save.psw.handpsw,8);
//hand_send(&save.flag,sizeof(_SAVE));
#endif
if(Str_Cmp(handmsg.userdata, save.psw.handpsw,8))
{
Send_H0CMsg(0x01);
}
else
{
Send_H0CMsg(0x00);
}
}
void Handle_4Fmsg(void)
{
#ifdef DEBUG_AT
// Uart1Send("Got 4F message from handset!");
#endif
if(handmsg.userdata[0]==0x07)
{
ring.ack =2;
}
}
uchar Find_0D0A(void)
{
uint i,j;
uchar *ptr;
ptr = &handmsg.flag[0];
i = handuart.head;
j = 0;
// clr_watchdog();
while(i!=handuart.tail)
{
// clr_watchdog();
ptr[j++] = handuart.recvbuf[i++];
if(i>=MAXHANDRECVBUFFER)i = 0;
if(j>1)
if(ptr[j-1]==0x0a&&ptr[j-2]==0x0d)
{
handuart.head = i;
handmsg.handlen = j;
return TRUE;
}
if(j>300) //数据长度超过100//
{
handuart.head = i;
j = 0;
//Deal_Handsetfail();
return FALSE;
}
}
return FALSE;
}
void Deal_Handrecv(void)
{
while(Find_0D0A())
{
#ifdef DEBUG_HANDSET
Uart1SendHex(&handmsg.flag[0],handmsg.handlen);
Uart1Send("");
#endif
if(handmsg.handlen!=handmsg.len)
{
#ifdef DEBUG_AT
Uart1Send("the len is no qualize");
#endif
break;
}
if(handmsg.flag[0]=='$'&&handmsg.flag[1]=='$')
{
if(crc_check(&handmsg.flag[0],handmsg.len-2))
{
Find_Proc(HANDMSGENTRYPROC,handmsg.msgtype,sizeof(HANDMSGENTRYPROC)/sizeof(ENTRY_PROC));
}
}
}
}
void HandsetTaskEntry(void)
{
Find_Proc(HANDTASKPROC,Current_Tskmsg->msgid,sizeof(HANDTASKPROC)/sizeof(ENTRY_PROC));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -