Go to the source code of this file.
Functions | |
void | F_EthernetInit (void) |
void | F_EthernetSvc (void) |
INT8U | F_EthernetInUseCheck (void) |
INT8U | F_EthernetAllocate (INT16U UserId) |
INT8U | F_EthernetRelease (INT16U UserId) |
INT8U | F_EthernetMacAddressSet (INT16U UserId, INT8U *pMacAddress) |
INT8U | F_EthernetIpAddressSet (INT16U UserId, INT8U *pIpAddress) |
INT8U | F_EthernetSend (ETHBUFFER *pBuffer, INT8U *pDestination, INT16U Protocol) |
INT8U | F_EthernetReceive (ETHBUFFER *pBuffer) |
INT8U | F_EthernetPacketHandler (void) |
INT8U | F_EthernetBiosUpdate (INT8U *pBios, INT32U size) |
INT8U | F_EthernetSystemTableUpdate (INT8U *pSystemTable, INT32U Size) |
INT8U | F_EthernetPartitionTableUpdate (INT8U *pSystemTable, INT32U Size) |
INT8U | F_EthernetPartitionUpdate (INT8U *pSystemTable, INT32U Size) |
INT8U | F_EthernetFirmwareUpdate (INT8U *pSystemTable, INT32U Size) |
INT16U | F_EthernetUnsignedShortN2H (unsigned short s) |
INT16U | F_EthernetUnsignedShortH2N (unsigned short s) |
INT32U | F_EthernetUnsignedLongN2H (unsigned long l) |
INT32U | F_EthernetUnsignedLongH2N (unsigned long l) |
Variables | |
ETHERNET_CONTROL | EthernetCtrl |
INT8U F_EthernetAllocate | ( | INT16U | UserId | ) |
Definition at line 73 of file ethernet.c.
00073 { 00074 if(EthernetCtrl.InUse==FALSE){ 00075 EthernetCtrl.InUse=TRUE; 00076 EthernetCtrl.UserId=UserId; 00077 return TRUE; 00078 } 00079 else return FALSE; 00080 }
INT8U F_EthernetBiosUpdate | ( | INT8U * | pBios, | |
INT32U | size | |||
) |
INT8U F_EthernetFirmwareUpdate | ( | INT8U * | pSystemTable, | |
INT32U | Size | |||
) |
void F_EthernetInit | ( | void | ) |
Definition at line 52 of file ethernet.c.
00052 { 00053 EthernetCtrl.MacAddress[0]=0x00; 00054 EthernetCtrl.MacAddress[1]=0x00; 00055 EthernetCtrl.MacAddress[2]=0x00; 00056 EthernetCtrl.MacAddress[3]=0x00; 00057 EthernetCtrl.MacAddress[4]=0x00; 00058 EthernetCtrl.MacAddress[5]=0x00; 00059 EthernetCtrl.IpAddress[0]=0x00; 00060 EthernetCtrl.IpAddress[1]=0x00; 00061 EthernetCtrl.IpAddress[2]=0x00; 00062 EthernetCtrl.IpAddress[3]=0x00; 00063 //EthernetCtrl.Id=ID_ETHERNET; 00064 EthernetCtrl.InUse=FALSE; 00065 EthernetCtrl.Status=0; 00066 EthernetCtrl.State=EthernetIdleState; 00067 }
INT8U F_EthernetInUseCheck | ( | void | ) |
Definition at line 69 of file ethernet.c.
00069 { 00070 if(EthernetCtrl.InUse==TRUE) return TRUE; 00071 else return FALSE; 00072 }
INT8U F_EthernetIpAddressSet | ( | INT16U | UserId, | |
INT8U * | pIpAddress | |||
) |
Definition at line 100 of file ethernet.c.
00100 { 00101 if((EthernetCtrl.InUse==TRUE)&&(EthernetCtrl.UserId==UserId)){ 00102 EthernetCtrl.IpAddress[0]=pIpAddress[0]; 00103 EthernetCtrl.IpAddress[1]=pIpAddress[1]; 00104 EthernetCtrl.IpAddress[2]=pIpAddress[2]; 00105 EthernetCtrl.IpAddress[3]=pIpAddress[3]; 00106 return TRUE; 00107 } 00108 else return FALSE; 00109 }
INT8U F_EthernetMacAddressSet | ( | INT16U | UserId, | |
INT8U * | pMacAddress | |||
) |
Definition at line 88 of file ethernet.c.
00088 { 00089 if((EthernetCtrl.InUse==TRUE)&&(EthernetCtrl.UserId==UserId)){ 00090 EthernetCtrl.MacAddress[0]=pMacAddress[0]; 00091 EthernetCtrl.MacAddress[1]=pMacAddress[1]; 00092 EthernetCtrl.MacAddress[2]=pMacAddress[2]; 00093 EthernetCtrl.MacAddress[3]=pMacAddress[3]; 00094 EthernetCtrl.MacAddress[4]=pMacAddress[4]; 00095 EthernetCtrl.MacAddress[5]=pMacAddress[5]; 00096 return TRUE; 00097 } 00098 else return FALSE; 00099 }
INT8U F_EthernetPacketHandler | ( | void | ) |
Definition at line 137 of file ethernet.c.
00137 { 00138 ETHBUFFER *pBuffer; 00139 ETHERNET_HEAD *pEthernetHead; // 6(destination)+6(source)+2(protocol) 00140 00141 pBuffer=F_EthernetBufferAllocate(); 00142 if(F_EthernetReceive(pBuffer)==TRUE){ 00143 // broadcast check?? 00144 pEthernetHead=(ETHERNET_HEAD *)pBuffer->pData; // 8 bytes preamble data?? exclude by cs8900?? 00145 #if(DEBUG_ETHERNET==1) 00146 /*printf("\n Destination %2x %2x %2x %2x %2x %2x ",pEthernetHead->Destination[0], 00147 pEthernetHead->Destination[1], 00148 pEthernetHead->Destination[2], 00149 pEthernetHead->Destination[3], 00150 pEthernetHead->Destination[4], 00151 pEthernetHead->Destination[5]); 00152 printf("\n Source %2x %2x %2x %2x %2x %2x ",pEthernetHead->Source[0], 00153 pEthernetHead->Source[1], 00154 pEthernetHead->Source[2], 00155 pEthernetHead->Source[3], 00156 pEthernetHead->Source[4], 00157 pEthernetHead->Source[5]); 00158 printf("\n Protocol %4x",F_EthernetUnsignedShortN2H(pEthernetHead->Protocol)); 00159 printf("\n RxEvent %4x ",Cs8900Ctrl.RxEvent);*/ 00160 #endif 00161 if(Cs8900Ctrl.RxEvent&RX_EVENT_IND_ADDR){ 00162 if(F_EthernetUnsignedShortN2H(pEthernetHead->Protocol)>0x05dc){ // ethernet II...ethertype 00163 #if(DEBUG_ETHERNET==1) 00164 printf("\n ethernet II "); 00165 #endif 00166 F_EthernetBufferPull(pBuffer,ETHERNET_HEAD_LENGTH); 00167 if(F_EthernetUnsignedShortN2H(pEthernetHead->Protocol)==ETHERNET_P_ARP){ // 0x0806 00168 #if(DEBUG_ETHERNET==1) 00169 printf(" ARP"); 00170 #endif 00171 F_EthernetArpPacketReceive(pBuffer); 00172 } 00173 else if(F_EthernetUnsignedShortN2H(pEthernetHead->Protocol)==ETHERNET_P_IP){ // 0x0800 00174 #if(DEBUG_ETHERNET==1) 00175 printf(" IP "); 00176 #endif 00177 F_EthernetIpPacketReceive(pBuffer); 00178 } 00179 } 00180 else{ // IEEE 802.3...frame length (<=0x05dc...1500) 00181 #if(DEBUG_ETHERNET==1) 00182 printf("\n IEEE 802.3 no support now"); 00183 #endif 00184 } 00185 } 00186 else if(Cs8900Ctrl.RxEvent&RX_EVENT_BROADCAST){ 00187 #if(DEBUG_ETHERNET==1) 00188 printf("\n BROADCAST"); 00189 #endif 00190 F_EthernetBufferPull(pBuffer,ETHERNET_HEAD_LENGTH); 00191 if(F_EthernetUnsignedShortN2H(pEthernetHead->Protocol)==ETHERNET_P_ARP){ // 0x0806 00192 #if(DEBUG_ETHERNET==1) 00193 printf(" ARP"); 00194 #endif 00195 F_EthernetArpPacketReceive2(pBuffer); 00196 } 00197 else if(F_EthernetUnsignedShortN2H(pEthernetHead->Protocol)==ETHERNET_P_IP){ // 0x0800 00198 #if(DEBUG_ETHERNET==1) 00199 printf(" IP "); 00200 #endif 00201 //F_EthernetIpPacketReceive2(pBuffer); 00202 //F_EthernetIpPacketReceive(pBuffer); 00203 } 00204 } 00205 } 00206 //F_EthernetBufferRelease(pBuffer); // no need 00207 return TRUE; 00208 }
INT8U F_EthernetPartitionTableUpdate | ( | INT8U * | pSystemTable, | |
INT32U | Size | |||
) |
INT8U F_EthernetPartitionUpdate | ( | INT8U * | pSystemTable, | |
INT32U | Size | |||
) |
INT8U F_EthernetReceive | ( | ETHBUFFER * | pBuffer | ) |
Definition at line 123 of file ethernet.c.
00123 { 00124 INT32U Size; 00125 00126 if(F_Cs8900PacketReceiveCheck()==TRUE){ 00127 Size=F_Cs8900PacketReceive(pBuffer->pData,1532); // 1532>8+6+6+2+1500+4=1526 ?? 00128 pBuffer->Length=Size; 00129 #if(DEBUG_ETHERNET==1) 00130 printf("\n rx packet [%4x] ",Size); 00131 //F_EthernetBufferDump(pBuffer->Data,Size); 00132 #endif 00133 return TRUE; 00134 } 00135 else return FALSE; 00136 }
INT8U F_EthernetRelease | ( | INT16U | UserId | ) |
Definition at line 81 of file ethernet.c.
00081 { 00082 if(EthernetCtrl.InUse==TRUE){ 00083 EthernetCtrl.InUse=FALSE; 00084 return TRUE; 00085 } 00086 else return FALSE; 00087 }
INT8U F_EthernetSend | ( | ETHBUFFER * | pBuffer, | |
INT8U * | pDestination, | |||
INT16U | Protocol | |||
) |
Definition at line 110 of file ethernet.c.
00110 { 00111 ETHERNET_HEAD *pEthernetHead; 00112 00113 pEthernetHead=(ETHERNET_HEAD *)F_EthernetBufferPush(pBuffer,ETHERNET_HEAD_LENGTH); 00114 memcpy((INT8U *)pEthernetHead->Destination,pDestination,ETHERNET_MAC_LENGTH); 00115 memcpy((INT8U *)pEthernetHead->Source,(INT8U *)EthernetCtrl.MacAddress,ETHERNET_MAC_LENGTH); 00116 pEthernetHead->Protocol=F_EthernetUnsignedShortH2N(Protocol); 00117 #if(DEBUG_ETHERNET==1) 00118 printf("\n tx packet [%4x] ",pBuffer->Length); 00119 //F_EthernetBufferDump(pBuffer->Data,pBuffer->Length); 00120 #endif 00121 return F_Cs8900PacketTransmit(pBuffer->Data,pBuffer->Length); 00122 }
void F_EthernetSvc | ( | void | ) |
INT8U F_EthernetSystemTableUpdate | ( | INT8U * | pSystemTable, | |
INT32U | Size | |||
) |
INT32U F_EthernetUnsignedLongH2N | ( | unsigned long | l | ) |
Definition at line 236 of file ethernet.c.
00236 { 00237 return (((l>>24)&0x000000ff)| 00238 ((l>> 8)&0x0000ff00)| 00239 ((l<< 8)&0x00ff0000)| 00240 ((l<<24)&0xff000000)); 00241 }
INT32U F_EthernetUnsignedLongN2H | ( | unsigned long | l | ) |
Definition at line 230 of file ethernet.c.
00230 { 00231 return (((l>>24)&0x000000ff)| 00232 ((l>> 8)&0x0000ff00)| 00233 ((l<< 8)&0x00ff0000)| 00234 ((l<<24)&0xff000000)); 00235 }
INT16U F_EthernetUnsignedShortH2N | ( | unsigned short | s | ) |
INT16U F_EthernetUnsignedShortN2H | ( | unsigned short | s | ) |
ETHERNET_CONTROL EthernetCtrl |
Definition at line 30 of file ethernet.c.