⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uem_main.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 3 页
字号:
 *****************************************************************************/
kal_bool uem_init_hardware_data(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_bool ret_val = KAL_TRUE;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    /* when the last block EF nvram is reading ready, we will start to init HW environment */
    /* The audio init responsbility is change to MMI */
    /* initial RTC: Clock for one minute period, Alarm for no change */
    RTC_Config(uem_rtc_alarm_format_convert(DEVICE_AL_EN_NoChange), uem_rtc_clock_format_convert(DEVICE_TC_EN_ChkM));

    /* initial audio */
    l4cuem_set_mute_req(AUDIO_DEVICE_SPEAKER, KAL_FALSE);
    l4cuem_set_mute_req(AUDIO_DEVICE_MICROPHONE, KAL_FALSE);

#ifdef __MTK_TARGET__
    /* Initial ADC valur  */
    if (g_uem_cntx_p->adc_sche_id == 0)
    {
        g_uem_cntx_p->adc_sche_id = adc_sche_create_object(
                                        MOD_UEM,
                                        ADC_VBAT,
                                        ADC_BOOTUP_EVAL_PERIOD,
                                        (kal_uint8) ADC_BOOTUP_EVAL_COUNT,
                                        KAL_TRUE);
        /* send to the BMT task to register the callback message */
        uem_send_msg_to_bmt(MSG_ID_BMT_ADC_ADD_ITEM_REQ, g_uem_cntx_p->adc_sche_id);
    }

    /* Initial Keypad longpress/repeattime value */
    Kbd_SetLongPressTime(KPD_LONGPRESS_PERIOD);   /* ticks, in unit 10ms */
    Kbd_SetRepeatTime(KPD_REPEAT_PERIOD);         /* ticks, in unit 10ms */
#endif /* __MTK_TARGET__ */ 

    return ret_val;
}

/***************************************************************************** 
****************************************************************************** 
* UEM Unit Test Usage
******************************************************************************
******************************************************************************/
#ifdef TST_INJECTED_EVENT
/*****************************************************************************
*   Function 
*      uem_send_bmtmsg_to_uem
*   DESCRIPTION
*      send message to UEM itself for test.
*   PARAMETERS
*
*   RETURNS
*      void
*   GLOBALS AFFECTED
*****************************************************************************/


/*****************************************************************************
 * FUNCTION
 *  uem_send_bmtmsg_to_uem
 * DESCRIPTION
 *  
 * PARAMETERS
 *  msg_name        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void uem_send_bmtmsg_to_uem(kal_uint32 msg_name, ...)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint32 cause;
    va_list varpars;
    drvuem_pmic_ind_struct *pmic_ind_struct;
    bmt_adc_measure_done_conf_struct *bmd_adc_done;
    bmt_adc_measure_done_conf_struct *ilm_bmd_adc_done;
    ilm_struct *ilm_ptr = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    switch (msg_name)
    {
        case MSG_ID_BMT_ADC_MEASURE_DONE_CONF:
        {
            va_start(varpars, msg_name);
            bmd_adc_done = (bmt_adc_measure_done_conf_struct*) va_arg(varpars, kal_uint32);
            va_end(varpars);

            ilm_ptr = allocate_ilm(MOD_BMT);
            ilm_ptr->msg_id = (kal_uint16) MSG_ID_BMT_ADC_MEASURE_DONE_CONF;
            ilm_ptr->peer_buff_ptr = NULL;
            ilm_bmd_adc_done =
                bmt_adc_measure_done_conf_struct*) construct_local_para(
                                                    sizeof(bmt_adc_measure_done_conf_struct),
                                                    TD_CTRL);
            ilm_bmd_adc_done->adc_sche_id = bmd_adc_done->adc_sche_id;
            ilm_bmd_adc_done->adc_value = bmd_adc_done->adc_value;
            ilm_bmd_adc_done->volt = bmd_adc_done->volt;

            ilm_ptr->local_para_ptr = (local_para_struct*) ilm_bmd_adc_done;
            break;
        }
        case MSG_ID_DRVUEM_PMIC_IND:
        {
            va_start(varpars, msg_name);
            cause = (kal_uint32) va_arg(varpars, kal_uint32);
            va_end(varpars);

            ilm_ptr = allocate_ilm(MOD_BMT);
            ilm_ptr->msg_id = (kal_uint16) MSG_ID_DRVUEM_PMIC_IND;
            ilm_ptr->peer_buff_ptr = NULL;
            pmic_ind_struct = (drvuem_pmic_ind_struct*) construct_local_para(sizeof(drvuem_pmic_ind_struct), TD_CTRL);
            pmic_ind_struct->status = (BMT_CHR_STAT) cause;

            ilm_ptr->local_para_ptr = (local_para_struct*) pmic_ind_struct;
            break;
        }
    }
    SEND_ILM(MOD_BMT, MOD_UEM, DRIVER_PS_SAP, ilm_ptr);
    return;
}

/*****************************************************************************
*   Function 
*      uem_tst_handler
*   DESCRIPTION
*      TST event handler
*   PARAMETERS
*
*   RETURNS
*      void
*   GLOBALS AFFECTED
*****************************************************************************/


/*****************************************************************************
 * FUNCTION
 *  uem_tst_handler
 * DESCRIPTION
 *  
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
static void uem_tst_handler(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint32 msg_name;
    BMT_CHR_STAT cause;
    bmt_adc_measure_done_conf_struct bmd_adc_done;
    kal_uint8 param;
    tst_module_string_inject_struct *tst_inject = (tst_module_string_inject_struct*) ilm_ptr->local_para_ptr;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (strcmp((kal_char*) tst_inject->string, "bmt") == 0)
    {
        /* PMIC_CHARGER_IN,     Charger plug in, BMT_CHARGER_IN */
        msg_name = MSG_ID_DRVUEM_PMIC_IND;
        uem_send_bmtmsg_to_uem(msg_name, tst_inject->index);
    }
    else if (strcmp((kal_char*) tst_inject->string, "chgr_bat") == 0)
    {
        /* PMIC_VBAT_STATUS,     Notify the battery voltage, BMT_VBAT_STATUS */
        msg_name = MSG_ID_BMT_ADC_MEASURE_DONE_CONF;
        bmd_adc_done.adc_sche_id = g_uem_cntx_p->adc_sche_id;
        bmd_adc_done.volt = (kal_uint32) tst_inject->index * 100000;
        bmd_adc_done.adc_value = 0.0;
        uem_send_bmtmsg_to_uem(msg_name, &bmd_adc_done);
    }
    else if (strcmp((kal_char*) tst_inject->string, "gpio_ledlcd") == 0)
    {
        if (tst_inject->index == 0)
        {
            param = LED_LIGHT_LEVEL0;
        }
        else
        {
            param = LED_LIGHT_LEVEL5;
        }

        l4cuem_gpio_set_level_req(GPIO_DEV_LED_MAINLCD, param);
    }
    else if (strcmp((kal_char*) tst_inject->string, "gpio_keyled") == 0)
    {
        if (tst_inject->index == 0)
        {
            param = LED_LIGHT_LEVEL0;
        }
        else
        {
            param = LED_LIGHT_LEVEL5;
        }

        l4cuem_gpio_set_level_req(GPIO_DEV_LED_KEY, param);
    }
    else if (strcmp((kal_char*) tst_inject->string, "gpio_statusled") == 0)
    {
        if (tst_inject->index == 0)
        {
            l4cuem_gpio_set_level_req(GPIO_DEV_LED_STATUS_1, 1);
        }
        else if (tst_inject->index == 1)
        {
            l4cuem_gpio_set_level_req(GPIO_DEV_LED_STATUS_1, 0);
        }
        else if (tst_inject->index == 2)
        {
            l4cuem_gpio_set_level_req(GPIO_DEV_LED_STATUS_2, 1);
        }
        else if (tst_inject->index == 3)
        {
            l4cuem_gpio_set_level_req(GPIO_DEV_LED_STATUS_2, 0);
        }
        else if (tst_inject->index == 4)
        {
            l4cuem_gpio_set_level_req(GPIO_DEV_LED_STATUS_3, 1);
        }
        else if (tst_inject->index == 5)
        {
            l4cuem_gpio_set_level_req(GPIO_DEV_LED_STATUS_3, 0);
        }
    }
    else if (strcmp((kal_char*) tst_inject->string, "gpio_vib") == 0)
    {
        if (tst_inject->index == 0)
        {
            param = VIBRATOR_OFF;
        }
        else
        {
            param = VIBRATOR_ON;
        }

        l4cuem_gpio_set_level_req(GPIO_DEV_VIBRATOR, param);
    }
    else if (strcmp((kal_char*) tst_inject->string, "gpio_sublcd") == 0)
    {
        if (tst_inject->index == 0)
        {
            param = LED_LIGHT_LEVEL0;
        }
        else
        {
            param = LED_LIGHT_LEVEL5;
        }

        l4cuem_gpio_set_level_req(GPIO_DEV_LED_SUBLCD, param);
    }
    else if (strcmp((kal_char*) tst_inject->string, "gpio_flash") == 0)
    {
        if (tst_inject->index == 0)
        {
            param = LED_LIGHT_LEVEL0;
        }
        else
        {
            param = LED_LIGHT_LEVEL5;
        }

        l4cuem_gpio_set_level_req(GPIO_DEV_FLASHLIGHT, param);
    }
    else if (strcmp((kal_char*) tst_inject->string, "vol") == 0)
    {
        l4cuem_audio_set_volume_req(0, tst_inject->index);
        l4cuem_audio_set_volume_req(1, tst_inject->index);
        l4cuem_audio_set_volume_req(2, tst_inject->index);
        l4cuem_audio_set_volume_req(3, tst_inject->index);
        l4cuem_audio_set_volume_req(4, tst_inject->index);
        l4cuem_audio_set_volume_req(5, tst_inject->index);
        l4cuem_audio_set_volume_req(6, tst_inject->index);
        l4cuem_audio_set_volume_req(7, tst_inject->index);
    }
    else if (strcmp((kal_char*) tst_inject->string, "pattern") == 0)
    {
        switch (tst_inject->index)
        {
            case 0:
                l4cuem_pattern_play_req(VIB_PATTERN_1, PLAY_REPEAT);
                break;
            case 1:
                l4cuem_pattern_play_req(VIB_PATTERN_2, PLAY_REPEAT);
                break;
            case 2:
                l4cuem_pattern_play_req(LED_POWER_ON, PLAY_REPEAT);
                break;
            case 3:
                l4cuem_pattern_play_req(LED_POWER_OFF, PLAY_REPEAT);
                break;
            case 4:
                l4cuem_pattern_play_req(LED_Caller1, PLAY_REPEAT);
                break;
            case 5:
                l4cuem_pattern_play_req(LCD_PATTERN_1, PLAY_REPEAT);
                break;
            case 6:
                l4cuem_pattern_play_req(LCD_PATTERN_2, PLAY_REPEAT);
                break;
        }
    }
    else if (strcmp((kal_char*) tst_inject->string, "clam") == 0)
    {
        if (tst_inject->index == 0)
        {
            l4cuem_gpio_detect_ind(EXT_DEV_CLAM_OPEN, 1);
        }
        else
        {
            l4cuem_gpio_detect_ind(EXT_DEV_CLAM_OPEN, 1);
        }
    }
    else if (strcmp((kal_char*) tst_inject->string, "usbdetect") == 0)
    {
        /* PMIC_VBAT_STATUS,     Notify the battery voltage, BMT_VBAT_STATUS */
        if (tst_inject->index == 0)
        {
            uem_send_msg_to_uem(MSG_ID_DRVUEM_USBDETECT_IND, (kal_uint32) 0);
        }
        else
        {
            uem_send_msg_to_uem(MSG_ID_DRVUEM_USBCFG_CNF, (kal_uint32) 0, (kal_uint32) 1, (kal_uint32) 0);
        }
    }
}
#endif /* TST_INJECTED_EVENT */ 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -