blob: ba1ae9e9e9073564a0668c642b0848d932320546 [file] [log] [blame]
Daniel Krueger9d7164c2008-12-19 11:41:57 -08001/****************************************************************************
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: include file for EPL frames
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: EplFrame.h,v $
53
54 $Author: D.Krueger $
55
56 $Revision: 1.5 $ $Date: 2008/06/23 14:56:33 $
57
58 $State: Exp $
59
60 Build Environment:
61 GCC V3.4
62
63 -------------------------------------------------------------------------
64
65 Revision History:
66
67 2006/05/22 d.k.: start of the implementation, version 1.00
68
Daniel Krueger9d7164c2008-12-19 11:41:57 -080069****************************************************************************/
70
71#ifndef _EPL_FRAME_H_
72#define _EPL_FRAME_H_
73
Daniel Krueger9d7164c2008-12-19 11:41:57 -080074//---------------------------------------------------------------------------
75// const defines
76//---------------------------------------------------------------------------
77
Daniel Krueger9d7164c2008-12-19 11:41:57 -080078// defines for EplFrame.m_wFlag
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -080079#define EPL_FRAME_FLAG1_RD 0x01 // ready (PReq, PRes)
80#define EPL_FRAME_FLAG1_ER 0x02 // exception reset (error signalling) (SoA)
81#define EPL_FRAME_FLAG1_EA 0x04 // exception acknowledge (error signalling) (PReq, SoA)
82#define EPL_FRAME_FLAG1_EC 0x08 // exception clear (error signalling) (StatusRes)
83#define EPL_FRAME_FLAG1_EN 0x10 // exception new (error signalling) (PRes, StatusRes)
84#define EPL_FRAME_FLAG1_MS 0x20 // multiplexed slot (PReq)
85#define EPL_FRAME_FLAG1_PS 0x40 // prescaled slot (SoC)
86#define EPL_FRAME_FLAG1_MC 0x80 // multiplexed cycle completed (SoC)
87#define EPL_FRAME_FLAG2_RS 0x07 // number of pending requests to send (PRes, StatusRes, IdentRes)
88#define EPL_FRAME_FLAG2_PR 0x38 // priority of requested asynch. frame (PRes, StatusRes, IdentRes)
89#define EPL_FRAME_FLAG2_PR_SHIFT 3 // shift of priority of requested asynch. frame
Daniel Krueger9d7164c2008-12-19 11:41:57 -080090
91// error history/status entry types
92#define EPL_ERR_ENTRYTYPE_STATUS 0x8000
93#define EPL_ERR_ENTRYTYPE_HISTORY 0x0000
94#define EPL_ERR_ENTRYTYPE_EMCY 0x4000
95#define EPL_ERR_ENTRYTYPE_MODE_ACTIVE 0x1000
96#define EPL_ERR_ENTRYTYPE_MODE_CLEARED 0x2000
97#define EPL_ERR_ENTRYTYPE_MODE_OCCURRED 0x3000
98#define EPL_ERR_ENTRYTYPE_MODE_MASK 0x3000
99#define EPL_ERR_ENTRYTYPE_PROF_VENDOR 0x0001
100#define EPL_ERR_ENTRYTYPE_PROF_EPL 0x0002
101#define EPL_ERR_ENTRYTYPE_PROF_MASK 0x0FFF
102
103// defines for EPL version / PDO version
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800104#define EPL_VERSION_SUB 0x0F // sub version
105#define EPL_VERSION_MAIN 0xF0 // main version
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800106
107//---------------------------------------------------------------------------
108// typedef
109//---------------------------------------------------------------------------
110
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800111// $$$ d.k.: move this definition to global.h
112// byte-align structures
113#ifdef _MSC_VER
114# pragma pack( push, packing )
115# pragma pack( 1 )
116# define PACK_STRUCT
117#elif defined( __GNUC__ )
118# define PACK_STRUCT __attribute__((packed))
119#else
120# error you must byte-align these structures with the appropriate compiler directives
121#endif
122
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800123typedef struct {
124 // Offset 17
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700125 u8 m_le_bRes1; // reserved
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800126 // Offset 18
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700127 u8 m_le_bFlag1; // Flags: MC, PS
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800128 // Offset 19
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700129 u8 m_le_bFlag2; // Flags: res
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800130 // Offset 20
131 tEplNetTime m_le_NetTime; // supported if D_NMT_NetTimeIsRealTime_BOOL is set
132 // Offset 28
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700133 u64 m_le_RelativeTime; // in us (supported if D_NMT_RelativeTime_BOOL is set)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800134
135} PACK_STRUCT tEplSocFrame;
136
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800137typedef struct {
138 // Offset 17
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700139 u8 m_le_bRes1; // reserved
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800140 // Offset 18
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700141 u8 m_le_bFlag1; // Flags: MS, EA, RD
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800142 // Offset 19
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700143 u8 m_le_bFlag2; // Flags: res
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800144 // Offset 20
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700145 u8 m_le_bPdoVersion;
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800146 // Offset 21
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700147 u8 m_le_bRes2; // reserved
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800148 // Offset 22
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700149 u16 m_le_wSize;
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800150 // Offset 24
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700151 u8 m_le_abPayload[256 /*D_NMT_IsochrRxMaxPayload_U16 */ ];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800152
153} PACK_STRUCT tEplPreqFrame;
154
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800155typedef struct {
156 // Offset 17
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700157 u8 m_le_bNmtStatus; // NMT state
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800158 // Offset 18
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700159 u8 m_le_bFlag1; // Flags: MS, EN, RD
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800160 // Offset 19
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700161 u8 m_le_bFlag2; // Flags: PR, RS
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800162 // Offset 20
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700163 u8 m_le_bPdoVersion;
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800164 // Offset 21
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700165 u8 m_le_bRes2; // reserved
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800166 // Offset 22
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700167 u16 m_le_wSize;
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800168 // Offset 24
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700169 u8 m_le_abPayload[256 /*D_NMT_IsochrRxMaxPayload_U16
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800170 / D_NMT_IsochrTxMaxPayload_U16 */ ];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800171
172} PACK_STRUCT tEplPresFrame;
173
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800174typedef struct {
175 // Offset 17
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700176 u8 m_le_bNmtStatus; // NMT state
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800177 // Offset 18
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700178 u8 m_le_bFlag1; // Flags: EA, ER
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800179 // Offset 19
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700180 u8 m_le_bFlag2; // Flags: res
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800181 // Offset 20
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700182 u8 m_le_bReqServiceId;
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800183 // Offset 21
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700184 u8 m_le_bReqServiceTarget;
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800185 // Offset 22
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700186 u8 m_le_bEplVersion;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800187
188} PACK_STRUCT tEplSoaFrame;
189
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800190typedef struct {
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700191 u16 m_wEntryType;
192 u16 m_wErrorCode;
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800193 tEplNetTime m_TimeStamp;
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700194 u8 m_abAddInfo[8];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800195
196} PACK_STRUCT tEplErrHistoryEntry;
197
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800198typedef struct {
199 // Offset 18
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700200 u8 m_le_bFlag1; // Flags: EN, EC
201 u8 m_le_bFlag2; // Flags: PR, RS
202 u8 m_le_bNmtStatus; // NMT state
203 u8 m_le_bRes1[3];
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700204 u64 m_le_qwStaticError; // static error bit field
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800205 tEplErrHistoryEntry m_le_aErrHistoryEntry[14];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800206
207} PACK_STRUCT tEplStatusResponse;
208
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800209typedef struct {
210 // Offset 18
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700211 u8 m_le_bFlag1; // Flags: res
212 u8 m_le_bFlag2; // Flags: PR, RS
213 u8 m_le_bNmtStatus; // NMT state
214 u8 m_le_bIdentRespFlags; // Flags: FW
215 u8 m_le_bEplProfileVersion;
216 u8 m_le_bRes1;
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700217 u32 m_le_dwFeatureFlags; // NMT_FeatureFlags_U32
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700218 u16 m_le_wMtu; // NMT_CycleTiming_REC.AsyncMTU_U16: C_IP_MIN_MTU - C_IP_MAX_MTU
219 u16 m_le_wPollInSize; // NMT_CycleTiming_REC.PReqActPayload_U16
220 u16 m_le_wPollOutSize; // NMT_CycleTiming_REC.PResActPayload_U16
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700221 u32 m_le_dwResponseTime; // NMT_CycleTiming_REC.PResMaxLatency_U32
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700222 u16 m_le_wRes2;
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700223 u32 m_le_dwDeviceType; // NMT_DeviceType_U32
224 u32 m_le_dwVendorId; // NMT_IdentityObject_REC.VendorId_U32
225 u32 m_le_dwProductCode; // NMT_IdentityObject_REC.ProductCode_U32
226 u32 m_le_dwRevisionNumber; // NMT_IdentityObject_REC.RevisionNo_U32
227 u32 m_le_dwSerialNumber; // NMT_IdentityObject_REC.SerialNo_U32
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700228 u64 m_le_qwVendorSpecificExt1;
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700229 u32 m_le_dwVerifyConfigurationDate; // CFM_VerifyConfiguration_REC.ConfDate_U32
230 u32 m_le_dwVerifyConfigurationTime; // CFM_VerifyConfiguration_REC.ConfTime_U32
231 u32 m_le_dwApplicationSwDate; // PDL_LocVerApplSw_REC.ApplSwDate_U32 on programmable device or date portion of NMT_ManufactSwVers_VS on non-programmable device
232 u32 m_le_dwApplicationSwTime; // PDL_LocVerApplSw_REC.ApplSwTime_U32 on programmable device or time portion of NMT_ManufactSwVers_VS on non-programmable device
233 u32 m_le_dwIpAddress;
234 u32 m_le_dwSubnetMask;
235 u32 m_le_dwDefaultGateway;
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700236 u8 m_le_sHostname[32];
237 u8 m_le_abVendorSpecificExt2[48];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800238
239} PACK_STRUCT tEplIdentResponse;
240
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800241typedef struct {
242 // Offset 18
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700243 u8 m_le_bNmtCommandId;
244 u8 m_le_bRes1;
245 u8 m_le_abNmtCommandData[32];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800246
247} PACK_STRUCT tEplNmtCommandService;
248
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800249typedef struct {
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700250 u8 m_le_bReserved;
251 u8 m_le_bTransactionId;
252 u8 m_le_bFlags;
253 u8 m_le_bCommandId;
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700254 u16 m_le_wSegmentSize;
255 u16 m_le_wReserved;
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700256 u8 m_le_abCommandData[8]; // just reserve a minimum number of bytes as a placeholder
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800257
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800258} PACK_STRUCT tEplAsySdoCom;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800259
260// asynchronous SDO Sequence Header
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800261typedef struct {
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700262 u8 m_le_bRecSeqNumCon;
263 u8 m_le_bSendSeqNumCon;
264 u8 m_le_abReserved[2];
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800265 tEplAsySdoCom m_le_abSdoSeqPayload;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800266
267} PACK_STRUCT tEplAsySdoSeq;
268
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800269typedef struct {
270 // Offset 18
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700271 u8 m_le_bNmtCommandId;
272 u8 m_le_bTargetNodeId;
273 u8 m_le_abNmtCommandData[32];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800274
275} PACK_STRUCT tEplNmtRequestService;
276
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800277typedef union {
278 // Offset 18
279 tEplStatusResponse m_StatusResponse;
280 tEplIdentResponse m_IdentResponse;
281 tEplNmtCommandService m_NmtCommandService;
282 tEplNmtRequestService m_NmtRequestService;
283 tEplAsySdoSeq m_SdoSequenceFrame;
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700284 u8 m_le_abPayload[256 /*D_NMT_ASndTxMaxPayload_U16
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800285 / D_NMT_ASndRxMaxPayload_U16 */ ];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800286
287} tEplAsndPayload;
288
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800289typedef struct {
290 // Offset 17
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700291 u8 m_le_bServiceId;
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800292 // Offset 18
293 tEplAsndPayload m_Payload;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800294
295} PACK_STRUCT tEplAsndFrame;
296
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800297typedef union {
298 // Offset 17
299 tEplSocFrame m_Soc;
300 tEplPreqFrame m_Preq;
301 tEplPresFrame m_Pres;
302 tEplSoaFrame m_Soa;
303 tEplAsndFrame m_Asnd;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800304
305} tEplFrameData;
306
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800307typedef struct {
308 // Offset 0
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700309 u8 m_be_abDstMac[6]; // MAC address of the addressed nodes
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800310 // Offset 6
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700311 u8 m_be_abSrcMac[6]; // MAC address of the transmitting node
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800312 // Offset 12
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700313 u16 m_be_wEtherType; // Ethernet message type (big endian)
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800314 // Offset 14
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700315 u8 m_le_bMessageType; // EPL message type
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800316 // Offset 15
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700317 u8 m_le_bDstNodeId; // EPL node ID of the addressed nodes
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800318 // Offset 16
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700319 u8 m_le_bSrcNodeId; // EPL node ID of the transmitting node
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800320 // Offset 17
321 tEplFrameData m_Data;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800322
323} PACK_STRUCT tEplFrame;
324
325// un-byte-align structures
326#ifdef _MSC_VER
327# pragma pack( pop, packing )
328#endif
329
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800330typedef enum {
331 kEplMsgTypeNonEpl = 0x00,
332 kEplMsgTypeSoc = 0x01,
333 kEplMsgTypePreq = 0x03,
334 kEplMsgTypePres = 0x04,
335 kEplMsgTypeSoa = 0x05,
336 kEplMsgTypeAsnd = 0x06,
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800337
338} tEplMsgType;
339
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800340//---------------------------------------------------------------------------
341// function prototypes
342//---------------------------------------------------------------------------
343
Greg Kroah-Hartmane0ca0592008-12-19 17:09:38 -0800344#endif // #ifndef _EPL_FRAME_H_