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

📄 funcs.c.bak

📁 这是一个在在Dynamic C环境下实现的设备web服务器的建立
💻 BAK
📖 第 1 页 / 共 3 页
字号:
    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 + -