//--------------------------------------------------------------------------- // // 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; }
//--------------------------------------------------------------------------- // // Function: EplEventuDelInstance // // Description: function delete instance an free the bufferstructure // // // // Parameters: // // // Returns: tEpKernel = errorcode // // // State: // //--------------------------------------------------------------------------- tEplKernel PUBLIC EplEventuDelInstance() { tEplKernel Ret; #if EPL_USE_SHAREDBUFF != FALSE tShbError ShbError; #endif Ret = kEplSuccessful; #if EPL_USE_SHAREDBUFF != FALSE // 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; } #if EPL_EVENT_USE_KERNEL_QUEUE != FALSE // 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; } #endif // 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: 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; }
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; }