Пример #1
0
static HI_S32 AI_ProcessCmd(struct file *file, HI_U32 cmd, HI_VOID *arg)
{
    HI_S32 Ret = HI_SUCCESS;
    HI_HANDLE hHandle = HI_INVALID_HANDLE;
    
    switch(cmd)
    {
        case CMD_AI_GEtDEFAULTATTR:
        {
            AI_GetDfAttr_Param_S_PTR pstAiDfAttr = (AI_GetDfAttr_Param_S_PTR)arg;            
            Ret = AI_GetDefaultAttr(pstAiDfAttr->enAiPort, &pstAiDfAttr->stAttr);
            break;
        }
        case CMD_AI_CREATE:
        {
            AI_Create_Param_S_PTR pstAi =  (AI_Create_Param_S_PTR)arg;
                
            if (HI_SUCCESS == AI_AllocHandle(&hHandle))
            {
                Ret = AI_Create(pstAi, hHandle, file);
                
                if (HI_SUCCESS != Ret)
                {
                    AI_FreeHandle(hHandle);
                    break;
                }
                
                pstAi->hAi = hHandle;
            }
            else
            {
                Ret = HI_FAILURE;
            }
            break;
        }
        case CMD_AI_DESTROY:
        {
            HI_HANDLE hAi = *(HI_HANDLE *)arg;
            CHECK_AI_CHN_OPEN(hAi);

            Ret = AI_Destory(hAi);
            if (HI_SUCCESS != Ret)
            {
                break;
            }
            
            AI_FreeHandle(hAi);
            break;
        }
        case CMD_AI_SETENABLE:
        {
            AI_Enable_Param_S_PTR pstAiEnable = (AI_Enable_Param_S_PTR)arg;
            
            CHECK_AI_CHN_OPEN(pstAiEnable->hAi);
                        
            Ret = AI_SetEnable(pstAiEnable->hAi, pstAiEnable->bAiEnable);
            break;
        }
        
        case CMD_AI_ACQUIREFRAME:
        {
            AI_Frame_Param_S_PTR pstAiFrame = (AI_Frame_Param_S_PTR)arg;
            
            CHECK_AI_CHN_OPEN(pstAiFrame->hAi);

            Ret = AI_AcquireFrame(pstAiFrame->hAi, &pstAiFrame->stAiFrame);
            break;
        }
        
        case CMD_AI_RELEASEFRAME:
        {
            AI_Frame_Param_S_PTR pstAiFrame = (AI_Frame_Param_S_PTR)arg;

            CHECK_AI_CHN_OPEN(pstAiFrame->hAi);

            Ret = AI_ReleaseFrame(pstAiFrame->hAi, &pstAiFrame->stAiFrame);
            break;
        }
        
        case CMD_AI_SETATTR:
        {
            AI_Attr_Param_S_PTR pstAiAttr = (AI_Attr_Param_S_PTR)arg;

            CHECK_AI_CHN_OPEN(pstAiAttr->hAi);

            Ret = AI_SetAttr(pstAiAttr->hAi, &pstAiAttr->stAttr);
            break;
        }
        
        case CMD_AI_GETATTR:
        {
            AI_Attr_Param_S_PTR pstAiAttr = (AI_Attr_Param_S_PTR)arg;

            CHECK_AI_CHN_OPEN(pstAiAttr->hAi);

            Ret = AI_GetAttr(pstAiAttr->hAi, &pstAiAttr->stAttr);
            break;
        }
        
        case CMD_AI_GETBUFINFO:
        {
            AI_Buf_Param_S_PTR pstAiBufInfo = (AI_Buf_Param_S_PTR)arg;

            CHECK_AI_CHN_OPEN(pstAiBufInfo->hAi);

            Ret = AI_GetAiBufInfo(pstAiBufInfo->hAi, &pstAiBufInfo->stAiBuf);
            break;
        }
        
        case CMD_AI_SETBUFINFO:
        {
            AI_Buf_Param_S_PTR pstAiBufInfo = (AI_Buf_Param_S_PTR)arg;

            CHECK_AI_CHN_OPEN(pstAiBufInfo->hAi);

            Ret = AI_SetAiBufInfo(pstAiBufInfo->hAi, &pstAiBufInfo->stAiBuf);
            break;
        }
        
        default:
        {
            Ret = HI_ERR_AI_INVALID_PARA;;
            HI_WARN_AI("unknown cmd: 0x%x\n", cmd);
            break;
        }

    }

    return Ret;

}
Пример #2
0
//--------------------------------------------------------------------------
// Module:
//  BurnInInitAnalogs
//
///   This function is responsible for initializing the analog
///   outputs and the analog inputs for Burn In testing. The analog
///   outputs are fed back into the analog inputs.
///
//--------------------------------------------------------------------------
static void BurnInInitAnalogs (void)
{

    AO_Init();

    /* Set the chart recording scaling */
    AO_SetScaling (ALOG_OUT0, HI_DAC_VOLTAGE_MV, LO_DAC_VOLTAGE_MV);
    AO_SetScaling (ALOG_OUT1, HI_DAC_VOLTAGE_MV, LO_DAC_VOLTAGE_MV);
    AO_SetScaling (ALOG_OUT2, HI_DAC_VOLTAGE_MV, LO_DAC_VOLTAGE_MV);
    AO_SetScaling (ALOG_OUT3, HI_DAC_VOLTAGE_MV, LO_DAC_VOLTAGE_MV);
    AO_SetScaling (ALOG_OUT4, HI_DAC_VOLTAGE_MV, LO_DAC_VOLTAGE_MV);
    AO_SetScaling (ALOG_OUT5, HI_DAC_VOLTAGE_MV, LO_DAC_VOLTAGE_MV);
    AO_SetScaling (ALOG_OUT6, HI_DAC_VOLTAGE_MV, LO_DAC_VOLTAGE_MV);
    AO_SetScaling (ALOG_OUT7, HI_DAC_VOLTAGE_MV, LO_DAC_VOLTAGE_MV);

    /* Set the variables for the chart recorder driver software to monitor */
    AO_SetVariable (ALOG_OUT0, &burninDAC[0], INT_16_TYPE);
    AO_SetVariable (ALOG_OUT1, &burninDAC[1], INT_16_TYPE);
    AO_SetVariable (ALOG_OUT2, &burninDAC[2], INT_16_TYPE);
    AO_SetVariable (ALOG_OUT3, &burninDAC[3], INT_16_TYPE);
    AO_SetVariable (ALOG_OUT4, &burninDAC[4], INT_16_TYPE);
    AO_SetVariable (ALOG_OUT5, &burninDAC[5], INT_16_TYPE);
    AO_SetVariable (ALOG_OUT6, &burninDAC[6], INT_16_TYPE);
    AO_SetVariable (ALOG_OUT7, &burninDAC[7], INT_16_TYPE);

    /* Enable the channels of the chart recorder */
    AO_SetEnable (ALOG_OUT0, TRUE);
    AO_SetEnable (ALOG_OUT1, TRUE);
    AO_SetEnable (ALOG_OUT2, TRUE);
    AO_SetEnable (ALOG_OUT3, TRUE);
    AO_SetEnable (ALOG_OUT4, TRUE);
    AO_SetEnable (ALOG_OUT5, TRUE);
    AO_SetEnable (ALOG_OUT6, TRUE);
    AO_SetEnable (ALOG_OUT7, TRUE);


    /* Initialize the analog inputs */
    AI_Init();

    /* Only used to test VDrive, not used in application */
    AI_SetScaleFactors (ANALOGIN_10, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        5000, 0);
    AI_SetEnable (ANALOGIN_10, TRUE);

    AI_SetScaleFactors (ANALOGIN_00, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_00, TRUE);

    AI_SetScaleFactors (ANALOGIN_01, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_01, TRUE);

    AI_SetScaleFactors (ANALOGIN_02, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_02, TRUE);

    AI_SetScaleFactors (ANALOGIN_03, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_03, TRUE);

    AI_SetScaleFactors (ANALOGIN_04, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_04, TRUE);

    AI_SetScaleFactors (ANALOGIN_05, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_05, TRUE);

    AI_SetScaleFactors (ANALOGIN_06, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_06, TRUE);

    AI_SetScaleFactors (ANALOGIN_07, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_07, TRUE);

    AI_SetScaleFactors (ANALOGIN_08, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_08, TRUE);

    AI_SetScaleFactors (ANALOGIN_09, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_09, TRUE);

    AI_SetScaleFactors (ANALOGIN_11, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_11, TRUE);

    AI_SetScaleFactors (ANALOGIN_12, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_12, TRUE);

    AI_SetScaleFactors (ANALOGIN_13, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (ANALOGIN_13, TRUE);


    AI_SetScaleFactors (BATTERY_VOLTAGE, MAX_ADC_QUANTA, MIN_ADC_QUANTA,
                        1, -1);
    AI_SetEnable (BATTERY_VOLTAGE, TRUE);


}
Пример #3
0
HI_S32 AI_DRV_Resume(PM_BASEDEV_S * pdev)
{
#if defined (HI_AI_DRV_SUSPEND_SUPPORT)    
    HI_S32 s32Ret;
    HI_U32 i;
    HI_UNF_AI_E enAiPort;
    HI_UNF_AI_ATTR_S stAiAttr;
    HI_BOOL bAlsa;
    HI_VOID *pAlsaPara;
    AI_CHANNEL_STATE_S *state = HI_NULL;
    AI_CHANNEL_STATUS_E  enAiStatus;
    
    HI_FATAL_AI("entering\n");

    s32Ret = down_interruptible(&g_AIMutex);
    
    if(0 != atomic_read(&g_AIOpenCnt))
    {
        s32Ret = HAL_AIAO_Resume();
        if(HI_SUCCESS != s32Ret)
        {
            HI_FATAL_AI("AIAO Resume fail\n");
            up(&g_AIMutex);
            return HI_FAILURE;
        }

        for(i=0; i<AI_MAX_TOTAL_NUM; i++)
        {
            if (g_pstGlobalAIRS.pstAI_ATTR_S[i])
            {
                state = g_pstGlobalAIRS.pstAI_ATTR_S[i];
                enAiPort = g_pstGlobalAIRS.pstAI_ATTR_S[i]->enAiPort;
                stAiAttr = g_pstGlobalAIRS.pstAI_ATTR_S[i]->stSndPortAttr;
                bAlsa = g_pstGlobalAIRS.pstAI_ATTR_S[i]->bAlsa;
                pAlsaPara = g_pstGlobalAIRS.pstAI_ATTR_S[i]->pAlsaPara;
                enAiStatus= state->enCurnStatus;
                #ifdef HI_ALSA_AI_SUPPORT
                if(bAlsa ==HI_TRUE)
                {                     
                     pAlsaPara= (void*)&g_stAlsaAttr;                    
                }
                #endif
                s32Ret = AI_Resume_CreateChn(enAiPort, &stAiAttr, bAlsa, pAlsaPara, state);
                
                if(HI_SUCCESS != s32Ret)
                {
                    HI_FATAL_AI("AICreateChn failed\n");
                    up(&g_AIMutex);
                    return HI_FAILURE;
                }
                
                if(AI_CHANNEL_STATUS_START == enAiStatus)
                {
                    s32Ret = AI_SetEnable(i, HI_TRUE);
                    if(HI_SUCCESS != s32Ret)
                    {
                        HI_ERR_AI("Set AI Enable failed\n");
                        up(&g_AIMutex);
                        return HI_FAILURE;
                    }                
                }
            }
        }
    }
    up(&g_AIMutex);
    HI_FATAL_AI("ok\n");
#endif
    return HI_SUCCESS;
}