| /**************************************************************************** |
| |
| (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_ |