宣告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...