summaryrefslogtreecommitdiff
path: root/drivers/staging/epl/EplDlluCal.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/epl/EplDlluCal.c')
-rw-r--r--drivers/staging/epl/EplDlluCal.c529
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 f96fe84c4972..000000000000
--- 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