📄 config.c
字号:
__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 + -