📄 funcs.c.bak
字号:
ucTmp<<=1;
}
ucTmp>>=RemoteUp.Cnt;
WrPortE(RMT_UP,NULL,ucTmp);
}
/*** BeginHeader EnSend */
xmem void EnSend(void);
/*** EndHeader */
xmem void EnSend(void)
{
int j;
unsigned char ucTmp;
ucTmp=0;
if( g_EnSend==0)
{
for(j=0;j<MAX_CHANNEL;++j)
{
if((g_AddrInfo[UserIndx].FirE1Para[j].Enable==1)&&(g_AddrInfo[UserIndx].FirE1Para[j].EnArp==0x00))
{
ucTmp|=0x01;
g_EnSend=0x7E;
}
ucTmp<<=1;
}
}
else
{
for(j=0;j<MAX_CHANNEL;++j)
{
if(g_AddrInfo[UserIndx].FirE1Para[j].Enable==1)
{
ucTmp|=0x01;
}
ucTmp<<=1;
}
}
WrPortE(CHAN_ENABLE,NULL,(ucTmp>>1));
}
/*** BeginHeader CalChkSum */
xmem void CalChkSum(unsigned char index);
/*** EndHeader */
xmem void CalChkSum(unsigned char index)
{
unsigned long sum1,sum2,sum3;
unsigned int uiTmp;
unsigned char ucTmp1,ucTmp2;
if(index>=4)
{
index=0;
}
uiTmp=0x4500;
uiTmp+=(unsigned int)(g_AddrInfo[UserIndx].TirdE1Para.Tos);
sum1=(unsigned long)uiTmp;
sum1+=(unsigned long)(g_AddrInfo[UserIndx].SecdE1Para[index].SegFlag);
uiTmp=(unsigned int)(g_AddrInfo[UserIndx].SecdE1Para[index].Ttl);
uiTmp<<=8;
uiTmp+=(unsigned int)(g_AddrInfo[UserIndx].FirE1Para[index].Proto);
sum1+=(unsigned long)uiTmp;
sum1+=g_AddrInfo[UserIndx].ulIpAddr&0x0000FFFF;
sum1+=((g_AddrInfo[UserIndx].ulIpAddr>>16)&0x0000FFFF);
sum1+=g_AddrInfo[UserIndx].FirE1Para[index].DstIp&0x0000FFFF;
sum1+=((g_AddrInfo[UserIndx].FirE1Para[index].DstIp>>16)&0x0000FFFF);
uiTmp=CalIpLen(index);
sum1+=(unsigned long)(uiTmp);
if(g_AddrInfo[UserIndx].TirdE1Para.E1orT1==0)
{
sum2=sum1+E1_FRAME_LEN;
sum3=sum1-E1_FRAME_LEN;
}
else
{
sum2=sum1+T1_FRAME_LEN;
sum3=sum1-T1_FRAME_LEN;
}
sum1 = (sum1 >> 16) + (sum1 & 0x0000FFFF);
sum1 += (sum1 >> 16);
sum2 = (sum2 >> 16) + (sum2 & 0x0000FFFF);
sum2 += (sum2 >> 16);
sum3 = (sum3 >> 16) + (sum3 & 0x0000FFFF);
sum3 += (sum3 >> 16);
uiTmp = (unsigned int)(sum1 & 0x0000FFFF);
ucTmp1=(unsigned char)(uiTmp&0x00FF);
ucTmp2=(unsigned char)((uiTmp>>8)&0x00FF);
WrPortE(A_CHAN_INI_SUM1_START+(index*CHAN_OFFSET),NULL,ucTmp2);
WrPortE(A_CHAN_INI_SUM1_START+1+(index*CHAN_OFFSET),NULL,ucTmp1);
uiTmp = (unsigned int)(sum2 & 0x0000FFFF);
ucTmp1=(unsigned char)(uiTmp&0x00FF);
ucTmp2=(unsigned char)((uiTmp>>8)&0x00FF);
WrPortE(A_CHAN_INI_SUM0_START+(index*CHAN_OFFSET),NULL,ucTmp2);
WrPortE(A_CHAN_INI_SUM0_START+1+(index*CHAN_OFFSET),NULL,ucTmp1);
uiTmp =(unsigned)(sum3 & 0x0000FFFF);
ucTmp1=(unsigned char)(uiTmp&0x00FF);
ucTmp2=(unsigned char)((uiTmp>>8)&0x00FF);
WrPortE(A_CHAN_INI_SUM2_START+(index*CHAN_OFFSET),NULL,ucTmp2);
WrPortE(A_CHAN_INI_SUM2_START+1+(index*CHAN_OFFSET),NULL,ucTmp1);
}
/*** BeginHeader IpHead */
xmem void IpHead(void);
/*** EndHeader */
xmem void IpHead(void)
{
int i,j;
unsigned long ulTmp;
unsigned int uiTmp;
unsigned char ucTmp;
for(j=0;j<MAX_CHANNEL;++j)
{
ucTmp=0;
if(g_AddrInfo[UserIndx].TirdE1Para.EnIp)
{
ucTmp|=0x01;
}
if(g_AddrInfo[UserIndx].SecdE1Para[j].EnVlan)
{
ucTmp|=0x02;
}
ucTmp|=((g_AddrInfo[UserIndx].FirE1Para[j].Port&0x03)<<2);
WrPortE(A_CHAN_MISC+(j*CHAN_OFFSET),NULL,ucTmp);
uiTmp=g_AddrInfo[UserIndx].SecdE1Para[0].SegFlag;
ucTmp=(unsigned char)((uiTmp>>8)&0x00FF);
WrPortE(A_FRAG_START+(j*CHAN_OFFSET),NULL,ucTmp);
ucTmp=(unsigned char)(uiTmp&0x00FF);
WrPortE(A_FRAG_START+1+(j*CHAN_OFFSET),NULL,ucTmp);
for(i=0;i<6;++i)
{
WrPortE(A_DST_MAC_START+i+(j*CHAN_OFFSET),NULL,g_AddrInfo[UserIndx].FirE1Para[j].DstMac[i]);
}
ucTmp=g_AddrInfo[UserIndx].TirdE1Para.Tos;
WrPortE(A_CHAN_TOS+(j*CHAN_OFFSET),NULL,ucTmp);//Tos
ucTmp=g_AddrInfo[UserIndx].SecdE1Para[j].Ttl;
WrPortE(A_CHAN_TTL+(j*CHAN_OFFSET),NULL,ucTmp);//ttl
CalChkSum(j);
ulTmp=g_AddrInfo[UserIndx].FirE1Para[j].DstIp;
for(i=0;i<4;++i)
{
ucTmp=(unsigned char)(ulTmp&0x000000FF);
WrPortE((A_CHAN_DST_IP_START+(3-i)+(j*CHAN_OFFSET)),NULL,ucTmp);
ulTmp>>=8;
}
uiTmp=g_AddrInfo[UserIndx].FirE1Para[j].DstUDPPort;
ucTmp=(unsigned char)(uiTmp&0x00FF);
WrPortE(A_CHAN_UDP_PORT_START+1+(j*CHAN_OFFSET),NULL,ucTmp);
ucTmp=(unsigned char)((uiTmp>>8)&0x00FF);
WrPortE(A_CHAN_UDP_PORT_START+(j*CHAN_OFFSET),NULL,ucTmp);
uiTmp=g_AddrInfo[UserIndx].SecdE1Para[j].VlanId;
ucTmp=(unsigned char)(uiTmp&0x00FF);
WrPortE(A_VLAN_TAG_START+1+(j*CHAN_OFFSET),NULL,ucTmp);
ucTmp=(unsigned char)((uiTmp>>8)&0x00FF);
WrPortE(A_VLAN_TAG_START+(j*CHAN_OFFSET),NULL,ucTmp);
}
WrPortE(IP_PROTOCOL,NULL, g_AddrInfo[UserIndx].FirE1Para[0].Proto);
WrPortE(FILTER,NULL,g_AddrInfo[UserIndx].TirdE1Para.Filter);
}
/*** BeginHeader Getstring */
int Getstring(unsigned long xstring_addr, int index, char *data, int max_data);
/*** EndHeader */
int Getstring(unsigned long xstring_addr, int index, char *data, int max_data)
{
unsigned long string_addr, index_addr;
// calculate address in string index
xstring_addr += index * sizeof(long);
// get address of desired string
xmem2root((void *)&string_addr, xstring_addr, sizeof(long));
// load string into data
xmem2root((void *)data, string_addr, max_data);
}
/*** BeginHeader StrtoMac */
xmem void StrtoMac(void);
/*** EndHeader */
xmem void StrtoMac(void)
{
int i;
unsigned char ucTmp[6];
for(i=0;i<6;++i)
{
ucTmp[i]=Strto2Hex(&FormData[1].value[0+3*i]);
}
memcpy(g_AddrInfo[UserIndx].ucMacAddr,ucTmp,6);
}
/*** BeginHeader Strto2Hex */
unsigned char Strto2Hex(unsigned char* pData);
/*** EndHeader */
unsigned char Strto2Hex(unsigned char* pData)
{
int i;
//unsigned char Data[2];
unsigned char Conval[2];
for(i=0;i<2;++i)
{
if(pData[i]=='0')
{
Conval[i]=0x00;
}
else if(pData[i]=='1')
{
Conval[i]=0x01;
}
else if(pData[i]=='2')
{
Conval[i]=0x02;
}
else if(pData[i]=='3')
{
Conval[i]=0x03;
}
else if(pData[i]=='4')
{
Conval[i]=0x04;
}
else if(pData[i]=='5')
{
Conval[i]=0x05;
}
else if(pData[i]=='6')
{
Conval[i]=0x06;
}
else if(pData[i]=='7')
{
Conval[i]=0x07;
}
else if(pData[i]=='8')
{
Conval[i]=0x08;
}
else if(pData[i]=='9')
{
Conval[i]=0x09;
}
else if((pData[i]=='a')||(pData[i]=='A'))
{
Conval[i]=0x0a;
}
else if((pData[i]=='b')||(pData[i]=='B'))
{
Conval[i]=0x0b;
}
else if((pData[i]=='c')||(pData[i]=='C'))
{
Conval[i]=0x0c;
}
else if((pData[i]=='d')||(pData[i]=='D'))
{
Conval[i]=0x0d;
}
else if((pData[i]=='e')||(pData[i]=='E'))
{
Conval[i]=0x0e;
}
else if((pData[i]=='f')||(pData[i]=='F'))
{
Conval[i]=0x0f;
}
else
{
return 0x00;
}
}
Conval[0]<<=4;
Conval[0]|=Conval[1];
return Conval[0];
}
/*** BeginHeader StrtoTos */
unsigned char StrtoTos(int index);
/*** EndHeader */
unsigned char StrtoTos(int index)
{
int i;
unsigned char Data[2];
unsigned char Retval;
memcpy(Data,FormData[index].value,2);
Retval=Strto2Hex(Data);
return Retval;
}
/*** BeginHeader StrtoHex */
unsigned int StrtoHex(int index);
/*** EndHeader */
unsigned int StrtoHex(int index)
{
int i;
unsigned char Conval[4];
unsigned char Data[4];
unsigned int RetVal;
memcpy(Data,FormData[index].value,4);
for(i=0;i<4;++i)
{
if(Data[i]=='0')
{
Conval[i]=0x00;
}
else if(Data[i]=='1')
{
Conval[i]=0x01;
}
else if(Data[i]=='2')
{
Conval[i]=0x02;
}
else if(Data[i]=='3')
{
Conval[i]=0x03;
}
else if(Data[i]=='4')
{
Conval[i]=0x04;
}
else if(Data[i]=='5')
{
Conval[i]=0x05;
}
else if(Data[i]=='6')
{
Conval[i]=0x06;
}
else if(Data[i]=='7')
{
Conval[i]=0x07;
}
else if(Data[i]=='8')
{
Conval[i]=0x08;
}
else if(Data[i]=='9')
{
Conval[i]=0x09;
}
else if((Data[i]=='a')||(Data[i]=='A'))
{
Conval[i]=0x0a;
}
else if((Data[i]=='b')||(Data[i]=='B'))
{
Conval[i]=0x0b;
}
else if((Data[i]=='c')||(Data[i]=='C'))
{
Conval[i]=0x0c;
}
else if((Data[i]=='d')||(Data[i]=='D'))
{
Conval[i]=0x0d;
}
else if((Data[i]=='e')||(Data[i]=='E'))
{
Conval[i]=0x0e;
}
else if((Data[i]=='f')||(Data[i]=='F'))
{
Conval[i]=0x0f;
}
else
{
return 0xC000;
}
}
Conval[0]<<=4;
Conval[2]<<=4;
Conval[0]|=Conval[1];
Conval[2]|=Conval[3];
RetVal=Conval[0];
RetVal<<=8;
RetVal+=Conval[2];
return RetVal;
}
/*** BeginHeader Alarm */
void Alarm(void);
/*** EndHeader */
void Alarm(void)
{
int i;
unsigned char ucTmp[3];
memset(ucTmp,0,3);
ucTmp[2]=RdPortE(CHAN_ALARM);
for(i=0;i<MAX_CHANNEL;++i)
{
if(g_AddrInfo[UserIndx].FirE1Para[i].Enable==1)
{
switch(ucTmp[2]&0xC0)
{
case 0x00://Urgent Alarm
ucTmp[0]=1;
break;
case 0xC0://Delay Alarm
ucTmp[1]=1;
break;
default:
break;
}
}
ucTmp[2]<<=2;
}
ucTmp[2]=RdPortE(PACK_LOS);
if(ucTmp[2]&0x10)
{
ucTmp[0]=1;
}
BitWrPortI( PBDR, &PBDRShadow, ucTmp[0], 5 );
BitWrPortI( PBDR, &PBDRShadow, ucTmp[1], 6 );
}
/*** BeginHeader Updata */
void Updata(void);
/*** EndHeader */
void Updata(void)
{
unsigned char ucTmp[2];
int i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -