成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳細(xì)說(shuō)明Android手機(jī)的種種特性

移動(dòng)開發(fā) Android
Android的RIL驅(qū)動(dòng)模塊, 在hardware/ril目錄下,一共分rild,libril.so以及l(fā)ibrefrence_ril.so三個(gè)部分。

Android作為一個(gè)高效的.NET程序語(yǔ)言。其混合了函數(shù)語(yǔ)言和物件導(dǎo)向程序編制語(yǔ)言,并且完美的適用于編程、算法、技術(shù)和探索性開發(fā),因此可以在使用的過(guò)程當(dāng)中感受到趣味性和吸引力。

都依賴于include目錄中ril.h頭文件。目前cupcake分支上帶的是gsm的支持,另有一cdma分支,這里分析的是gsm驅(qū)動(dòng)。GSM模塊,由于Modem的歷史原因,AP一直是通過(guò)基于串口的AT命令與BB交互。包括到了目前的一些edge或3g模塊,或像omap這類ap,bp集成的芯片,已經(jīng)使用了USB或其他等高速總線通信。

但大多仍然使用模擬串口機(jī)制來(lái)使用AT命令。這里的RIL(Radio Interface Layer)層,主要也就是基于AT命令的操作,如發(fā)命令,response解析等。(gprs等傳輸會(huì)用到的MUX協(xié)議等在這里并沒(méi)有包含,也暫不作介紹。)

以下是詳細(xì)分析,因?yàn)槠颍瑫?huì)以連載形式發(fā)布出來(lái)(大概3篇),本文主要涉及基本架構(gòu)和初始化的內(nèi)容,首先介紹一下rild與libril.so以及l(fā)ibrefrence_ril.so的關(guān)系:

1. rild:
僅實(shí)現(xiàn)一main函數(shù)作為整個(gè)ril層的入口點(diǎn),負(fù)責(zé)完成初始化。

2. libril.so:
與rild結(jié)合相當(dāng)緊密,是其共享庫(kù),編譯時(shí)就已經(jīng)建立了這一關(guān)系。組成部分為ril.cpp,ril_event.cpp。libril.so駐留在rild這一守護(hù)進(jìn)程中,主要完成同上層通信的工作,接受ril請(qǐng)求并傳遞給。

3. librefrence_ril.so:
rild通過(guò)手動(dòng)的dlopen方式加載,結(jié)合稍微松散,這也是因?yàn)閘ibrefrence.so主要負(fù)責(zé)跟Modem硬件通信的緣故。這樣做更方便替換或修改以適配更多的Modem種類。

它轉(zhuǎn)換來(lái)自libril.so的請(qǐng)求為AT命令,同時(shí)監(jiān)控Modem的反饋信息,并傳遞回libril.so。在初始化時(shí), rild通過(guò)符號(hào)RIL_Init獲取一組函數(shù)指針并以此與之建立聯(lián)系。

4. radiooptions:
radiooptiongs通過(guò)獲取啟動(dòng)參數(shù), 利用socket與rild通信,可供調(diào)試時(shí)配置Modem參數(shù)。

接下來(lái)分析初始化流程,主入口是rild.c中的main函數(shù),主要完成三個(gè)任務(wù):
1. 開啟Android中的event機(jī)制, 在RIL_startEventLoop中,是最核心的由多路I/O驅(qū)動(dòng)的消息循環(huán)。

2. 初始化librefrence_ril.so,也就是跟硬件或模擬硬件modem通信的部分(后面統(tǒng)一稱硬件), 通過(guò)RIL_Init函數(shù)完成。

3. 通過(guò)RIL_Init獲取一組函數(shù)指針RIL_RadioFunctions, 并通過(guò)RIL_register完成注冊(cè),并打開接受上層命令的socket通道。

每個(gè)ril_event結(jié)構(gòu),與一個(gè)fd句柄綁定(可以是文件,socket,管道等),并且?guī)б粋€(gè)func指針去執(zhí)行指定的操作。具體流程是: ril_event_init完成后,通過(guò)ril_event_set來(lái)配置一新ril_event,并通過(guò)ril_event_add加入隊(duì)列之中(實(shí)際通常用rilEventAddWakeup來(lái)添加)。

add會(huì)把隊(duì)列里所有ril_event的fd,放入一個(gè)fd集合readFds中。這樣ril_event_loop能通過(guò)一個(gè)多路復(fù)用I/O的機(jī)制(select)來(lái)等待這些fd, 如果任何一個(gè)fd有數(shù)據(jù)寫入,則進(jìn)入分析流程processTimeouts(),processReadReadies(&rfds, n),firePending()。

 后文會(huì)詳細(xì)分析這些流程,另外我們可以看到, 在進(jìn)入ril_event_loop之前, 已經(jīng)掛入了一s_wakeupfd_event, 通過(guò)pipe的機(jī)制實(shí)現(xiàn)的, 這個(gè)event的目的是可以在一些情況下,能內(nèi)部喚醒ril_event_loop的多路復(fù)用阻塞。

比如一些帶timeout的命令timeout到期的時(shí)候。至此第一個(gè)任務(wù)分析完畢,這樣便建立起了基于event隊(duì)列的消息循環(huán),稍后便可以接受上層發(fā)來(lái)的的請(qǐng)求了(上層請(qǐng)求的event對(duì)象建立,在第三個(gè)任務(wù)中)。

【編輯推薦】

  1. Android應(yīng)用程序組建原理深入剖析
  2. Android SMS短信服務(wù)相關(guān)概念簡(jiǎn)述
  3. PythonAndroid數(shù)據(jù)庫(kù)相關(guān)代碼解讀
  4. PythonAndroid安裝卸載程序具體操作方法解析
  5. Android應(yīng)用程序的四個(gè)關(guān)鍵點(diǎn)
責(zé)任編輯:chenqingxiang 來(lái)源: 博客園
相關(guān)推薦

2009-12-28 09:19:21

ADO屬性

2010-01-08 15:37:59

JSON數(shù)據(jù)

2010-03-03 18:17:01

Android手機(jī)服務(wù)

2010-03-05 14:43:22

Android瀏覽器

2010-02-04 14:41:52

Android菜單類型

2010-03-03 16:37:49

Android智能手機(jī)

2010-02-04 15:20:50

Android SDK

2010-03-05 14:16:38

Android設(shè)計(jì)平臺(tái)

2010-02-04 09:55:46

Android DEX

2010-02-06 15:53:55

2010-02-06 17:43:51

Android應(yīng)用

2014-09-16 09:57:56

INotifyProp

2010-02-05 17:34:37

Android 2.1

2010-02-06 16:57:43

Android操作系統(tǒng)

2010-03-05 13:54:09

2010-03-05 15:58:11

操作系統(tǒng)Android

2009-12-28 09:26:09

ADO對(duì)象

2010-02-05 17:04:31

Android版本

2010-03-03 17:11:08

2010-10-13 14:28:09

mysql日志文件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美a级成人淫片免费看 | 国产成人av在线 | 国产欧美一区二区久久性色99 | 美女爽到呻吟久久久久 | 一区二区三区在线电影 | 青青草一区二区 | 九九久久久 | 视频在线一区二区 | 免费黄色在线观看 | 91视频免费在观看 | 国产精品a级 | 国产一区二区三区四区五区加勒比 | 在线一区二区国产 | 日韩五月天 | av中文字幕在线观看 | 看a网站| 91精品国产综合久久香蕉麻豆 | 欧美日韩中文字幕在线 | 欧美乱操 | 精品日韩 | 欧美在线一区二区三区四区 | 亚洲日韩欧美一区二区在线 | 国产综合久久久久久鬼色 | 少妇黄色 | 国产91在线播放 | 亚洲视频免费在线 | 久久国产电影 | 一级特黄色毛片 | 97超碰站| 天天干天天想 | 久久成人精品视频 | 91看片官网 | 97国产爽爽爽久久久 | 中文字幕二区三区 | 成人免费在线视频 | 久久综合亚洲 | 伊人狠狠操 | 国产激情精品一区二区三区 | 日本三级电影在线免费观看 | 99久久精品国产一区二区三区 | 免费av观看|