freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android的手機(jī)通訊協(xié)議應(yīng)用研究和實(shí)現(xiàn)-資料下載頁

2025-05-27 18:06本頁面
  

【正文】 0。建立數(shù)據(jù)鏈路通道的具體過程 如下: 1.向控制信道發(fā)送SABM數(shù)據(jù)幀,確認(rèn)控制信道建立。 2.向控制信道發(fā)送UIH數(shù)據(jù)幀,數(shù)據(jù)幀中的數(shù)據(jù)內(nèi)容為DLC 1的配置信息, 從而在處理器中注冊(cè)上第l條數(shù)據(jù)鏈路通道。 蘭州大學(xué)碩士學(xué)位論文 3.向數(shù)據(jù)鏈路通道l發(fā)送SABM數(shù)據(jù)幀,確認(rèn)數(shù)據(jù)鏈路通道已經(jīng)建立。 4.向控制信道發(fā)送UIH數(shù)據(jù)幀,數(shù)據(jù)幀中的數(shù)據(jù)內(nèi)容為DLC 2的配置信息, 從而在處理器中注冊(cè)上第2條數(shù)據(jù)鏈路通道。 5.向數(shù)據(jù)鏈路通道2發(fā)送SABM數(shù)據(jù)幀,確認(rèn)數(shù)據(jù)鏈路通道已經(jīng)建立。 6.向控制信道發(fā)送UIH數(shù)據(jù)幀,數(shù)據(jù)幀中的數(shù)據(jù)內(nèi)容為DLC 3的配置信息, 從而在處理器中注冊(cè)上第3條數(shù)據(jù)鏈路通道。 7.向數(shù)據(jù)鏈路通道3發(fā)送SABM數(shù)據(jù)幀,確認(rèn)數(shù)據(jù)鏈路通道已經(jīng)建立。 4.2.3匯聚層信息處理 實(shí)現(xiàn)匯聚層的目的是允許數(shù)據(jù)通過多路復(fù)用控制器時(shí),保留原有的結(jié)構(gòu)或與 數(shù)據(jù)流相關(guān)的其他參數(shù)。匯聚層常見用法是在數(shù)據(jù)流中嵌入滿足V.24通訊協(xié)議 的控制信號(hào)。V.24控制信號(hào)是只有一個(gè)字節(jié)大小的數(shù)據(jù)。 因?yàn)椋郑玻词亲鳛閿?shù)據(jù)流的一部分,并且嵌入到用戶消息的數(shù)據(jù)流的頭部, 所以要在封裝數(shù)據(jù)之前,就要把V.24控制信號(hào)寫到數(shù)據(jù)流中。而當(dāng)從基帶獲取 數(shù)據(jù)幀時(shí),要先把數(shù)據(jù)內(nèi)容從數(shù)據(jù)幀中解碼出來,然后去除V.24控制信號(hào),最 后才傳輸給用戶。多路復(fù)用監(jiān)控程序數(shù)據(jù)流程如圖4.1和圖4.2所示。圖4.1 描述了數(shù)據(jù)發(fā)送的數(shù)據(jù)流程,圖4.2描述了數(shù)據(jù)接收的數(shù)據(jù)流程。 圖4.1數(shù)據(jù)發(fā)送流程 蘭州大學(xué)碩士學(xué)位論文 存儲(chǔ)數(shù)據(jù)包 圖4.2數(shù)據(jù)接收流程 在數(shù)據(jù)發(fā)送流程中,數(shù)據(jù)頭添加控制信號(hào)的操作是在多路復(fù)用監(jiān)控程序獲得 消息信息時(shí)就馬上進(jìn)行操作。在實(shí)際的實(shí)現(xiàn)中,增加一個(gè)緩存區(qū)。這個(gè)緩存區(qū)的 首個(gè)字節(jié)寫入控制信號(hào)。然后,需要把消息信息一個(gè)字節(jié)不漏的復(fù)制到新增加的 緩存區(qū)內(nèi),緊跟在控制信號(hào)之后。那么,它就是我們要發(fā)送的數(shù)據(jù)流,可以進(jìn)入 封裝階段。 在數(shù)據(jù)接收流程中,去除數(shù)據(jù)頭部信號(hào)的操作是在獲取了數(shù)據(jù)流之后再進(jìn)行 的。在實(shí)際的實(shí)現(xiàn)中,我們也增加了一個(gè)緩存區(qū),存儲(chǔ)從數(shù)據(jù)流第二個(gè)元素開始 的所有內(nèi)容。那么,這個(gè)新增的緩存區(qū)就是系統(tǒng)要接收的消息。 4.3基于多路復(fù)用的硬件抽象層 硬件抽象層與應(yīng)用程序框架層的通訊是通過無線接口層監(jiān)控程序rild完成 的。rild只是負(fù)責(zé)建立Socket通道,完成數(shù)據(jù)的傳輸。它只相當(dāng)于一座橋梁, 與多路復(fù)用無關(guān)。而硬件抽象層是與多路復(fù)用監(jiān)控程序創(chuàng)建出來的3個(gè)虛擬串口 蘭州人學(xué)碩士學(xué)位論文 直接通訊的。為此,我們需要實(shí)現(xiàn)多路復(fù)用的硬件抽象層。 虛擬串口是以設(shè)備文件的形式存在于系統(tǒng)中,名字可能為 /dev/ptsl,/dev/pts2,/dev/pts3。多路復(fù)用硬件抽象層的實(shí)現(xiàn),就是對(duì)這些設(shè) 備文件進(jìn)行打開操作,讀操作和寫操作。 為了方便操作,我們?cè)诙嗦窂?fù)用監(jiān)控程序中為這些設(shè)備文件建立了對(duì)應(yīng)的符 號(hào)連接,分別為/dev/data,/dev/urc,/dev/at。/dev/at對(duì)應(yīng)的是系統(tǒng)主要的數(shù) 據(jù)鏈路,/dev/urc對(duì)應(yīng)的是主動(dòng)上報(bào)消息的數(shù)據(jù)鏈路,/dev/data對(duì)應(yīng)的是數(shù)據(jù) 業(yè)務(wù)的數(shù)據(jù)鏈路。 首先,我們需要打開這些文件。因?yàn)槿齻€(gè)數(shù)據(jù)鏈路都是同時(shí)運(yùn)行的,所以我 們用不可阻斷的、可讀寫的方式打開這些虛擬串口設(shè)備。相關(guān)代碼如下: int int i nt fd_at=open(“/dev/at”,O__RDWR 0一NONBLOCK): fd—urc=open(“/dev/urc”,0一RDWR 1 0一NONBLOCK): fd—data=open(“/dev/data”,0一RDWR 0一NONBLOCK): 其次,我們需要解決數(shù)據(jù)讀取的問題。在硬件抽象層中,創(chuàng)建了一個(gè)不斷循 環(huán)的讀線程readerLoop0。它的作用是檢測(cè)三個(gè)數(shù)據(jù)通道文件是否被修改。如 果文件被修改,則說明,在這個(gè)數(shù)據(jù)通道中可以讀取到數(shù)據(jù)。實(shí)現(xiàn)這個(gè)過程,我 們運(yùn)用Linux的系統(tǒng)調(diào)用select[37]來完成。 最后,我們要解決寫數(shù)據(jù)的問題。 在Android原有的參考設(shè)計(jì)中,寫數(shù)據(jù)是通過at—send—command 0等多個(gè)類 似的函數(shù)來調(diào)用。但最后都是通過writel ine()把數(shù)據(jù)寫到數(shù)據(jù)鏈路通道中。而, 我們要實(shí)現(xiàn)的架構(gòu)中,AT數(shù)據(jù)鏈路通道和DATA數(shù)據(jù)鏈路通道都是可以寫數(shù)據(jù)的。 為了區(qū)分AT和DATA數(shù)據(jù)通道,我們需要在at—send—command 0以及writel ine 0 等相關(guān)函數(shù)中,增加一個(gè)可以傳遞數(shù)據(jù)鏈路通道的文件描述符的參數(shù)。 4.4通話實(shí)現(xiàn) 通話功能是手機(jī)的核心價(jià)值,是手機(jī)的身份標(biāo)記。換句話說,只有具備了通 話功能的設(shè)備才能夠稱之為手機(jī)。在我們的方案中,Android系統(tǒng)平臺(tái)是通過串 口來訪問基帶的。要真正實(shí)現(xiàn)通話,必須打通整個(gè)系統(tǒng)平臺(tái)的所有數(shù)據(jù)通道,包 括應(yīng)用程序框架與多路復(fù)用無線接口層之間的Socket通道;根據(jù)硬件特性,設(shè) 31 蘭州大學(xué)碩士學(xué)位論文 置系統(tǒng)中用到的所有串口,包括三個(gè)虛擬串口,一個(gè)與基帶通訊的實(shí)際串口。 4.4.1 Socket通訊建立 在應(yīng)用程序框架中,建立Socket客戶端,在無線接口層監(jiān)控程序rild中建 立一個(gè)Socket服務(wù)器端。相關(guān)的代碼如下: 在無線接口層監(jiān)控程序中: fd=socket—local—server (“ri ld”,0,1): socket—local—server是Android系統(tǒng)中提供的一個(gè)接口,我們應(yīng)用這個(gè)接 口通知系統(tǒng)建立一個(gè)新的socket通信通道,采用UNIX進(jìn)程通訊協(xié)議規(guī)定的地址 類型,提供TCP的支持,而且socket通道的名字被綁定為“rild"。等待socket 連線啟動(dòng)后,返回socket的文件描述符fd。 當(dāng)上層應(yīng)用提出連線時(shí),通過accept 0函數(shù)接管客戶端要求的連線,以fd 作為參數(shù)之一,成功后返回新的文件描述符socket—fd。往后的操作都是通過讀 寫這個(gè)新的文件socket—fd來完成。 在應(yīng)用程序框架層: S=new LocalSocket(): LocalSocketAddress(“rild”,O): 1=new S.connect(1): Android開放的應(yīng)用程序框架提供了上述代碼,創(chuàng)建了本地的Socket客戶 端,并發(fā)送了連接請(qǐng)求。但是在參數(shù)上我們進(jìn)行了修改,因?yàn)檫@需要與我們?cè)跓o 線接口層監(jiān)控程序中建立的服務(wù)器相匹配。 Socket通訊建立之后,就可以通過get lnputStream方法獲取無線接口層返 回的數(shù)據(jù),通過getOutputStream0.write 0方法把數(shù)據(jù)傳送給無線接口層。 4.4.2串口配置 串口通訊[38]主要是設(shè)置串口的工作模式,來控制串口的行為。關(guān)于串口的 配置,我們?cè)诙嗦窂?fù)用監(jiān)控程序中完成,每打開一個(gè)串口時(shí),就配置該串口。首 先,需要通過tcgetattr函數(shù)獲取存儲(chǔ)串口屬性設(shè)置的結(jié)構(gòu)體,然后修改結(jié)構(gòu)體 的值域,設(shè)置串口輸入輸出的波特率,最后通過tcsetattr函數(shù)保存串口屬性設(shè) 32 蘭州大學(xué)碩士學(xué)位論文 置。波特率的設(shè)置尤為重要,必須符合基帶所要求工作的波特率。只有兩者的波 特率相同,通訊才能進(jìn)行。另外,其他串口屬性的設(shè)置,會(huì)影響串口工作的效率。 這些都需要根據(jù)硬件的情況來設(shè)置。 4.4.3通話 系統(tǒng)中實(shí)現(xiàn)的通話過程存在多種通話狀態(tài),包括待機(jī)狀態(tài),來電等待,撥號(hào) 等待和通話中四種狀態(tài)。系統(tǒng)的通話狀態(tài)轉(zhuǎn)換圖如圖4.3所示,展示了各種通話 狀態(tài)之間的聯(lián)系以及狀態(tài)間相互轉(zhuǎn)換時(shí)所依賴的各種操作。 圖4.3通話狀態(tài)轉(zhuǎn)換圖 手機(jī)的初始狀態(tài)是待機(jī)狀態(tài)。當(dāng)有來電時(shí),基帶向系統(tǒng)周期性地主動(dòng)上報(bào)消 息,消息內(nèi)容是“RING”,表示有鏈接請(qǐng)求。系統(tǒng)獲得“RING"消息后,切換到 來電等待狀態(tài),并在主界面中調(diào)出來電顯示通知,等待用戶操作。用戶接聽時(shí), 應(yīng)用程序會(huì)調(diào)用acceptCall()函數(shù),多路復(fù)用無線接口層會(huì)對(duì)應(yīng)發(fā)送AT指令ATA 來應(yīng)答對(duì)方的請(qǐng)求。接聽后,通訊鏈路建立,系統(tǒng)進(jìn)入通話中狀態(tài)。用戶需要結(jié) 束通話時(shí),進(jìn)行掛斷電話的操作。此時(shí),應(yīng)用程序會(huì)調(diào)用rejectCal l()應(yīng)用程 序接口,要求底層向基帶發(fā)送AT命令ATH來結(jié)束通話過程。至此,手機(jī)重新回 到待機(jī)狀態(tài)。當(dāng)然,在來電狀態(tài)時(shí),用戶可以根據(jù)來電的信息決定接聽或者掛斷, 33 蘭州人學(xué)碩士學(xué)位論文 當(dāng)進(jìn)行掛斷電話操作時(shí),手機(jī)狀態(tài)也將回到待機(jī)狀態(tài)。 當(dāng)需要撥打電話時(shí),用戶在撥號(hào)界面輸入對(duì)方號(hào)碼,然后確認(rèn)撥出,接著應(yīng) 用程序會(huì)接管工作。它會(huì)調(diào)用dial 0應(yīng)用程序接口,把對(duì)方號(hào)碼作為參數(shù)傳輸 給多路復(fù)用無線接口層。然后,多路復(fù)用接口層會(huì)對(duì)應(yīng)的發(fā)送AT命令來進(jìn)行撥 號(hào)。例如,用戶要撥打的電話號(hào)碼是“12345678912”,對(duì)應(yīng)的AT命令是“ATD 12345678912;"。撥號(hào)操作進(jìn)行后,系統(tǒng)進(jìn)入撥號(hào)等待狀態(tài)。在等待狀態(tài)中,若 用戶需要取消通話,只要進(jìn)行掛斷操作就可以返回待機(jī)狀態(tài),取消撥號(hào)。 另外,從撥號(hào)等待狀態(tài)轉(zhuǎn)換到通話中狀態(tài),需要確定鏈路已經(jīng)鏈接成功。為 了解決這個(gè)問題,我們需要利用一種操作來獲取當(dāng)前鏈路的情況,并根據(jù)反饋信 息來確定對(duì)方是否接聽了,鏈路是否建立起來了。 在AT命令集標(biāo)準(zhǔn)協(xié)議[22]中,設(shè)定了一條AT命令一AT+CLCC,來查詢 當(dāng)前的通話狀態(tài)。若應(yīng)用該命令向基帶發(fā)送請(qǐng)求,會(huì)返回一系列的參數(shù),例如 +CLCC:l,0,3,0,0,913620848374”,129。在標(biāo)準(zhǔn)協(xié)議中,規(guī)定了這些參數(shù)的意義。 而在這些參數(shù)中,我們關(guān)注的是第三個(gè)參數(shù),它表示的是通話的狀態(tài)。表4.2 描述了CLCC查詢通話狀態(tài)的狀態(tài)字段。 表4.2 CLCC查詢通話狀態(tài)的狀態(tài)字段 通話狀態(tài) 數(shù)值表示 通話中 O 通話保留 l 撥號(hào)中 2 對(duì)方響鈴 3 來電 4 等待對(duì)方 5 在通話狀態(tài)轉(zhuǎn)換圖中,我們注意到有一種鏈接中斷的操作,可以使得手機(jī)從 來電等待狀態(tài)、撥號(hào)等待狀態(tài)以及通話中狀態(tài),切換到待機(jī)狀態(tài)。鏈接中斷,表 示當(dāng)前鏈接中發(fā)生異常致使鏈接失敗,如對(duì)方掛斷,無人接聽,不在服務(wù)區(qū),對(duì) 方關(guān)機(jī),無此號(hào)碼等等。如果存在這些狀況時(shí),基帶會(huì)主動(dòng)上報(bào)消息“NO CARRIER”,告訴系統(tǒng)鏈路已經(jīng)斷開或者鏈路不能建立。 通話狀態(tài)轉(zhuǎn)換圖描述了整個(gè)通話的過程,強(qiáng)調(diào)了各種狀態(tài)和操作的對(duì)應(yīng)關(guān) 系。而通話功能的實(shí)現(xiàn),就是每個(gè)操作與AT命令的調(diào)用關(guān)系。 4.5短信息服務(wù)實(shí)現(xiàn) 短信息服務(wù)是手機(jī)終端中的重要組成部分之一。除了通話功能外,短信息服 務(wù)也是必不可少的。短信功能擁有最廣泛的用戶群體,創(chuàng)造著巨大的產(chǎn)業(yè)價(jià)值。 蘭州大學(xué)碩士學(xué)位論文 好用的短信息功能,成為了用戶選購(gòu)手機(jī)的一個(gè)重要指標(biāo)。在短信息服務(wù)中,與 通訊相關(guān)的功能主要是接收信息,發(fā)送信息以及接收信息報(bào)告。我們主要是實(shí)現(xiàn) 這3種功能。 4.5.1發(fā)送短信息 我們分析過Android的通訊架構(gòu),而短信息服務(wù)的相關(guān)操作就分布在各個(gè)架 構(gòu)層中。圖4.4給出了短信息發(fā)送的流程圖。獲取相關(guān)信息的操作位于應(yīng)用程序 層;PDU編碼在應(yīng)用程序框架層中實(shí)現(xiàn);把信息以AT命令的格式發(fā)送出去的操 作是在多路復(fù)用無線接口層中完成。 如圖4.4所示,發(fā)送短信息的第一步是獲取相關(guān)信息,主要是短信息的目的 地址以及短信息的內(nèi)容。這些信息可以在用戶輸入信息并提出發(fā)送請(qǐng)求時(shí)獲取。 Android自帶的應(yīng)用程序中提供了這個(gè)入口。 開始 上 l l 獲取相關(guān)信息 上 mU編碼 上 卜絮敞 上 結(jié)束 圖4.4短信息發(fā)送流程圖 PDU編碼階段主要在GSM網(wǎng)絡(luò)通訊資源管理器中完成。而關(guān)于PDU的概念我 們?cè)诘诙陆榻B短信息服務(wù)的時(shí)候已經(jīng)大概提過。在此階段,我們需要依據(jù)PDU 編碼標(biāo)準(zhǔn)[25]來對(duì)數(shù)據(jù)進(jìn)行編碼。完整的PDU編碼,應(yīng)該包含短信息服務(wù)中心的 地址、短信類型、是否接收短信報(bào)告、未發(fā)送到的短信息在服務(wù)中心存儲(chǔ)的時(shí)間、 目標(biāo)地址、用戶數(shù)據(jù)的編碼方式、用戶數(shù)據(jù)長(zhǎng)度、用戶數(shù)據(jù)等信息。 短信息服務(wù)中心是短信息的中轉(zhuǎn)站,我們可以把它當(dāng)作是一臺(tái)終端設(shè)備,或 蘭州大學(xué)碩十學(xué)位論文 者是郵差,而短信息就是郵件。短信息服務(wù)中心有自己的地址,不同地方的短信 息服務(wù)中心的地址不同。我們可以通過AT命令“AT+CSCA"來獲取其地址。另 外,在我們的手機(jī)SIM卡中也可能存儲(chǔ)了短信服務(wù)中心的地址,如果是那樣的話, 短信服務(wù)中心地址可以用Ox00來替代,表示利用SIM卡上的服務(wù)中心地址。 短信息類型、是否接收短信報(bào)告、是否拒絕發(fā)送相同內(nèi)容的短信息、是否需 要回復(fù)等信息被封裝在一個(gè)8位的字段中。置0或置1刻畫了短信息的屬性。而 關(guān)于短信息的類型,我們常用到的是SMS—SUBMIT(信息發(fā)送),SMS—DELIVER(信 息接收),SMS-STATUS REPORT(短信狀態(tài)報(bào)告)。 目標(biāo)地址是短信息所要到達(dá)的地址,如對(duì)方的手機(jī)號(hào)等。緊跟目標(biāo)地址有個(gè) 協(xié)議標(biāo)識(shí)符字段,一般默認(rèn)為Ox00。而短信息在服務(wù)中心存儲(chǔ)的時(shí)間,這個(gè)字 段決定了發(fā)送失敗的短信息在短信息服務(wù)中心存儲(chǔ)的時(shí)間。在服務(wù)中心保存的信 息會(huì)進(jìn)行重新發(fā)送的操作,直到發(fā)送成功或不再存儲(chǔ)。最后,用戶數(shù)據(jù)的編碼方 式、用戶數(shù)據(jù)長(zhǎng)度、用戶數(shù)據(jù)決定了數(shù)據(jù)在PDU編碼中的表現(xiàn)方式。只有這樣, 對(duì)方才能夠運(yùn)用相應(yīng)的解碼方式來處理用戶數(shù)據(jù)。 例如我們發(fā)送一條短信息,其PDU編碼是001 1000b813126808473f40000a703 b3d90c。我們可以從中獲得的有用的信息,包括短信
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1