# telephony_core_service **Repository Path**: libo729/telephony_core_service ## Basic Information - **Project Name**: telephony_core_service - **Description**: Establishing communication with RIL Adapter | 电话基础服务模块主要功能实现与RIL Adapter进行通信 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1138 - **Created**: 2021-09-08 - **Last Updated**: 2022-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 核心服务 - [简介](#section117mcpsimp) - [目录](#section129mcpsimp) - [约束](#section133mcpsimp) - [接口说明](#section139mcpsimp) - [获取SIM卡信息相关接口](#section142mcpsimp) - [搜网服务相关接口](#section198mcpsimp) - [使用说明](#section370mcpsimp) - [搜网](#section393mcpsimp) - [SIM卡](#section402mcpsimp) - [相关仓](#section409mcpsimp) ## 简介 电话核心服务模块主要功能是初始化RIL管理、SIM卡和搜网模块,以及获取RIL Adapter服务。 通过注册回调服务,实现与RIL Adapter进行通信;通过发布订阅,来实现与各功能模块的通信。 **图 1** 电话核心服务架构图 ![](figures/zh-cn_architecture-of-the-core_service-module.png) 上图示中电话核心服务关联的业务服务包括SIM卡服务、搜网服务、RIL通信管理。 - SIM卡服务:主要是SIM卡初始化,文件读写,加载状态通知,单双卡控制。包括SIM卡状态查询、SIM卡管理、SIM卡控制、STK、联系人存储、短信存储。 - 搜网服务:主要是网络注册,网络状态获取。包括网络注册、网络模式查询、Radio状态查询、搜网管理、信号强度查询、小区管理、驻网管理、时间时区更新。 - RIL管理:提供主动回调服务,查询结果回调服务等。 ## 目录 ``` /base/telphony/core_service ├── interfaces # 接口目录 │ ├── innerkits # 部件间的内部接口 │ └── kits # 对应用提供的接口(例如JS接口) ├── services # 核心服务实现代码目录 │ ├── include │ └── src ├── etc # 核心服务的驱动脚本目录 │ └── init ├── sa_profile # 核心服务的启动文件目录 ├── tel_ril # 核心服务与RIL Adapter通信代码目录 │ ├── include │ ├── src │ └── test ├── network_search # 搜网服务代码目录 │ ├── include │ ├── src │ └── test ├── sim # SIM卡服务代码目录 │ ├── include │ ├── src │ └── test ├── common │ ├── log # 核心服务日志打印目录 │ ├── preferences │ ├── utils │ ├── test ``` ## 约束 - 开发语言:C++ 、Java Script。 - 软件上,需要与以下服务配合使用:RIL适配(ril\_adapter),状态注册服务(state\_registry)。 - 硬件上,需要搭载的设备支持以下硬件:可以进行独立蜂窝通信的Modem以及SIM卡。 ## 接口说明 电话核心服务模块需要提供SIM卡,搜网相关模块的接口。 ### 获取SIM卡信息相关接口

API

Description

Required Permission

function GetSimStatus(int32_t slotId): void;

Obtains the SIM card status.

None

function GetIsoCountryCode(int32_t slotId): void;

Obtains the country code.

None

function GetSimOperator(int32_t slotId): void;

Obtains the carrier code.

None

function GetSpn(int32_t slotId): void;

Obtains the SPN information.

None

function SimStateUpdated(int32_t slotId): void;

SIM Card state update

None

function UnlockSimPin(int32_t slotId): void;

Unlock SIM Card

None

### 搜网服务相关接口

接口名称

接口描述

所需权限

function GetPsRadioTech(int32_t slotId): void;

function GetCsRadioTech(int32_t slotId): void;

获取当前接入技术

ohos.permission.GET_NETWORK_INFO

function GetSignalInfoList(int32_t slotId): void;

获取信号列表

None

function GetNetworkStatus(slotId: number, callback: AsyncCallback<GetNetworkStatus>): void;

获取网络状态

ohos.permission.GET_NETWORK_INFO

function GetNetworkSelectionMode(slotId: number, callback: AsyncCallback): void;

获取当前选网模式

None

function SetNetworkSelectionMode(options: NetworkSelectionModeOptions, callback: AsyncCallback): void;

设置当前选网模式

None

function GetNetworkSearchInformation(slotId: number, callback: AsyncCallback): void;

获得手动搜网的结果

None

function IsRadioOn(slotId: number, callback: AsyncCallback): void;

判断radio是否为开

None

function TurnOnRadio(callback: AsyncCallback): void;

打开radio

None

function TurnOffRadio(callback: AsyncCallback): void;

关闭radio

None

function GetISOCountryCodeForNetwork(slotId: number, callback: AsyncCallback): void;

获得国家码

None

function SetPreferredNetworkPara(slotId: number, networkMode: NetworkMode, callback: AsyncCallback): void;

设置优选网络模式

None

function GetPreferredNetworkPara(slotId: number, callback: AsyncCallback): void;

获取优选网络模式

None

function GetSignalStrength(slotId: number, callback: AsyncCallback): void;

获取信号强度

None

function GetOperatorInfo(slotId: number, callback: AsyncCallback): void;

获取运营商信息

None

>**说明:** >RIL管理不对外暴露接口,其接口可通过电话服务子系统各个模块调用。 ## 使用说明 ### 搜网 以获取网络状态为例,相关流程如下: 1. 指定查询的slotId,若不指定默认查询主卡信息。 2. 可以通过callback或者Promise的方式调用GetNetworkStatus方法,返回网络状态信息。 3. 该接口为异步接口,相关执行结果会从callback中返回。 ``` import radio from "@ohos.telephony.radio"; // 参数赋值 let slotId = 1; // 调用接口【callback方式】 radio.GetNetworkStatus(slotId, (err, value) => { if (err) { // 接口调用失败,err非空 console.error(`failed to GetNetworkStatus because ${err.message}`); return; } // 接口调用成功,err为空 console.log(`success to GetNetworkStatus: ${value}`); }); // 调用接口【Promise方式】 let promise = radio.GetNetworkStatus(slotId); promise.then((value) => { // 接口调用成功,此处可以实现成功场景分支代码。 console.log(`success to GetNetworkStatus: ${value}`); }).catch((err) => { // 接口调用失败,此处可以实现失败场景分支代码。 console.error(`failed to GetNetworkStatus because ${err.message}`); }); ``` ### SIM卡 以查询指定SIM卡的状态为例,相关流程如下: 1. 指定查询的slotId。 2. 可以通过callback或者Promise的方式调用getSimState方法,返回卡状态信息。 3. 该接口为异步接口,相关执行结果会从callback中返回。 ``` import sim from "@ohos.telephony.sim"; // 参数赋值 let slotId = 1; // 调用接口【callback方式】 sim.GetNetworkStatus(slotId, (err, value) => { if (err) { // 接口调用失败,err非空 console.error(`failed to GetNetworkStatus because ${err.message}`); return; } // 接口调用成功,err为空 console.log(`success to GetNetworkStatus: ${value}`); }); // 调用接口【Promise方式】 let promise = sim.GetNetworkStatus(slotId); promise.then((value) => { // 接口调用成功,此处可以实现成功场景分支代码。 console.log(`success to getSimState: ${value}`); }).catch((err) => { // 接口调用失败,此处可以实现失败场景分支代码。 console.error(`failed to GetNetworkStatus because ${err.message}`); }); ``` ## 相关仓 [电话服务子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/%E7%94%B5%E8%AF%9D%E6%9C%8D%E5%8A%A1%E5%AD%90%E7%B3%BB%E7%BB%9F.md) **telephony_core_service** [telephony_sms_mms](https://gitee.com/openharmony/telephony_sms_mms/blob/master/README_zh.md)