1094332d3Sopenharmony_ci# Ril
2094332d3Sopenharmony_ci
3094332d3Sopenharmony_ci## 简介
4094332d3Sopenharmony_ci
5094332d3Sopenharmony_ci基于HDF(Hardware Driver Foundation)驱动框架开发的Ril驱动,能够屏蔽硬件器件差异,为上层服务提供稳定的拨打电话、发短信、激活SIM卡等稳定的接口。
6094332d3Sopenharmony_ci
7094332d3Sopenharmony_ciRil驱动模块主要包含HDI(Hardware Driver Interface)接口定义及其实现,对上层提供Telephony的驱动能力接口,HDI接口主要提供如下功能:
8094332d3Sopenharmony_ci
9094332d3Sopenharmony_ci-   通话相关的业务处理能力
10094332d3Sopenharmony_ci-   SIM卡相关的业务处理能力
11094332d3Sopenharmony_ci-   短彩信相关的业务处理能力
12094332d3Sopenharmony_ci-   搜网相关的业务处理能力
13094332d3Sopenharmony_ci-   蜂窝数据相关的业务处理能力
14094332d3Sopenharmony_ci
15094332d3Sopenharmony_ci**图 1**  Ril驱动模型图
16094332d3Sopenharmony_ci
17094332d3Sopenharmony_ci![Ril驱动模型图](figures/ril-driver-module-architecture_zh.png)
18094332d3Sopenharmony_ci
19094332d3Sopenharmony_ci## 目录
20094332d3Sopenharmony_ci
21094332d3Sopenharmony_ci该仓下源代码目录结构如下所示
22094332d3Sopenharmony_ci
23094332d3Sopenharmony_ci```
24094332d3Sopenharmony_ci/drivers/peripheral/ril
25094332d3Sopenharmony_ci├── figures                # readme资源文件
26094332d3Sopenharmony_ci├── interfaces             # Ril模块对上层服务提供的驱动能力接口
27094332d3Sopenharmony_ci│   └── include            # Ril模块对外提供的接口定义
28094332d3Sopenharmony_ci```
29094332d3Sopenharmony_ci
30094332d3Sopenharmony_ci## 约束
31094332d3Sopenharmony_ci
32094332d3Sopenharmony_ci-   开发语言:C++ 。
33094332d3Sopenharmony_ci-   软件约束:需要与RIL Adapter模块(ril\_adapter)配合使用。
34094332d3Sopenharmony_ci-   硬件约束:需要搭载的设备具备可以进行独立蜂窝通信的Modem以及SIM卡。
35094332d3Sopenharmony_ci
36094332d3Sopenharmony_ci## 说明
37094332d3Sopenharmony_ci
38094332d3Sopenharmony_ci### 接口说明
39094332d3Sopenharmony_ci
40094332d3Sopenharmony_ciRil驱动提供给framework层可直接调用的能力接口,主要功能有:通话、SIM卡、短彩信、蜂窝数据、事件上报等业务。Ril驱动模型对HDI开放的API接口功能如表1:
41094332d3Sopenharmony_ci
42094332d3Sopenharmony_ci**表 1** Ril HDI 接口列表
43094332d3Sopenharmony_ci
44094332d3Sopenharmony_ci| 接口名                                                       | 功能描述                                                     |
45094332d3Sopenharmony_ci| ------------------------------------------------------------ | ------------------------------------------------------------ |
46094332d3Sopenharmony_ci| int32_t SetCallback(const sptr\<IRilCallback\> &rilCallback) | 设置IRil回调接口。 |
47094332d3Sopenharmony_ci| int32_t Dial(int32_t slotId, int32_t serialId, const DialInfo &dialInfo) | 拨打电话,slotId 表示卡槽ID,serialId 表示请求的序列化ID,dialInfo 表示拨号信息。 |
48094332d3Sopenharmony_ci| int32_t Answer(int32_t slotId, int32_t serialId) | 接听电话,slotId 表示卡槽ID,serialId 表示请求的序列化ID。 |
49094332d3Sopenharmony_ci| int32_t SendGsmSms(int32_t slotId, int32_t serialId, const GsmSmsMessageInfo &gsmSmsMessageInfo) | 发送GSM短信,slotId 表示卡槽ID,serialId 表示请求的序列化ID,gsmSmsMessageInfo 表示GSM短信信息。|
50094332d3Sopenharmony_ci| int32_t SetActiveSim(int32_t slotId, int32_t serialId, int32_t index, int32_t enable) |  激活或去激活SIM卡,slotId 表示卡槽ID,serialId 表示请求的序列化ID,index 表示SIM卡信息的索引值,enable 表示激活状态 |
51094332d3Sopenharmony_ci| int32_t GetOperatorInfo(int32_t slotId, int32_t serialId) | 查询运营商名称信息,slotId 表示卡槽ID,serialId 表示请求的序列化ID。 |
52094332d3Sopenharmony_ci| int32_t ActivatePdpContext(int32_t slotId, int32_t serialId, const DataCallInfo &dataCallInfo) | 查询运营商名称信息,slotId 表示卡槽ID,dataCallInfo 表示数据业务信息。 |
53094332d3Sopenharmony_ci| int32_t SetRadioState(int32_t slotId, int32_t serialId, int32_t fun, int32_t rst) | 给Modem上下电,slotId 表示卡槽ID,serialId 表示请求的序列化ID,fun 表示功能模式,rst 表示是否复位。 |
54094332d3Sopenharmony_ci
55094332d3Sopenharmony_ci完整的接口说明请参考:[ drivers_interface_ril](https://gitee.com/openharmony/drivers_interface/blob/master/ril/v1_1/IRil.idl)。
56094332d3Sopenharmony_ci
57094332d3Sopenharmony_ci### 使用说明
58094332d3Sopenharmony_ci
59094332d3Sopenharmony_ci本节以拨打电话为例进行介绍。
60094332d3Sopenharmony_ci
61094332d3Sopenharmony_ci代码示例
62094332d3Sopenharmony_ci
63094332d3Sopenharmony_ci```c++
64094332d3Sopenharmony_ci#include "V1_1/iril.h"
65094332d3Sopenharmony_ci
66094332d3Sopenharmony_ci/* Ril回调类 */
67094332d3Sopenharmony_ciclass RilCallback : public HDI::Ril::V1_1::IRilCallback {
68094332d3Sopenharmony_ci    int32_t DialResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override;
69094332d3Sopenharmony_ci    int32_t HangupResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override;
70094332d3Sopenharmony_ci    int32_t RejectResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override;
71094332d3Sopenharmony_ci    int32_t AnswerResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override;
72094332d3Sopenharmony_ci    ...
73094332d3Sopenharmony_ci}
74094332d3Sopenharmony_ci
75094332d3Sopenharmony_ci/* 回调函数 */
76094332d3Sopenharmony_ciint32_t RilCallback::DialResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo)
77094332d3Sopenharmony_ci{
78094332d3Sopenharmony_ci    printf("DialResponse");
79094332d3Sopenharmony_ci    return 0;
80094332d3Sopenharmony_ci}
81094332d3Sopenharmony_ci
82094332d3Sopenharmony_civoid RilSample(void)
83094332d3Sopenharmony_ci{
84094332d3Sopenharmony_ci    /* 创建Ril接口实例 */
85094332d3Sopenharmony_ci    sptr<OHOS::HDI::Ril::V1_1::IRil> g_rilInterface = OHOS::HDI::Ril::V1_1::IRil::Get();
86094332d3Sopenharmony_ci    if (g_rilInterface == nullptr) {
87094332d3Sopenharmony_ci        return;
88094332d3Sopenharmony_ci    }
89094332d3Sopenharmony_ci    /* 设置回调*/
90094332d3Sopenharmony_ci    sptr<HDI::Ril::V1_1::IRilCallback> g_cbObj = new RilCallback();
91094332d3Sopenharmony_ci    g_rilInterface->SetCallback(RilCallback());
92094332d3Sopenharmony_ci
93094332d3Sopenharmony_ci    /**拨打电话**/
94094332d3Sopenharmony_ci    int32_t slotId = 0;
95094332d3Sopenharmony_ci    int32_t serialId = 1;
96094332d3Sopenharmony_ci    HDI::Ril::V1_1::DialInfo dialInfo = {};
97094332d3Sopenharmony_ci    dialInfo.address = "10086";
98094332d3Sopenharmony_ci    dialInfo.clir = 0;
99094332d3Sopenharmony_ci    int32_t ret = g_rilInterface->Dial(slotId, serialId, dialInfo);
100094332d3Sopenharmony_ci}
101094332d3Sopenharmony_ci```
102094332d3Sopenharmony_ci
103094332d3Sopenharmony_ci## 相关仓
104094332d3Sopenharmony_ci
105094332d3Sopenharmony_ci[驱动子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/%E9%A9%B1%E5%8A%A8%E5%AD%90%E7%B3%BB%E7%BB%9F.md)
106094332d3Sopenharmony_ci
107094332d3Sopenharmony_ci[drivers\_framework](https://gitee.com/openharmony/drivers_framework/blob/master/README_zh.md)
108094332d3Sopenharmony_ci
109094332d3Sopenharmony_ci[drivers\_adapter](https://gitee.com/openharmony/drivers_adapter/blob/master/README_zh.md)
110094332d3Sopenharmony_ci
111094332d3Sopenharmony_ci[drivers\_adapter\_khdf\_linux](https://gitee.com/openharmony/drivers_adapter_khdf_linux/blob/master/README_zh.md)
112094332d3Sopenharmony_ci
113094332d3Sopenharmony_ci[drivers\_peripheral](https://gitee.com/openharmony/drivers_peripheral)
114094332d3Sopenharmony_ci
115094332d3Sopenharmony_ci[telephony_core_service](https://gitee.com/openharmony/telephony_core_service/blob/master/README_zh.md)
116094332d3Sopenharmony_ci
117094332d3Sopenharmony_ci[telephony\_ril\_adapter](https://gitee.com/openharmony/telephony_ril_adapter/blob/master/README_zh.md)
118094332d3Sopenharmony_ci
119