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

📄 tskwic.c

📁 本人编写的无线电话程序,给予PIC18C801设计,包括了uCOS的移植以及菜单,自己设计的拼音注入法,完整地一级汉字库,希望对大家有所帮助
💻 C
📖 第 1 页 / 共 2 页
字号:
				return (APP_NO_ANSWER);
			}
			else		
				return(APP_NO_ERROR);
		}
		else{
			if ((INT24U)pMsg == MSG_WICRESP_OK)
				return (APP_NO_ERROR);
			else if ((INT24U)pMsg == MSG_WICRESP_ERROR)
				return (APP_ERROR);
			else if ((INT24U)pMsg == MSG_WICRESP_UIMPIN)
				return (APP_PIN);
			else{
				if((INT24U)pMsg < PTR_MAX){
					Func_Clear_Msg((INT8U rom *)pMsg);
				}
				//goto wait;
			}
		}
	  }
	}
	//return (APP_FAIL);
}


INT8U WIC_Init_Module(void){
	INT8U chrT;
	INT8U ctr;
	ctr = 0;
	do{chrT = WIC_DoCmd(WICCmd_AT);
	}while(chrT != APP_NO_ERROR);

	do{
		OSTimeDly(100);
		chrT = WIC_DoCmd(WICCmd_PIN_STT);
		if(chrT == APP_PIN){
			//check if local PIN is NULL, if not, make the command; otherwise, return PIN error
			chrT = WIC_DoCmd(WICCmd_PINWORD);//chrWICBuffer);
			if(chrT == APP_NO_ERROR) break;
			else for(;;);
		}
		ctr++;
		if(ctr == 5){
			Mod_Rdy = FALSE;
			return(1);
		}
	}while(chrT != APP_NO_ERROR);

	OSTimeDly(200);

	do{chrT = WIC_DoCmd(WICCmd_E0);
	}while(chrT != APP_NO_ERROR);

	do{chrT = WIC_DoCmd(WICCmd_SIG_QL);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_INCALL_TYPE);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_WIND_SET);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_CCED);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_CREG);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_IFC);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_CHANNEL);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_SM_HANDLMODE);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_CLIP);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_WSVG);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_POW_STT);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_CNMI);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_SPK_GAIN);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_WSCL);
	}while(chrT != APP_NO_ERROR);
	do{
		OSTimeDly(100);
		chrT = WIC_DoCmd(WICCmd_TIME_GET);
	}while(chrT != APP_NO_ERROR);
	//WIC_DoCmd(WICCmd_PIN_STT);
	//do{chrT = WIC_DoCmd(WICCmd_CCWA);
	//}while(chrT != APP_NO_ERROR);
	//WIC_DoCmd(WICCmd_TIME_GET);
	Mod_Rdy = TRUE;
	return(0);
}

void WIC_OffHook(void){
	INT8U chrT;
	do{chrT = WIC_DoCmd(WICCmd_DIATON_OFF);
	}while(chrT != APP_NO_ERROR);
	do{chrT = WIC_DoCmd(WICCmd_DIATON_OPEN);
	}while(chrT != APP_NO_ERROR);
}

void WIC_OnHook(void){
	INT8U chrT;
	WIC_DoCmd(WICCmd_ON_HOOK);
	do{chrT = WIC_DoCmd(WICCmd_DIATON_OFF);
	}while(chrT != APP_NO_ERROR);
}

void WIC_KeySound(INT8U key){
	INT8U chrT;
	INT8U i,x;
	if (key == 0x00) return;
	x = key;
	if(key >= 0x70) key = '*';
	for(i = 0; i<50 ; i++){
		chrWICBuffer[i] = WICCmd_DTMFTON_OPEN[i];
		if(chrWICBuffer[i] == 0x00) break;
	}
	chrWICBuffer[12] = key;
	do{chrT = WIC_DoCmd(chrWICBuffer);
	}while(chrT != APP_NO_ERROR);
	if (x == '#' || x == '*' || (x >= '0' && x <= '9')){
		for(i = 0; i<50 ; i++){
			chrWICBuffer[i] = WICCmd_VTS[i];
			if(chrWICBuffer[i] == 0x00) break;
		}
		chrWICBuffer[7] = key;
		do{chrT = WIC_DoCmd(chrWICBuffer);
		}while(chrT != APP_NO_ERROR);
	}	
}

INT8U WIC_Call(INT8U rom * ptrNumber, INT8U len, INT8U type){
	INT8U i, chrT,j;
	INT8U err;
	INT8U rom *pMsg;
	
	do{chrT = WIC_DoCmd(WICCmd_DIATON_OFF);
	}while(chrT != APP_NO_ERROR);
	
	for(i = 0; i<50 ; i++){
		chrWICBuffer[i] = WICCmd_D[i];
		if(chrWICBuffer[i] == 0x00) break;
	}
	for(j = 0; j< len; j++){
		chrWICBuffer[i++] = *ptrNumber++;
	}
	if(type == VOICE)
		chrWICBuffer[i++] = ';';
	chrWICBuffer[i++] = '\r';
	chrWICBuffer[i++] = '\n';
	chrWICBuffer[i] = 0x00;
	if(type == VOICE){
		WIC_DoCmd(chrWICBuffer);
	}
	else{//if data, send cmd and wait for MSG_WICRESP_NOCARRIER or MSG_DATA_CONSUCC
		WIC_Send_Cmd(chrWICBuffer);
		for(;;){
			pMsg = OSQPend(peventWIC, 200, &err);
			if(err == OS_TIMEOUT){
				return(1);
			}
			else if((INT24U)pMsg == MSG_DATA_CONSUCC){
				OSQPost(peventPPPHandler, (OS_EVENT *) MSG_LOW_UP);
				return(0);
			}
			else if((INT24U)pMsg == MSG_WICRESP_NOCARRIER)
				return(1);
			if((INT24U)pMsg >= PTR_MAX) Func_Clear_Msg(pMsg);
		}
	}
}

void WIC_SendSM(INT8U rom * ptrData, INT8U len, OS_EVENT * Origin){
	INT8U rom * ptrT1;
	INT8U rom * ptrT2;
	INT8U rom * ptrT3;
	INT8U rom * pMsg;
	INT8U err,i,chrT;
	
	if(len > ((256 - 12)+1)){	//if the length is too long
		OSQPost(Origin, (OS_EVENT *)MSG_SM_SENDFAIL);
		return;
	}
	ptrT1 = OSMemGet(pMemSml,&err);
	if(err == OS_NO_ERR){
		ptrT2 = OSMemGet(pMemLge,&err);
		if(err == OS_NO_ERR){
			((MSG_HEAD *)ptrT1)->Msg_ID = MSG_COM0_TRANSMIT;
			((MSG_HEAD *)ptrT1)->Origin = peventWIC;
			((MSG_HEAD *)ptrT1)->pmemME = pMemSml;
			((MSG_HEAD *)ptrT1)->Attached = TRUE;
			((MSG_HEAD *)ptrT1)->pMem = ptrT2;
			((MSG_HEAD *)ptrT1)->pmemATT = pMemLge;
			//
			ptrT3 = WICCmd_CMGS;
			for(;;){
				chrT = *ptrT3++;
				if(chrT == 0x00) break;
				*ptrT2++ = chrT;
			}
			*ptrT2++ = '\"';	
			chrT = *ptrData;	//chrT now contains the length of number
			ptrData++;
			//now copy the number--the number is coded in ASCII
			for(i=0;i<chrT;i++){
				*ptrT2 = *ptrData;
				ptrT2++;
				ptrData++;
			}
			*ptrT2++ = '\"';	
			*ptrT2++ = '\r';	//add the <CR>
			//  *ptrT2++ = '\n';	//add the <CR>
			//now copy the data
			chrT = len - chrT - 1;	//the length of data
			for(i=0;i<chrT;i++){
				*ptrT2 = *ptrData;
				ptrT2++;
				ptrData++;
			}
			*ptrT2++ = 0x00;	//here is the unicode form of "Ctr-Z"
			*ptrT2++ = 0x1a;
			//
			((MSG_HEAD *)ptrT1)->LenOfAttach = (INT16U)((INT24U)ptrT2 - (INT24U)((MSG_HEAD *)ptrT1)->pMem);
			OSQPost(peventHardware, (OS_EVENT *)ptrT1);
			return;// (APP_NO_ERROR);
			wait2:
			pMsg = OSQPend(peventWIC, 500, &err);
			if(err == OS_TIMEOUT){
				//OSQPost(Origin, (OS_EVENT *)MSG_SM_SENDFAIL);
				return;
			}
			else if ((INT24U)pMsg == MSG_WICRESP_OK){
				//OSQPost(Origin, (OS_EVENT *)MSG_SM_SENDSUCC);	//SM send successfully
				return;
			}
			else if ((INT24U)pMsg == MSG_WICRESP_ERROR){
				OSQPost(Origin, (OS_EVENT *)MSG_SM_SENDFAIL);
				return;
			}
			else{
				if((INT24U)pMsg < PTR_MAX){
					Func_Clear_Msg(pMsg);
				}
				goto wait2;
			}
			
			return;
		}
	}
	OSQPost(Origin, (OS_EVENT *)MSG_SM_SENDFAIL);
	return;
}

void WIC_ChgToCmdMod(void){
	OSTimeDly(150);	// send nothing for 1.5s
	
	chrWICBuffer[0] = '+';
	chrWICBuffer[1] = '+';
	chrWICBuffer[2] = '+';
	chrWICBuffer[3] = 0x00;
	WIC_Send_Cmd(chrWICBuffer);
	
	OSTimeDly(150);	// send nothing for 1.5s
}

void WIC_Call3Party(INT8U rom * pn, INT8U len){
	INT8U i,j;
	
	for(i = 0; i<50 ; i++){
		chrWICBuffer[i] = WICCmd_WFSH[i];
		if(chrWICBuffer[i] == 0x00) break;
	}
	i--;
	i--;
	chrWICBuffer[i++] = '=';
	for(j=0;j<len;j++){
		chrWICBuffer[i++] = *pn++;
	}
	chrWICBuffer[i++]='\r';
	chrWICBuffer[i++]='\n';
	chrWICBuffer[i]=0;
	WIC_DoCmd(chrWICBuffer);
}


//INT8U rom WICCmd_DIATON_OPEN[]={"AT+WTONE=1,1,450,2,0\r\n"};
	
void WIC_PlayTone(INT8U rom * pd){
	INT8U i;
	for(i = 0; i<50 ; i++){
		chrWICBuffer[i] = WICCmd_DIATON_OPEN[i];
		if(chrWICBuffer[i] == 0x00) break;
	}
	chrWICBuffer[13] = *pd++;
	chrWICBuffer[14] = *pd++;
	chrWICBuffer[15] = *pd++;
	WIC_DoCmd(chrWICBuffer);
}

⌨️ 快捷键说明

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