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

正文內(nèi)容

基于android的手機(jī)通訊協(xié)議應(yīng)用研究與實現(xiàn)-閱讀頁

2025-06-11 18:06本頁面
  

【正文】 19 蘭州大學(xué)碩士學(xué)位論文 號,呼叫轉(zhuǎn)移、發(fā)送短消息等。另外,在Android中,我們把基帶主動上報的消息稱 為unsolicited response,表示非請求的響應(yīng)。在這里,主動請求,主動請求的響應(yīng)消息以及非請求的響應(yīng), 都是AT命令的集合。串口回來的數(shù)據(jù), 需要從AT指令中解包,最后傳輸給上層。 通過對Android無線接口層代碼的研究,我們可以發(fā)現(xiàn)Android提供了一個 虛擬的ril。在Android的模擬器中,用到的就是這種功能。 3.3新的架構(gòu)的設(shè)計 上文提到Android在處理通話和GPRS上網(wǎng)時,會產(chǎn)生資源的沖突。 基帶作為手機(jī)設(shè)計方案中必備的關(guān)鍵部件,成本相對其他部件來}兌,比較高昂。這個方法是一定不會使用的。在Android平臺上運行的應(yīng)用程序,都可以利用現(xiàn)有的 應(yīng)用程序框架訪問網(wǎng)絡(luò)資源。我們已經(jīng)知道,使用AT命令實現(xiàn)GPRS,需要不斷的切換數(shù)據(jù)模式和命令 模式,這樣會造成數(shù)據(jù)傳輸?shù)牡托А?運用多路復(fù)用協(xié)議,虛擬出多個串口資源提供系統(tǒng)使用,這個方法比較符合 Android系統(tǒng)的需要。這兩個關(guān)鍵點的實現(xiàn)我們將在下一章節(jié)相 關(guān)的部分進(jìn)行具體分析。在接下來的部分,我將具 體分析串口多路復(fù)用協(xié)議在系統(tǒng)中的應(yīng)用。運用多路復(fù)用技術(shù),多條低速的數(shù)據(jù)流可以合并到同一條高速的通訊 信道中,以此來避免產(chǎn)生高額的器件成本。而基帶僅僅提供了一個串口讓系統(tǒng) 使用。在開發(fā)中,用戶 需要在一條物理串口接口上實現(xiàn)多個數(shù)據(jù)鏈路連接,也就是說,在系統(tǒng)中以此串 口為主,虛擬出多個虛擬串口,供上層應(yīng)用讀寫。 曰 曰 日 囂眨 目一 日一 曰=日一燃 日一 日、\ 、————————————————、-,————————————————/ 多路復(fù)用監(jiān)控程序 圖3.4串口多路復(fù)川模型 1,2,3分別表示3種不同信道中的數(shù)據(jù)流,ttySO是與基帶通訊的串口, ptsl,pts2,pts3是ttySO的虛擬串口。若數(shù)據(jù)流進(jìn)入多路復(fù)用監(jiān)控程序時,程 序會依據(jù)多路復(fù)用協(xié)議,根據(jù)數(shù)據(jù)流本身所處的信道、數(shù)據(jù)長度等信息,進(jìn)行數(shù) 據(jù)包封裝,然后通過ttySO發(fā)送給基帶,最后通過處理器中的多路復(fù)用協(xié)議棧, 傳輸?shù)剑牵樱途W(wǎng)絡(luò)中。在這個過程中, 可以發(fā)現(xiàn),多路復(fù)用的協(xié)議必須在硬件和系統(tǒng)中都得實現(xiàn)。也就是說,如果基帶不提供多路復(fù) 用的功能,在系統(tǒng)端,就算實現(xiàn)了多路復(fù)用協(xié)議,還是不能成功傳輸數(shù)據(jù)。 3.3.2多路復(fù)用無線接口層架構(gòu)設(shè)計 多路復(fù)用協(xié)議為我們提供解決GPRS數(shù)據(jù)通道和通話命令通道間沖突的方 案。根據(jù)多路復(fù)用協(xié)議以及實際硬 件基帶的特性,我們設(shè)計了新的無線接口層,稱為多路復(fù)用無線接口層。 在圖3.5中,虛線部分代表多路復(fù)用無線接口層。多路復(fù)用監(jiān)控程序?qū)崿F(xiàn)了對基帶通訊接口的虛擬化,產(chǎn)生了3個虛擬串口, 即AT、URC、DATA。所有在多路復(fù)用監(jiān)控程序中進(jìn)行傳輸?shù)臄?shù)據(jù), 都會按照多路復(fù)用協(xié)議進(jìn)行處理,以此來管理數(shù)據(jù)的分發(fā)。例如,撥打電話,發(fā)短 信息等操作通過AT數(shù)據(jù)鏈路來進(jìn)行,返回信息也從AT數(shù)據(jù)鏈路獲得。 在圖3.5中,我們可以看到DATA虛擬串口上有三種數(shù)據(jù)流,其中主動請求和主 動請求響應(yīng)消息與AT虛擬串口中的一樣。在系統(tǒng)網(wǎng)絡(luò)環(huán)境搭建好后,第三個數(shù)據(jù)流data就是網(wǎng)絡(luò) 數(shù)據(jù)包的數(shù)據(jù)通路。在三種方案中,我們擇優(yōu)選擇了串口多路復(fù)用技術(shù), 并對無線接口層架構(gòu)進(jìn)行適當(dāng)?shù)男薷模岢鲂碌亩嗦窂?fù)用無線接口層架構(gòu)。 4.1 Android相關(guān)開發(fā)準(zhǔn)備 4.1.1開發(fā)環(huán)境搭建 1.我們用到的手機(jī)設(shè)計方案中,硬件部分的關(guān)鍵部件是聯(lián)發(fā)科基帶 MT6223[32]。MT6223是他們生產(chǎn)的最成熟的基 帶產(chǎn)品,支持GSM和GPRS,擁有優(yōu)秀的GPRS吞吐量,優(yōu)異的功耗,成熟和穩(wěn)健 的基帶系統(tǒng)軟件,實現(xiàn)了各種網(wǎng)絡(luò)通訊協(xié)議棧。綜合來說,MT6223是最佳成本效益的一款基帶產(chǎn) 品,能夠滿足我們實現(xiàn)計劃功能的需要。 Android系統(tǒng)平臺是基于arm處理器的系統(tǒng)。與x86對比,arm更省電,待機(jī)時間更長。因為目的平臺不能夠讓我們安裝arm 的編譯器,并在其中進(jìn)行編譯,所以我們用到交叉編譯。Google提供的Android源碼丌發(fā)工具中就有在X86 平臺中交叉編譯的工具鏈。 3.系統(tǒng)引導(dǎo)程序Blob[33]。Blob是一款開放源代碼的、強(qiáng)大的啟動引導(dǎo)程序。在實際開發(fā)中,通過超級終端控制串口,利用USB把系 統(tǒng)引導(dǎo)程序下載到目的平臺。具體的下載 方法和Linux系統(tǒng)工作環(huán)境的設(shè)置可以參考官方網(wǎng)站的說明[34]。我們選擇了Android 1.5,代號 cupcake的Android源碼分支作為研究對象。獲?。悖酰穑悖幔耄宸种?的方法是在下載的命令中,增加命令參數(shù)一b 2 Android cupcake。Android系統(tǒng)的源碼中每個小項目就是一個git庫,下載時比較麻煩, 需要按照官方網(wǎng)站中的說明進(jìn)行操作。當(dāng)然,我們需要 根據(jù)手機(jī)設(shè)計方案中的設(shè)備的特性,修改Linux內(nèi)核中的各種驅(qū)動程序等。 資源到位后,編譯Android源碼和Android Linux內(nèi)核,分別產(chǎn)生系統(tǒng)鏡像 system.img文件和內(nèi)核鏡像zImage文件。開機(jī)運行時,系統(tǒng)加電 后引導(dǎo)程序Blob會引導(dǎo)系統(tǒng)內(nèi)核啟動,然后內(nèi)核會加載文件系統(tǒng)。雖然這樣調(diào)試 比較繁瑣,但是通訊功能是與硬件密切相關(guān)的,虛擬機(jī)是無法模擬的。在系統(tǒng)啟動的初始階段,串口多路復(fù)用監(jiān)控程 蘭州人學(xué)碩士學(xué)位論文 序就必須啟動。聯(lián)發(fā)科實現(xiàn)該功能時,是完全按照3GPP 27.010 multiplexer TS protocol(多路復(fù)用協(xié)議)[36]來操作的。串口多路復(fù)用方法的實現(xiàn)有兩 個關(guān)鍵點,一是多路復(fù)用協(xié)議的實現(xiàn),二是實現(xiàn)虛擬多串口。多路復(fù)用 數(shù)據(jù)幀格式如表4.1所示。而在兩個標(biāo)志域中間的字段才是 有效的數(shù)據(jù)。在地址域中,DLC I代表第1個數(shù) 據(jù)鏈路通道。 EA是擴(kuò)展標(biāo)志位,如果EA置l,則表示該地址域中只有這一字段。C/R(命令/響應(yīng))是用來識別數(shù)據(jù)幀是命令還是響應(yīng),或者 說是區(qū)分?jǐn)?shù)據(jù)的流向。在表4.1中列舉了兩種數(shù)據(jù)幀,分別是UIH和 SABM。SABM數(shù)據(jù)幀主要是用來設(shè)置數(shù)據(jù)鏈路通道的工作方式,這在建立數(shù)據(jù)通道 的時候用到它。UIH數(shù)據(jù)幀是用來傳輸數(shù)據(jù)信息的。另外,P/F位的設(shè)置,是一種響應(yīng)匹 配機(jī)制。數(shù)據(jù)鏈路建立后,基帶返回一個數(shù)據(jù)幀,其中P/F位也置1。 數(shù)據(jù)長度域也可以通過EA位來進(jìn)行擴(kuò)展,但數(shù)據(jù)長度域的位數(shù)最多為15 位。校驗 域,我們在實現(xiàn)中用到了CRC校驗。mux—write接口的作用是按數(shù)據(jù)幀的格式對數(shù)據(jù)進(jìn)行封裝,并把封 裝后的數(shù)據(jù)寫到基帶。mux—read接口的作用是接收基帶傳輸過 來的信息。 4.2.2虛擬多串口 按照多路復(fù)用無線接口層的設(shè)計,我們要虛擬出3個串口。虛擬終端要起作用,必須把主節(jié)點的文件描述符作為 參數(shù),傳遞給grantpt和unlockpt函數(shù),從而修改虛擬終端的訪問屬性以及對 虛擬終端進(jìn)行解鎖。然而,當(dāng)三條數(shù)據(jù)鏈路 中都有數(shù)據(jù)同時需要處理時,基帶如何進(jìn)行操作呢?要解決這樣的問題,使得多 路復(fù)用監(jiān)控程序正常運行,我們必須先通知基帶這3條數(shù)據(jù)鏈路通道的信息,從 而與虛擬串口建立一對一的連接,方便基帶對數(shù)據(jù)鏈路進(jìn)行管理。這些配置信息包 括數(shù)據(jù)鏈路地址,數(shù)據(jù)鏈路上流通的數(shù)據(jù)幀類型,數(shù)掘鏈路的優(yōu)先級等等。這條 控制信道也可以認(rèn)為是數(shù)據(jù)鏈路通道,編號為0。 2.向控制信道發(fā)送UIH數(shù)據(jù)幀,數(shù)據(jù)幀中的數(shù)據(jù)內(nèi)容為DLC 1的配置信息, 從而在處理器中注冊上第l條數(shù)據(jù)鏈路通道。 4.向控制信道發(fā)送UIH數(shù)據(jù)幀,數(shù)據(jù)幀中的數(shù)據(jù)內(nèi)容為DLC 2的配置信息, 從而在處理器中注冊上第2條數(shù)據(jù)鏈路通道。 6.向控制信道發(fā)送UIH數(shù)據(jù)幀,數(shù)據(jù)幀中的數(shù)據(jù)內(nèi)容為DLC 3的配置信息, 從而在處理器中注冊上第3條數(shù)據(jù)鏈路通道。 4.2.3匯聚層信息處理 實現(xiàn)匯聚層的目的是允許數(shù)據(jù)通過多路復(fù)用控制器時,保留原有的結(jié)構(gòu)或與 數(shù)據(jù)流相關(guān)的其他參數(shù)。V.24控制信號是只有一個字節(jié)大小的數(shù)據(jù)。而當(dāng)從基帶獲取 數(shù)據(jù)幀時,要先把數(shù)據(jù)內(nèi)容從數(shù)據(jù)幀中解碼出來,然后去除V.24控制信號,最 后才傳輸給用戶。圖4.1 描述了數(shù)據(jù)發(fā)送的數(shù)據(jù)流程,圖4.2描述了數(shù)據(jù)接收的數(shù)據(jù)流程。在實際的實現(xiàn)中,增加一個緩存區(qū)。然后,需要把消息信息一個字節(jié)不漏的復(fù)制到新增加的 緩存區(qū)內(nèi),緊跟在控制信號之后。 在數(shù)據(jù)接收流程中,去除數(shù)據(jù)頭部信號的操作是在獲取了數(shù)據(jù)流之后再進(jìn)行 的。那么,這個新增的緩存區(qū)就是系統(tǒng)要接收的消息。rild只是負(fù)責(zé)建立Socket通道,完成數(shù)據(jù)的傳輸。而硬件抽象層是與多路復(fù)用監(jiān)控程序創(chuàng)建出來的3個虛擬串口 蘭州人學(xué)碩士學(xué)位論文 直接通訊的。 虛擬串口是以設(shè)備文件的形式存在于系統(tǒng)中,名字可能為 /dev/ptsl,/dev/pts2,/dev/pts3。 為了方便操作,我們在多路復(fù)用監(jiān)控程序中為這些設(shè)備文件建立了對應(yīng)的符 號連接,分別為/dev/data,/dev/urc,/dev/at。 首先,我們需要打開這些文件。相關(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ù)讀取的問題。它的作用是檢測三個數(shù)據(jù)通道文件是否被修改。實現(xiàn)這個過程,我 們運用Linux的系統(tǒng)調(diào)用select[37]來完成。 在Android原有的參考設(shè)計中,寫數(shù)據(jù)是通過at—send—command 0等多個類 似的函數(shù)來調(diào)用。而, 我們要實現(xiàn)的架構(gòu)中,AT數(shù)據(jù)鏈路通道和DATA數(shù)據(jù)鏈路通道都是可以寫數(shù)據(jù)的。 4.4通話實現(xiàn) 通話功能是手機(jī)的核心價值,是手機(jī)的身份標(biāo)記。在我們的方案中,Android系統(tǒng)平臺是通過串 口來訪問基帶的。 4.4.1 Socket通訊建立 在應(yīng)用程序框架中,建立Socket客戶端,在無線接口層監(jiān)控程序rild中建 立一個Socket服務(wù)器端。等待socket 連線啟動后,返回socket的文件描述符fd。往后的操作都是通過讀 寫這個新的文件socket—fd來完成。但是在參數(shù)上我們進(jìn)行了修改,因為這需要與我們在無 線接口層監(jiān)控程序中建立的服務(wù)器相匹配。 4.4.2串口配置 串口通訊[38]主要是設(shè)置串口的工作模式,來控制串口的行為。首 先,需要通過tcgetattr函數(shù)獲取存儲串口屬性設(shè)置的結(jié)構(gòu)體,然后修改結(jié)構(gòu)體 的值域,設(shè)置串口輸入輸出的波特率,最后通過tcsetattr函數(shù)保存串口屬性設(shè) 32 蘭州大學(xué)碩士學(xué)位論文 置。只有兩者的波 特率相同,通訊才能進(jìn)行。 這些都需要根據(jù)硬件的情況來設(shè)置。系統(tǒng)的通話狀態(tài)轉(zhuǎn)換圖如圖4.3所示,展示了各種通話 狀態(tài)之間的聯(lián)系以及狀態(tài)間相互轉(zhuǎn)換時所依賴的各種操作。當(dāng)有來電時,基帶向系統(tǒng)周期性地主動上報消 息,消息內(nèi)容是“RING”,表示有鏈接請求。用戶接聽時, 應(yīng)用程序會調(diào)用acceptCall()函數(shù),多路復(fù)用無線接口層會對應(yīng)發(fā)送AT指令ATA 來應(yīng)答對方的請求。用戶需要結(jié) 束通話時,進(jìn)行掛斷電話的操作。至此,手機(jī)重新回 到待機(jī)狀態(tài)。 當(dāng)需要撥打電話時,用戶在撥號界面輸入對方號碼,然后確認(rèn)撥出,接著應(yīng) 用程序會接管工作。然后,多路復(fù)用接口層會對應(yīng)的發(fā)送AT命令來進(jìn)行撥 號。撥號操作進(jìn)行后,系統(tǒng)進(jìn)入撥號等待狀態(tài)。 另外,從撥號等待狀態(tài)轉(zhuǎn)換到通話中狀態(tài),需要確定鏈路已經(jīng)鏈接成功。 在AT命令集標(biāo)準(zhǔn)協(xié)議[22]中,設(shè)定了一條AT命令一AT+CLCC,來查詢 當(dāng)前的通話狀態(tài)。在標(biāo)準(zhǔn)協(xié)議中,規(guī)定了這些參數(shù)的意義。表4.2 描述了CLCC查詢通話狀態(tài)的狀態(tài)字段。鏈接中斷,表 示當(dāng)前鏈接中發(fā)生異常致使鏈接失敗,如對方掛斷,無人接聽,不在服務(wù)區(qū),對 方關(guān)機(jī),無此號碼等等。 通話狀態(tài)轉(zhuǎn)換圖描述了整個通話的過程,強(qiáng)調(diào)了各種狀態(tài)和操作的對應(yīng)關(guān) 系。 4.5短信息服務(wù)實現(xiàn) 短信息服務(wù)是手機(jī)終端中的重要組成部分之一。短信功能擁有最廣泛的用戶群體,創(chuàng)造著巨大的產(chǎn)業(yè)價值。在短信息服務(wù)中,與 通訊相關(guān)的功能主要是接收信息,發(fā)送信息以及接收信息報告。 4.5.1發(fā)送短信息 我們分析過Android的通訊架構(gòu),而短信息服務(wù)的相關(guān)操作就分布在各個架 構(gòu)層中。獲取相關(guān)信息的操作位于應(yīng)用程序 層;PDU編碼在應(yīng)用程序框架層中實現(xiàn);把信息以AT命令的格式發(fā)送出去的操 作是在多路復(fù)用無線接口層中完成。這些信息可以在用戶輸入信息并提出發(fā)送請求時獲取。 開始 上 l l 獲取相關(guān)信息 上 mU編碼 上 卜絮敞 上 結(jié)束 圖4.4短信息發(fā)送流程圖 PDU編碼階段主要在GSM網(wǎng)絡(luò)通訊資源管理器中完成。在此階段,我們需要依據(jù)PDU 編碼標(biāo)準(zhǔn)[25]來對數(shù)據(jù)進(jìn)行編碼。 短信息服務(wù)中心是短信息的中轉(zhuǎn)站,我們可以把它當(dāng)作是一臺終端設(shè)備,或 蘭州大學(xué)碩十學(xué)位論文 者是郵差,而短信息就是郵件。我們可以通過AT命令“AT+CSCA"來獲取其地址。 短信息類型、是否接收短信報告、是否拒絕發(fā)送相同內(nèi)容的短信息、是否需 要回復(fù)等信息被封裝在一個8位的字段中。而 關(guān)于短信息的類型,我們常用到的是SMS—SUBMIT(信息發(fā)送),SMS—DELIVER(信 息接收),SMS-STATUS REPORT(短信狀態(tài)報告)。緊跟目標(biāo)地址有個 協(xié)議標(biāo)識符字段,一般默認(rèn)為Ox00。在服務(wù)中心保存的信 息會進(jìn)行重新發(fā)送的操作,直到發(fā)送成功或不再存儲。只有這樣, 對方才能夠運用相應(yīng)的解碼方式來處理用戶數(shù)據(jù)。我們可以從中獲得的有用的信息,包括短信使用
點擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1