在MTK中新增TASK與常用函式分析

2021-05-22 11:09:44 字數 4297 閱讀 6452

宣告task的id和mod型別

在custom_config.h中custom_task_indx_type新增id

如:typedef enum custom_task_indx_type;

中的#if defined(flashlight_led_support)

indx_flashlight,

#endif

為 新加id;

在custom_module_type中新增模組型別

如:typedef enum custom_module_type;

中#if defined(flashlight_led_support)

mod_flashlight,

#endif

為 新加mod的型別;

在custom_config.c中的陣列custom_mod_task_g中把宣告的id加入:

如:custom_task_indx_type custom_mod_task_g[ max_custom_mods ] =

;在 函式custom_comp_config_tbl中新增task的實現函式和task的資訊宣告 如:,

/* indx_custom2 */

,#if defined(__miipts_task_support__)

,#endif

#if defined(__elive_support__)

,#if defined(__elive_iptv_support__) || defined(__elive_rdo_support__) 

, #endif

#endif

#if defined(__motion_sensor_support_mmi_new__)

/* indx_gsensor */

,  

#endif 

#if defined(flashlight_led_support)

/* indx_flashlight */

,#endif

#if defined(bct3288_support)

/* indx_bct3288led */

,#endif

#if  defined(__open_platform_support__)

,#if  defined(open_custom_product_qq_down_07a) && !defined(win32)

,#endif  // #if  defined(open_custom_product_qq_down_07a) && !defined(win32)

#endif  // #if  defined(__open_platform_support__)

中的#if defined(flashlight_led_support)

/* indx_flashlight */

,#endif

如果task需要與別的task互動,要使用訊息,訊息id在檔案custom_sap.h中定義, 該標頭檔案被包含在檔案stack_msgs.h中,最終合併入msg_type列舉中。

如:msg_id_custom1_custom2  =  custom_msg_code_begin,

msg_id_custom2_custom1,

#if defined(__miipts_task_support__)

msg_id_miipts_encode_req,

msg_id_miipts_encode_cnf,

msg_id_miipts_decode_req,

msg_id_miipts_decode_cnf,

#endif // __miipts_task_support__

#ifdef __elive_support__

msg_id_elive_base,

msg_id_elive_end  = msg_id_elive_base + 50,

#endif

#if defined(__allkey_eint_for_keyboard__)

msg_id_allkeyboard,

#endif

#if defined(__motion_sensor_support_mmi_new__)

msg_id_gsensor_check_start_req,

msg_id_gsensor_check_stop_req,

msg_id_gsensor_check_rotate_ind,

#endif

#if defined(flashlight_led_support)

msg_id_flashlight_play_req,

msg_id_flashlight_stop_req,

#endif

#ifdef __mmi_imap__

msg_id_imap,

#endif

#if defined(five_clam_support)

msg_id_five_clam_support,

#endif

#if defined(four_clam_support)

msg_id_four_clam_support,

#endif

#if defined(e73_two_clam_support)

msg_id_two_clam_support,

#endif

#if defined(bct3288_support)

msg_id_bct3288flashlight_leftkey_press,

msg_id_bct3288flashlight_rightkey_press,

msg_id_bct3288flashlight_upkey_press,

msg_id_bct3288flashlight_downkey_press,

msg_id_bct3288flashlight_right_rotate,

msg_id_bct3288flashlight_left_rotate,

msg_id_bct3288flashlight_***_effect,

msg_id_bct3288flashlight_stop_req,

msg_id_bct3288flashlight_rotate_cnf,

#endif

中 的#if defined(flashlight_led_support)

msg_id_flashlight_play_req,

msg_id_flashlight_stop_req,

#endif

再 看task函式的實現和呼叫:

kal_bool sc_flashlight_create(comptask_handler_struct **handle)

;*handle = (comptask_handler_struct *)&custom_handler_info;

return kal_true;

}task的處理函式,主要是獲取task的id函式kal_get_my_task_index和獲取訊息內容函式 receive_msg_ext_q:

void sc_flashlight_task_main(task_entry_struct * task_entry_ptr)

else if(current_ilm.msg_id==msg_id_flashlight_stop_req)

free_ilm( ¤t_ilm);}}

初始化函式,進入該task裡需要初始化的全域性變數等:

kal_bool sc_flashlight_init(task_indx_type indx)

訊息處理函式,主要是收到訊息的處理函式,掌握 et6204_light_play_ind的定義與使用:

void sc_et6204_play(ilm_struct *ilm_ptr)

if(play_data->type == 0xf0) 

/* else if(play_data->type == 0x02) 

*/  

else

}訊息傳送,主要是如何填充訊息和傳送函式oslmsgsendextqueue:

void  mmi_et6204_stop_display()

void mmi_et6204_start_display(kal_uint8 type,kal_uint8 play_num)

資料結構:

typedef struct  __et6204_light_play_ind

et6204_light_play_ind;

typedef enum

et6204_light_id;

在MTK中新增TASK與常用函式分析

宣告task的id和mod型別 在custom config.h中custom task indx type新增id 如 typedef enum custom task indx type 中的 if defined flashlight led support indx flashlight,e...

在MTK中新增TASK與常用函式分析

宣告task的id和mod型別 在custom config.h中custom task indx type新增id 如 typedef enum custom task indx type 中的 if defined flashlight led support indx flashlight,e...

在String中新增移動建構函式和移動賦值運算子

13.50 沒有定義析構函式 include include include include include include using namespace std class string string char c string const string string operator cons...