国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

OpenHarmony 電話子系統源碼解析之Cellular_Data

系統 OpenHarmony
APP調用數據業務的流程會依次經過Data Service,Core Service,RIL Adapter/RILD,再經過AT命令的處理到達CP處理器。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

一、電話子系統概述

電話服務子系統各個模塊主要作用如下:

核心服務模塊:主要功能是初始化RIL管理、SIM卡和搜網模塊。

數據服務模塊:主要功能是實現數據上網和路由管理相關的業務。

通話管理模塊:主要功能是管理CS(Circuit Switch,電路交換)、IMS(IP Multimedia Subsystem,IP多媒體子系統)和OTT(over the top,OTT解決方案)三種類型的通話,申請通話所需要的音視頻資源,處理多路通話時產生的各種沖突。

蜂窩通話模塊:主要功能是實現基于運營商網絡的基礎通話。

短彩信模塊:主要功能是短信收發和彩信編解碼。

狀態注冊模塊:主要功能是提供電話服務子系統各種消息事件的訂閱以及取消訂閱的API。

1、 電話子系統框架圖

二、 Cellular_Data(數據服務模塊)

1、 代碼目錄

\base\telephony\ cellular_data
├─ frameworks # napi接口存放目錄
├─ interfaces # 對外部暴露的接口
├─ services # 服務內部代碼
├─ apn_manager # apn管理
├─ state_machine # data 狀態機
├─ utils # 通用邏輯
└─ 外部files
├─ sa_profile # sa文件
├─ ohos.build # 編譯build
└─ test # 測試相關

2、 流程圖

APP調用數據業務的流程會依次經過Data Service,Core Service,RIL Adapter/RILD,再經過AT命令的處理到達CP處理器。

CP處理器處理完數據命令后,會依次將結果再返回,到達Data Service,最終將獲得的上網相關數據,如ip,interface,gateway,dns等設置到netmanager/netd,最終配置到kernel中。

流程圖如下:

3、data service初始化流程

Data service的初始化流程如下圖所示:

具體的代碼調用流程如下:

\telephony\cellular_data\services\src\cellular_data_service.cpp

在OnStart函數中先等待CoreService啟動成功WaitCoreServiceToInit,然后進行data service的init初始化流程。

在初始化init流程中,會依次進行InitModule的初始化,主要是生成CellularDataController和netd相關的對象的初始化.

\telephony\cellular_data\services\src\cellular_data_controller.cpp

在AsynchronousRegister函數中,會依次進行CellularDataController的初始化、注冊監聽事件、注冊database監聽。還有要進行CellularDataHandler的初始化。

注冊的監聽事件包括了網絡狀態的監聽、radio狀態的監聽和電話狀態的監聽等,這些都會對數據的狀態產生影響。

\telephony\cellular_data\services\src\cellular_data_handler.cpp

CellularDataHandler的Init函數中,主要是對apn管理相關的模塊進行初始化,包含ApnManager和ApnHolder等。

\telephony\cellular_data\services\src\apn_manager\ apn_manager.cpp
\telephony\cellular_data\services\src\apn_manager\ apn_holder.cpp.cpp
\telephony\cellular_data\services\src\apn_manager\ apn_item.cpp

apn_manager負責對所有apn進行管理,包括創建、查找和刪除等操作。

apn_holder就是一個apn profile。

4、data service建立流程

Data service的建立流程如下圖所示:

具體的代碼調用流程如下:

\telephony\core_service\interfaces\innerkits\cellular_data\ 
cellular_data_manager.cpp
\telephony\core_service\interfaces\innerkits\cellular_data\
cellular_data_service.cpp
\telephony\core_service\interfaces\innerkits\cellular_data\
cellular_data_controller.cpp
\telephony\core_service\interfaces\innerkits\cellular_data\
cellular_data_handler.cpp

按照上面的時序圖可以看出,從cellular_data_manager->cellular_data_service-> cellular_data_controller->cellular_data_handler,是直接調用Enable CellularData。主要的流程在cellular_data_handler中,具體說明EstablishDataConnection過程中比較重要的流程,其中包含了data狀態機的創建EstablishDataConnection和connect event的發送:

\telephony\cellular_data\services\src\state_machine\ cellular_data_state_machine.cpp:

創建default data所需要的狀態機,類似的,任何類型的數據,應該都會創建其所對應的狀態機:

std::shared_ptr<CellularDataStateMachine> CellularDataHandler::CreateCellularDataConnect()  
{
auto cellularDataStateMachine =
std::make_shared<CellularDataStateMachine>(connectionManager_, shared_from_this(), GetEventRunner());
if (cellularDataStateMachine == nullptr) {
TELEPHONY_LOGE("cellularDataStateMachine is null");
return nullptr;
}
sequence_++;
intStateMachineMap_[sequence_] = cellularDataStateMachine;
return cellularDataStateMachine;
}

接下來會進行data狀態機的init初始化操作,會依次創建Active、Inactive等狀態到狀態機中,并設置初始狀態為Active,為后續的data connect做好準備:

void CellularDataStateMachine::Init()  
{
activeState_ = std::make_unique<Active>(
std::weak_ptr<CellularDataStateMachine>(shared_from_this()), "Active").release();
inActiveState_ = std::make_unique<Inactive>(
std::weak_ptr<CellularDataStateMachine>(shared_from_this()), "Inactive").release();
activatingState_ = std::make_unique<Activating>(
std::weak_ptr<CellularDataStateMachine>(shared_from_this()), "Activating").release();
disconnectingState_ = std::make_unique<Disconnecting>(
std::weak_ptr<CellularDataStateMachine>(shared_from_this()), "Disconnecting").release();
defaultState_ = std::make_unique<Default>(
std::weak_ptr<CellularDataStateMachine>(shared_from_this()), "Default").release();
netProviderInfo_ = std::make_unique<NetProviderInfo>().release();
netLinkInfo_ = std::make_unique<NetLinkInfo>().release();
if (activeState_ == nullptr || inActiveState_ == nullptr || activatingState_ == nullptr ||
disconnectingState_ == nullptr || defaultState_ == nullptr || netProviderInfo_ == nullptr ||
netLinkInfo_ == nullptr) {
TELEPHONY_LOGE("memory allocation failed");
return;
}
activeState_->SetParentState(defaultState_);
inActiveState_->SetParentState(defaultState_);
activatingState_->SetParentState(defaultState_);
disconnectingState_->SetParentState(defaultState_);
StateMachine::SetOriginalState(inActiveState_);
StateMachine::Start();
}

在上面狀態機創建的過程中,最后會建立數據請求:

這個流程會按照狀態機當前的狀態來執行,會先走到inactive狀態中,執行真正的DoConnect,并轉換狀態到Activating。

最終是通過狀態機的DoConnect來建立數據的:

\telephony\cellular_data\services\src\state_machine\ cellular_data_state_machine.cpp:

接下來就會將建立數據的請求發送給core,最終發送給ril_adapter,完成數據建立的流程。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2022-02-17 20:57:07

OpenHarmon操作系統鴻蒙

2021-11-08 15:04:47

鴻蒙HarmonyOS應用

2022-01-06 16:17:58

鴻蒙HarmonyOS應用

2021-12-17 16:42:09

鴻蒙HarmonyOS應用

2021-09-18 14:40:37

鴻蒙HarmonyOS應用

2023-04-12 15:31:11

系統服務管理鴻蒙

2022-01-10 15:30:11

鴻蒙HarmonyOS應用

2021-11-18 10:28:03

鴻蒙HarmonyOS應用

2022-05-24 15:46:51

Wi-FiSTA模式

2021-09-13 15:15:18

鴻蒙HarmonyOS應用

2023-04-06 09:14:11

多模輸入子系統鴻蒙

2022-01-13 10:11:59

鴻蒙HarmonyOS應用

2023-06-28 15:00:02

開源鴻蒙輸入系統架構

2021-09-17 14:38:58

鴻蒙HarmonyOS應用

2022-02-14 14:47:11

SystemUIOpenHarmon鴻蒙

2022-01-20 14:33:29

openharmonwayland協議鴻蒙

2022-03-18 16:07:04

Graphic子系統鴻蒙

2022-05-17 10:42:36

reboot源碼解析

2022-07-05 16:03:29

電源管理子系統鴻蒙

2021-12-08 15:07:51

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

亚洲国产欧美一区二区三区丁香婷| 欧美~级网站不卡| 欧美小视频在线观看| 男人的天堂99| 亚洲一区免费| 亚洲aaa激情| 999精品视频| 97在线观看视频国产| 成人综合日日夜夜| 精品国产亚洲在线| 性xxxfreexxxx性欧美| 欧美日韩国产影片| 黄色软件在线| 欧美午夜美女看片| 日本福利片免费看| 成人免费一区二区三区在线观看| 亚洲xxxx2d动漫1| 99久久精品免费| 无遮挡又爽又刺激的视频| 99v久久综合狠狠综合久久| 国产黄页在线观看| av网站免费| 国产精品久久久久久妇女6080| 999精品网站| 久久久精品免费观看| 搡女人真爽免费午夜网站| 91毛片在线观看| 成年人黄色片视频| 91污片在线观看| 欧美伦理片在线看| 国产精品久久久久久一区二区三区 | 日韩 欧美一区二区三区| 日韩中文字幕一区二区| 黑人精品欧美一区二区蜜桃| www国产精品内射老熟女| 国产精品人成在线观看免费| 96久久久久久| 91精品福利在线一区二区三区| 色在线视频观看| 久久久久国产精品www| 久久裸体网站| 欧美一区二区视频在线| 国产成人亚洲综合色影视| 国产 porn| 91福利国产成人精品照片| www.九色在线| 午夜精品久久久久久久99热浪潮| 亚洲大全视频| 99热都是精品| 亚洲色图视频网站| 98在线视频| 亚洲午夜精品久久久久久久久久久久| 亚洲91网站| 风间由美一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 91成人看片| 亚洲欧洲精品在线| 国产精品久久久久婷婷| а天堂8中文最新版在线官网| 亚洲精品福利在线观看| 免费成人直播| 欧美大片在线影院| 日本在线免费| 久久久久久久久久久久久夜| 亚州欧美日韩中文视频| 欧美日本网站| 国产福利一区二区三区视频在线| 91精品视频免费观看| 四色成人av永久网址| 奇米一区二区三区av| 女人一区二区三区| 亚洲一二三区在线观看| 电影天堂久久| 国产精品狼人久久影院观看方式| 水蜜桃亚洲精品| 日韩一区二区三区视频在线| 日韩三级电影视频| 欧美国产精品人人做人人爱| 亚洲无吗在线| av无码精品一区二区三区| 在线观看一区二区视频| 日韩精品成人在线观看| 欧美精品v日韩精品v国产精品| 国产精品午夜春色av| 最新超碰在线| 国产不卡精品视男人的天堂| 国产一区欧美二区| 电影在线一区| 日韩av第一页| 91亚洲精品乱码久久久久久蜜桃| 日本高清在线观看wwwww色| 热99久久精品| 91视视频在线观看入口直接观看www| 国产鲁鲁视频在线观看特色| 欧美亚洲成人xxx| 国产精品一区二区久久不卡 | 亚洲视频欧美视频| 欧美 亚欧 日韩视频在线| 国产极品粉嫩福利姬萌白酱| 欧美一区二区黄色| 亚洲a一区二区三区| 台湾十八成人网| 日韩在线免费视频观看| 日本网站在线观看一区二区三区| 中文字幕乱在线伦视频乱在线伦视频| 久久精品视频免费播放| 久久99国产精品久久99| 欧美性猛交xxx乱大交3蜜桃| 成人黄色免费网站在线观看| 国产精品久久午夜夜伦鲁鲁| 99国内精品久久久久| 六月婷婷激情网| 亚洲国产成人精品一区二区| 国产精品最新自拍| 国产小视频免费在线观看| 国产日韩欧美在线播放| 亚洲精品成a人| 久久a爱视频| www.夜夜爽| 久久免费视频网| 国产喷白浆一区二区三区| 色拍拍在线精品视频8848| 免费大片在线观看www| 久久成年人免费电影| 亚洲在线国产日韩欧美| 亚洲男男gay视频| 亚洲第一天堂av| 国产精品videossex| 久久久久久草| 欧美日韩亚洲成人| 日本在线视频网址| 国产亚洲精品久久久久久牛牛| 日韩中文一区二区| 伊人网在线观看| 欧美专区中文字幕| 高清不卡一二三区| a篇片在线观看网站| 国产成人avxxxxx在线看| 国产制服丝袜一区| 污网站在线看| 91成人福利在线| k8久久久一区二区三区| 国产黄a三级三级三级av在线看| 日韩美女激情视频| 欧美高清在线一区二区| 校园春色亚洲| 亚洲va欧美va国产综合久久| 久久久99久久| 里番在线观看网站| 日本视频精品一区| 一区二区三区国产在线| 91亚洲永久免费精品| 亚洲已满18点击进入久久| 国产亚洲一区| 亚洲网站情趣视频| 亚洲综合色av| 91精品国产福利在线观看| 看电视剧不卡顿的网站| 亚洲www.| 爱情岛论坛成人| 91精品久久久久久久久青青| 欧美日韩国产大片| 国产一区二区久久| 成人三级毛片| 日韩有码电影| 亚洲视频在线二区| 久久久国产精彩视频美女艺术照福利| 国产精品久久一级| 韩国在线一区| 国产极品久久久久久久久波多结野 | av在线不卡播放| 国产一区在线免费| 亚洲日韩欧美视频一区| 中文字幕在线不卡视频| 国产精品av久久久久久麻豆网| 草草影院在线| 嫩草影院在线观看网站成人| 99久久久精品免费观看国产 | 成人久久视频在线观看| 成人午夜大片| av在线中文| 免费在线观看亚洲视频| 国产精品激情自拍| 国模精品视频| 永久免费在线| 国产视频1区2区3区| 日韩一区二区高清视频| 日韩三级成人av网| 亚洲国产精品va在线看黑人 | 成人精品影视| 国产69精品久久久久999小说| 国产一区欧美日韩| 竹菊久久久久久久| 日韩激情av| 66av99| 欧美极品jizzhd欧美| 久久久久在线观看| 欧美日本乱大交xxxxx| 国产精品色在线观看| 日本va欧美va精品发布|