diff options
Diffstat (limited to 'drivers/staging/epl/EplDlluCal.c')
-rw-r--r-- | drivers/staging/epl/EplDlluCal.c | 529 |
1 files changed, 0 insertions, 529 deletions
diff --git a/drivers/staging/epl/EplDlluCal.c b/drivers/staging/epl/EplDlluCal.c deleted file mode 100644 index f96fe84..0000000 --- a/drivers/staging/epl/EplDlluCal.c +++ /dev/null @@ -1,529 +0,0 @@ -/**************************************************************************** - - (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29 - www.systec-electronic.com - - Project: openPOWERLINK - - Description: source file for DLL Communication Abstraction Layer module in EPL user part - - 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: EplDlluCal.c,v $ - - $Author: D.Krueger $ - - $Revision: 1.7 $ $Date: 2008/10/17 15:32:32 $ - - $State: Exp $ - - Build Environment: - GCC V3.4 - - ------------------------------------------------------------------------- - - Revision History: - - 2006/06/20 d.k.: start of the implementation, version 1.00 - -****************************************************************************/ - -#include "user/EplDlluCal.h" -#include "user/EplEventu.h" - -#include "EplDllCal.h" - -// include only if direct call between user- and kernelspace is enabled -#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0) -#include "kernel/EplDllkCal.h" -#endif - -#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0) - -/***************************************************************************/ -/* */ -/* */ -/* G L O B A L D E F I N I T I O N S */ -/* */ -/* */ -/***************************************************************************/ - -//--------------------------------------------------------------------------- -// const defines -//--------------------------------------------------------------------------- - -//--------------------------------------------------------------------------- -// local types -//--------------------------------------------------------------------------- - -//--------------------------------------------------------------------------- -// modul globale vars -//--------------------------------------------------------------------------- - -//--------------------------------------------------------------------------- -// local function prototypes -//--------------------------------------------------------------------------- - -/***************************************************************************/ -/* */ -/* */ -/* C L A S S EplDlluCal */ -/* */ -/* */ -/***************************************************************************/ -// -// Description: -// -// -/***************************************************************************/ - -//=========================================================================// -// // -// P R I V A T E D E F I N I T I O N S // -// // -//=========================================================================// - -//--------------------------------------------------------------------------- -// const defines -//--------------------------------------------------------------------------- - -//--------------------------------------------------------------------------- -// local types -//--------------------------------------------------------------------------- - -typedef struct { - tEplDlluCbAsnd m_apfnDlluCbAsnd[EPL_DLL_MAX_ASND_SERVICE_ID]; - -} tEplDlluCalInstance; - -//--------------------------------------------------------------------------- -// local vars -//--------------------------------------------------------------------------- - -// if no dynamic memory allocation shall be used -// define structures statically -static tEplDlluCalInstance EplDlluCalInstance_g; - -//--------------------------------------------------------------------------- -// local function prototypes -//--------------------------------------------------------------------------- - -static tEplKernel EplDlluCalSetAsndServiceIdFilter(tEplDllAsndServiceId - ServiceId_p, - tEplDllAsndFilter Filter_p); - -//=========================================================================// -// // -// P U B L I C F U N C T I O N S // -// // -//=========================================================================// - -//--------------------------------------------------------------------------- -// -// Function: EplDlluCalAddInstance() -// -// Description: add and initialize new instance of DLL CAL module -// -// Parameters: none -// -// Returns: tEplKernel = error code -// -// -// State: -// -//--------------------------------------------------------------------------- - -tEplKernel EplDlluCalAddInstance(void) -{ - tEplKernel Ret = kEplSuccessful; - - // reset instance structure - EPL_MEMSET(&EplDlluCalInstance_g, 0, sizeof(EplDlluCalInstance_g)); - - return Ret; -} - -//--------------------------------------------------------------------------- -// -// Function: EplDlluCalDelInstance() -// -// Description: deletes an instance of DLL CAL module -// -// Parameters: none -// -// Returns: tEplKernel = error code -// -// -// State: -// -//--------------------------------------------------------------------------- - -tEplKernel EplDlluCalDelInstance(void) -{ - tEplKernel Ret = kEplSuccessful; - - // reset instance structure - EPL_MEMSET(&EplDlluCalInstance_g, 0, sizeof(EplDlluCalInstance_g)); - - return Ret; -} - -//--------------------------------------------------------------------------- -// -// Function: EplDlluCalProcess -// -// Description: process the passed asynch frame -// -// Parameters: pEvent_p = event containing frame to be processed -// -// Returns: tEplKernel = error code -// -// -// State: -// -//--------------------------------------------------------------------------- - -tEplKernel EplDlluCalProcess(tEplEvent * pEvent_p) -{ - tEplKernel Ret = kEplSuccessful; - tEplMsgType MsgType; - unsigned int uiAsndServiceId; - tEplFrameInfo FrameInfo; - - if (pEvent_p->m_EventType == kEplEventTypeAsndRx) { - FrameInfo.m_pFrame = (tEplFrame *) pEvent_p->m_pArg; - FrameInfo.m_uiFrameSize = pEvent_p->m_uiSize; - // extract NetTime - FrameInfo.m_NetTime = pEvent_p->m_NetTime; - - MsgType = - (tEplMsgType) AmiGetByteFromLe(&FrameInfo.m_pFrame-> - m_le_bMessageType); - if (MsgType != kEplMsgTypeAsnd) { - Ret = kEplInvalidOperation; - goto Exit; - } - - uiAsndServiceId = - (unsigned int)AmiGetByteFromLe(&FrameInfo.m_pFrame->m_Data. - m_Asnd.m_le_bServiceId); - if (uiAsndServiceId < EPL_DLL_MAX_ASND_SERVICE_ID) { // ASnd service ID is valid - if (EplDlluCalInstance_g.m_apfnDlluCbAsnd[uiAsndServiceId] != NULL) { // handler was registered - Ret = - EplDlluCalInstance_g. - m_apfnDlluCbAsnd[uiAsndServiceId] - (&FrameInfo); - } - } - } - - Exit: - return Ret; -} - -//--------------------------------------------------------------------------- -// -// Function: EplDlluCalRegAsndService() -// -// Description: registers the specified handler for the specified -// AsndServiceId with the specified node ID filter. -// -// Parameters: ServiceId_p = ASnd Service ID -// pfnDlluCbAsnd_p = callback function -// Filter_p = node ID filter -// -// Returns: tEplKernel = error code -// -// -// State: -// -//--------------------------------------------------------------------------- - -tEplKernel EplDlluCalRegAsndService(tEplDllAsndServiceId ServiceId_p, - tEplDlluCbAsnd pfnDlluCbAsnd_p, - tEplDllAsndFilter Filter_p) -{ - tEplKernel Ret = kEplSuccessful; - - if (ServiceId_p < tabentries(EplDlluCalInstance_g.m_apfnDlluCbAsnd)) { - // memorize function pointer - EplDlluCalInstance_g.m_apfnDlluCbAsnd[ServiceId_p] = - pfnDlluCbAsnd_p; - - if (pfnDlluCbAsnd_p == NULL) { // close filter - Filter_p = kEplDllAsndFilterNone; - } - // set filter in DLL module in kernel part - Ret = EplDlluCalSetAsndServiceIdFilter(ServiceId_p, Filter_p); - - } - - return Ret; -} - -//--------------------------------------------------------------------------- -// -// Function: EplDlluCalAsyncSend() -// -// Description: sends the frame with the specified priority. -// -// Parameters: pFrameInfo_p = frame -// m_uiFrameSize does not include the -// ethernet header (14 bytes) -// Priority_p = priority -// -// Returns: tEplKernel = error code -// -// -// State: -// -//--------------------------------------------------------------------------- - -tEplKernel EplDlluCalAsyncSend(tEplFrameInfo * pFrameInfo_p, - tEplDllAsyncReqPriority Priority_p) -{ - tEplKernel Ret = kEplSuccessful; - -#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0) - pFrameInfo_p->m_uiFrameSize += 14; // add size of ethernet header - Ret = EplDllkCalAsyncSend(pFrameInfo_p, Priority_p); -#else - Ret = kEplSuccessful; -#endif - - return Ret; -} - -#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0) - -//--------------------------------------------------------------------------- -// -// Function: EplDlluCalIssueRequest() -// -// Description: issues a StatusRequest or a IdentRequest to the specified node. -// -// Parameters: Service_p = request service ID -// uiNodeId_p = node ID -// bSoaFlag1_p = flag1 for this node (transmit in SoA and PReq) -// If 0xFF this flag is ignored. -// -// Returns: tEplKernel = error code -// -// -// State: -// -//--------------------------------------------------------------------------- - -tEplKernel EplDlluCalIssueRequest(tEplDllReqServiceId Service_p, - unsigned int uiNodeId_p, u8 bSoaFlag1_p) -{ - tEplKernel Ret = kEplSuccessful; - - // add node to appropriate request queue - switch (Service_p) { - case kEplDllReqServiceIdent: - case kEplDllReqServiceStatus: - { - tEplEvent Event; - tEplDllCalIssueRequest IssueReq; - - Event.m_EventSink = kEplEventSinkDllkCal; - Event.m_EventType = kEplEventTypeDllkIssueReq; - IssueReq.m_Service = Service_p; - IssueReq.m_uiNodeId = uiNodeId_p; - IssueReq.m_bSoaFlag1 = bSoaFlag1_p; - Event.m_pArg = &IssueReq; - Event.m_uiSize = sizeof(IssueReq); - - Ret = EplEventuPost(&Event); - break; - } - - default: - { - Ret = kEplDllInvalidParam; - goto Exit; - } - } - - Exit: - return Ret; -} - -//--------------------------------------------------------------------------- -// -// Function: EplDlluCalAddNode() -// -// Description: adds the specified node to the isochronous phase. -// -// Parameters: pNodeInfo_p = pointer of node info structure -// -// Returns: tEplKernel = error code -// -// -// State: -// -//--------------------------------------------------------------------------- - -tEplKernel EplDlluCalAddNode(tEplDllNodeInfo * pNodeInfo_p) -{ - tEplKernel Ret = kEplSuccessful; - tEplEvent Event; - - Event.m_EventSink = kEplEventSinkDllkCal; - Event.m_EventType = kEplEventTypeDllkAddNode; - Event.m_pArg = pNodeInfo_p; - Event.m_uiSize = sizeof(tEplDllNodeInfo); - - Ret = EplEventuPost(&Event); - - return Ret; -} - -//--------------------------------------------------------------------------- -// -// Function: EplDlluCalDeleteNode() -// -// Description: removes the specified node from the isochronous phase. -// -// Parameters: uiNodeId_p = node ID -// -// Returns: tEplKernel = error code -// -// -// State: -// -//--------------------------------------------------------------------------- - -tEplKernel EplDlluCalDeleteNode(unsigned int uiNodeId_p) -{ - tEplKernel Ret = kEplSuccessful; - tEplEvent Event; - - Event.m_EventSink = kEplEventSinkDllkCal; - Event.m_EventType = kEplEventTypeDllkDelNode; - Event.m_pArg = &uiNodeId_p; - Event.m_uiSize = sizeof(uiNodeId_p); - - Ret = EplEventuPost(&Event); - - return Ret; -} - -//--------------------------------------------------------------------------- -// -// Function: EplDlluCalSoftDeleteNode() -// -// Description: removes the specified node softly from the isochronous phase. -// -// Parameters: uiNodeId_p = node ID -// -// Returns: tEplKernel = error code -// -// -// State: -// -//--------------------------------------------------------------------------- - -tEplKernel EplDlluCalSoftDeleteNode(unsigned int uiNodeId_p) -{ - tEplKernel Ret = kEplSuccessful; - tEplEvent Event; - - Event.m_EventSink = kEplEventSinkDllkCal; - Event.m_EventType = kEplEventTypeDllkSoftDelNode; - Event.m_pArg = &uiNodeId_p; - Event.m_uiSize = sizeof(uiNodeId_p); - - Ret = EplEventuPost(&Event); - - return Ret; -} - -#endif // (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0) - -//=========================================================================// -// // -// P R I V A T E F U N C T I O N S // -// // -//=========================================================================// - -//--------------------------------------------------------------------------- -// -// Function: EplDlluCalSetAsndServiceIdFilter() -// -// Description: forwards call to EplDllkSetAsndServiceIdFilter() in kernel part -// -// Parameters: ServiceId_p = ASnd Service ID -// Filter_p = node ID filter -// -// Returns: tEplKernel = error code -// -// -// State: -// -//--------------------------------------------------------------------------- - -static tEplKernel EplDlluCalSetAsndServiceIdFilter(tEplDllAsndServiceId - ServiceId_p, - tEplDllAsndFilter Filter_p) -{ - tEplKernel Ret = kEplSuccessful; - tEplEvent Event; - tEplDllCalAsndServiceIdFilter ServFilter; - - Event.m_EventSink = kEplEventSinkDllkCal; - Event.m_EventType = kEplEventTypeDllkServFilter; - ServFilter.m_ServiceId = ServiceId_p; - ServFilter.m_Filter = Filter_p; - Event.m_pArg = &ServFilter; - Event.m_uiSize = sizeof(ServFilter); - - Ret = EplEventuPost(&Event); - - return Ret; -} - -#endif // (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0) - -// EOF |