📄 ir.c
字号:
//__wcommand = R_W_METER;
//METER0.PULSE = NIC_RECV_BUFFER[PC_COMMAND+1];
//METER0.WIDTH = NIC_RECV_BUFFER[PC_COMMAND+2];
//METER1.PULSE = NIC_RECV_BUFFER[PC_COMMAND+3];
//METER1.WIDTH = NIC_RECV_BUFFER[PC_COMMAND+4];
//METER2.PULSE = NIC_RECV_BUFFER[PC_COMMAND+5];
//METER2.WIDTH = NIC_RECV_BUFFER[PC_COMMAND+6];
//METER3.PULSE = NIC_RECV_BUFFER[PC_COMMAND+7];
//METER3.WIDTH = NIC_RECV_BUFFER[PC_COMMAND+8];
//METER4.PULSE = NIC_RECV_BUFFER[PC_COMMAND+9];
//METER4.WIDTH = NIC_RECV_BUFFER[PC_COMMAND+10];
//METER5.PULSE = NIC_RECV_BUFFER[PC_COMMAND+11];
//METER5.WIDTH = NIC_RECV_BUFFER[PC_COMMAND+12];
//__bwrite_meter_para = TRUE;
UDP(R_W_METER);
break;
case R_R_METER:
//__wcommand = R_R_METER;
UDP(R_R_METER);
break;
case R_ARMED:
//__wcommand = R_ARMED;
//__warmed = 0x80;
//__ddelay2 = __ddelay;
//ARMED_ON();
//ALARM_BUFFER[3] |= 0x80;
UDP(R_ARMED);
break;
case R_TIME:
//__wcommand = R_TIME;
//TIME[0] = NIC_RECV_BUFFER[PC_COMMAND+25];
//TIME[1] = NIC_RECV_BUFFER[PC_COMMAND+26];
//TIME[2] = NIC_RECV_BUFFER[PC_COMMAND+27];
//TIME[3] = NIC_RECV_BUFFER[PC_COMMAND+28];
//TIME[4] = NIC_RECV_BUFFER[PC_COMMAND+29];
//TIME[5] = NIC_RECV_BUFFER[PC_COMMAND+30];
//TIME[6] = NIC_RECV_BUFFER[PC_COMMAND+31];
UDP(R_TIME);
break;
case R_CODE:
//__wcommand = R_CODE;
//__wpassword[0] = PASSWORD[0];
//__wpassword[1] = PASSWORD[1];
//__wpassword[2] = PASSWORD[2];
//__wpassword[3] = PASSWORD[3];
//__wpassword[4] = PASSWORD[4];
//__wpassword[5] = PASSWORD[5];
//__bwrite_code = TRUE;
UDP(R_CODE);
break;
case R_MODIFYMAC:
//__wcommand = R_MODIFYMAC;
MACADDRESS[0] = NIC_RECV_BUFFER[PC_COMMAND+1];
MACADDRESS[1] = NIC_RECV_BUFFER[PC_COMMAND+2];
MACADDRESS[2] = NIC_RECV_BUFFER[PC_COMMAND+3];
MACADDRESS[3] = NIC_RECV_BUFFER[PC_COMMAND+4];
MACADDRESS[4] = NIC_RECV_BUFFER[PC_COMMAND+5];
MACADDRESS[5] = NIC_RECV_BUFFER[PC_COMMAND+6];
//__bwrite_mac = TRUE;
CHECKSUM_UDP();
UDP(R_MODIFYMAC);
break;
case R_MODIFYIP:
//__wcommand = R_MODIFYIP;
IPADDRESS[0] = NIC_RECV_BUFFER[PC_COMMAND+1];
IPADDRESS[1] = NIC_RECV_BUFFER[PC_COMMAND+2];
IPADDRESS[2] = NIC_RECV_BUFFER[PC_COMMAND+3];
IPADDRESS[3] = NIC_RECV_BUFFER[PC_COMMAND+4];
//__bwrite_ip = TRUE;
CHECKSUM_UDP();
UDP(R_MODIFYIP);
break;
case R_MODIFYIPMAC:
//__wcommand = R_MODIFYIPMAC;
MACADDRESS[0] = NIC_RECV_BUFFER[PC_COMMAND+1];
MACADDRESS[1] = NIC_RECV_BUFFER[PC_COMMAND+2];
MACADDRESS[2] = NIC_RECV_BUFFER[PC_COMMAND+3];
MACADDRESS[3] = NIC_RECV_BUFFER[PC_COMMAND+4];
MACADDRESS[4] = NIC_RECV_BUFFER[PC_COMMAND+5];
MACADDRESS[5] = NIC_RECV_BUFFER[PC_COMMAND+6];
IPADDRESS[0] = NIC_RECV_BUFFER[PC_COMMAND+7];
IPADDRESS[1] = NIC_RECV_BUFFER[PC_COMMAND+8];
IPADDRESS[2] = NIC_RECV_BUFFER[PC_COMMAND+9];
IPADDRESS[3] = NIC_RECV_BUFFER[PC_COMMAND+10];
//__bwrite_mac = TRUE;
//__bwrite_ip = TRUE;
CHECKSUM_UDP();
UDP(R_MODIFYIPMAC);
break;
case R_MESSAGE:
/*
__dmessage = 1;
MESSAGE_ON();
//__wcommand = R_MESSAGE;
switch (NIC_RECV_BUFFER[PC_COMMAND+1])
{
case MESSAGE_SMS:
__wmessage = HOWMANY_SMS();
if (__wmessage == 20)
{
DEL_SMS(0);
__wmessage = 19;
}
SMS[__wmessage][1] = NIC_RECV_BUFFER[PC_COMMAND+2];
SMS[__wmessage][2] = NIC_RECV_BUFFER[PC_COMMAND+3];
SMS[__wmessage][3] = NIC_RECV_BUFFER[PC_COMMAND+4];
SMS[__wmessage][4] = NIC_RECV_BUFFER[PC_COMMAND+5];
SMS[__wmessage][0] = UNREAD_MESSAGE;
for (i=0;i<NIC_RECV_BUFFER[PC_COMMAND+6];i++)
{
SMS[__wmessage][i+MESSAGE_STATUS+MESSAGE_NO] = NIC_RECV_BUFFER[PC_COMMAND+6+1+i];
}
for (i=(NIC_RECV_BUFFER[PC_COMMAND+6]+MESSAGE_STATUS+MESSAGE_NO);i<(MESSAGE_STATUS+MESSAGE_NO+MESSAGE_CHAR);i+=2)
{
SMS[__wmessage][i] = 0x00;
SMS[__wmessage][i+1] = 0x20;
}
break;
case MESSAGE_WEATHER:
WEATHER[1] = NIC_RECV_BUFFER[PC_COMMAND+2];
WEATHER[2] = NIC_RECV_BUFFER[PC_COMMAND+3];
WEATHER[3] = NIC_RECV_BUFFER[PC_COMMAND+4];
WEATHER[4] = NIC_RECV_BUFFER[PC_COMMAND+5];
WEATHER[0] = UNREAD_MESSAGE;
for (i=0;i<NIC_RECV_BUFFER[PC_COMMAND+6];i++)
{
WEATHER[i+MESSAGE_STATUS+MESSAGE_NO] = NIC_RECV_BUFFER[PC_COMMAND+6+1+i];
}
for (i=(NIC_RECV_BUFFER[PC_COMMAND+6]+MESSAGE_STATUS+MESSAGE_NO);i<(MESSAGE_STATUS+MESSAGE_NO+MESSAGE_CHAR);i+=2)
{
WEATHER[i] = 0x00;
WEATHER[i+1] = 0x20;
}
break;
case MESSAGE_STOCK:
STOCK[1] = NIC_RECV_BUFFER[PC_COMMAND+2];
STOCK[2] = NIC_RECV_BUFFER[PC_COMMAND+3];
STOCK[3] = NIC_RECV_BUFFER[PC_COMMAND+4];
STOCK[4] = NIC_RECV_BUFFER[PC_COMMAND+5];
STOCK[0] = UNREAD_MESSAGE;
for (i=0;i<NIC_RECV_BUFFER[PC_COMMAND+6];i++)
{
STOCK[i+MESSAGE_STATUS+MESSAGE_NO] = NIC_RECV_BUFFER[PC_COMMAND+6+1+i];
}
for (i=(NIC_RECV_BUFFER[PC_COMMAND+6]+MESSAGE_STATUS+MESSAGE_NO);i<(MESSAGE_STATUS+MESSAGE_NO+MESSAGE_CHAR);i+=2)
{
STOCK[i] = 0x00;
STOCK[i+1] = 0x20;
}
break;
case MESSAGE_CARD:
CARD[1] = NIC_RECV_BUFFER[PC_COMMAND+2];
CARD[2] = NIC_RECV_BUFFER[PC_COMMAND+3];
CARD[3] = NIC_RECV_BUFFER[PC_COMMAND+4];
CARD[4] = NIC_RECV_BUFFER[PC_COMMAND+5];
CARD[0] = UNREAD_MESSAGE;
for (i=0;i<NIC_RECV_BUFFER[PC_COMMAND+6];i++)
{
CARD[i+MESSAGE_STATUS+MESSAGE_NO] = NIC_RECV_BUFFER[PC_COMMAND+6+1+i];
}
for (i=(NIC_RECV_BUFFER[PC_COMMAND+6]+MESSAGE_STATUS+MESSAGE_NO);i<(MESSAGE_STATUS+MESSAGE_NO+MESSAGE_CHAR);i+=2)
{
CARD[i] = 0x00;
CARD[i+1] = 0x20;
}
break;
case MESSAGE_NEWS:
__wmessage = HOWMANY_NEWS();
if (__wmessage == 5)
{
DEL_NEWS(0);
__wmessage = 4;
}
NEWS[__wmessage][1] = NIC_RECV_BUFFER[PC_COMMAND+2];
NEWS[__wmessage][2] = NIC_RECV_BUFFER[PC_COMMAND+3];
NEWS[__wmessage][3] = NIC_RECV_BUFFER[PC_COMMAND+4];
NEWS[__wmessage][4] = NIC_RECV_BUFFER[PC_COMMAND+5];
NEWS[__wmessage][0] = UNREAD_MESSAGE;
for (i=0;i<NIC_RECV_BUFFER[PC_COMMAND+6];i++)
{
NEWS[__wmessage][i+MESSAGE_STATUS+MESSAGE_NO] = NIC_RECV_BUFFER[PC_COMMAND+6+1+i];
}
for (i=(NIC_RECV_BUFFER[PC_COMMAND+6]+MESSAGE_STATUS+MESSAGE_NO);i<(MESSAGE_STATUS+MESSAGE_NO+MESSAGE_CHAR);i+=2)
{
NEWS[__wmessage][i] = 0x00;
NEWS[__wmessage][i+1] = 0x20;
}
break;
case MESSAGE_ADMINISTRATION:
__wmessage = HOWMANY_ADMINISTRATION();
if (__wmessage == 5)
{
DEL_ADMINISTRATION(0);
__wmessage = 4;
}
ADMINISTRATION[__wmessage][1] = NIC_RECV_BUFFER[PC_COMMAND+2];
ADMINISTRATION[__wmessage][2] = NIC_RECV_BUFFER[PC_COMMAND+3];
ADMINISTRATION[__wmessage][3] = NIC_RECV_BUFFER[PC_COMMAND+4];
ADMINISTRATION[__wmessage][4] = NIC_RECV_BUFFER[PC_COMMAND+5];
ADMINISTRATION[__wmessage][0] = UNREAD_MESSAGE;
for (i=0;i<NIC_RECV_BUFFER[PC_COMMAND+6];i++)
{
ADMINISTRATION[__wmessage][i+MESSAGE_STATUS+MESSAGE_NO] = NIC_RECV_BUFFER[PC_COMMAND+6+1+i];
}
for (i=(NIC_RECV_BUFFER[PC_COMMAND+6]+MESSAGE_STATUS+MESSAGE_NO);i<(MESSAGE_STATUS+MESSAGE_NO+MESSAGE_CHAR);i+=2)
{
ADMINISTRATION[__wmessage][i] = 0x00;
ADMINISTRATION[__wmessage][i+1] = 0x20;
}
break;
}*/
UDP(R_MESSAGE);
break;
default:
//__wcommand = 0;
break;
}
}
else if ( ((NIC_RECV_BUFFER[PC_PING]==0x08)
||(NIC_RECV_BUFFER[PC_PING]==0x00))
&&(NIC_RECV_BUFFER[PC_PING+1]==0x0) )
{
/* XmitPoint = __wxmitcurr*XMIT_NUMBER;
__wxmitcurr ++;
if (__wxmitcurr > XMIT_STOP) __wxmitcurr = XMIT_START;
for(i=0;i<6;i++)
NIC_XMIT_RING[XmitPoint+i] = NIC_RECV_BUFFER[10+i];
for(i=6;i<12;i++)
NIC_XMIT_RING[XmitPoint+i] = MACADDRESS[i-6];
for(i=12;i<26;i++)
NIC_XMIT_RING[XmitPoint+i] = NIC_RECV_BUFFER[i+4];
for(i=26;i<30;i++)
NIC_XMIT_RING[XmitPoint+i] = NIC_RECV_BUFFER[i+8];
for(i=30;i<34;i++)
NIC_XMIT_RING[XmitPoint+i] = NIC_RECV_BUFFER[i];
for(i=34;i<42;i++)
NIC_XMIT_RING[XmitPoint+i] = NIC_RECV_BUFFER[i+4];
for(i=42;i<74;i++)
NIC_XMIT_RING[XmitPoint+i] = NIC_RECV_BUFFER[i+4];
*/
//PING();
NIC_TPSTART = TPSTART;
for(i=0;i<6;i++)
NIC_XMIT_BUFFER[i] = NIC_RECV_BUFFER[10+i];
for(i=6;i<12;i++)
NIC_XMIT_BUFFER[i] = MACADDRESS[i-6];
for(i=12;i<26;i++)
NIC_XMIT_BUFFER[i] = NIC_RECV_BUFFER[i+4];
for(i=26;i<30;i++)
NIC_XMIT_BUFFER[i] = NIC_RECV_BUFFER[i+8];
for(i=30;i<34;i++)
NIC_XMIT_BUFFER[i] = NIC_RECV_BUFFER[i];
for(i=34;i<42;i++)
NIC_XMIT_BUFFER[i] = NIC_RECV_BUFFER[i+4];
for(i=42;i<74;i++)
NIC_XMIT_BUFFER[i] = NIC_RECV_BUFFER[i+4];
//start xmit
NIC_TBCNT0 = 0x00;
NIC_TBCNT1 = 0x01;
NIC_CR = CR_Start|CR_Xmit;
//CHECK_XMIT();
}
else if ( (NIC_RECV_BUFFER[32] == IPADDRESS[0])&&
(NIC_RECV_BUFFER[33] == IPADDRESS[1])&&
(NIC_RECV_BUFFER[34] == IPADDRESS[2])&&
(NIC_RECV_BUFFER[35] == IPADDRESS[3])&&
(NIC_RECV_BUFFER[24] == 0x00 )&&
(NIC_RECV_BUFFER[25] == 0x02 ) )
{
__bIPCOL = 1;
}
}
NextPacket = NIC_RECV_BUFFER[1];
if (NextPacket == RPSTART) NIC_BNRY = RPSTOP-1;
else NIC_BNRY = NextPacket-1;
}//while (__wcurr != NextPacket)
}
if (__wisr&ISR_RcvError)
{
NIC_ISR = ISR_RcvError;
}
if (__wisr&ISR_RcvBufOverFlow)
{
NIC_ISR = ISR_RcvBufOverFlow;
Init_NIC();
}
if (__wisr&ISR_XmtOk)
{
NIC_ISR = ISR_XmtOk;
}
if (__wisr&ISR_XmtError)
{
NIC_ISR = ISR_XmtError;
}
/*else if (__wisr&ISR_Reset)
{
_nop_();
}*/
}
void CHECKSUM_UDP()
{
unsigned char i;
//destination address
CRC[0] = PC_MACADDRESS[0];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -