Exemple #1
0
int main()
{
    uint8 interruptState;

    CyGlobalIntEnable; /* Enable global interrupts */
    
    EZI2C_Start(); /* Start EZI2C component */
    
    /*
    * Set up communication and initialize data buffer to CapSense data structure
    * to use Tuner application
    */
    EZI2C_EzI2CSetBuffer1(sizeof(CapSense_dsRam), sizeof(CapSense_dsRam),
                            (uint8 *)&CapSense_dsRam);

    CapSense_Start(); /* Initialize component */

    BleHandler_Init();
    Tuner_Init(BleHandler_RefreshBuffer, BleHandler_SendBuffer);

    CapSense_ScanAllWidgets(); /* Scan all widgets */

    for(;;)
    {
        /* Do this only when a scan is done */
        interruptState = CyEnterCriticalSection();
        if(CapSense_NOT_BUSY == CapSense_IsBusy())
        {
            CyExitCriticalSection(interruptState);
            CapSense_ProcessAllWidgets(); /* Process all widgets */
            Tuner_RunTuner();

            if (CapSense_IsAnyWidgetActive()) /* Scan result verification */
            {
                /* add custom tasks to execute when touch detected */
            }
            CapSense_ScanAllWidgets(); /* Start next scan */
        }
        CySysPmSleep(); /* Sleep until scan is finished */
        CyExitCriticalSection(interruptState);
    }
}
int deviceInit(config_parameters *parms, DeviceHandle *handle)
{
    static struct timespec lockStatusWaitTime;
    static struct timeval now;
    int i;
    uint32_t freqHz = parms->frequency*MHZ;
    /*Initialize tuner device*/
    if (Tuner_Init())
    {
        printf("\n%s : ERROR Tuner_Init() fail\n", __FUNCTION__);
        return -1;
    }

    // printf("%s: after Tuner_Init\n", __FUNCTION__);
    /* Register tuner status callback */
    gettimeofday(&now, NULL);
    lockStatusWaitTime.tv_sec = now.tv_sec + 10;
    if (Tuner_Register_Status_Callback(tunerStatusCallback))
    {
        printf("\n%s : ERROR Tuner_Register_Status_Callback() fail\n", __FUNCTION__);
    }
    // printf("%s: After Tuner_Register_Status_Callback(tunerStatusCallback) %u\n", __FUNCTION__, freqHz);
    /*Lock to frequency*/
    if (!Tuner_Lock_To_Frequency(freqHz, parms->bandwidth, parms->module))
    {
        printf("\n%s: INFO Tuner_Lock_To_Frequency(): %u Hz - success!\n", __FUNCTION__, freqHz);
    }
    else
    {
        printf("\n%s: ERROR Tuner_Lock_To_Frequency(): %u Hz - fail!\n", __FUNCTION__, freqHz);
        Tuner_Deinit();
        return -1;
    }
    /* Wait for tuner to lock*/
    pthread_mutex_lock(&statusMutex);
    if (ETIMEDOUT == pthread_cond_timedwait(&statusCondition, &statusMutex, &lockStatusWaitTime))
    {
        printf("\n%s:ERROR Lock timeout exceeded!\n", __FUNCTION__);
        Tuner_Deinit();
        return -1;
    }
    pthread_mutex_unlock(&statusMutex);
    //  printf("%s: Tuner locked\n", __FUNCTION__);


    if (Player_Init(&(handle->playerHandle)))
    {
        Tuner_Deinit();
        return -1;
    }
    //printf("%s: Player inited\n", __FUNCTION__);

    if (Player_Source_Open(handle->playerHandle, &(handle->sourceHandle)))
    {
        Player_Deinit(handle->playerHandle);
        Tuner_Deinit();
        return -1;
    }
    //printf("%s: Player_Source_Open\n", __FUNCTION__);

    if (Player_Stream_Create(handle->playerHandle, handle->sourceHandle, parms->vPid, parms->vType, &(handle->vStreamHandle)))
    {
        printf("%s Player_Source_Open failed", __FUNCTION__);
        Player_Source_Close(handle->playerHandle, handle->sourceHandle);
        Player_Deinit(handle->playerHandle);
        Tuner_Deinit();
        return ERROR;
    }
    if (Player_Stream_Create(handle->playerHandle, handle->sourceHandle, parms->aPid, parms->aType, &(handle->aStreamHandle)))
    {
        printf("%s Player_Source_Open failed", __FUNCTION__);
        Player_Source_Close(handle->playerHandle, handle->sourceHandle);
        Player_Deinit(handle->playerHandle);
        Tuner_Deinit();
        return ERROR;
    }
    else
    {
        printf("%s audio opened", __FUNCTION__);
    }
    //   printf("Audio %d %d \n", parms->aPid, parms->aType);
    //  printf("Video %d %d \n", parms->vPid, parms->vType);
    apid = parms->aPid;
    vpid = parms->vPid;
    //printf("%s: Player_Stream_Create\n", __FUNCTION__);
    drawTextInfo(1, vpid, apid, 1);
    drawTextInfo(1, vpid, apid, 1);
    if (initPatParsing(handle) != NO_ERROR)
    {
        return ERROR;
    }

    pmtTable = (PmtTable**) malloc(patTable->serviceInfoCount * sizeof (PmtTable*));
    for (i = 1; i < patTable->serviceInfoCount; i++)
    {
        indicator = i;
        pmtTable[i] = (PmtTable*) malloc(sizeof (PmtTable));
        pmtTable[i]->pmtHeader = (PmtHeader*) malloc(sizeof (PmtHeader));
        //  printf("pmt table %d\n", i);
        if (initPmtParsing(handle, patTable->patServiceInfoArray[i].pid) != NO_ERROR)
        {
            deviceDeInit(handle);
            return ERROR;
        }
    }
    //initEitParsing(handle);
    globHandle = handle;
    parsedTag = 1;
    return NO_ERROR;
}