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
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;
}
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;

}