Commit | Line | Data |
---|---|---|
9d7164cf DK |
1 | /**************************************************************************** |
2 | ||
3 | (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29 | |
4 | www.systec-electronic.com | |
5 | ||
6 | Project: openPOWERLINK | |
7 | ||
8 | Description: interface for ethernetdriver | |
9 | ||
10 | License: | |
11 | ||
12 | Redistribution and use in source and binary forms, with or without | |
13 | modification, are permitted provided that the following conditions | |
14 | are met: | |
15 | ||
16 | 1. Redistributions of source code must retain the above copyright | |
17 | notice, this list of conditions and the following disclaimer. | |
18 | ||
19 | 2. Redistributions in binary form must reproduce the above copyright | |
20 | notice, this list of conditions and the following disclaimer in the | |
21 | documentation and/or other materials provided with the distribution. | |
22 | ||
23 | 3. Neither the name of SYSTEC electronic GmbH nor the names of its | |
24 | contributors may be used to endorse or promote products derived | |
25 | from this software without prior written permission. For written | |
26 | permission, please contact info@systec-electronic.com. | |
27 | ||
28 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
29 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
30 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | |
31 | FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | |
32 | COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | |
33 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |
34 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
35 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |
36 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
37 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN | |
38 | ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
39 | POSSIBILITY OF SUCH DAMAGE. | |
40 | ||
41 | Severability Clause: | |
42 | ||
43 | If a provision of this License is or becomes illegal, invalid or | |
44 | unenforceable in any jurisdiction, that shall not affect: | |
45 | 1. the validity or enforceability in that jurisdiction of any other | |
46 | provision of this License; or | |
47 | 2. the validity or enforceability in other jurisdictions of that or | |
48 | any other provision of this License. | |
49 | ||
50 | ------------------------------------------------------------------------- | |
51 | ||
52 | $RCSfile: edrv.h,v $ | |
53 | ||
54 | $Author: D.Krueger $ | |
55 | ||
56 | $Revision: 1.6 $ $Date: 2008/04/17 21:36:32 $ | |
57 | ||
58 | $State: Exp $ | |
59 | ||
60 | Build Environment: | |
61 | Dev C++ and GNU-Compiler for m68k | |
62 | ||
63 | ------------------------------------------------------------------------- | |
64 | ||
65 | Revision History: | |
66 | ||
67 | 2005/08/01 m.b.: start of implementation | |
68 | ||
69 | ****************************************************************************/ | |
70 | ||
71 | #ifndef _EDRV_H_ | |
72 | #define _EDRV_H_ | |
73 | ||
74 | #include "EplInc.h" | |
75 | #include "EplFrame.h" | |
76 | ||
77 | //--------------------------------------------------------------------------- | |
78 | // const defines | |
79 | //--------------------------------------------------------------------------- | |
80 | // -------------------------------------------------------------------------- | |
81 | #define MAX_ETH_DATA_SIZE 1500 | |
82 | #define MIN_ETH_DATA_SIZE 46 | |
83 | ||
e0ca0595 GKH |
84 | #define ETH_HDR_OFFSET 0 // Ethernet header at the top of the frame |
85 | #define ETH_HDR_SIZE 14 // size of Ethernet header | |
86 | #define MIN_ETH_SIZE (MIN_ETH_DATA_SIZE + ETH_HDR_SIZE) // without CRC | |
9d7164cf | 87 | |
e0ca0595 | 88 | #define ETH_CRC_SIZE 4 // size of Ethernet CRC, i.e. FCS |
9d7164cf DK |
89 | |
90 | //--------------------------------------------------------------------------- | |
91 | // types | |
92 | //--------------------------------------------------------------------------- | |
93 | ||
94 | // position of a buffer in an ethernet-frame | |
e0ca0595 GKH |
95 | typedef enum { |
96 | kEdrvBufferFirstInFrame = 0x01, // first data buffer in an ethernet frame | |
97 | kEdrvBufferMiddleInFrame = 0x02, // a middle data buffer in an ethernet frame | |
98 | kEdrvBufferLastInFrame = 0x04 // last data buffer in an ethernet frame | |
9d7164cf DK |
99 | } tEdrvBufferInFrame; |
100 | ||
9d7164cf | 101 | // format of a tx-buffer |
e0ca0595 GKH |
102 | typedef struct _tEdrvTxBuffer { |
103 | tEplMsgType m_EplMsgType; // IN: type of EPL message, set by calling function | |
104 | unsigned int m_uiTxMsgLen; // IN: length of message to be send (set for each transmit call) | |
105 | // ---------------------- | |
106 | unsigned int m_uiBufferNumber; // OUT: number of the buffer, set by ethernetdriver | |
107 | BYTE *m_pbBuffer; // OUT: pointer to the buffer, set by ethernetdriver | |
108 | tEplNetTime m_NetTime; // OUT: Timestamp of end of transmission, set by ethernetdriver | |
109 | // ---------------------- | |
110 | unsigned int m_uiMaxBufferLen; // IN/OUT: maximum length of the buffer | |
9d7164cf DK |
111 | } tEdrvTxBuffer; |
112 | ||
113 | // format of a rx-buffer | |
e0ca0595 GKH |
114 | typedef struct _tEdrvRxBuffer { |
115 | tEdrvBufferInFrame m_BufferInFrame; // OUT position of received buffer in an ethernet-frame | |
116 | unsigned int m_uiRxMsgLen; // OUT: length of received buffer (without CRC) | |
117 | BYTE *m_pbBuffer; // OUT: pointer to the buffer, set by ethernetdriver | |
118 | tEplNetTime m_NetTime; // OUT: Timestamp of end of receiption | |
9d7164cf DK |
119 | |
120 | } tEdrvRxBuffer; | |
121 | ||
9d7164cf DK |
122 | //typedef void (*tEdrvRxHandler) (BYTE bBufferInFrame_p, tBufferDescr * pbBuffer_p); |
123 | //typedef void (*tEdrvRxHandler) (BYTE bBufferInFrame_p, BYTE * pbEthernetData_p, WORD wDataLen_p); | |
124 | typedef void (*tEdrvRxHandler) (tEdrvRxBuffer * pRxBuffer_p); | |
125 | typedef void (*tEdrvTxHandler) (tEdrvTxBuffer * pTxBuffer_p); | |
126 | ||
9d7164cf | 127 | // format of init structure |
e0ca0595 GKH |
128 | typedef struct { |
129 | BYTE m_abMyMacAddr[6]; // the own MAC address | |
9d7164cf DK |
130 | |
131 | // BYTE m_bNoOfRxBuffDescr; // number of entries in rx bufferdescriptor table | |
132 | // tBufferDescr * m_pRxBuffDescrTable; // rx bufferdescriptor table | |
133 | // WORD m_wRxBufferSize; // size of the whole rx buffer | |
134 | ||
e0ca0595 GKH |
135 | tEdrvRxHandler m_pfnRxHandler; |
136 | tEdrvTxHandler m_pfnTxHandler; | |
9d7164cf DK |
137 | |
138 | } tEdrvInitParam; | |
139 | ||
9d7164cf DK |
140 | //--------------------------------------------------------------------------- |
141 | // function prototypes | |
142 | //--------------------------------------------------------------------------- | |
143 | ||
e0ca0595 | 144 | tEplKernel EdrvInit(tEdrvInitParam * pEdrvInitParam_p); |
9d7164cf | 145 | |
e0ca0595 | 146 | tEplKernel EdrvShutdown(void); |
9d7164cf | 147 | |
e0ca0595 GKH |
148 | tEplKernel EdrvDefineRxMacAddrEntry(BYTE * pbMacAddr_p); |
149 | tEplKernel EdrvUndefineRxMacAddrEntry(BYTE * pbMacAddr_p); | |
9d7164cf DK |
150 | |
151 | //tEplKernel EdrvDefineUnicastEntry (BYTE * pbUCEntry_p); | |
152 | //tEplKernel EdrvUndfineUnicastEntry (BYTE * pbUCEntry_p); | |
153 | ||
e0ca0595 GKH |
154 | tEplKernel EdrvAllocTxMsgBuffer(tEdrvTxBuffer * pBuffer_p); |
155 | tEplKernel EdrvReleaseTxMsgBuffer(tEdrvTxBuffer * pBuffer_p); | |
9d7164cf DK |
156 | |
157 | //tEplKernel EdrvWriteMsg (tBufferDescr * pbBuffer_p); | |
e0ca0595 GKH |
158 | tEplKernel EdrvSendTxMsg(tEdrvTxBuffer * pBuffer_p); |
159 | tEplKernel EdrvTxMsgReady(tEdrvTxBuffer * pBuffer_p); | |
160 | tEplKernel EdrvTxMsgStart(tEdrvTxBuffer * pBuffer_p); | |
9d7164cf DK |
161 | |
162 | //tEplKernel EdrvReadMsg (void); | |
163 | ||
164 | // interrupt handler called by target specific interrupt handler | |
e0ca0595 | 165 | void EdrvInterruptHandler(void); |
9d7164cf | 166 | |
e0ca0595 | 167 | #endif // #ifndef _EDRV_H_ |