summaryrefslogtreecommitdiffstats
path: root/drivers/staging/epl/EplEventu.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/epl/EplEventu.c')
-rw-r--r--drivers/staging/epl/EplEventu.c813
1 files changed, 0 insertions, 813 deletions
diff --git a/drivers/staging/epl/EplEventu.c b/drivers/staging/epl/EplEventu.c
deleted file mode 100644
index 3ae2841ad023..000000000000
--- a/drivers/staging/epl/EplEventu.c
+++ /dev/null
@@ -1,813 +0,0 @@
-/****************************************************************************
-
- (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
- www.systec-electronic.com
-
- Project: openPOWERLINK
-
- Description: source file for Epl-Userspace-Event-Modul
-
- 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: EplEventu.c,v $
-
- $Author: D.Krueger $
-
- $Revision: 1.8 $ $Date: 2008/11/17 16:40:39 $
-
- $State: Exp $
-
- Build Environment:
- GCC V3.4
-
- -------------------------------------------------------------------------
-
- Revision History:
-
- 2006/06/20 k.t.: start of the implementation
-
-****************************************************************************/
-
-#include "user/EplEventu.h"
-#include "user/EplNmtu.h"
-#include "user/EplNmtMnu.h"
-#include "user/EplSdoAsySequ.h"
-#include "user/EplDlluCal.h"
-#include "user/EplLedu.h"
-#include "Benchmark.h"
-
-#ifdef EPL_NO_FIFO
-#include "kernel/EplEventk.h"
-#else
-#include "SharedBuff.h"
-#endif
-
-/***************************************************************************/
-/* */
-/* */
-/* G L O B A L D E F I N I T I O N S */
-/* */
-/* */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// TracePoint support for realtime-debugging
-#ifdef _DBG_TRACE_POINTS_
-void TgtDbgSignalTracePoint(u8 bTracePointNumber_p);
-void TgtDbgPostTraceValue(u32 dwTraceValue_p);
-#define TGT_DBG_SIGNAL_TRACE_POINT(p) TgtDbgSignalTracePoint(p)
-#define TGT_DBG_POST_TRACE_VALUE(v) TgtDbgPostTraceValue(v)
-#else
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)
-#endif
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-#ifndef EPL_NO_FIFO
- tShbInstance m_pShbKernelToUserInstance;
- tShbInstance m_pShbUserToKernelInstance;
-#endif
- tEplProcessEventCb m_pfnApiProcessEventCb;
-
-} tEplEventuInstance;
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//#ifndef EPL_NO_FIFO
-static tEplEventuInstance EplEventuInstance_g;
-//#endif
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-#ifndef EPL_NO_FIFO
-// callback function for incomming events
-static void EplEventuRxSignalHandlerCb(tShbInstance pShbRxInstance_p,
- unsigned long ulDataSize_p);
-#endif
-
-/***************************************************************************/
-/* */
-/* */
-/* C L A S S <Epl-User-Event> */
-/* */
-/* */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-// //
-// P U B L I C F U N C T I O N S //
-// //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function: EplEventuInit
-//
-// Description: function initialize the first instance
-//
-//
-//
-// Parameters: pfnApiProcessEventCb_p = function pointer for API event callback
-//
-//
-// Returns: tEpKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplEventuInit(tEplProcessEventCb pfnApiProcessEventCb_p)
-{
- tEplKernel Ret;
-
- Ret = EplEventuAddInstance(pfnApiProcessEventCb_p);
-
- return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function: EplEventuAddInstance
-//
-// Description: function add one more instance
-//
-//
-//
-// Parameters: pfnApiProcessEventCb_p = function pointer for API event callback
-//
-//
-// Returns: tEpKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplEventuAddInstance(tEplProcessEventCb pfnApiProcessEventCb_p)
-{
- tEplKernel Ret;
-#ifndef EPL_NO_FIFO
- tShbError ShbError;
- unsigned int fShbNewCreated;
-#endif
-
- Ret = kEplSuccessful;
-
- // init instance variables
- EplEventuInstance_g.m_pfnApiProcessEventCb = pfnApiProcessEventCb_p;
-
-#ifndef EPL_NO_FIFO
- // init shared loop buffer
- // kernel -> user
- ShbError = ShbCirAllocBuffer(EPL_EVENT_SIZE_SHB_KERNEL_TO_USER,
- EPL_EVENT_NAME_SHB_KERNEL_TO_USER,
- &EplEventuInstance_g.
- m_pShbKernelToUserInstance,
- &fShbNewCreated);
- if (ShbError != kShbOk) {
- EPL_DBGLVL_EVENTK_TRACE1
- ("EplEventuAddInstance(): ShbCirAllocBuffer(K2U) -> 0x%X\n",
- ShbError);
- Ret = kEplNoResource;
- goto Exit;
- }
-
- // user -> kernel
- ShbError = ShbCirAllocBuffer(EPL_EVENT_SIZE_SHB_USER_TO_KERNEL,
- EPL_EVENT_NAME_SHB_USER_TO_KERNEL,
- &EplEventuInstance_g.
- m_pShbUserToKernelInstance,
- &fShbNewCreated);
- if (ShbError != kShbOk) {
- EPL_DBGLVL_EVENTK_TRACE1
- ("EplEventuAddInstance(): ShbCirAllocBuffer(U2K) -> 0x%X\n",
- ShbError);
- Ret = kEplNoResource;
- goto Exit;
- }
- // register eventhandler
- ShbError =
- ShbCirSetSignalHandlerNewData(EplEventuInstance_g.
- m_pShbKernelToUserInstance,
- EplEventuRxSignalHandlerCb,
- kShbPriorityNormal);
- if (ShbError != kShbOk) {
- EPL_DBGLVL_EVENTK_TRACE1
- ("EplEventuAddInstance(): ShbCirSetSignalHandlerNewData(K2U) -> 0x%X\n",
- ShbError);
- Ret = kEplNoResource;
- goto Exit;
- }
-
- Exit:
-#endif
-
- return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function: EplEventuDelInstance
-//
-// Description: function delete instance an free the bufferstructure
-//
-//
-//
-// Parameters:
-//
-//
-// Returns: tEpKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplEventuDelInstance(void)
-{
- tEplKernel Ret;
-#ifndef EPL_NO_FIFO
- tShbError ShbError;
-#endif
-
- Ret = kEplSuccessful;
-
-#ifndef EPL_NO_FIFO
- // set eventhandler to NULL
- ShbError =
- ShbCirSetSignalHandlerNewData(EplEventuInstance_g.
- m_pShbKernelToUserInstance, NULL,
- kShbPriorityNormal);
- if (ShbError != kShbOk) {
- EPL_DBGLVL_EVENTK_TRACE1
- ("EplEventuDelInstance(): ShbCirSetSignalHandlerNewData(K2U) -> 0x%X\n",
- ShbError);
- Ret = kEplNoResource;
- }
- // free buffer User -> Kernel
- ShbError =
- ShbCirReleaseBuffer(EplEventuInstance_g.m_pShbUserToKernelInstance);
- if ((ShbError != kShbOk) && (ShbError != kShbMemUsedByOtherProcs)) {
- EPL_DBGLVL_EVENTK_TRACE1
- ("EplEventuDelInstance(): ShbCirReleaseBuffer(U2K) -> 0x%X\n",
- ShbError);
- Ret = kEplNoResource;
- } else {
- EplEventuInstance_g.m_pShbUserToKernelInstance = NULL;
- }
-
- // free buffer Kernel -> User
- ShbError =
- ShbCirReleaseBuffer(EplEventuInstance_g.m_pShbKernelToUserInstance);
- if ((ShbError != kShbOk) && (ShbError != kShbMemUsedByOtherProcs)) {
- EPL_DBGLVL_EVENTK_TRACE1
- ("EplEventuDelInstance(): ShbCirReleaseBuffer(K2U) -> 0x%X\n",
- ShbError);
- Ret = kEplNoResource;
- } else {
- EplEventuInstance_g.m_pShbKernelToUserInstance = NULL;
- }
-
-#endif
-
- return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function: EplEventuProcess
-//
-// Description: Kernelthread that dispatches events in kernelspace
-//
-//
-//
-// Parameters: pEvent_p = pointer to event-structur from buffer
-//
-//
-// Returns: tEpKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplEventuProcess(tEplEvent *pEvent_p)
-{
- tEplKernel Ret;
- tEplEventSource EventSource;
-
- Ret = kEplSuccessful;
-
- // check m_EventSink
- switch (pEvent_p->m_EventSink) {
- // NMT-User-Module
- case kEplEventSinkNmtu:
- {
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
- Ret = EplNmtuProcessEvent(pEvent_p);
- if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
- EventSource = kEplEventSourceNmtu;
-
- // Error event for API layer
- EplEventuPostError(kEplEventSourceEventu,
- Ret,
- sizeof(EventSource),
- &EventSource);
- }
-#endif
- break;
- }
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
- // NMT-MN-User-Module
- case kEplEventSinkNmtMnu:
- {
- Ret = EplNmtMnuProcessEvent(pEvent_p);
- if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
- EventSource = kEplEventSourceNmtMnu;
-
- // Error event for API layer
- EplEventuPostError(kEplEventSourceEventu,
- Ret,
- sizeof(EventSource),
- &EventSource);
- }
- break;
- }
-#endif
-
-#if ((((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0) \
- || (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0))
- // events for asynchronus SDO Sequence Layer
- case kEplEventSinkSdoAsySeq:
- {
- Ret = EplSdoAsySeqProcessEvent(pEvent_p);
- if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
- EventSource = kEplEventSourceSdoAsySeq;
-
- // Error event for API layer
- EplEventuPostError(kEplEventSourceEventu,
- Ret,
- sizeof(EventSource),
- &EventSource);
- }
- break;
- }
-#endif
-
- // LED user part module
- case kEplEventSinkLedu:
- {
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_LEDU)) != 0)
- Ret = EplLeduProcessEvent(pEvent_p);
- if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
- EventSource = kEplEventSourceLedu;
-
- // Error event for API layer
- EplEventuPostError(kEplEventSourceEventu,
- Ret,
- sizeof(EventSource),
- &EventSource);
- }
-#endif
- break;
- }
-
- // event for EPL api
- case kEplEventSinkApi:
- {
- if (EplEventuInstance_g.m_pfnApiProcessEventCb != NULL) {
- Ret =
- EplEventuInstance_g.
- m_pfnApiProcessEventCb(pEvent_p);
- if ((Ret != kEplSuccessful)
- && (Ret != kEplShutdown)) {
- EventSource = kEplEventSourceEplApi;
-
- // Error event for API layer
- EplEventuPostError
- (kEplEventSourceEventu, Ret,
- sizeof(EventSource), &EventSource);
- }
- }
- break;
-
- }
-
- case kEplEventSinkDlluCal:
- {
- Ret = EplDlluCalProcess(pEvent_p);
- if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
- EventSource = kEplEventSourceDllu;
-
- // Error event for API layer
- EplEventuPostError(kEplEventSourceEventu,
- Ret,
- sizeof(EventSource),
- &EventSource);
- }
- break;
-
- }
-
- case kEplEventSinkErru:
- {
- /*
- Ret = EplErruProcess(pEvent_p);
- if ((Ret != kEplSuccessful) && (Ret != kEplShutdown))
- {
- EventSource = kEplEventSourceErru;
-
- // Error event for API layer
- EplEventuPostError(kEplEventSourceEventu,
- Ret,
- sizeof(EventSource),
- &EventSource);
- }
- */
- break;
-
- }
-
- // unknown sink
- default:
- {
- Ret = kEplEventUnknownSink;
- }
-
- } // end of switch(pEvent_p->m_EventSink)
-
- return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function: EplEventuPost
-//
-// Description: post events from userspace
-//
-//
-//
-// Parameters: pEvent_p = pointer to event-structur from buffer
-//
-//
-// Returns: tEpKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplEventuPost(tEplEvent *pEvent_p)
-{
- tEplKernel Ret;
-#ifndef EPL_NO_FIFO
- tShbError ShbError;
- tShbCirChunk ShbCirChunk;
- unsigned long ulDataSize;
- unsigned int fBufferCompleted;
-#endif
-
- Ret = kEplSuccessful;
-
-#ifndef EPL_NO_FIFO
- // 2006/08/03 d.k.: Event and argument are posted as separate chunks to the event queue.
- ulDataSize =
- sizeof(tEplEvent) +
- ((pEvent_p->m_pArg != NULL) ? pEvent_p->m_uiSize : 0);
-#endif
-
- // decide in which buffer the event have to write
- switch (pEvent_p->m_EventSink) {
- // kernelspace modules
- case kEplEventSinkSync:
- case kEplEventSinkNmtk:
- case kEplEventSinkDllk:
- case kEplEventSinkDllkCal:
- case kEplEventSinkPdok:
- case kEplEventSinkErrk:
- {
-#ifndef EPL_NO_FIFO
- // post message
- ShbError =
- ShbCirAllocDataBlock(EplEventuInstance_g.
- m_pShbUserToKernelInstance,
- &ShbCirChunk, ulDataSize);
- if (ShbError != kShbOk) {
- EPL_DBGLVL_EVENTK_TRACE1
- ("EplEventuPost(): ShbCirAllocDataBlock(U2K) -> 0x%X\n",
- ShbError);
- Ret = kEplEventPostError;
- goto Exit;
- }
- ShbError =
- ShbCirWriteDataChunk(EplEventuInstance_g.
- m_pShbUserToKernelInstance,
- &ShbCirChunk, pEvent_p,
- sizeof(tEplEvent),
- &fBufferCompleted);
- if (ShbError != kShbOk) {
- EPL_DBGLVL_EVENTK_TRACE1
- ("EplEventuPost(): ShbCirWriteDataChunk(U2K) -> 0x%X\n",
- ShbError);
- Ret = kEplEventPostError;
- goto Exit;
- }
- if (fBufferCompleted == FALSE) {
- ShbError =
- ShbCirWriteDataChunk(EplEventuInstance_g.
- m_pShbUserToKernelInstance,
- &ShbCirChunk,
- pEvent_p->m_pArg,
- (unsigned long)
- pEvent_p->m_uiSize,
- &fBufferCompleted);
- if ((ShbError != kShbOk)
- || (fBufferCompleted == FALSE)) {
- EPL_DBGLVL_EVENTK_TRACE1
- ("EplEventuPost(): ShbCirWriteDataChunk2(U2K) -> 0x%X\n",
- ShbError);
- Ret = kEplEventPostError;
- goto Exit;
- }
- }
-#else
- Ret = EplEventkProcess(pEvent_p);
-#endif
-
- break;
- }
-
- // userspace modules
- case kEplEventSinkNmtMnu:
- case kEplEventSinkNmtu:
- case kEplEventSinkSdoAsySeq:
- case kEplEventSinkApi:
- case kEplEventSinkDlluCal:
- case kEplEventSinkErru:
- case kEplEventSinkLedu:
- {
-#ifndef EPL_NO_FIFO
- // post message
- ShbError =
- ShbCirAllocDataBlock(EplEventuInstance_g.
- m_pShbKernelToUserInstance,
- &ShbCirChunk, ulDataSize);
- if (ShbError != kShbOk) {
- EPL_DBGLVL_EVENTK_TRACE1
- ("EplEventuPost(): ShbCirAllocDataBlock(K2U) -> 0x%X\n",
- ShbError);
- Ret = kEplEventPostError;
- goto Exit;
- }
- ShbError =
- ShbCirWriteDataChunk(EplEventuInstance_g.
- m_pShbKernelToUserInstance,
- &ShbCirChunk, pEvent_p,
- sizeof(tEplEvent),
- &fBufferCompleted);
- if (ShbError != kShbOk) {
- EPL_DBGLVL_EVENTK_TRACE1
- ("EplEventuPost(): ShbCirWriteDataChunk(K2U) -> 0x%X\n",
- ShbError);
- Ret = kEplEventPostError;
- goto Exit;
- }
- if (fBufferCompleted == FALSE) {
- ShbError =
- ShbCirWriteDataChunk(EplEventuInstance_g.
- m_pShbKernelToUserInstance,
- &ShbCirChunk,
- pEvent_p->m_pArg,
- (unsigned long)
- pEvent_p->m_uiSize,
- &fBufferCompleted);
- if ((ShbError != kShbOk)
- || (fBufferCompleted == FALSE)) {
- EPL_DBGLVL_EVENTK_TRACE1
- ("EplEventuPost(): ShbCirWriteDataChunk2(K2U) -> 0x%X\n",
- ShbError);
- Ret = kEplEventPostError;
- goto Exit;
- }
- }
-#else
- Ret = EplEventuProcess(pEvent_p);
-#endif
-
- break;
- }
-
- default:
- {
- Ret = kEplEventUnknownSink;
- }
-
- } // end of switch(pEvent_p->m_EventSink)
-
-#ifndef EPL_NO_FIFO
- Exit:
-#endif
- return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function: EplEventuPostError
-//
-// Description: post errorevent from userspace
-//
-//
-//
-// Parameters: EventSource_p = source-module of the errorevent
-// EplError_p = code of occured error
-// uiArgSize_p = size of the argument
-// pArg_p = pointer to the argument
-//
-//
-// Returns: tEpKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplEventuPostError(tEplEventSource EventSource_p,
- tEplKernel EplError_p,
- unsigned int uiArgSize_p, void *pArg_p)
-{
- tEplKernel Ret;
- u8 abBuffer[EPL_MAX_EVENT_ARG_SIZE];
- tEplEventError *pEventError = (tEplEventError *) abBuffer;
- tEplEvent EplEvent;
-
- Ret = kEplSuccessful;
-
- // create argument
- pEventError->m_EventSource = EventSource_p;
- pEventError->m_EplError = EplError_p;
- EPL_MEMCPY(&pEventError->m_Arg, pArg_p, uiArgSize_p);
-
- // create event
- EplEvent.m_EventType = kEplEventTypeError;
- EplEvent.m_EventSink = kEplEventSinkApi;
- EPL_MEMSET(&EplEvent.m_NetTime, 0x00, sizeof(EplEvent.m_NetTime));
- EplEvent.m_uiSize =
- (sizeof(EventSource_p) + sizeof(EplError_p) + uiArgSize_p);
- EplEvent.m_pArg = &abBuffer[0];
-
- // post errorevent
- Ret = EplEventuPost(&EplEvent);
-
- return Ret;
-}
-
-//=========================================================================//
-// //
-// P R I V A T E F U N C T I O N S //
-// //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function: EplEventuRxSignalHandlerCb()
-//
-// Description: Callback-function for evets from kernelspace
-//
-//
-//
-// Parameters: pShbRxInstance_p = Instance-pointer for buffer
-// ulDataSize_p = size of data
-//
-//
-// Returns: void
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#ifndef EPL_NO_FIFO
-static void EplEventuRxSignalHandlerCb(tShbInstance pShbRxInstance_p,
- unsigned long ulDataSize_p)
-{
- tEplEvent *pEplEvent;
- tShbError ShbError;
-//unsigned long ulBlockCount;
-//unsigned long ulDataSize;
- u8 abDataBuffer[sizeof(tEplEvent) + EPL_MAX_EVENT_ARG_SIZE];
- // d.k.: abDataBuffer contains the complete tEplEvent structure
- // and behind this the argument
-
- TGT_DBG_SIGNAL_TRACE_POINT(21);
-
-// d.k. not needed because it is already done in SharedBuff
-/* do
- {
- BENCHMARK_MOD_28_SET(1); // 4 µs until reset
- // get messagesize
- ShbError = ShbCirGetReadDataSize (pShbRxInstance_p, &ulDataSize);
- if(ShbError != kShbOk)
- {
- // error goto exit
- goto Exit;
- }
-
- BENCHMARK_MOD_28_RESET(1); // 14 µs until set
-*/
- // copy data from event queue
- ShbError = ShbCirReadDataBlock(pShbRxInstance_p,
- &abDataBuffer[0],
- sizeof(abDataBuffer), &ulDataSize_p);
- if (ShbError != kShbOk) {
- // error goto exit
- goto Exit;
- }
- // resolve the pointer to the event structure
- pEplEvent = (tEplEvent *) abDataBuffer;
- // set Datasize
- pEplEvent->m_uiSize = (ulDataSize_p - sizeof(tEplEvent));
- if (pEplEvent->m_uiSize > 0) {
- // set pointer to argument
- pEplEvent->m_pArg = &abDataBuffer[sizeof(tEplEvent)];
- } else {
- //set pointer to NULL
- pEplEvent->m_pArg = NULL;
- }
-
- BENCHMARK_MOD_28_SET(1);
- // call processfunction
- EplEventuProcess(pEplEvent);
-
- BENCHMARK_MOD_28_RESET(1);
- // read number of left messages to process
-// d.k. not needed because it is already done in SharedBuff
-/* ShbError = ShbCirGetReadBlockCount (pShbRxInstance_p, &ulBlockCount);
- if (ShbError != kShbOk)
- {
- // error goto exit
- goto Exit;
- }
- } while (ulBlockCount > 0);
-*/
- Exit:
- return;
-}
-#endif
-
-// EOF