📄 uem_main.c
字号:
*****************************************************************************/
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 + -