BOOTLOADER
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
ethernetbuffer.c
Go to the documentation of this file.
1 /******************************************************
2 * Function: etherent buffer handler
3 *
4 * File: etherentbuffer.c
5 * Author: Book Chen
6 * Date: 2008.07.18
7 *******************************************************
8 */
9 #include "includes.h"
10 
13 
14 void F_EthernetBufferInit(void);
15 void F_EthernetBufferSvc(void);
16 void F_EthernetBufferReset(ETHBUFFER *pBuffer);
18 void F_EthernetBufferRelease(ETHBUFFER *pBuffer);
19 INT8U *F_EthernetBufferPut(ETHBUFFER *pBuffer,INT32U Length);
20 INT8U *F_EthernetBufferPull(ETHBUFFER *pBuffer,INT32U Length);
21 INT8U *F_EthernetBufferPush(ETHBUFFER *pBuffer,INT32U Length);
22 void F_EthernetBufferReserve(ETHBUFFER *pBuffer,INT32U Length);
23 
25  EthBufferCtrl.BufferIndex=0;
26  EthBufferCtrl.Status=0;
27  EthBufferCtrl.State=0;
28 }
29 void F_EthernetBufferSvc(void){}
31  //memset(pBuffer,0,sizeof(ETHBUFFER));
32  memset(pBuffer,0,5);
33  pBuffer->Pad[0]=0x00;
34  pBuffer->Pad[1]=0x00;
35  pBuffer->TrueSize=ETHERNET_FRAME_LEN; // 1514
36  pBuffer->pData=(INT8U *)pBuffer->Data;
37  pBuffer->Length=0;
38 }
40  ETHBUFFER *pBuffer;
41 
42  pBuffer=&EthBuffer[EthBufferCtrl.BufferIndex];
43  EthBufferCtrl.BufferIndex++;
44  if(EthBufferCtrl.BufferIndex>=5) EthBufferCtrl.BufferIndex=0;
45  F_EthernetBufferReset(pBuffer);
46  return pBuffer;
47 }
50  pBuffer->Length+=Length;
51  return pBuffer->pData;
52 }
53 // pull...means add data to frame...frame data pointer pull forward
54 // pull...means add data to frame...frame data length--
56  pBuffer->pData+=Length;
57  pBuffer->Length-=Length;
58  return pBuffer->pData;
59 }
60 // push...means add data to frame...frame data pointer push back
61 // push...means add data to frame...frame data length++
63  pBuffer->pData-=Length;
64  pBuffer->Length+=Length;
65  return pBuffer->pData;
66 }
68  pBuffer->pData+=Length;
69 }
70 void F_EthernetBufferDump(INT8U *pData,INT32U Length){
71  INT32U i=0,j=0;
72 
73  i=0;
74  j=0;
75  printf("\n Length=%4x ",Length);
76  for(i=0;i<Length;i++){
77  if(j==0) printf("\n %4x0h ",(i/16));
78  #if(DEBUG_ETHERNET_BUFFER==1)
79  printf("%2x ",*pData);
80  #endif
81  j++;
82  pData++;
83  if(j==16) j=0;
84  //if(i>=0x60) break;
85  }
86  #if(DEBUG_ETHERNET_BUFFER)
87  printf("\n ");
88  #endif
89 }