📄 funcs.c.bak
字号:
if(MS_TIMER-g_ArpTimer>ARP_TIMER)
{
StartArp( );
CalPval( );
IpHead( );
g_ArpTimer=MS_TIMER;
}
if(MS_TIMER-g_PktosTimer>PKTLOS_TIMER)
{
DispE1Status();
ucTmp[0]=RdPortE(PACK_LOS);
ucTmp[1]=ucTmp[0];
ucTmp[0]|=(ucTmp[1]>>4);
WrPortE(PKT_LOS,NULL,(~ucTmp[0]));
/*if(ucTmp&0x10)
{
WrPortE(PKT_LOS,NULL,0);
}
else if(ucTmp&0x0F)
{
WrPortE(PKT_LOS,NULL,(~ucTmp));
}
else
{
WrPortE(PKT_LOS,NULL,0xFF);
}*/
////////////////////////////////////////////////////////////
/*if(ucTmp&0x10)
{
WrPortE(RMT_UP,NULL,0xFE);
//ClrPktLos( );
}
else if(ucTmp&0x0F)
{
WrPortE(RMT_UP,NULL,0xFE);
//ClrPktLos( );
}
else
{
WrPortE(RMT_UP,NULL,0xFF);
}*/
/////////////////////////////////////////////////////////////
ClrPktLos( );
g_PktosTimer=MS_TIMER;
}
if(SEC_TIMER-g_DispTimer>DISP_TIMER)
{
//EthnetDisp( );
SetFpgaE1OrT1();
RmtUpLed( );
EnSend( );
ReArp();
g_DispTimer=SEC_TIMER;
}
Test.LenCode=g_AddrInfo[UserIndx].TirdE1Para.EnLev;
}
/*** BeginHeader ClrPktLos */
void ClrPktLos(void);
/*** EndHeader */
void ClrPktLos(void)
{
int i;
//RdPortE(FIRST_CLR_ETH_PACK);
RdPortE(FIRST_CLR_E1_PACK);
for(i=0;i<500;++i);
RdPortE(SECOND_CLR_E1_PACK);
//RdPortE(SECOND_CLR_ETH_PACK);
}
/*** BeginHeader SetFpgaE1OrT1 */
void SetFpgaE1OrT1(void);
/*** EndHeader */
void SetFpgaE1OrT1(void)
{
unsigned char ucTmp;
ucTmp=0x00;
if(g_AddrInfo[UserIndx].TirdE1Para.E1orT1==0x01)
{
ucTmp=0xFF;
}
WrPortE(E1_Or_T1,NULL,ucTmp);
}
/*** BeginHeader DispE1Status */
void DispE1Status(void);
/*** EndHeader */
void DispE1Status(void)
{
int i;
Status.Los=RdPortE(CHAN_ALARM);
Status.Llb=RdPortE(LB_REG);
for(i=0;i<MAX_CHANNEL;++i)
{
switch(Status.Llb&0xC0)
{
case 0x80:
if((i==1) || (i==3))
{
memcpy(E1State[i].Llb,"b.gif\0",7);
memcpy(E1State[i].Rlb,"bn.gif\0",7);
}
else if((i==0) || (i==2))
{
memcpy(E1State[i].Llb,"r.gif\0",7);
memcpy(E1State[i].Rlb,"rn.gif\0",7);
}
break;
case 0x40:
if((i==1) || (i==3))
{
memcpy(E1State[i].Rlb,"b.gif\0",7);
memcpy(E1State[i].Llb,"bn.gif\0",7);
}
else if((i==0) || (i==2))
{
memcpy(E1State[i].Llb,"rn.gif\0",7);
memcpy(E1State[i].Rlb,"r.gif\0",7);
}
break;
default:
if((i==1) || (i==3))
{
memcpy(E1State[i].Llb,"bn.gif\0",7);
memcpy(E1State[i].Rlb,"bn.gif\0",7);
}
else if((i==0) || (i==2))
{
memcpy(E1State[i].Llb,"rn.gif\0",7);
memcpy(E1State[i].Rlb,"rn.gif\0",7);
}
break;
}
Status.Llb<<=2;
if(g_AddrInfo[UserIndx].FirE1Para[i].Enable==0x01)
{
switch(Status.Los&0xC0)
{
case 0xC0://AIS
if((i==1) || (i==3))
{
memcpy(E1State[i].Los,"bn.gif\0",7);
memcpy(E1State[i].Ais,"b.gif\0",7);
}
else if((i==0) || (i==2))
{
memcpy(E1State[i].Los,"rn.gif\0",7);
memcpy(E1State[i].Ais,"r.gif\0",7);
}
break;
case 0x00://Los
if((i==1) || (i==3))
{
memcpy(E1State[i].Los,"b.gif\0",7);
memcpy(E1State[i].Ais,"bn.gif\0",7);
}
else if((i==0) || (i==2))
{
memcpy(E1State[i].Los,"r.gif\0",7);
memcpy(E1State[i].Ais,"rn.gif\0",7);
}
break;
default:
if((i==1) || (i==3))
{
memcpy(E1State[i].Los,"bn.gif\0",7);
memcpy(E1State[i].Ais,"bn.gif\0",7);
}
else if((i==0) || (i==2))
{
memcpy(E1State[i].Los,"rn.gif\0",7);
memcpy(E1State[i].Ais,"rn.gif\0",7);
}
break;
}
}
else
{
if((i==1) || (i==3))
{
memcpy(E1State[i].Los,"bn.gif\0",7);
memcpy(E1State[i].Ais,"bn.gif\0",7);
}
else if((i==0) || (i==2))
{
memcpy(E1State[i].Los,"rn.gif\0",7);
memcpy(E1State[i].Ais,"rn.gif\0",7);
}
}
Status.Los<<=2;
}
}
/*** BeginHeader SetPara1 */
void SetPara1(void);
/*** EndHeader */
void SetPara1(void)
{
unsigned char ucTmp;
char i;
ucTmp=0;
for(i=0;i<MAX_CHANNEL;++i)
{
if(g_AddrInfo[UserIndx].SecdE1Para[i].ClkMod==0x01)
{
switch(i)
{
case 0:
ucTmp|=0x80;
break;
case 1:
ucTmp|=0x40;
break;
case 2:
ucTmp|=0x20;
break;
case 3:
ucTmp|=0x10;
break;
default:
break;
}
}
}
ucTmp|=(g_AddrInfo[UserIndx].TirdE1Para.EnLev&0x07);
WrPortE(CHAN_TMOD_LEN_CODE,NULL,ucTmp);
}
/*** BeginHeader ReArp */
void ReArp(void);
/*** EndHeader */
void ReArp(void)
{
int i;
for(i=0;i<MAX_CHANNEL;++i)
{
g_AddrInfo[UserIndx].FirE1Para[i].EnArp =1;
}
InitRmtUp();
ArpQReset( );
}
/*** BeginHeader RefCgi */
void RefCgi(void);
/*** EndHeader */
void RefCgi(void)
{
switch(g_CgiProcess)
{
case 0x01:
SetPara1( );
SetLenCodeCnt( );
ReArp();
g_CgiProcess=0;
break;
case 0x02:
ReArp();
g_EnSend=0;
g_CgiProcess=0;
break;
case 0x03:
break;
case 0x04:
break;
case 0x05:
break;
case 0x06:
break;
default:
Qupdata();
ConvertDisp();
break;
}
}
/*** BeginHeader ChkPlectrum */
void ChkPlectrum(void);
/*** EndHeader */
void ChkPlectrum()
{
unsigned char ucTmp;
int j;
ucTmp = BitRdPortI(PADR,DISP_REMOTE_LED); //Display remote led
if(ucTmp==0)
{
E1Led[1]=RdPortE(REMOTE_STATUS);
WrPortE(E1_ALARM,NULL,E1Led[1]);
}
else
{
E1Led[0]=RdPortE(CHAN_ALARM);
for(j=0;j<MAX_CHANNEL;++j)
{
if(g_AddrInfo[UserIndx].FirE1Para[j].Enable==0)
{
switch(j)
{
case 0:
E1Led[0]&=0x3F;
E1Led[0]|=0x40;
break;
case 1:
E1Led[0]&=0xCF;
E1Led[0]|=0x10;
break;
case 2:
E1Led[0]&=0xF3;
E1Led[0]|=0x04;
break;
case 3:
E1Led[0]&=0xFC;
E1Led[0]|=0x01;
break;
default:
break;
}
}
}
WrPortE(E1_ALARM,NULL,E1Led[0]);
}
if( MS_TIMER - g_WaitLedTimer > RUN_LED )
{
WrPortE(CPU_RUN,NULL,E1Led[2]);
E1Led[2]=~E1Led[2];
g_WaitLedTimer=MS_TIMER;
}
ucTmp = BitRdPortI(PADR,DEFAULT_IP); //Default IP
if((ucTmp==0)&&(DefaultIp==0))
{
ifconfig( IF_ETH0
, IFS_DOWN
, IFS_IPADDR , VIRT_ETH_IPADDR
, IFS_NETMASK , VIRT_ETH_IPMASK
, IFS_ROUTER_SET, VIRT_ETH_GATEWAY
, IFS_UP
, IFS_END );
DefaultIp=0x7e;
}
else if((ucTmp==1)&&(DefaultIp==0x7e))
{
SetAddr( );
DefaultIp=0;
}
}
/*** BeginHeader Calcval */
void Calcval(unsigned char Indx);
/*** EndHeader */
void Calcval(unsigned char Indx)
{
unsigned char regtmp;
int i;
//long int liStep;
regtmp = RdPortE(GAP_TAG_EN+(GAP_OFFSET*Indx));
if (regtmp == 0x01)
{
for(i=0;i<4;++i)
{
smpl_dat.mch[i] = RdPortE(GAP_TAG_START++(GAP_OFFSET*Indx)+i);
}
regtmp = RdPortE(FIRST_CLR_GAP_TAG+(GAP_OFFSET*Indx));
for(i=0;i<500;++i);
regtmp = RdPortE(SECOND_CLR_GAP_TAG+(GAP_OFFSET*Indx));
// 4097*delata_M/65536*/
t.mlong=sum.mlong<<12;
t.mlong+=sum.mlong;
var1.mf = (float)t.mlong;
shft_n=var1.mch[3];
shft_n=shft_n<<1;
shft_n|=(var1.mch[2]>>7);
shft_n-=16;
var1.mch[2]=(var1.mch[2]&0x7F)|(shft_n<<7);
var1.mch[3]=(var1.mch[3]&0x80)|(shft_n>>1);
// 32000/(32000+4097*delta_M/65536)
switch(g_AddrInfo[UserIndx].TirdE1Para.EnLev&0x07)
{
case 0x01:
varc1.mf = 8000.0;
break;
case 0x02:
varc1.mf = 16000.0;
break;
case 0x03:
varc1.mf = 24000.0;
break;
case 0x05:
varc1.mf = 40000.0;
break;
default:
varc1.mf = 32000.0;
break;
}
//varc1.mf = (8000.0)*(g_AddrInfo[UserIndx].TirdE1Para.EnLev&0x07);
var2.mf = varc1.mf/(varc1.mf+var1.mf);
shft_n=var2.mch[3];
//*32768
shft_n=shft_n<<1;
shft_n|=(var2.mch[2]>>7);
shft_n+=15;
var2.mch[2]=(var2.mch[2]&0x7F)|(shft_n<<7);
var2.mch[3]=(var2.mch[3]&0x80)|(shft_n>>1);
// convert float to integer for div
div.mlong =(long int)var2.mf;
//if(div.mlong<20800)// clk not over -150ppm
//{
// div.mlong=32768;
// }
WrPortE(FIRST_REF_DATA,NULL,div.mch[1]);
WrPortE(SECOND_REF_DATA,NULL,div.mch[0]);
}
}
/*** BeginHeader SetAddr */
xmem int SetAddr(void);
/*** EndHeader */
xmem int SetAddr(void)
{
return ifconfig( IF_ETH0
, IFS_DOWN
, IFS_IPADDR , g_AddrInfo[UserIndx].ulIpAddr
, IFS_NETMASK , g_AddrInfo[UserIndx].ulIpMask
, IFS_HWA , g_AddrInfo[UserIndx].ucMacAddr
, IFS_ROUTER_SET, g_AddrInfo[UserIndx].ulGateway
, IFS_UP
, IFS_END );
}
/****************************************************************************/
/* Restart the system as Manager Required. */
/****************************************************************************/
/*** BeginHeader RestartSystem */
void RestartSystem(void);
/*** EndHeader ***/
#asm
RestartSystem::
ld a, 0x57 // Restart the WatchDog every 1 Seconds !
ioi ld (WDTCR), a
ld a, 0x51 // Enable the WatchDog Timer !
ioi ld (WDTTR), a
ipset 3 // Disable ALL INTERRUPTS !
loop:
jr loop
#endasm
/*** BeginHeader */
#endif
/*** EndHeader */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -