/**************************************************************************** (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29 www.systec-electronic.com Project: openPOWERLINK Description: include file for DLL module License: Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of SYSTEC electronic GmbH nor the names of its contributors may be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact info@systec-electronic.com. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Severability Clause: If a provision of this License is or becomes illegal, invalid or unenforceable in any jurisdiction, that shall not affect: 1. the validity or enforceability in that jurisdiction of any other provision of this License; or 2. the validity or enforceability in other jurisdictions of that or any other provision of this License. ------------------------------------------------------------------------- $RCSfile: EplDll.h,v $ $Author: D.Krueger $ $Revision: 1.4 $ $Date: 2008/04/17 21:36:32 $ $State: Exp $ Build Environment: GCC V3.4 ------------------------------------------------------------------------- Revision History: 2006/06/08 d.k.: start of the implementation, version 1.00 ****************************************************************************/ #ifndef _EPL_DLL_H_ #define _EPL_DLL_H_ #include "EplInc.h" #include "EplFrame.h" //--------------------------------------------------------------------------- // const defines //--------------------------------------------------------------------------- #ifndef EPL_DLL_MAX_ASND_SERVICE_ID #define EPL_DLL_MAX_ASND_SERVICE_ID (EPL_C_DLL_MAX_ASND_SERVICE_IDS + 1) // last is kEplDllAsndSdo == 5 #endif //--------------------------------------------------------------------------- // typedef //--------------------------------------------------------------------------- typedef enum { kEplDllAsndNotDefined = 0x00, kEplDllAsndIdentResponse = 0x01, kEplDllAsndStatusResponse = 0x02, kEplDllAsndNmtRequest = 0x03, kEplDllAsndNmtCommand = 0x04, kEplDllAsndSdo = 0x05 } tEplDllAsndServiceId; typedef enum { kEplDllAsndFilterNone = 0x00, kEplDllAsndFilterLocal = 0x01, // receive only ASnd frames with local or broadcast node ID kEplDllAsndFilterAny = 0x02, // receive any ASnd frame } tEplDllAsndFilter; typedef enum { kEplDllReqServiceNo = 0x00, kEplDllReqServiceIdent = 0x01, kEplDllReqServiceStatus = 0x02, kEplDllReqServiceNmtRequest = 0x03, kEplDllReqServiceUnspecified = 0xFF, } tEplDllReqServiceId; typedef enum { kEplDllAsyncReqPrioNmt = 0x07, // PRIO_NMT_REQUEST kEplDllAsyncReqPrio6 = 0x06, kEplDllAsyncReqPrio5 = 0x05, kEplDllAsyncReqPrio4 = 0x04, kEplDllAsyncReqPrioGeneric = 0x03, // PRIO_GENERIC_REQUEST kEplDllAsyncReqPrio2 = 0x02, // till WSP 0.1.3: PRIO_ABOVE_GENERIC kEplDllAsyncReqPrio1 = 0x01, // till WSP 0.1.3: PRIO_BELOW_GENERIC kEplDllAsyncReqPrio0 = 0x00, // till WSP 0.1.3: PRIO_GENERIC_REQUEST } tEplDllAsyncReqPriority; typedef struct { unsigned int m_uiFrameSize; tEplFrame *m_pFrame; tEplNetTime m_NetTime; } tEplFrameInfo; typedef struct { unsigned int m_uiSizeOfStruct; BOOL m_fAsyncOnly; // do not need to register PRes-Frame unsigned int m_uiNodeId; // local node ID // 0x1F82: NMT_FeatureFlags_U32 DWORD m_dwFeatureFlags; // Cycle Length (0x1006: NMT_CycleLen_U32) in [us] DWORD m_dwCycleLen; // required for error detection // 0x1F98: NMT_CycleTiming_REC // 0x1F98.1: IsochrTxMaxPayload_U16 unsigned int m_uiIsochrTxMaxPayload; // const // 0x1F98.2: IsochrRxMaxPayload_U16 unsigned int m_uiIsochrRxMaxPayload; // const // 0x1F98.3: PResMaxLatency_U32 DWORD m_dwPresMaxLatency; // const in [ns], only required for IdentRes // 0x1F98.4: PReqActPayloadLimit_U16 unsigned int m_uiPreqActPayloadLimit; // required for initialisation (+24 bytes) // 0x1F98.5: PResActPayloadLimit_U16 unsigned int m_uiPresActPayloadLimit; // required for initialisation of Pres frame (+24 bytes) // 0x1F98.6: ASndMaxLatency_U32 DWORD m_dwAsndMaxLatency; // const in [ns], only required for IdentRes // 0x1F98.7: MultiplCycleCnt_U8 unsigned int m_uiMultiplCycleCnt; // required for error detection // 0x1F98.8: AsyncMTU_U16 unsigned int m_uiAsyncMtu; // required to set up max frame size // $$$ 0x1F98.9: Prescaler_U16 // $$$ Multiplexed Slot // 0x1C14: DLL_LossOfFrameTolerance_U32 in [ns] DWORD m_dwLossOfFrameTolerance; // 0x1F8A: NMT_MNCycleTiming_REC // 0x1F8A.1: WaitSoCPReq_U32 in [ns] DWORD m_dwWaitSocPreq; // 0x1F8A.2: AsyncSlotTimeout_U32 in [ns] DWORD m_dwAsyncSlotTimeout; } tEplDllConfigParam; typedef struct { unsigned int m_uiSizeOfStruct; DWORD m_dwDeviceType; // NMT_DeviceType_U32 DWORD m_dwVendorId; // NMT_IdentityObject_REC.VendorId_U32 DWORD m_dwProductCode; // NMT_IdentityObject_REC.ProductCode_U32 DWORD m_dwRevisionNumber; // NMT_IdentityObject_REC.RevisionNo_U32 DWORD m_dwSerialNumber; // NMT_IdentityObject_REC.SerialNo_U32 QWORD m_qwVendorSpecificExt1; DWORD m_dwVerifyConfigurationDate; // CFM_VerifyConfiguration_REC.ConfDate_U32 DWORD m_dwVerifyConfigurationTime; // CFM_VerifyConfiguration_REC.ConfTime_U32 DWORD m_dwApplicationSwDate; // PDL_LocVerApplSw_REC.ApplSwDate_U32 on programmable device or date portion of NMT_ManufactSwVers_VS on non-programmable device DWORD m_dwApplicationSwTime; // PDL_LocVerApplSw_REC.ApplSwTime_U32 on programmable device or time portion of NMT_ManufactSwVers_VS on non-programmable device DWORD m_dwIpAddress; DWORD m_dwSubnetMask; DWORD m_dwDefaultGateway; BYTE m_sHostname[32]; BYTE m_abVendorSpecificExt2[48]; } tEplDllIdentParam; typedef struct { unsigned int m_uiNodeId; WORD m_wPreqPayloadLimit; // object 0x1F8B: NMT_MNPReqPayloadLimitList_AU16 WORD m_wPresPayloadLimit; // object 0x1F8D: NMT_PResPayloadLimitList_AU16 DWORD m_dwPresTimeout; // object 0x1F92: NMT_MNCNPResTimeout_AU32 } tEplDllNodeInfo; //--------------------------------------------------------------------------- // function prototypes //--------------------------------------------------------------------------- #endif // #ifndef _EPL_DLL_H_