//--------------------------------------------------------------------------- // // Function: EplEventuAddInstance // // Description: function add one more instance // // // // Parameters: pfnApiProcessEventCb_p = function pointer for API event callback // // // Returns: tEpKernel = errorcode // // // State: // //--------------------------------------------------------------------------- tEplKernel PUBLIC EplEventuAddInstance(tEplProcessEventCb pfnApiProcessEventCb_p) { tEplKernel Ret; #if EPL_USE_SHAREDBUFF != FALSE tShbError ShbError; unsigned int fShbNewCreated; #endif Ret = kEplSuccessful; // init instance variables EplEventuInstance_g.m_pfnApiProcessEventCb = pfnApiProcessEventCb_p; #if EPL_USE_SHAREDBUFF != FALSE // 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; } #if EPL_EVENT_USE_KERNEL_QUEUE != FALSE // 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; } #endif // 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; }
tEplKernel PUBLIC EplEventkAddInstance(void) { tEplKernel Ret; #if EPL_USE_SHAREDBUFF != FALSE tShbError ShbError; unsigned int fShbNewCreated; #endif Ret = kEplSuccessful; // init instance structure #if EPL_EVENT_USE_KERNEL_QUEUE != FALSE EplEventkInstance_g.m_uiUserToKernelFullCount = 0; #endif #if EPL_USE_SHAREDBUFF != FALSE // init shared loop buffer // kernel -> user ShbError = ShbCirAllocBuffer (EPL_EVENT_SIZE_SHB_KERNEL_TO_USER, EPL_EVENT_NAME_SHB_KERNEL_TO_USER, &EplEventkInstance_g.m_pShbKernelToUserInstance, &fShbNewCreated); if(ShbError != kShbOk) { //EPL_DBGLVL_EVENTK_TRACE1("EplEventkAddInstance(): ShbCirAllocBuffer(K2U) -> 0x%X\n", ShbError); Ret = kEplNoResource; goto Exit; } #if EPL_EVENT_USE_KERNEL_QUEUE != FALSE // user -> kernel ShbError = ShbCirAllocBuffer (EPL_EVENT_SIZE_SHB_USER_TO_KERNEL, EPL_EVENT_NAME_SHB_USER_TO_KERNEL, &EplEventkInstance_g.m_pShbUserToKernelInstance, &fShbNewCreated); if(ShbError != kShbOk) { //EPL_DBGLVL_EVENTK_TRACE1("EplEventkAddInstance(): ShbCirAllocBuffer(U2K) -> 0x%X\n", ShbError); Ret = kEplNoResource; goto Exit; } // register eventhandler ShbError = ShbCirSetSignalHandlerNewData (EplEventkInstance_g.m_pShbUserToKernelInstance, EplEventkRxSignalHandlerCb, kShbPriorityHigh); if(ShbError != kShbOk) { //EPL_DBGLVL_EVENTK_TRACE1("EplEventkAddInstance(): ShbCirSetSignalHandlerNewData(U2K) -> 0x%X\n", ShbError); Ret = kEplNoResource; goto Exit; } #endif Exit: #endif return Ret; }
tEplKernel EplDllkCalAddInstance(void) { tEplKernel Ret = kEplSuccessful; #if EPL_USE_SHAREDBUFF != FALSE tShbError ShbError; unsigned int fShbNewCreated; /* ShbError = ShbCirAllocBuffer (EPL_DLLCAL_BUFFER_SIZE_RX, EPL_DLLCAL_BUFFER_ID_RX, &EplDllkCalInstance_g.m_ShbInstanceRx, &fShbNewCreated); // returns kShbOk, kShbOpenMismatch, kShbOutOfMem or kShbInvalidArg if (ShbError != kShbOk) { Ret = kEplNoResource; } */ ShbError = ShbCirAllocBuffer (EPL_DLLCAL_BUFFER_SIZE_TX_NMT, EPL_DLLCAL_BUFFER_ID_TX_NMT, &EplDllkCalInstance_g.m_ShbInstanceTxNmt, &fShbNewCreated); // returns kShbOk, kShbOpenMismatch, kShbOutOfMem or kShbInvalidArg if (ShbError != kShbOk) { Ret = kEplNoResource; } /* ShbError = ShbCirSetSignalHandlerNewData (EplDllkCalInstance_g.m_ShbInstanceTxNmt, EplDllkCalTxNmtSignalHandler, kShbPriorityNormal); // returns kShbOk, kShbAlreadySignaling or kShbInvalidArg if (ShbError != kShbOk) { Ret = kEplNoResource; } */ ShbError = ShbCirAllocBuffer (EPL_DLLCAL_BUFFER_SIZE_TX_GEN, EPL_DLLCAL_BUFFER_ID_TX_GEN, &EplDllkCalInstance_g.m_ShbInstanceTxGen, &fShbNewCreated); // returns kShbOk, kShbOpenMismatch, kShbOutOfMem or kShbInvalidArg if (ShbError != kShbOk) { Ret = kEplNoResource; } /* ShbError = ShbCirSetSignalHandlerNewData (EplDllkCalInstance_g.m_ShbInstanceTxGen, EplDllkCalTxGenSignalHandler, kShbPriorityNormal); // returns kShbOk, kShbAlreadySignaling or kShbInvalidArg if (ShbError != kShbOk) { Ret = kEplNoResource; } */ #else EplDllkCalInstance_g.m_uiFrameSizeNmt = 0; EplDllkCalInstance_g.m_uiFrameSizeGen = 0; #endif return Ret; }
tEplKernel PUBLIC EplApiProcessImageAlloc( unsigned int uiSizeProcessImageIn_p, unsigned int uiSizeProcessImageOut_p, unsigned int uiQueueEntriesLo_p, unsigned int uiQueueEntriesHi_p) { tEplKernel Ret = kEplSuccessful; tShbError ShbError; unsigned int fShbNewCreated; TRACE("%s: Alloc(%u, %u, %u, %u)\n", __func__, uiSizeProcessImageIn_p, uiSizeProcessImageOut_p, uiQueueEntriesLo_p, uiQueueEntriesHi_p); if ((EplApiProcessImageInstance_g.m_In.m_pImage != NULL) || (EplApiProcessImageInstance_g.m_Out.m_pImage != NULL)) { Ret = kEplApiPIAlreadyAllocated; goto Exit; } EplApiProcessImageInstance_g.m_In.m_pImage = EPL_MALLOC(uiSizeProcessImageIn_p); if (EplApiProcessImageInstance_g.m_In.m_pImage == NULL) { Ret = kEplApiPIOutOfMemory; goto Exit; } EPL_MEMSET(EplApiProcessImageInstance_g.m_In.m_pImage, 0, sizeof(uiSizeProcessImageIn_p)); EplApiProcessImageInstance_g.m_In.m_uiSize = uiSizeProcessImageIn_p; EplApiProcessImageInstance_g.m_Out.m_pImage = EPL_MALLOC(uiSizeProcessImageOut_p); if (EplApiProcessImageInstance_g.m_Out.m_pImage == NULL) { Ret = kEplApiPIOutOfMemory; goto Exit; } EPL_MEMSET(EplApiProcessImageInstance_g.m_Out.m_pImage, 0, sizeof(uiSizeProcessImageOut_p)); EplApiProcessImageInstance_g.m_Out.m_uiSize = uiSizeProcessImageOut_p; TRACE("%s: Alloc(%p, %u, %p, %u)\n", __func__, EplApiProcessImageInstance_g.m_In.m_pImage, EplApiProcessImageInstance_g.m_In.m_uiSize, EplApiProcessImageInstance_g.m_Out.m_pImage, EplApiProcessImageInstance_g.m_Out.m_uiSize); ShbError = ShbCirAllocBuffer (uiQueueEntriesLo_p * sizeof (tEplApiProcessImageCopyJobInt), EPL_API_PI_BUFFER_ID_LO, &EplApiProcessImageInstance_g.m_ShbInstanceJobQueueLo, &fShbNewCreated); // returns kShbOk, kShbOpenMismatch, kShbOutOfMem or kShbInvalidArg if (ShbError != kShbOk) { Ret = kEplNoResource; goto Exit; } ShbError = ShbCirAllocBuffer (uiQueueEntriesHi_p * sizeof (tEplApiProcessImageCopyJobInt), EPL_API_PI_BUFFER_ID_HI, &EplApiProcessImageInstance_g.m_ShbInstanceJobQueueHi, &fShbNewCreated); // returns kShbOk, kShbOpenMismatch, kShbOutOfMem or kShbInvalidArg if (ShbError != kShbOk) { Ret = kEplNoResource; goto Exit; } EplApiProcessImageInstance_g.m_pfnOrgCbSync = EplDllkRegSyncHandler(EplApiProcessImageCbSync); Exit: return Ret; }
tEplKernel EplEventkAddInstance(tEplSyncCb pfnCbSync_p) { tEplKernel Ret; #ifndef EPL_NO_FIFO tShbError ShbError; unsigned int fShbNewCreated; #endif Ret = kEplSuccessful; // init instance structure EplEventkInstance_g.m_uiUserToKernelFullCount = 0; // save cb-function EplEventkInstance_g.m_pfnCbSync = pfnCbSync_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, &EplEventkInstance_g. m_pShbKernelToUserInstance, &fShbNewCreated); if (ShbError != kShbOk) { EPL_DBGLVL_EVENTK_TRACE1 ("EplEventkAddInstance(): 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, &EplEventkInstance_g. m_pShbUserToKernelInstance, &fShbNewCreated); if (ShbError != kShbOk) { EPL_DBGLVL_EVENTK_TRACE1 ("EplEventkAddInstance(): ShbCirAllocBuffer(U2K) -> 0x%X\n", ShbError); Ret = kEplNoResource; goto Exit; } // register eventhandler ShbError = ShbCirSetSignalHandlerNewData(EplEventkInstance_g. m_pShbUserToKernelInstance, EplEventkRxSignalHandlerCb, kshbPriorityHigh); if (ShbError != kShbOk) { EPL_DBGLVL_EVENTK_TRACE1 ("EplEventkAddInstance(): ShbCirSetSignalHandlerNewData(U2K) -> 0x%X\n", ShbError); Ret = kEplNoResource; goto Exit; } Exit: #endif return Ret; }