版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
..[電話薄]詳細(xì)設(shè)計(jì)說明書[MTK-M3項(xiàng)目組]2005年5月6日'...更正歷史3整體結(jié)構(gòu)及功能描述4重點(diǎn)數(shù)據(jù)結(jié)構(gòu)說明4主要儲(chǔ)藏分配7各子模塊實(shí)現(xiàn)及主要算法說明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)說明14相關(guān)文檔文件17'...更正歷史時(shí)間更正人版本更正內(nèi)容2005-5-6付林海1.0創(chuàng)辦初始版本'...整體結(jié)構(gòu)及功能描述電話簿的設(shè)計(jì)從總的層次上來說能夠分成兩個(gè)部分,上層(MMI層)和底層(L4層)。上層是人機(jī)界面層,基層是與L4層相關(guān),比方讀取SIM卡中電話記錄,向SIM卡中增添記錄等,上基層之間經(jīng)過發(fā)信息來進(jìn)行通訊。電話簿功能有:快速查找(利用快速查找算法)、按姓名查找(可實(shí)現(xiàn)按號(hào)碼,首字母等查找)、增添電話記錄、復(fù)制、刪除、編寫、群組、其余號(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)記讀取電話簿的開始,正在讀取中和讀取達(dá)成。)重點(diǎn)數(shù)據(jù)結(jié)構(gòu)說明typedefstruct{//Globalvariables-Keepphonebookstateflag.BOOLphb_ready;/*標(biāo)記電話簿有沒有初始化,如沒有初始化的話,*電話簿大多數(shù)功能是不能夠使用的,初始化是在*開機(jī)時(shí)做的*/BOOLprocessing;/*可否正在辦理*/BOOLnvram_data_init;/*標(biāo)記儲(chǔ)藏在NVRAM里面的參數(shù)有沒有調(diào)入內(nèi)存*/U8refresh_list;U16start_scr_id;U16end_scr_id;U8sim_name_len;/*sim卡上電話的名字長度*/U8fdn_name_len;/*固定撥號(hào)電話的名字長度*/U8bdn_name_len;U8owner_name_len;/*本機(jī)號(hào)碼的電話長度*/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è)變量用于群組編寫的時(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;/*查找的種類,初始化為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í)候,從電話簿里面讀出來的記錄就儲(chǔ)藏在該數(shù)組中,sim卡上的電話簿從下標(biāo)為MAX_PB_PHONE_ENTRIES的數(shù)組元素開始,儲(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;/*名字的長度*/U8name_dcs;/*名字的編碼種類*/U8name[(MAX_PB_NAME_LENGTH+1)*ENCODING_LENGTH];/*姓名*/}MMI_PHB_NAME_STRUCT;typedefstruct{U8type;U8length;/*電話號(hào)碼長度*//*用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)碼編寫時(shí),用于保存儲(chǔ)藏在sim卡上的緊迫號(hào)碼,這些號(hào)碼是不行編寫的。進(jìn)入本機(jī)號(hào)碼編寫時(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)及主要算法說明初始化初始化過程,在手機(jī)啟動(dòng)時(shí),它的L4層會(huì)給MMI層發(fā)送一些信息,第一是PRT_PHB_STARTUP_BEGIN_IND信息,收到這個(gè)信息,表示正在啟動(dòng)電話本功能,這時(shí)候把g_phb_cntx.phb_ready設(shè)為否定,表示還沒好。接著手機(jī)L4層給MMI層發(fā)一條讀取電話本記錄的通知信息PRT_PHB_STARTUP_READ_IND,讓MMI去讀取電話本記錄,在這里有函數(shù)mmi_phb_ind_startup_read對這個(gè)信息進(jìn)行相應(yīng),而且讀完一條后MMI發(fā)信息給L4層要求持續(xù)發(fā)下一條記錄,收到下一條后仍是用同一函數(shù)辦理,這樣能夠不停的循環(huán),把電話本中的記錄完整讀取。在讀取過程中每讀取一條記錄就把記錄保存在phonebook數(shù)組中,注意:這里我們可用g_phb_name_index全局?jǐn)?shù)組作為一個(gè)索引,里面保存phonebook各個(gè)成員所在的地址,這樣能夠比較簡單的進(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ù),名字的最大長度等,還有讀取nvram中的各種信息,用來達(dá)成'...g_phb_cntx的各個(gè)數(shù)據(jù)項(xiàng)的賦值,比方電話本的群組信息,電話記錄中除手機(jī)號(hào)和姓名外可選的其余項(xiàng),保存的地址等。爾后依據(jù)排序方式來進(jìn)行排序。排序算法,依據(jù)折半查找的方法,在排序好后不需要改變記錄的地址,只需要把索引g_phb_name_index中的記錄的下標(biāo)地址交換既可。排序的函數(shù)結(jié)構(gòu)方式能夠這樣:做一個(gè)通用的排序算法函數(shù),此函數(shù)需要一個(gè)比較函數(shù)作為參數(shù)來對各個(gè)需要排序的成員進(jìn)行大小比較,這樣要依據(jù)不同樣的方式來排序的話,只需要改變這個(gè)比較函數(shù)就可以。很簡單實(shí)現(xiàn)算法的重用。接下來是讀取固定撥號(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)行辦理,若是沒有讀取完,則繼續(xù)發(fā)送信息央求讀取固定撥號(hào)。爾后讀取快速撥號(hào),先從NVRAM里面讀取快速撥號(hào)的號(hào)碼,爾后發(fā)信息PRT_PHB_GET_ENTRY_BY_INDEX請REQ求獲得快速撥號(hào)的索引,L4層回傳信息PRT_PHB_GET_ENTRY_BY_INDEX作RSP為響應(yīng),MMI層調(diào)用函數(shù)PhbGetSpeedDialPhbIndexRsp進(jìn)行辦理。mmi_phb_init是達(dá)成對菜單的設(shè)置,使每一菜單對應(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)入輸入姓名界面,輸入姓名后,用戶選擇查找,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è)置盤問狀態(tài):在初始化的時(shí)候設(shè)置了g_phb_cntx這個(gè)結(jié)構(gòu)體,盤問的時(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ù)寫入到NVRAM中,'...其余號(hào)碼緊迫號(hào)碼緊迫號(hào)碼保存在sim卡和NVRAM中,sim卡中的緊迫號(hào)碼是不行編寫的,NVRAM中的號(hào)碼是可編寫的,進(jìn)入編寫界面只漂亮到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顯示界面。編寫本機(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)'...清單。編寫的時(shí)候,先從電話簿獲得新號(hào)碼,爾后將整個(gè)speedDialTable這個(gè)數(shù)組寫到NVRAM_EF_PHONEBOOK_SPEEDDIAL_LID儲(chǔ)藏單元中。刪除的時(shí)候,先將選中項(xiàng)對應(yīng)得快速撥號(hào)號(hào)碼清空,爾后將speedDialTable這個(gè)爾后將整個(gè)speedDialTable這個(gè)數(shù)組寫到NVRAM_EF_PHONEBOOK_SPEEDDIAL_LID儲(chǔ)藏單元中。群組第一從NVRAM中讀取NVRAM_EF_PHB_CALLER_GROUPS_LID參數(shù),爾后list顯示各個(gè)群組,當(dāng)用戶選擇此中一個(gè)群組時(shí)進(jìn)入對應(yīng)群組的編寫界面,在該界面,如用戶選擇群組成員,則進(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)前選中的群組,爾后寫入到NVRAM中。刪除時(shí)調(diào)用mmi_phb_callergroup_member_delete_member,在該函數(shù)中,先要將NVRAM_EF_PHB_IDS_LID單元里的數(shù)據(jù)提取到PhbOptIDs中,爾后將相應(yīng)的數(shù)組元素的callerID置為0,爾后寫入到NVRAM中。刪除所有刪除所有電話號(hào)碼,先是檢查有沒有電話鎖,若是設(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年中國小型加油機(jī)市場調(diào)查研究報(bào)告
- 上海工商外國語職業(yè)學(xué)院《多媒體信息處理與應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 學(xué)習(xí)小學(xué)語文中的詩歌和故事
- 幼兒交通標(biāo)志課程設(shè)計(jì)
- 機(jī)械設(shè)計(jì)基礎(chǔ)課件 模塊12 機(jī)械潤滑和密封簡介
- 睡眠健康專題研究報(bào)告
- 我們愛地球主題課程設(shè)計(jì)
- 微型燃燒器課程設(shè)計(jì)
- 早教手指玩偶課程設(shè)計(jì)
- 人工智能賦能音樂鑒賞課程面臨的挑戰(zhàn)與應(yīng)對策略
- 護(hù)理質(zhì)控輸液查對制度
- 2024三方物流園區(qū)租賃與運(yùn)營管理合同3篇
- 【MOOC】例解宏觀經(jīng)濟(jì)統(tǒng)計(jì)學(xué)-江西財(cái)經(jīng)大學(xué) 中國大學(xué)慕課MOOC答案
- 《中國的土地政策》課件
- 【MOOC】電工學(xué)-西北工業(yè)大學(xué) 中國大學(xué)慕課MOOC答案
- 專題12 簡·愛-2024年中考語文復(fù)習(xí)文學(xué)名著必考篇目分層訓(xùn)練(原卷版)
- 【高考語文】2024年全國高考新課標(biāo)I卷-語文試題評講
- 客戶滿意度論文開題報(bào)告
- 2024-2025學(xué)年八年級(jí)上冊歷史期末復(fù)習(xí)選擇題(解題指導(dǎo)+專項(xiàng)練習(xí))原卷版
- 課桌椅人體工程學(xué)
- 中石油系統(tǒng)員工安全培訓(xùn)
評論
0/150
提交評論