123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866 |
- #include "includes.h"
- POC_DEF sutPocStatus;
- void pocDataInit(void){
- memset((unsigned char *)&sutPocStatus, 0, sizeof(POC_DEF));
- }
- unsigned long long htoi(char s[])
- {
- int i = 0;
- unsigned long long n = 0;
- if (s[0] == '0' && (s[1]=='x' || s[1]=='X')) i = 2;
- else i = 0;
- for (; (s[i] >= '0' && s[i] <= '9') || (s[i] >= 'a' && s[i] <= 'z') || (s[i] >='A' && s[i] <= 'Z');++i){
- if (tolower(s[i]) > '9') n = 16 * n + (10 + tolower(s[i]) - 'a');
- else n = 16 * n + (tolower(s[i]) - '0');
- }
- return n;
- }
- /*
- MakeStringToUpperCap
- �滚�data嚗���𧼮之�坔�瘥滩蓮�𣂼之�坔�瘥�
- */
- void MakeStringToUpperCap(unsigned char *data, unsigned short len){
- unsigned short i;
- for(i=0;i<len;i++)
- {
- if(data[i] >= 'a' && data[i] <= 'z')
- data[i] -= 0x20;
- }
- }
- /*�批��亥砭POC霈曄蔭�嗆�?
- dly:�亙藁鋡怨��函�憸𤑳�嚗��雿㤈s*/
- void pocProCtl(int dly){
- //3蝏㗇��∠��剔契憡�?
- static unsigned short cnt=0;
- static unsigned short timecnt=0;// 5����∪�銝�甈⊥𧒄��
- if(sutApp.gtMode!=0) return;//GT憒胼�喟插�𡁜�蝚厰�撊����?
- if(++cnt<(5*1000/dly)) return;
- cnt=0;
- if(getAppObjStatus(ASLEEP_LCD)==0) return;//POC瘚潭�皝a�霈寧�瘨枏�敶�纒�行擪
-
- msgAtSend("AT+COPS?\r\n");
- msgAtSend("AT+CTEC?\r\n");//�䎚��𡑒什�喳�蝻��蝎園�頝箇插
- msgAtSend("AT+CSQ\r\n");//�䎚��埈��喳蝙撖桀�摰�
- msgAtSend("AT+POC=280000\r\n");//�瑕��𦯀漪�園𡢿
-
- #ifdef CONFIG_AUDIO_AFTER_INIT
- msgAtSend("AT+CACCP=0,0,1,\"\"\r\n");//璉�瘚𢞵ic�臬炏鋡匍ute�劐�
- #endif
- }
- static void micPro(int mic);
- static void spkPro(int spk);
- static void pocStartMsg(void);
- static void pro80Msg(char *msg);
- static void pro81Msg(char *msg);
- static void pro82Msg(char *msg);
- static void pro83Msg(char *msg);
- static void pro84Msg(char *msg);
- static void pro86Msg(char *msg);
- static void pro3dMsg(char *msg);
- static void pro3eMsg(char *msg);
- static void pro0eMsg(char *msg);
- static void pro1eMsg(char *msg);
- static void pro1dMsg(char *msg);
- static void pocGetVer(char *msg);
- static void proNoteMsg(char *msg);
- static void proNetMode(char *msg);
- static void proSimMode(char *msg);
- static void proGmrMsg(char *msg);
- static void proSmsMsg(char *msg);
- static void proCsqMsg(char *msg);
- static void proMicSpk(int mic, int spk);
- static void proCopsMsg(char *msg);
- static bool proMicGain(char *msg);
- static void pro96Msg(char *msg);
- static void pro28Msg(char *msg);
- static void pro0dMsg(char *msg);
- static void pro0eMsg(char *msg);
- static void pro3bMsg (char *msg);
- static void Pro7DMsg(char *msg);
- void cmdsProcess(char *msg, int len){//撌脣縧�匧�頧行揢銵?
- int i,j;
- char buf[10];
- if(sutApp.pocInitStatus==0) sutApp.pocInitStatus=1;
- if(sutApp.gtMode==0){
- if(msgCmp(msg,"+POC")){
- //�烈OC 靽⊥� �日�
- if(!msgCmp(msg,"+POC:28")&&!msgCmp(msg,"+POC:85")&&!msgCmp(msg,"+POC:97")){
- backLightReset();
- tryWakeupApp();
- MSG_INFO(1,"POCwakeup");
- }
-
- }
-
- MSG_INFO(1,"POC:%s",msg);
- if(msgCmp(msg, "PocSleep")){//POC隡𤑳�鈭?
- appSleepCtl(ASLEEP_POC, 0);
- }else if(msgCmp(msg, "+POC:WAKEUP")){//POC�日�鈭?
- }else if(msgCmp(msg, "+POC:8B")){
- #if 1
- buf[0]=msg[7];buf[1]=msg[8];buf[2]=0;
- i=atoi(buf);
- buf[0]=msg[9];buf[1]=msg[10];buf[2]=0;
- j=atoi(buf);
- proMicSpk(i, j);
- #endif
- }else if(msgCmp(msg, "+LSHTTS: END")){
- sutPocStatus.TTS=0;
- }else if(msgCmp(msg, "+HTTS: START")){
- paControl(true);
- sutPocStatus.TTS=1;
- }else if(msgCmp(msg, "+POC:02000000")) setPocPara(msg+13,len-13);
- else if(msgCmp(msg,"+POC:9600")) pro96Msg(msg);
- else if(msgCmp(msg, "+POC:82")) pro82Msg(msg);
- else if(msgCmp(msg, "+POC:86")) pro86Msg(msg);
- else if(msgCmp(msg, "+POC:83")) pro83Msg(msg);
- else if(msgCmp(msg, "+POC:28")) pro28Msg(msg);
- else if(msgCmp(msg, "+POC:80")) pro80Msg(msg);
- else if(msgCmp(msg, "+POC:81")) pro81Msg(msg);
- else if(msgCmp(msg, "+POC:0D")) pro0dMsg(msg);
- //else if(msgCmp(msg, "+POC:0E")) pro0eMsg(msg);
- else if(msgCmp(msg, "+POC:3B")) pro3bMsg(msg);
- else if(msgCmp(msg, "+POC:7D")) Pro7DMsg(msg+13);
-
- else if(msgCmp(msg, "+POC:84")) pro84Msg(msg+7);
- else if(msgCmp(msg, "+CTEC:")) proNetMode(msg+7);
- else if(msgCmp(msg, "+CSQ: ")) proCsqMsg(msg+6);
-
-
- else if(msgCmp(msg, "+POC:1D")) pro1dMsg(msg+7);
- // else if(msgCmp(msg, "+HEADSET:")) proHeadSet(msg+9);
- else if(msgCmp(msg, "+POC:START")) pocStartMsg();
- else if(msgCmp(msg, "+POC_VER:")) pocGetVer(msg+9);
- else if(msgCmp(msg, "+NOTE:")) proNoteMsg(msg+6);
- else if(msgCmp(msg, "+SIMCROSS:")) proSimMode(msg+10);
- else if(msgCmp(msg, "SV")) proGmrMsg(msg);
- else if(msgCmp(msg, "+SMS:")) proSmsMsg(msg+5);
-
- else if(msgCmp(msg, "+COPS:")) proCopsMsg(msg);
- else if(msgCmp(msg, "+CPIN: READY")) sutApp.cardStatus=1;
- //else if(msgCmp(msg, "+CCID: ")) proCCIDMsg(msg+7);
- else if(msgCmp(msg, "+CACCP: ")){
- if(false==proMicGain(msg+8)) proCaccpMsg(msg+8);
- }else MSG_INFO(1, "skip:%d,%s", len,msg);
- }
- }
- //憭��POC璅∪�靽⊥�
- void pocCmdHandler(unsigned char *msg, int len){
- //�㗇��航��伐�憒��銝齿糓+POC:SLEEP嚗釶OC�賢𤧅�雴�
- static char tmp[300],ch;
- static int k=0;
- unsigned int j;
- if(sutApp.authReady==0) return;
- if(sutApp.gtMode !=0 && sutApp.gtTMode != 0){
- usbOutPut(msg, len);//TM璅∪�銝讠凒�仿�譍�
- return;
- }
- for(j=0;j<len;j++){//餈�誘
- if(k>=sizeof(tmp)) k=0;
- tmp[k++]=msg[j];
- if(ch=='\r' && msg[j]=='\n'){
- if(k!=2){
- //憭��
- k -=2;tmp[k]=0;//�餅��噼膠�Z�
- MakeStringToUpperCap(tmp, k);
- cmdsProcess(tmp,k);
- }
- k=0;
- }
- ch=msg[j];
- }
- }
- static void proMicSpk(int mic, int spk){
- if(mic==0 && spk==0){//0000
- if(newPara.KeySound!=0) pttBeepStart(false);
- sutPocStatus.spk=0;
- sutPocStatus.mic=0;
- sutPocStatus.TONE=0;
- }else if(mic==1 && spk==0){//0100
- if(newPara.KeySound!=0) pttBeepStart(false);
- sutPocStatus.mic=1;
- }else if(mic==0 && spk==1){//0001
- if(newPara.KeySound!=0) paControl(true);//pttBeepStart(false);
- else paControl(true);//�喲𡡒�鞟內�單𧒄嚗䔶�閬��撘���号
- sutPocStatus.spk=1;
- sutPocStatus.mic=0;
- }else if(mic==0 && spk==13){//0013
- if(newPara.KeySound!=0) beepStart(TONE_SPECIAL);
- }else if(mic==0 && spk==2){
- paControl(true);
- sutPocStatus.TONE=1;
- }
- }
- static void micPro(int mic){
- switch(mic){
- case 0://�喲𡡒mic
- sutPocStatus.mic=0;
- break;
- case 1://�枏�mic
- if(newPara.KeySound!=0) beepStart(TONE_NORMAL);
- sutPocStatus.mic=1;
- //sutPocStatus.spk=0;
- break;
- }
- }
- static void spkPro(int spk){
- switch(spk){
- case 0://tone�喳��喲𡡒spk
- if(newPara.KeySound!=0) beepStart(TONE_NORMAL);
- sutPocStatus.spk=0;
- break;
- case 1://tone�喳�靽脲�spk�枏�
- if(newPara.KeySound!=0) beepStart(TONE_NORMAL);
- paControl(true);
- sutPocStatus.spk=1;
- sutPocStatus.mic=0;
- break;
- case 2://�剜𦆮TTS
- paControl(true);
- sutPocStatus.TTS=1;
- break;
- case 13://�a漲憭梯揖嚗�虾隞另one�寞��?
- if(newPara.KeySound!=0) beepStart(TONE_SPECIAL);
- break;
- }
- }
- /*POC撌脣鍳�冽��?*/
- static void pocStartMsg(void){
- sutApp.pocInitStatus=1;
- }
- /*敶枏�韐血噡��撅䂿黎蝏��銵其縑�?銝�甈⊥�扯繮�𡝗��?
- 銝滚�摨𠉛鍂��鍂銝滚���瘙��隞?
- 隞𦒘��函瑪�啁蒈敶蓥�銝餃𢆡銝𦠜𥁒銝�甈∪�銵?
- �飊T+POC=0D0000銋煺�銝𦠜𥁒銝�甈∪�銵?
- msg:000000,iiii(蝏��銵函揣撘?,dddddddd(蝏�D),nnnn(蝏���䀹㺭),mmmmmm(蝏��蝘?*/
- static void pro80Msg(char *msg){
- char Groupname[POC_GROUP_USER_NAME_LEN];
- char len;
- char Idbuf[5]={0};
- if(msg[8]=='2')return;
- len=strlen(&msg[29]);
- memcpy(Groupname, &msg[29], len);
- memcpy(Idbuf,&msg[25],4);
- //MakeStrEndByNewLine(msg);
- memset(sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].name,0,sizeof(sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].name));
- msg[25]=0;
- sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].ID=htoi(&msg[17]);
-
- if(sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].ID==0xFFFFFFFF){
- sutPocStatus.ListUpdate=1;
- sutPocStatus.ListDetailValid=1;
- sutPocStatus.ListCurOnlineNum=htoi(Idbuf);
- //if(sutPocStatus.danHuStatus!=0)sutPocStatus.ListCurOnlineNum--;// �嗡��訫鐤�餅�銝湔𧒄蝢斤�
- MSG_INFO(1, "friend:%d", sutPocStatus.ListCurOnlineNum);
- return;
- }
-
- if(sutPocStatus.ListFillIndex>0){
- if(sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].ID==sutPocStatus.AllGroups[sutPocStatus.ListFillIndex-1].ID){
- MSG_INFO(1,"id===chongfu==================%d\r\n",sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].ID);
- return;
- }
- }
-
- if(msg[29]==0) sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].name[0]=' ';
- else {
- LwEndingToBiEndingStr(Groupname,len);
- unicodeToGbk(Groupname, sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].name, &len);
- }
- //msg[29+8]=0;
- MSG_INFO(1,"AllGroups===%s,%d,%d\r\n",sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].name,sutPocStatus.ExceptionReadNum,sutPocStatus.ListFillIndex);
-
- sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].status=2;
- sutPocStatus.ListFillIndex++;
- MSG_INFO(1,"get groups end\r\n");
- if(sutPocStatus.ListFillIndex==sutPocStatus.ExceptionReadNum){
- MSG_INFO(1,"get groups finish--\r\n");
- sutPocStatus.ListGetOneFlag=1;
- }
- }
- /*���函��𣂼�靽⊥��𡑒”
- �飊T+POC=0E0000xxxxxxxx�亥砭
- msg:010000,iiii(�𣂼��𡑒”蝝W�),dddddddd(�𣂼�ID),mmmmmmmm(�𣂼��滨妍)*/
- static void pro81Msg(char *msg){
- char Username[POC_GROUP_USER_NAME_LEN];
- char len;
- len=strlen(&msg[25]);
- memcpy(Username, &msg[25], len);
- memset(sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].name,0,POC_GROUP_USER_NAME_LEN);
- msg[25]=0;
- sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].ID=htoi(&msg[17]);
-
- if(sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].ID==0xFFFFFFFF){
- return;
- }
-
- sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].status=msg[8]-0x30;
- //1 蝳餌瑪嚗� 2 �函瑪嚗���冽迨蝢斤�銝哨� 嚗� 3 �冽迨蝢斤�銝哨��函瑪嚗�
- if(sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].status==1&&sutUIstatus.Status==UIS_MENU_USER_SEL)return; //銝滚銁蝥� 銝齿遬蝷�
- if(msg[29]==0) sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].name[0]=' ';
- else {
- LwEndingToBiEndingStr(Username,len);
- unicodeToGbk(Username, sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].name, &len);
- }
- //msg[29+8]=0;
-
- MSG_INFO(1,"AllUsers===%s,%d,%d\r\n",sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].name,sutPocStatus.ExceptionReadNum,sutPocStatus.ListFillIndex);
- sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].status=msg[8]-0x30;
-
- sutPocStatus.ListFillIndex++;
- MSG_INFO(1,"get groups end\r\n");
- if(sutPocStatus.ListFillIndex==sutPocStatus.ExceptionReadNum){
- sutPocStatus.ListGetOneFlag=1;
- }
-
- }
- /*�餃��嗆��縑�?
- msg:ss(00�芰蒈敶?02撌脩蒈敶?,dddddddd(�𣂼�id),mmmmmmmm(�嗆��縑�臬�摰?
- 00 CEDECDF8C2E7C1ACBDD3 銵函內銝滚銁蝥選�颲枏枂靽⊥�銝?�删�蝏𡏭��?�典噡瘝?�𣂼�)
- 00 CEDEB7A8C1ACBDD3 銵函內銝滚銁蝥選�颲枏枂靽⊥�銝?�䭾�餈墧𦻖(IP 銝滚笆�硋� �穃㨃)
- 00 C3BBD3D0B7FECEF1 銵函內銝滚銁蝥選�颲枏枂靽⊥�銝?瘝⊥��滚𦛚(瘝⊥釣�?
- 00 B5C7C2BDCAA7B0DC 銵函內銝滚銁蝥選�颲枏枂靽⊥�銝?�駁�憭梯揖(韐血噡�躰秤)
- 00 0D5CBBAC5D0C5CFA2B4EDCEF3 韐血噡靽⊥��躰秤
- 02 0001A750 B2E2CAD431BAC5(瘚贝� 1 �?,*/
- static void pro82Msg(char *msg){
- char buf[3],*pName;
- int type,len,i;
- char Username[POC_GROUP_USER_NAME_LEN*2];
- buf[0]=msg[7];buf[1]=msg[8];buf[2]=0;
- type=atoi(buf);
- switch(type){
- case 0:
- sutPocStatus.logined=0;
- break;
- case 2:
- sutPocStatus.PocLineOffReason=0;
- len = strlen(&msg[17]);
- memcpy(Username,&msg[17],len);
- Username[len]=0;
- LwEndingToBiEndingStr(Username,len);
- unicodeToGbk(Username,sutPocStatus.LocalUser.name,&len);
- msg[17]=0;
- sutPocStatus.LocalUser.ID=strtol(&msg[9],&pName,16);
- MSG_INFO(1, "Login ok");
- //getNameFlag=1;//
- sutPocStatus.loginResult=3;
- break;
- }
- }
- /*�劐犖霂渲�
- msg:00,dddddddd(�𣂼�id),nnnnnnnn(�𣂼��滨妍)*/
- static void pro83Msg(char *msg){
- int len;
- char callerName[POC_GROUP_USER_NAME_LEN*2];
- char *pName;
- len=strlen(msg);
-
- paControl(true);
- sutPocStatus.PaDlyStart=1;
- if(memcmp(&msg[len-28],"2857B28BDD8B2E002E002E000000",28)!=0)return;
- backLightReset();//�算��箏���𤄄�㗎玏憪孵��删瑣戭祆�
- len=strlen(&msg[17])-28;//�餅� 甇�銁撖寡挈霂嘥���---�嗡�
-
- if(len>POC_GROUP_USER_NAME_LEN) len=POC_GROUP_USER_NAME_LEN;
- //else i++;//�𦠜���0 銋�鼧韐肽���
-
- memcpy(callerName,&msg[17],len);
-
- LwEndingToBiEndingStr(callerName,len);
- unicodeToGbk(callerName, sutPocStatus.CallName, &len);
- //StrUnicodeToAnsiBig(sutPocStatus.Callname,i,&msg[17+8]);
- *(msg+17) = 0;
- sutPocStatus.CallID = strtol(&msg[9+8],&pName,16);
- msg[17]=0;
- }
- /*�訫鐤�滚�靽⊥�
- msg:00,mmmmmmmmmm(�訫鐤蝏𤘪�靽⊥�)
- BAF4BDD0B3C9B9A6 銵函內 �澆㙈�𣂼�
- BAF4BDD0CAA7B0DC 銵函內 �澆㙈憭梯揖
- CDCBB3F6C1D9CAB1BAF4BDD0 銵函內 ���箔葩�嗅鐤�?
- C1D9CAB1BAF4BDD031BAC5BBFA 銵函內 銝湔𧒄�澆㙈 1 �瑟㦤*/
- static void pro84Msg(char *msg){
- LwEndingToBiEndingStr(msg+2,strlen(msg+2));
- ttsPlay(ENCODE_USER_UNICODE_BE, msg+2); //ENCODE_USER_UNICODE_BE
-
- if(0==memcmp(msg+2, "C1D9CAB1", 8)) sutPocStatus.danHuStatus=1;
- else if(0==memcmp(msg+2, "CDCBB3F6", 8)) sutPocStatus.danHuStatus=0;
- else if(0==memcmp(msg+2, "BAF4BDD0B3C9B9A6", 16)) sutPocStatus.danHuStatus=1;
-
- }
- /*��揢蝢斤�摰峕���誘(銵函內撌脩蒈敶?
- msg:00,dddddddd(蝏�d),nnnnnnnn(蝏��蝘?*/
- static void pro86Msg(char *msg){
- char buf[POC_GROUP_USER_NAME_LEN*4+40],*pName;
- int len,i;
- char GroupName[POC_GROUP_USER_NAME_LEN*2]={0};
- char tmp[POC_GROUP_USER_NAME_LEN*2+20]={0};
- char needTTs=0;
- if(msg[9]=='F'&&msg[10]=='F')return ;
-
- sutPocStatus.logined=1;
- if(msg[8]=='0'){
- len = strlen(&msg[17]);
- MSG_INFO(1,"len====%d",len);
- memcpy(GroupName,&msg[17],len);
- GroupName[len]=0;
- msg[17]=0;
- sutPocStatus.LocalGroup.ID=strtol(&msg[9],&pName,16);
- LwEndingToBiEndingStr(GroupName,len);
- unicodeToGbk(GroupName, sutPocStatus.LocalGroup.name, &len);
-
- MSG_INFO(1,"groupnamelen======%d",len);
- MSG_INFO(1,"groupname======%s",sutPocStatus.LocalGroup.name);
- sutPocStatus.danHuStatus=0;
- }else if(msg[8]=='1'){
- //�訫鐤璅∪�
- sutPocStatus.danHuStatus=1;
- }
- backLightReset();
- sutPocStatus.firstLogin=1;
- }
- /*�亥砭��撅䂿黎蝏��餅㺭���摨?
- �飊T+POC=3D0000�瑕�
- msg:000000,nnnn(��撅𧼮�撠睲葵蝢斤�)*/
- static void pro3dMsg(char *msg){
- char *pName;
- sutPocStatus.ListCurOnlineNum=strtol(&msg[6],&pName,16);
- sutPocStatus.ListUpdate=1;
- MSG_INFO(1, "groupNum:%d", sutPocStatus.ListCurOnlineNum);
- }
- /*�亥砭��撅𧼮銁蝥踵��䀹�餅㺭���摨?
- �飊T+POC=3E0000�瑕�
- msg:000000,nnnn(��撅𧼮�撠睲葵�函瑪�𣂼�)*/
- static void pro3eMsg(char *msg){
- char *pName;
- sutPocStatus.ListCurOnlineNum=strtol(&msg[6],&pName,16);
- sutPocStatus.ListUpdate=1;
- MSG_INFO(1, "userNum:%d", sutPocStatus.ListCurOnlineNum);
- }
- /*摰𡁻��亥砭���函黎蝏�葉��銁蝥踵��䀝縑�臬�摨?
- �飊T+POC=1E0000xxxxx�瑕�
- msg:010000,iiii(�𣂼��𡑒”蝝W�),dddddddd(�𣂼�ID),mmmmmmmm(�𣂼��滨妍)*/
- static void pro1eMsg(char *msg){
- char name[POC_GROUP_USER_NAME_LEN*2+1];
- int len;
- unsigned long id;
- char *pTemp;
-
- if(!uiAssist.status)return 1;
- len = strlen(&msg[18]);
- if(len >= POC_GROUP_USER_NAME_LEN*2) len = POC_GROUP_USER_NAME_LEN*2;
- memcpy(name, &msg[18], len);
- name[len]=0;
- msg[18]=0;
- id=strtol(&msg[10],&pTemp,16);
- sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].ID=id;
- if(name[0]==0){
- sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].name[0]=' ';
- sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].name[1]=0;
- }else StrAsciiToHex(name, sutPocStatus.AllUsers[sutPocStatus.ListFillIndex].name);
- sutPocStatus.ListFillIndex++;
- if(sutPocStatus.ListFillIndex==sutPocStatus.ExceptionReadNum){
- sutPocStatus.ListGetOneFlag=1;
- sutPocStatus.ListDetailValid=1;
- }
- }
- /*摰𡁏𧒄�亥砭��撅䂿�靽⊥�
- �飊T+POC=1D0000xxxxx�瑕�
- msg:000000,iiii(蝏��銵函揣撘?,dddddddd(蝏�D),nnnn(�𣂼�銝芣㺭),mmmmmmmmm(�滨妍)*/
- static void pro1dMsg(char *msg){
- unsigned short num;
- char name[POC_GROUP_USER_NAME_LEN*2+1];
- unsigned long id;
- unsigned short index;
- char *pTemp;
- int len;
- if(!uiAssist.status)return ;
- len = strlen(&msg[22]);//摰豢�撟㯄鑬憭𦠜��痹蜇撏脩�?
- if(len >= POC_GROUP_USER_NAME_LEN*2) len = POC_GROUP_USER_NAME_LEN*2;
- memcpy(name, &msg[22], len);
- name[len]=0;
- msg[22]=0;
- num=strtol(&msg[18],&pTemp,16);
- msg[18]=0;
- id=strtol(&msg[10],&pTemp,16);
-
- sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].ID=id;
- sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].usernum=num;
- if(name[0]==0){
- sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].name[0]=' ';
- sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].name[1]=0;
- }else
- StrAsciiToHex(name, sutPocStatus.AllGroups[sutPocStatus.ListFillIndex].name);
- sutPocStatus.ListFillIndex++;
- if(sutPocStatus.ListFillIndex==sutPocStatus.ExceptionReadNum){
- sutPocStatus.ListGetOneFlag=1;
- sutPocStatus.ListDetailValid=1;
- }
-
- }
- /*
- +POC_VER:01027
- msg=01027
- */
- static void pocGetVer(char *msg){
- snprintf(sutApp.pocVersion, sizeof(sutApp.pocVersion), "%s",msg);
- }
- /*
- +NOTE:0,1
- msg=0,1+�噼膠
- */
- static void proNoteMsg(char *msg){
- MSG_INFO(1,"authAck:%s",msg);
- }
- /*
- +CTEC: 0,0
- msg=0,0
- */
- static void proNetMode(char *msg){
- unsigned char netModeValue;
- char cmd[30];
- if(msg[0]<'0' || msg[0]>'9') return;
- netModeValue=atoi(msg);
- ctecCurrentSet=netModeValue;
- if(ctecCurrentSet != newPara.netMode){
- snprintf(cmd, sizeof(cmd),"AT+CTEC=%d,%d\r\n", ctecCurrentSet, newPara.netMode);
- msgAtSend(cmd);
- }
- }
- /*
- +COPS: 0,2,"46000",7
- msg=+COPS: 0,2,"46000",7
- */
- static void proCopsMsg(char *msg){
- int i,j=0,codeType;
- char w=0;
- unsigned char netModeValue;
-
- for(i=0;i<strlen(msg);i++){
- if(msg[i]==','){
- if(++j==3){
- codeType=msg[i+1]-0x30;
- if(codeType==7) codeType=4;
- if(netshowvalue!=codeType) netshowvalue=codeType;
- return;
- }
- }else if(msg[i]=='"'){
- if(++w==1){
- codeType=atoi(msg+i+1);
- if(codeType>0 && codeType != sutApp.copstype) sutApp.copstype=codeType;
- }
- }
- }
- }
- /*
- +SIMCROSS:0
- msg=0/1
- */
- static void proSimMode(char *msg){
- unsigned char tmpSim;
-
- tmpSim=msg[0]-0x30;
- if(tmpSim!=0 && tmpSim!=1) return;
- sutApp.simSel=tmpSim;
- }
- /*
- +FOTA:1,0
- +FOTA:1,XXX
- +FOTA:0
- +FOTA:1
- +FOTA:2
- msg=1,xxxx
- */
- static void proFotaMsg(char *msg){
- if(msg[1]==','){
- if(msg[2]=='0' && msg[3]==0) sutApp.fotaStatus=1;
- else{
- strcpy(sutApp.fotaVersion, msg+2);
- sutApp.fotaStatus=2;
- }
- }else if(msg[1]==0){
- if(msg[0]=='0') sutApp.fotaStatus=3;
- else if(msg[0]=='1') sutApp.fotaStatus=4;
- else if(msg[0]=='2') sutApp.fotaStatus=5;
- }
- }
- /*
- SV63302_T02
- msg=SV63302_T02
- */
- static void proGmrMsg(char *msg){
- snprintf(sutApp.modemVer, sizeof(sutApp.modemVer), "%s", msg);
- }
- /*
- +SMS:1,B2E2CAD4313233
- msg=1,B2E2CAD4313233
- */
- static void proSmsMsg(char *msg){
- unsigned char smsType=msg[0]-0x30;
- unsigned len=strlen(msg+2);
- if(len%2 || 0!=restoreDataFormatByHex(msg+2,len)){
- MSG_WARN(1, "sms data error");
- return;
- }
- len /= 2;
- sutMess.codeType=smsType;
- sutSms.smsUpdate=1;
- memcpy(sutMess.GBKMess1+4, msg+2, len);
- }
- /*
- +CSQ: 14,99
- msg=14,99
- */
- static void proCsqMsg(char *msg){
- int csq=atoi(msg);
- if(csq != sutApp.g_iCSQ) sutApp.g_iCSQ=csq;
- }
- static void pro96Msg(char *msg){
- if(msg[10]=='0'){
- sutPocStatus.PaDlyStart=1;
- paControl(true);
- sutPocStatus.mic=1;
-
- }
- else if(msg[10]=='3'){
- paControl(true);
- backLightReset();
- sutPocStatus.logined=1;
- sutPocStatus.spk=1;
- sutPocStatus.mic=0;
-
- }else if(msg[10]=='4'){
- sutPocStatus.spk=0;
- sutPocStatus.TTS=0;
- sutPocStatus.PaDlyStart=1;
-
- }else if(msg[10]=='1'){
- sutPocStatus.PaDlyStart=1;
- sutPocStatus.mic=0;
-
- }
- }
- /*
- +POC:2800000016010A101F2401
- */
- static void pro28Msg(char *msg){
-
- char buf[20];
- if(msg[7]=='F' && msg[8]=='F')return;
- if(msg[5]=='2' && msg[6]=='8'){
- //PocGetTime=1;
- //+POC:2800000014040e10132002
- StrAsciiToHex(&msg[13],buf);
- My_Clock.year=buf[0];;
- My_Clock.month=buf[1];;
- My_Clock.day=buf[2];;
- My_Clock.hour=buf[3];;
- My_Clock.min=buf[4];;
- My_Clock.sec=buf[5];
- MSG_INFO(1,"NewTime:%02d-%02d-%02d %02d:%02d:%02d",
- My_Clock.year,My_Clock.month,My_Clock.day,
- My_Clock.hour,My_Clock.min,My_Clock.sec);
- sutApp.PocGetTime=1;
- return ;
- }
- }
- static void pro0dMsg(char *msg){
-
- if(sutUIstatus.Status!=UIS_MENU_GROUP_SEL)return;
-
- sutPocStatus.ListUpdate=1;
- sutPocStatus.ListDetailValid=1;
- sutPocStatus.ListCurOnlineNum=htoi(&msg[13])-1;
- if(sutPocStatus.danHuStatus!=0)sutPocStatus.ListCurOnlineNum--;// �嗡��訫鐤�餅�銝湔𧒄蝢斤�
- MSG_INFO(1, "groupNum:%d", sutPocStatus.ListCurOnlineNum);
- }
- static void pro0eMsg(char *msg){
- sutPocStatus.ListUpdate=1;
- sutPocStatus.ListDetailValid=1;
- sutPocStatus.ListCurOnlineNum=htoi(&msg[13])-1;
- if(sutPocStatus.danHuStatus!=0)sutPocStatus.ListCurOnlineNum--;// �嗡��訫鐤�餅�銝湔𧒄蝢斤�
- MSG_INFO(1, "friend:%d", sutPocStatus.ListCurOnlineNum);
- }
- static void pro3bMsg (char *msg){
- if(msg[5]=='3' && msg[6]=='B'){
- sutPocStatus.ListUpdate=1;
- sutPocStatus.ListDetailValid=1;
- sutPocStatus.ListCurOnlineNum =htoi(&msg[21]);
- MSG_INFO(1, "UserNum:%d", sutPocStatus.ListCurOnlineNum);
- }
- }
- static void Pro7DMsg(char *msg){
- int i,j,len,ver;
- char bufTemp[40];
-
- len = strlen(msg);
- j=0;
- StrAsciiToHex(msg,bufTemp);
- strncpy(sutApp.pocVersion,bufTemp,sizeof(sutApp.pocVersion));
- }
- /*
- +HEADSET:1
- msg=1
- */
- void proHeadSet(char *msg){
- switch(msg[0]){
- case '0'://HEADSET CONNECT
- sutApp.earLev=1;
- //msgAtSend("AT+AUDCH=1,3\r\n");
- sutApp.pcant=2;
- VolMicUpdate();
- VolSpkUpdate();
- break;//HEADSET DISCONNECTED
- case '1':
- sutApp.earLev=0;
- //msgAtSend("AT+AUDCH=0,0\r\n");
- sutApp.pcant=4;
- VolMicUpdate();
- VolSpkUpdate();
- break;//HEADSET BTN PRESS
- case '2':
- micPttHandler(1);
- break;//HEADSET BTN RELEASED
- case '3':
- micPttHandler(0);
- break;
- }
- }
- /*
- +CCID: 898604851920C0133569
- msg=898604851920C0133569
- */
- void proCCIDMsg(char *msg){
- sutApp.cardStatus=1;
- msg[6]=0;
- sutApp.copstype=atoi(msg+4);
- }
- void LogoutOutTimeCheck(unsigned int interval){
- //�厩瑪�舘�餈�3����滨蒈敶𤏪���閬�偘�曄蒈敶蓥縑��
- static unsigned char lastLoginStatus=0;
- static unsigned int cnt=0;
- if(sutApp.reloginStatus == lastLoginStatus) return;
- if(sutApp.reloginStatus==0){//�勗銁蝥踹��鞉�蝥�
- if(++cnt>=(180000/interval)){
- cnt=0;
- sutApp.reloginTts=1;
- }
- }else{//�望�蝥踹�銝羓瑪
- cnt=0;
- }
- lastLoginStatus=sutApp.reloginStatus;
- }
- /*
- +CACCP: "04000a00"
- msg="04000a00"
- */
- static bool proMicGain(char *msg){
- if(0==strncmp(msg+1, "00000000", 8)) sutApp.audioReconfig=1;
- else sutApp.audioReconfig=0;
- MSG_INFO(1, ">>NeedReconfigAudio:%s", sutApp.audioReconfig?"yes":"no");
- return (sutApp.audioReconfig?true:false);
- }
- char *ohpocGetIMEI(void){
- static char imei[16]={0};
- if(imei[0]==0){
- if(LSAPI_SIM_GetIMEI(imei)==0){
- return imei;
- }
- }
- return NULL;
- }
- void ohpocGetClock(MY_CLOCK *myclock){
- return;
- }
|