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

📄 funcs.c

📁 这是一个在在Dynamic C环境下实现的设备web服务器的建立
💻 C
📖 第 1 页 / 共 3 页
字号:
    BitWrPortI( PBDR, &PBDRShadow, ucTmp[1], 6 );

}
/*** BeginHeader Updata */
void Updata(void);
/*** EndHeader */
void Updata(void)
{

   unsigned char ucTmp[2];
   int           i;

    if(MS_TIMER-g_ArpTimer>ARP_TIMER)
	{
		 StartArp( );

		 CalPval( );

		 IpHead( );

		 g_ArpTimer=MS_TIMER;
	}


	if(MS_TIMER-g_PktosTimer>PKTLOS_TIMER)
	{
		SetHardwareVer( );
		
		DispE1Status();

		ucTmp[0]=RdPortE(PACK_LOS);

        ucTmp[1]=ucTmp[0];

        ucTmp[0]|=(ucTmp[1]>>4);

        WrPortE(PKT_LOS,NULL,(~ucTmp[0]));

        ClrPktLos( );

		g_PktosTimer=MS_TIMER;
	}



    if(SEC_TIMER-g_DispTimer>DISP_TIMER)
    {
	     	//EthnetDisp( );
	     	
	    SetFpgaE1OrT1();
	    
	    RmtUpLed( );

	    EnSend( 1 );

	    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;
		default:
		 Qupdata();
		 ConvertDisp();
		 
		 if(!(SEC_TIMER%3))
		 {
		 	if( g_EnSend==0)
		 	{
		 		RmtUpLed( );
		 		EnSend( 0 );
		 	}
		 }
		break;
	}
}



/*** BeginHeader ChkPlectrum */
void ChkPlectrum(void);
/*** EndHeader */
void ChkPlectrum()
{
	unsigned char ucTmp;
	unsigned char ucTestLed;
	int j;

    ucTmp  = BitRdPortI(PADR,DISP_REMOTE_LED);    //Display remote led


    if(0==ucTmp)
    {
	    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((0==ucTmp)&&(0==DefaultIp))
    {

    	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((1==ucTmp)&&(0x7e==DefaultIp))
    {
           SetAddr( );
    	     DefaultIp=0;
    }
    
  
    ucTestLed = BitRdPortI(PADR,TEST1_LED); 
    
    ucTmp = BitRdPortI(PADR,TEST2_LED); 
    
    if(1==ucTmp)
    {
    	ucTestLed |=0x02;
    }
        
    WrPortE(TEST_P,NULL,ucTestLed);               
}
/*** BeginHeader Calcval */
root void Calcval(unsigned char Indx);
/*** EndHeader */
root void Calcval(unsigned char Indx)
{
		unsigned char regtmp;
        int i;
        //long int liStep;

        regtmp  = RdPortE(GAP_TAG_EN+(GAP_OFFSET*Indx));

		if (regtmp == 0x01)
		{
			 //printf("Channel=%d\r\n",Indx);
			for(i=0;i<4;++i)
			{
				sum.mch[i] = RdPortE(GAP_TAG_START+(GAP_OFFSET*Indx)+i);
				//printf("%d\r\n",sum.mch[i]);
			}
            //printf("===============================\r\n";
			RdPortE(FIRST_CLR_GAP_TAG+(GAP_OFFSET*Indx));
			 for(i=0;i<500;++i);
			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+(GAP_OFFSET*Indx)),NULL,div.mch[1]);
            WrPortE((SECOND_REF_DATA+(GAP_OFFSET*Indx)),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 + -