Ejemplo n.º 1
0
Archivo: Uart.c Proyecto: levic/dektec
//-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- DtaUartInit -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
//
DtStatus  DtaUartInit(DtaUartPort* pUart, const DtFwbSerialCommCtrl* pFwbUart)
{
    pUart->m_pFwbUart = pFwbUart;
    
    DtDpcInit(&pUart->m_IntDpc, DtaUartIntDpc, TRUE);

    // Init transmitter
    DtEventInit(&pUart->m_TxEvent, TRUE);

    // Init receiver
    DtEventInit(&pUart->m_RxEvent, TRUE);

    return DT_STATUS_OK;
}
Ejemplo n.º 2
0
//.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- DtuEventsInit -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
//
// Initialised the events structure and mark the event as Initialised/InUse.
//
DtStatus  DtuEventsInit(DtuDeviceData* pDvcData)
{
    Int  i;

    for (i=0; i<MAX_NUM_FILE_HANDLES; i++)
    {
        pDvcData->m_Events[i].m_RefCount = 0;
            
        // Initialize spinlock
        DtSpinLockInit(&pDvcData->m_Events[i].m_Lock);
        DtEventInit(&pDvcData->m_Events[i].m_PendingEvent, FALSE);
    }

    return DT_STATUS_OK;
}
Ejemplo n.º 3
0
Archivo: Hdmi.c Proyecto: levic/dektec
//-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- DtaNonIpHdmiInit -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
//
DtStatus  DtaNonIpHdmiInit(DtaNonIpPort* pNonIpPort)
{
    DtaHdmi*  pHdmi = &pNonIpPort->m_HdmiRx;

    pHdmi->m_pFwbHdmiAdv7610Ctrl = &FwbHdmiAdv7610AudioSrc.HdmiAdv7610Ctrl;

    DT_RETURN_ON_ERROR(DtaI2cmInit(&pHdmi->m_I2c,
                                               &pHdmi->m_pFwbHdmiAdv7610Ctrl->I2cMaster));
    
    DtMutexInit(&pHdmi->m_StatusLock);

    // Init controller thread
    DtThreadInit(&pHdmi->m_ControlThread, DtaHdmiControllerThread, pNonIpPort);

    DtaHdmiClearStatus(&pNonIpPort->m_HdmiRx.m_Status);

    DtEventInit(&pHdmi->m_IntEvent, TRUE);

    DtDpcInit(&pHdmi->m_HandleIntDpc, DtaHdmiHandleIntDpc, TRUE);

    return DT_STATUS_OK;
}
Ejemplo n.º 4
0
//.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- DtaEventsAllocEventsObject -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
//
static DtaEvents*  DtaEventsAllocEventsObject(
    DtaDeviceData*  pDvcData,
    DtFileObject*  pFileHandle,
    UInt  EventTypeMask)
{
    DtaEvents*  pDtaEvents;

    pDtaEvents = (DtaEvents*)DtMemAllocPool(DtPoolNonPaged, sizeof(DtaEvents), DTA_TAG);
    if (pDtaEvents == NULL)
    {
        DtDbgOut(ERR, EVENTS, "Out of memory allocating DtaEvents struct");
        return NULL;
    }

    DtAtomicSet(&pDtaEvents->m_RefCount, 1);
    pDtaEvents->m_File = *pFileHandle;
    pDtaEvents->m_EventTypeMask = EventTypeMask;
    pDtaEvents->m_CancelInProgress = FALSE;
    pDtaEvents->m_NumPendingEvents = 0;
    DtEventInit(&pDtaEvents->m_PendingEvent, FALSE);
    DtSpinLockInit(&pDtaEvents->m_Lock);
    memset(&pDtaEvents->m_PendingEvents, 0, sizeof(pDtaEvents->m_PendingEvents));

    // Insert at start of list
    DtSpinLockAcquire(&pDvcData->m_EventsSpinlock);
    pDtaEvents->m_pPrev = NULL;
    pDtaEvents->m_pNext = NULL;
    if (pDvcData->m_pEvents != NULL)
    {
        pDtaEvents->m_pNext = pDvcData->m_pEvents;
        pDtaEvents->m_pNext->m_pPrev = pDtaEvents;
    }
    pDvcData->m_pEvents = pDtaEvents;
    DtSpinLockRelease(&pDvcData->m_EventsSpinlock);

    return pDtaEvents;
}