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

📄 config.c

📁 基于h323协议的软phone
💻 C
📖 第 1 页 / 共 4 页
字号:
	__localgkch = *ch;

	printf("enter ChangeGK!\n");
	RvH323TimerStart(rv_timer, ChangeGKCfg, (void*)&__localgkch, 5);*/
}
#endif
/*SEM_ID agentSem;
void stopAgent()
{
	ipagentStop();
	printf("ipagent stop done\n");
	semGive(agentSem);
}
*/
#ifdef INCLUDE_PPPOE_APP
extern int pppoeStatus;
extern int rasTimer;
#endif


#if 0/**auto chang phoneconfig,to reinitiate the statck **/

void Reconfigure(void)
{

	int i,intRand;
	unsigned int localip;
	unsigned char iptype;
	unsigned char ifgk;
	unsigned int gkip;
	unsigned char ifproxy;
	char str_ip[16];
	char iptemp[16] = "192.168.7.201";
	char gkiplocal[16] = "192.168.123.25";
	char gkipnet[16] = "202.102.29.20";
	char natip[16] = "192.168.111.1";
	char mask[16] = "255.255.255.0";
	ifproxy = phoneconfig.conf_h323.iffirewall;
	localip = phoneconfig.conf_network.ipaddr;
	iptype = phoneconfig.conf_network.ipType;
	ifgk = phoneconfig.conf_service.ifservice;
	gkip = phoneconfig.conf_service.serverip;
	
	srand((unsigned int)time(NULL));
	for(i = 0;i < 2000; )
	{
		if(isReinitStack)
		{
			taskDelay(100);
			continue;
		}
		i++;
		printf("####count = %d####\n",i);
		srand((unsigned int)time(NULL));
		intRand = rand();
		/*semTake(ipreinitStackSem,WAIT_FOREVER);*/
		if((intRand % 3) == 0)
		{
			phoneconfig.conf_network.ipaddr = getIpFromStr(iptemp);
			phoneconfig.conf_network.ipType = STATICIP;
		}
		if((intRand % 3) == 1)
			phoneconfig.conf_network.ipType = DHCPIP;
		/*semGive(ipreinitStackSem);*/
		if((intRand % 2) == 0)
			phoneconfig.conf_service.ifservice = 0;
		if((intRand % 2) == 1)
		{	
			phoneconfig.conf_service.ifservice = 1;
			if((intRand % 4) == 1)
			{
				phoneconfig.conf_service.serverip = getIpFromStr(gkiplocal);
				phoneconfig.conf_h323.iffirewall = 0;
			}
			else
			{
				phoneconfig.conf_service.serverip = getIpFromStr(gkipnet);
				phoneconfig.conf_h323.iffirewall = 1;
			}
		}
		intRand = rand();
		/*if((intRand % 4) == 1)
		{
			phoneconfig.conf_network.ifnat = 1;
			phoneconfig.conf_network.natlocalip = getIpFromStr(natip);
			phoneconfig.conf_network.natlocalmask = getIpFromStr(mask);
		}
		else
		{
			phoneconfig.conf_network.ifnat = 0;
		}*/
		/*if ( sysNvRamSet(&phoneconfig, sizeof(phoneconfig), PHONECONFIGADDR) != OK )
				printf("#### cant save!!!####\n");*/
		printf("Setting to :\n");
		printf("ipType = %u\n",phoneconfig.conf_network.ipType);
		
		memset(str_ip, 0, 16);
		ConvertInt2CharNum(str_ip, phoneconfig.conf_network.ipaddr, 2);
		printf("ipaddr = %s\n",str_ip);
		
		printf("isGK = %u\n",phoneconfig.conf_service.ifservice);
		
		memset(str_ip, 0, 16);
		ConvertInt2CharNum(str_ip, phoneconfig.conf_service.serverip, 2);
		printf("GKIP = %s\n",str_ip);
		
		printf("iffire = %u\n",phoneconfig.conf_h323.iffirewall);
		isReinitStack = 1;
		printf("####end#####\n");
		taskDelay(intRand%800+1000);
	}
}
void taskReconfigure(void)
{
		int reconfigId = taskSpawn("tReconfig", 150, 0, 8192, (FUNCPTR)Reconfigure,
                        0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
}
#endif
extern int rebootDSP;
extern void cleanTimer();
void RvTask()
{
	RvTimer* dumbHandleTimer;

#ifdef INCLUDE_PPPOE_APP
	int pppoestatus;
#endif
	unsigned char ifproxy;
	unsigned char RegisterId[20];
	unsigned char e164num[MAX_PHONE_NUMBER_LEN+1];
	unsigned char gkpassword[16];
	struct s_cfgaudio codec;
#if 1
	unsigned int localip;
	unsigned char iptype;
	unsigned char ifgk;
	unsigned int gkip;
#endif

	seliInit();
	localTimeInit();

	dumbHandleTimer = RvH323TimerStartPeriodic(rv_timer, dumbHandle, NULL, 50);
/*	strcpy(RegisterId,phoneconfig.conf_h323.registerid);*/
	strncpy(RegisterId,phoneconfig.conf_h323.registerid,19);
	RegisterId[19]='\0';
/*	strcpy(e164num,phoneconfig.conf_h323.e164id);*/
	strncpy(e164num,phoneconfig.conf_h323.e164id,MAX_PHONE_NUMBER_LEN);
	e164num[MAX_PHONE_NUMBER_LEN]='\0';
/*	strcpy(gkpassword,phoneconfig.conf_h323.registerpin);*/
	strncpy(gkpassword,phoneconfig.conf_h323.registerpin,15);
	gkpassword[15]='\0';
	ifproxy = phoneconfig.conf_h323.iffirewall;
	memcpy(&codec, &phoneconfig.conf_audio, sizeof(struct s_cfgaudio));
#if 1
	localip = phoneconfig.conf_network.ipaddr;
	iptype = phoneconfig.conf_network.ipType;
	ifgk = phoneconfig.conf_service.ifservice;
	gkip = phoneconfig.conf_service.serverip;

#endif

#ifdef INCLUDE_PPPOE_APP
	pppoestatus = pppoeStatus;
#endif

#if 0
	agentSem = semBCreate( SEM_Q_PRIORITY, SEM_EMPTY );
#endif
	while(1)
	{
		/*if ((
#ifdef INCLUDE_PPPOE_APP
			pppoestatus != pppoeStatus
			|| (!pppoestatus && CurState==PPPOEConnecting) || 
#endif
			strcmp(RegisterId, phoneconfig.conf_h323.registerid) !=0 
			|| strcmp(e164num, phoneconfig.conf_h323.e164id) !=0
			|| strcmp(gkpassword,phoneconfig.conf_h323.registerpin) != 0
			|| memcmp(&phoneconfig.conf_audio, &codec, sizeof(struct s_cfgaudio)) != 0)
#if 0
			|| localip != phoneconfig.conf_network.ipaddr
			|| (iptype != phoneconfig.conf_network.ipType 
				&& phoneconfig.conf_network.ipType != PPPOEIP)
			|| ifgk != phoneconfig.conf_service.ifservice
			|| gkip != phoneconfig.conf_service.serverip
			|| ifproxy != phoneconfig.conf_h323.iffirewall
#endif
			&& isOnHookState())*/
			if(pppoestatus != pppoeStatus
			|| (!pppoestatus && CurState==PPPOEConnecting) 
			|| isReinitStack&&isOnHookState())
		     {	
		/*	strcpy(localH323Id,phoneconfig.conf_h323.registerid);*/
			strncpy(localH323Id,phoneconfig.conf_h323.registerid,MAX_H323ID_LENGTH);
			localH323Id[MAX_H323ID_LENGTH]='\0';
		/*	strcpy(localE164Num,phoneconfig.conf_h323.e164id);*/
			strncpy(localE164Num,phoneconfig.conf_h323.e164id,MAX_E164NUM_LENGTH);
			localE164Num[MAX_E164NUM_LENGTH]='\0';
			printf("Stack configuration begin...\n");
#if 1
			memset(net_config_msg,0,sizeof(net_config_msg));
			gk_error_msg_index = -1;
			cleanTimer();
			SetH323Prop();
#endif
#ifdef INCLUDE_NAT_APP
				/*if (pppoeStatus)
		  			natOFF(IF_TYPE_PPPOE);
				else
					natOFF(IF_TYPE_NAT);*/
#endif
#ifdef INCLUDE_PPPOE_APP
			if (pppoestatus != pppoeStatus)
			{
				if (pppoeStatus)
				{
					PPPOELINK_PARA pppoeInfo;
					WrapperMsg msg;
					ClearWatchTimer();
					semTake(g_sem_pppoe_startedflag, WAIT_FOREVER);
					pppoeGetLinkInfo(&pppoeInfo);
					if(pppoeInfo.result == 0)
					{
						msg.msgId=pppoe_connect_ok_event;
						wpSendMsgToApp(&msg);
					}
					phoneconfig.conf_network.ipaddr = reverseIPAddr(pppoeInfo.ip_local);
					phoneconfig.conf_network.subnetmask = pppoeInfo.ip_mask;
					phoneconfig.conf_network.gateway = reverseIPAddr(pppoeInfo.ip_remote);
					printf("PPPoE online\n");
#ifdef INCLUDE_NAT_APP
					if (phoneconfig.conf_network.ifnat)
					{
						natOFF(IF_TYPE_PPPOE);
						natON(IF_TYPE_PPPOE);
					}
#endif
				}
				else
				{
					/*if (ifproxy)
					{
						taskSpawn("tStopAgent", 60, 0, 1024*10, (FUNCPTR)stopAgent, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
						semTake(agentSem, WAIT_FOREVER);
					}*/	
					/*DeleteTimer(&rasTimer);*/
#if 1
					if (iptype == phoneconfig.conf_network.ipType)
					{

						localip = phoneconfig.conf_network.ipaddr;
						iptype = phoneconfig.conf_network.ipType;
						ifgk = phoneconfig.conf_service.ifservice;
						gkip = phoneconfig.conf_service.serverip;
						ifproxy = phoneconfig.conf_h323.iffirewall;

						
#endif
						pppoestatus = pppoeStatus;
						printf("PPPoE offline\n");
#ifdef INCLUDE_NAT_APP
						if (phoneconfig.conf_network.ifnat)
							natOFF(IF_TYPE_PPPOE);
#endif
						continue;
#if 1
					}
#endif
				}
			}
			if(CurState == PPPOEConnecting)
			{					
				WrapperMsg msg;
				PPPOELINK_PARA pppoeInfo;
				ClearWatchTimer();
				
				semTake(g_sem_pppoe_startedflag, WAIT_FOREVER);
				
				pppoeGetLinkInfo(&pppoeInfo);
				if(pppoeInfo.result != 0)
				{
					printf("Now connect to pppoe failed!");
					msg.msgId=pppoe_connect_fail_event;
					pppoestatus = pppoeStatus = 0;
					wpSendMsgToApp(&msg);
					continue;
				}
				else
				{
					msg.msgId=pppoe_connect_ok_event;
					phoneconfig.conf_network.ipaddr = reverseIPAddr(pppoeInfo.ip_local);
					phoneconfig.conf_network.subnetmask = pppoeInfo.ip_mask;
					phoneconfig.conf_network.gateway = reverseIPAddr(pppoeInfo.ip_remote);
					printf("PPPoE online\n");
					wpSendMsgToApp(&msg);
#ifdef INCLUDE_NAT_APP
					if (phoneconfig.conf_network.ifnat)
					{
						natOFF(IF_TYPE_PPPOE);
						natON(IF_TYPE_PPPOE);
					}
#endif
				}				
			}
#endif /* INCLUDE_PPPOE_APP */
			if (ifproxy)
			{
				ipagentStop();
				printf("ipagentStop done\n");
				taskDelay(200);
				/*
				taskSpawn("tStopAgent", 60, 0, 1024*10, (FUNCPTR)stopAgent, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
				taskDelay(100);
				semTake(agentSem, WAIT_FOREVER);*/
			}
			RvH323TimerClear(rv_timer, &dumbHandleTimer);
			localTimeEnd();
			ReInitrvwp();/*make sure there is no msg send to protocol stack*/
			rtcpEnd();
			rtpEnd();
			cmEnd(hApp);
			printf("Stack ended.\n");
			taskDelay(200);
			
			
#ifdef INCLUDE_PPPOE_APP
		/*	if(pppoestatus != pppoeStatus || ((!pppoestatus)&&(CurState==PPPOEConnecting)))*/
				if (ConfigureNetwork() == ERROR)
				{
					/*WriteLcd("Setup succeeded.", 0, 0);
					WriteLcd("Rebooting...", 1, 0);
					reboot_system();*/
					/*return;*/
					printf("ConfigureNetwork() error!\n");
				}
				
#endif
#ifdef INCLUDE_NAT_APP
				/*if(phoneconfig.conf_network.ifnat)
				{
					if (pppoeStatus)
		  				natON(IF_TYPE_PPPOE);
					else if(phoneconfig.conf_network.ipType != PPPOEIP)
						natON(IF_TYPE_NAT);
				}*/
#endif	
			taskDelay(150);
			if (reinitStack() < 0)
			{
				ClearLcd();
				WriteLcd("Setup succeeded.", 0, 0);
				WriteLcd("Rebooting...", 1, 0);
				return;
			}
			localTimeInit();
			dumbHandleTimer = RvH323TimerStartPeriodic(rv_timer, dumbHandle, NULL, 50);
			gatekeeperStatus=FALSE;
			if (gkEnabled)
				wpSendRegister(NULL);
#if 1
			localip = phoneconfig.conf_network.ipaddr;
			iptype = phoneconfig.conf_network.ipType;
			ifgk = phoneconfig.conf_service.ifservice;
			gkip = phoneconfig.conf_service.serverip;
			ifproxy = phoneconfig.conf_h323.iffirewall;
#endif
	/*		strcpy(RegisterId,phoneconfig.conf_h323.registerid);*/
			strncpy(RegisterId,phoneconfig.conf_h323.registerid,19);
			RegisterId[19]='\0';
		/*	strcpy(e164num,phoneconfig.conf_h323.e164id);*/
			strncpy(e164num,phoneconfig.conf_h323.e164id,MAX_PHONE_NUMBER_LEN);
			e164num[MAX_PHONE_NUMBER_LEN]='\0';
		/*	strcpy(gkpassword,phoneconfig.conf_h323.registerpin);*/
			strncpy(gkpassword,phoneconfig.conf_h323.registerpin,15);
			gkpassword[15]='\0';
			memcpy(&codec, &phoneconfig.conf_audio, sizeof(struct s_cfgaudio));
#ifdef INCLUDE_PPPOE_APP
			pppoestatus = pppoeStatus;
#endif
			isReinitStack = FALSE;
			isRestartAgent = FALSE;
			printf("Stack configuration end.\n");
		}
		if(isRestartAgent)
		{
			printf("do restart agent\n");
			restartProxy();
			isRestartAgent = 0;
		}
		if(rebootDSP&&isOnHookState())
		{

			taskDelay(100);
			RebootDSP();
			rebootDSP = 0;
		}
		seliSelect();
		taskDelay(0);		
	}	
}

extern RVAPI int RVCALLCONV msGetDebugLevel(void);
extern RVAPI RvStatus RVCALLCONV msGetLogFilename(IN RvUint32 nameLength, OUT char* name);
extern RVAPI void RVCALLCONV msOpen(void);
#if 0

⌨️ 快捷键说明

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