Example #1
0
//---------------------------------------------------------------------------
//
// 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;

}
Example #2
0
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;

}
Example #3
0
//---------------------------------------------------------------------------
//
// 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;

}
Example #5
0
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;

}