版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
..[電話薄]詳細(xì)設(shè)計(jì)說(shuō)明書(shū)[MTK-M3項(xiàng)目組]2005年5月6日'...更正歷史3整體結(jié)構(gòu)及功能描述4重點(diǎn)數(shù)據(jù)結(jié)構(gòu)說(shuō)明4主要儲(chǔ)藏分配7各子模塊實(shí)現(xiàn)及主要算法說(shuō)明7初始化7查找8增添9list顯示電話簿的電話記錄操作9刪除9復(fù)制,搬動(dòng)10設(shè)置10其余號(hào)碼11緊迫號(hào)碼11服務(wù)電話11本機(jī)號(hào)碼12快速撥號(hào)12群組13刪除所有13復(fù)制所有13公共函數(shù)14主要信號(hào)說(shuō)明14相關(guān)文檔文件17'...更正歷史時(shí)間更正人版本更正內(nèi)容2005-5-6付林海1.0創(chuàng)辦初始版本'...整體結(jié)構(gòu)及功能描述電話簿的設(shè)計(jì)從總的層次上來(lái)說(shuō)能夠分成兩個(gè)部分,上層(MMI層)和底層(L4層)。上層是人機(jī)界面層,基層是與L4層相關(guān),比方讀取SIM卡中電話記錄,向SIM卡中增添記錄等,上基層之間經(jīng)過(guò)發(fā)信息來(lái)進(jìn)行通訊。電話簿功能有:快速查找(利用快速查找算法)、按姓名查找(可實(shí)現(xiàn)按號(hào)碼,首字母等查找)、增添電話記錄、復(fù)制、刪除、編寫(xiě)、群組、其余號(hào)碼(可設(shè)置本機(jī)號(hào)碼、服務(wù)號(hào)碼、SOS號(hào)碼)、設(shè)置功能。這些都是在MMI層中的功能,要實(shí)現(xiàn)這些功能需要向基層,即L4層發(fā)送信息,L4層收這些信息后,會(huì)向MMI層發(fā)送信息通知某些操作已經(jīng)達(dá)成(如在讀取電話簿的時(shí)候,L4層會(huì)向MMI層發(fā)送消息PRT_PHB_STARTUP_BEGIN_、INDPRT_PHB_STARTUP_READ_、INDPRT_PHB_STARTUP_FINISH_。IND分別標(biāo)記讀取電話簿的開(kāi)始,正在讀取中和讀取達(dá)成。)重點(diǎn)數(shù)據(jù)結(jié)構(gòu)說(shuō)明typedefstruct{//Globalvariables-Keepphonebookstateflag.BOOLphb_ready;/*標(biāo)記電話簿有沒(méi)有初始化,如沒(méi)有初始化的話,*電話簿大多數(shù)功能是不能夠使用的,初始化是在*開(kāi)機(jī)時(shí)做的*/BOOLprocessing;/*可否正在辦理*/BOOLnvram_data_init;/*標(biāo)記儲(chǔ)藏在NVRAM里面的參數(shù)有沒(méi)有調(diào)入內(nèi)存*/U8refresh_list;U16start_scr_id;U16end_scr_id;U8sim_name_len;/*sim卡上電話的名字長(zhǎng)度*/U8fdn_name_len;/*固定撥號(hào)電話的名字長(zhǎng)度*/U8bdn_name_len;U8owner_name_len;/*本機(jī)號(hào)碼的電話長(zhǎng)度*/U16sim_total;/*sim卡最大容量*/U16sim_used;/*已被使用的sim卡電話簿的容量*/U16phone_total;/*本機(jī)上電話簿最大容量*/U16phone_used;/*已使用的本機(jī)電話簿容量*/U16populate_count;'...U16lookup_table_count;//Pointertoglobalarrayvoid*optional_ids;void*caller_group;U16*list_filter;//SystemsettingU8prefer_storage;/*優(yōu)先儲(chǔ)藏地址*/U8view_field[MAX_PB_VIEW_FIELDS];//Indexforlistscreen.U16active_index;/*這三個(gè)變量用于群組編寫(xiě)的時(shí)候*/U16active_index_second;U16active_index_third;//Globalvariables-passingparameterbetweenfunctions.U8*number_to_dial[5];U16highlight_entry;U16new_highlight_entry;U8selected_storage;U8image_location;S32selected_pic_index;S32selected_ring_index;S32selected_grp_index;S32selected_pattern_index;S32selected_alert_index;S32selected_pic_in_view;BOOLdial_from_list;U8sort_type;/*查找的種類(lèi),初始化為MMI_PHB_SORT_PINYIN(定義了拼音查*找)或MMI_PHB_SORT_ENCODING*///InlineSelectionListU16ring_tone_list[MAX_PB_RING_TONES];U16image_id_list[MAX_PB_PICTURES_TAGS];U8*image_name_list[MAX_PB_PICTURES_TAGS];U8*ring_tone_name_list[MAX_PB_RING_TONES];U8*alert_name_list[MAX_PB_ALERT_TYPES+1];U8*led_name_list[MAX_PB_LED_PATTERNS+1];U8set_done_flag;U8total_ring_tone;U8total_image_id;U8speak_name;'...}mmi_phb_context_struct;初始化的時(shí)候,從電話簿里面讀出來(lái)的記錄就儲(chǔ)藏在該數(shù)組中,sim卡上的電話簿從下標(biāo)為MAX_PB_PHONE_ENTRIES的數(shù)組元素開(kāi)始,儲(chǔ)藏在本機(jī)電話簿后邊。typedefstruct{MMI_PHB_NUMBER_BCD_STRUCTtel;/*用bcd碼表示的電話號(hào)碼*/MMI_PHB_NAME_STRUCTalpha_id;/*姓名*/U8field;/*Indicateifanentryhasthefield*/U8dummy;/*Makesureeachphbstructureistwo-bytesaligned.*/}MMI_PHB_ENTRY_BCD_STRUCT;typedefstruct{U8name_length;/*名字的長(zhǎng)度*/U8name_dcs;/*名字的編碼種類(lèi)*/U8name[(MAX_PB_NAME_LENGTH+1)*ENCODING_LENGTH];/*姓名*/}MMI_PHB_NAME_STRUCT;typedefstruct{U8type;U8length;/*電話號(hào)碼長(zhǎng)度*//*用bcd碼表示的電話號(hào)碼*/U8number[(MAX_PB_NUMBER_LENGTH+1+1)*ENCODING_LENGTH];}MMI_PHB_NUMBER_STRUCT;//儲(chǔ)藏電話記錄的可選字段typedefstruct{U8homeNumber[MAX_PB_NUMBER_LENGTH+1+1];U8companyName[(MAX_PB_COMPANY_LENGTH+1)*ENCODING_LENGTH];U8emailAddress[MAX_PB_EMAIL_LENGTH+1];U8officeNumber[MAX_PB_NUMBER_LENGTH+1+1];U8faxNumber[MAX_PB_NUMBER_LENGTH+1+1];}PHB_OPTIONAL_FIELDS_STRUCT;typedefstruct{U16pictureTagID;U16ringToneID;U8callerGroupID;}PHB_OPTIONAL_IDS_STRUCT;'...主要儲(chǔ)藏分配/*用于保存快速撥號(hào)*/SpeedDialInfospeedDialTable[MAX_SPEED_DIAL_NUMBER];MMI_PHB_LOOKUP_NODE_STRUCTLookUpTable[MAX_PB_SIM_ENTRIES+4*MAX_PB_PHONE_ENTRIES+4];/*進(jìn)入緊迫號(hào)碼編寫(xiě)時(shí),用于保存儲(chǔ)藏在sim卡上的緊迫號(hào)碼,這些號(hào)碼是不行編寫(xiě)的。進(jìn)入本機(jī)號(hào)碼編寫(xiě)時(shí),用于保存儲(chǔ)藏在sim卡上的本機(jī)號(hào)碼*/staticMMI_PHB_ENTRY_STRUCTg_phb_sim_list[MAX_SIM_ENTRIES];/*儲(chǔ)藏在NVRAM里面的緊迫號(hào)碼*/staticMMI_SOS_NUMBER_STRUCTg_phb_nvram_list[MAX_NVRAM_SOS_ENTRIES];/*用于保存當(dāng)前的可選字段的狀態(tài)*/staticU8g_phb_temp_field_state[MAX_PB_VIEW_FIELDS];各子模塊實(shí)現(xiàn)及主要算法說(shuō)明初始化初始化過(guò)程,在手機(jī)啟動(dòng)時(shí),它的L4層會(huì)給MMI層發(fā)送一些信息,第一是PRT_PHB_STARTUP_BEGIN_IND信息,收到這個(gè)信息,表示正在啟動(dòng)電話本功能,這時(shí)候把g_phb_cntx.phb_ready設(shè)為否定,表示還沒(méi)好。接著手機(jī)L4層給MMI層發(fā)一條讀取電話本記錄的通知信息PRT_PHB_STARTUP_READ_IND,讓MMI去讀取電話本記錄,在這里有函數(shù)mmi_phb_ind_startup_read對(duì)這個(gè)信息進(jìn)行相應(yīng),而且讀完一條后MMI發(fā)信息給L4層要求持續(xù)發(fā)下一條記錄,收到下一條后仍是用同一函數(shù)辦理,這樣能夠不停的循環(huán),把電話本中的記錄完整讀取。在讀取過(guò)程中每讀取一條記錄就把記錄保存在phonebook數(shù)組中,注意:這里我們可用g_phb_name_index全局?jǐn)?shù)組作為一個(gè)索引,里面保存phonebook各個(gè)成員所在的地址,這樣能夠比較簡(jiǎn)單的進(jìn)行排序操作。所有記錄都發(fā)給MMI層后,當(dāng)MMI層還要讀取下一條時(shí),L4發(fā)信息PRT_PHB_STARTUP_FINISH_IND給MMI,表示讀取結(jié)束,當(dāng)收到此信息后MMI執(zhí)行函數(shù)mmi_phb_ind_startup_finish,在里面達(dá)成g_phb_cntx的各個(gè)數(shù)據(jù)項(xiàng)的賦值。比方總的記錄條數(shù),名字的最大長(zhǎng)度等,還有讀取nvram中的各種信息,用來(lái)達(dá)成'...g_phb_cntx的各個(gè)數(shù)據(jù)項(xiàng)的賦值,比方電話本的群組信息,電話記錄中除手機(jī)號(hào)和姓名外可選的其余項(xiàng),保存的地址等。爾后依據(jù)排序方式來(lái)進(jìn)行排序。排序算法,依據(jù)折半查找的方法,在排序好后不需要改變記錄的地址,只需要把索引g_phb_name_index中的記錄的下標(biāo)地址交換既可。排序的函數(shù)結(jié)構(gòu)方式能夠這樣:做一個(gè)通用的排序算法函數(shù),此函數(shù)需要一個(gè)比較函數(shù)作為參數(shù)來(lái)對(duì)各個(gè)需要排序的成員進(jìn)行大小比較,這樣要依據(jù)不同樣的方式來(lái)排序的話,只需要改變這個(gè)比較函數(shù)就可以。很簡(jiǎn)單實(shí)現(xiàn)算法的重用。接下來(lái)是讀取固定撥號(hào),先向L4層發(fā)送信息PRT_PHB_GET_ENTRY_BY_INDEX_REQ,央求讀取固定撥號(hào),L4層響應(yīng)返回信息PRT_PHB_GET_ENTRY_BY_INDEX,MMIRSP層調(diào)用函數(shù)mmi_phb_fdn_get_list_to_ram_rsp進(jìn)行辦理,若是沒(méi)有讀取完,則繼續(xù)發(fā)送信息央求讀取固定撥號(hào)。爾后讀取快速撥號(hào),先從NVRAM里面讀取快速撥號(hào)的號(hào)碼,爾后發(fā)信息PRT_PHB_GET_ENTRY_BY_INDEX請(qǐng)REQ求獲得快速撥號(hào)的索引,L4層回傳信息PRT_PHB_GET_ENTRY_BY_INDEX作RSP為響應(yīng),MMI層調(diào)用函數(shù)PhbGetSpeedDialPhbIndexRsp進(jìn)行辦理。mmi_phb_init是達(dá)成對(duì)菜單的設(shè)置,使每一菜單對(duì)應(yīng)相應(yīng)的響應(yīng)函數(shù)。它調(diào)用了函數(shù)mmi_phb_search_init( );mmi_phb_operate_single_init( );mmi_phb_operate_mass_init( );//在該函數(shù)里面除了設(shè)置菜單外還設(shè)置了信息PRT_PHB_UPDATE_IND的響應(yīng)函數(shù)mmi_phb_ind_updatemmi_phb_caller_group_init( );mmi_phb_extra_number_init( );//mmi_phb_setting_init( );PhbInitSpeedDial( );查找查找分為按姓名查找和快速查找。按姓名查找:第一調(diào)用mmi_phb_entry_search_name進(jìn)入輸入姓名界面,輸入姓名后,用戶(hù)選擇查找,MMI會(huì)先調(diào)用mmi_phb_search_name_find_closet(使用二分查找)獲得吻合條件的記錄集,若是是電話簿內(nèi)部的查找,那么調(diào)用mmi_phb_list_pre_entry函數(shù)list顯示記錄,若是是發(fā)短信時(shí)查找電話簿,左鍵響應(yīng)的函數(shù)為mmi_phb_sms_send_data_for_entry,該函數(shù)將選中的電話號(hào)碼保存到g_msg_cntx.smsPhoneNumber中??焖俨檎遥?...增添list顯示電話簿的電話記錄操作刪除'...復(fù)制,搬動(dòng)設(shè)置盤(pán)問(wèn)狀態(tài):在初始化的時(shí)候設(shè)置了g_phb_cntx這個(gè)結(jié)構(gòu)體,盤(pán)問(wèn)的時(shí)候,狀態(tài)就是從該結(jié)構(gòu)體中的sim_used和phone_used中獲得。設(shè)置優(yōu)先儲(chǔ)藏分為sim卡和NVRAM:調(diào)用函數(shù)mmi_phb_storage_location_set_req發(fā)送消息PRT_PHB_SET_PREFERRED_STORAGE_REQ通知該參數(shù)已經(jīng)改變,同時(shí)將該參數(shù)寫(xiě)入到NVRAM中,'...其余號(hào)碼緊迫號(hào)碼緊迫號(hào)碼保存在sim卡和NVRAM中,sim卡中的緊迫號(hào)碼是不行編寫(xiě)的,NVRAM中的號(hào)碼是可編寫(xiě)的,進(jìn)入編寫(xiě)界面只漂亮到NVRAM中的號(hào)碼。服務(wù)電話進(jìn)入服務(wù)電話設(shè)置前,需獲得快速撥號(hào)列表的信息,先發(fā)送信息PRT_PHB_GET_ENTRY_BY_INDEX_REQ,Type為MMI_PHB_SDNL4層收到辦理完后,發(fā)送信息PRT_PHB_GET_ENTRY_BY_INDEX_RSP通知MMI,MMI調(diào)用函數(shù)mmi_phb_sdn_get_entry_rsp,list顯示服務(wù)號(hào)碼清單。在list顯示的時(shí)候能夠撥打服務(wù)電話,相應(yīng)的函數(shù)為mmi_phb_sdn_list_make_call。'...本機(jī)號(hào)碼刪除本機(jī)號(hào)碼時(shí)先發(fā)送消息PRT_PHB_DEL_ENTRY_REQ,Type為MMI_PHB_MSISDN,L4層發(fā)信息PRT_PHB_DEL_ENTRY_RSP通知MMI號(hào)碼已刪除,MMI調(diào)用函數(shù)mmi_phb_owner_number_erase_rsp進(jìn)行辦理。爾后發(fā)送信息PRT_PHB_GET_ENTRY_BY_INDEX_REQ,type參數(shù)為MMI_PHB_MSISDN取本機(jī)號(hào)碼,L4層發(fā)送信息PRT_PHB_GET_ENTRY_BY_INDEX_RSP通知MMI辦理達(dá)成,MMI層調(diào)用函數(shù)mmi_phb_owner_number_get_entry_rsp進(jìn)入list顯示界面。編寫(xiě)本機(jī)號(hào)碼時(shí)先發(fā)送信息PRT_PHB_SET_ENTRY_。REQType為MMI_PHB_MSISDNL4層發(fā)送信息PRT_PHB_SET_ENTRY_RSP通知MMI,MMI調(diào)用函數(shù)mmi_phb_owner_number_edit_rsp發(fā)送信息PRT_PHB_GET_ENTRY_BY_INDEX_REQ,type參數(shù)為MMI_PHB_MSISDN獲得本機(jī)號(hào)碼,爾后進(jìn)入list顯示界面??焖贀芴?hào)快速撥號(hào)清單在電話簿初始化的時(shí)候已經(jīng)初始化,點(diǎn)擊該菜單直接進(jìn)入快速撥號(hào)'...清單。編寫(xiě)的時(shí)候,先從電話簿獲得新號(hào)碼,爾后將整個(gè)speedDialTable這個(gè)數(shù)組寫(xiě)到NVRAM_EF_PHONEBOOK_SPEEDDIAL_LID儲(chǔ)藏單元中。刪除的時(shí)候,先將選中項(xiàng)對(duì)應(yīng)得快速撥號(hào)號(hào)碼清空,爾后將speedDialTable這個(gè)爾后將整個(gè)speedDialTable這個(gè)數(shù)組寫(xiě)到NVRAM_EF_PHONEBOOK_SPEEDDIAL_LID儲(chǔ)藏單元中。群組第一從NVRAM中讀取NVRAM_EF_PHB_CALLER_GROUPS_LID參數(shù),爾后list顯示各個(gè)群組,當(dāng)用戶(hù)選擇此中一個(gè)群組時(shí)進(jìn)入對(duì)應(yīng)群組的編寫(xiě)界面,在該界面,如用戶(hù)選擇群組成員,則進(jìn)入增添也許刪除狀態(tài).增添時(shí)調(diào)用mmi_phb_entry_callergroup_member_list函數(shù)進(jìn)入電話選擇界面,現(xiàn)在只支持本機(jī)儲(chǔ)藏的群組,選擇一個(gè)電話號(hào)碼時(shí),先要將NVRAM_EF_PHB_IDS_LID單元里的數(shù)據(jù)提取到PhbOptIDs中,爾后將相應(yīng)的數(shù)組元素的callerID置為當(dāng)前選中的群組,爾后寫(xiě)入到NVRAM中。刪除時(shí)調(diào)用mmi_phb_callergroup_member_delete_member,在該函數(shù)中,先要將NVRAM_EF_PHB_IDS_LID單元里的數(shù)據(jù)提取到PhbOptIDs中,爾后將相應(yīng)的數(shù)組元素的callerID置為0,爾后寫(xiě)入到NVRAM中。刪除所有刪除所有電話號(hào)碼,先是檢查有沒(méi)有電話鎖,若是設(shè)置了密碼,需先輸入密碼進(jìn)行校驗(yàn),校驗(yàn)此后,調(diào)用mmi_phb_op_delete_all_pre_req函數(shù),在該函數(shù)中,先找到吻合要求的電話記錄索引,爾后向L4層發(fā)送信息PRT_PHB_DEL_ENTRY_REQ,辦理完后L4層發(fā)信息PRT_PHB_DEL_ENTRY_RSP通知MMI層,MMI調(diào)用mmi_phb_op_delete_all_one_after_one_rsp,該函數(shù)中先更新各個(gè)相關(guān)的數(shù)據(jù)結(jié)構(gòu),爾后判斷可否刪除達(dá)成,不然持續(xù)發(fā)信息PRT_PHB_DEL_ENTRY_REQ。逐條刪除是發(fā)信息PRT_PHB_DEL_ENTRY_REQ給L4層,L4層辦理達(dá)成后,發(fā)信息PRT_PHB_DEL_ENTRY_RSP通知MMI,MMI調(diào)用mmi_phb_op_delete_entry_rsp。復(fù)制所有復(fù)制所有分為從sim卡到NVRAM和NVRAM到sim卡兩種。mmi_phb_op_copy_all_one_after_one_req函數(shù)先判斷該電話記錄可否在原儲(chǔ)藏器上,直到找到一條吻合條件的記錄,爾后向L4層發(fā)送信息PRT_PHB_SET_ENTRY_REQ,L4層辦理后,會(huì)發(fā)信息PRT_PHB_SET_ENTRY_RSP通知MMI層
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年肉食材料供貨合同
- 2024發(fā)布網(wǎng)絡(luò)廣告協(xié)議
- 仿寫(xiě):高新技術(shù)產(chǎn)業(yè)合作開(kāi)發(fā)合同
- 二手設(shè)備購(gòu)銷(xiāo)合同范本示例
- 房產(chǎn)交易資金代付協(xié)議書(shū)
- 工程拆遷安置合同范本
- 2024年合同延期協(xié)議補(bǔ)充協(xié)議
- 無(wú)需擔(dān)保的施工合同范本
- 魚(yú)塘養(yǎng)殖土地租賃合同
- 2024年物業(yè)授權(quán)管理合同范本
- 壓力管道材料等級(jí)表
- 三年級(jí)數(shù)學(xué)上冊(cè) 加號(hào)、減號(hào)的來(lái)源課外拓素材 冀教版 素材
- 《狼和小羊》PPT課件.ppt
- 神明—EZflame火焰檢測(cè)系統(tǒng)
- 新《固廢法》解讀(專(zhuān)業(yè)版)
- 個(gè)人簡(jiǎn)歷求職簡(jiǎn)歷課件.ppt
- 副神經(jīng)節(jié)瘤圖文.ppt
- 業(yè)務(wù)流程繪制方法IDEF和IDEFPPT課件
- (完整版)垃圾自動(dòng)分揀機(jī)構(gòu)PLC控制畢業(yè)設(shè)計(jì).doc
- 小學(xué)四年級(jí)音樂(lè)課程標(biāo)準(zhǔn)
- 我的一次教研經(jīng)歷
評(píng)論
0/150
提交評(píng)論