1# Ril 2 3## 简介 4 5基于HDF(Hardware Driver Foundation)驱动框架开发的Ril驱动,能够屏蔽硬件器件差异,为上层服务提供稳定的拨打电话、发短信、激活SIM卡等稳定的接口。 6 7Ril驱动模块主要包含HDI(Hardware Driver Interface)接口定义及其实现,对上层提供Telephony的驱动能力接口,HDI接口主要提供如下功能: 8 9- 通话相关的业务处理能力 10- SIM卡相关的业务处理能力 11- 短彩信相关的业务处理能力 12- 搜网相关的业务处理能力 13- 蜂窝数据相关的业务处理能力 14 15**图 1** Ril驱动模型图 16 17![Ril驱动模型图](figures/ril-driver-module-architecture_zh.png) 18 19## 目录 20 21该仓下源代码目录结构如下所示 22 23``` 24/drivers/peripheral/ril 25├── figures # readme资源文件 26├── interfaces # Ril模块对上层服务提供的驱动能力接口 27│ └── include # Ril模块对外提供的接口定义 28``` 29 30## 约束 31 32- 开发语言:C++ 。 33- 软件约束:需要与RIL Adapter模块(ril\_adapter)配合使用。 34- 硬件约束:需要搭载的设备具备可以进行独立蜂窝通信的Modem以及SIM卡。 35 36## 说明 37 38### 接口说明 39 40Ril驱动提供给framework层可直接调用的能力接口,主要功能有:通话、SIM卡、短彩信、蜂窝数据、事件上报等业务。Ril驱动模型对HDI开放的API接口功能如表1: 41 42**表 1** Ril HDI 接口列表 43 44| 接口名 | 功能描述 | 45| ------------------------------------------------------------ | ------------------------------------------------------------ | 46| int32_t SetCallback(const sptr\<IRilCallback\> &rilCallback) | 设置IRil回调接口。 | 47| int32_t Dial(int32_t slotId, int32_t serialId, const DialInfo &dialInfo) | 拨打电话,slotId 表示卡槽ID,serialId 表示请求的序列化ID,dialInfo 表示拨号信息。 | 48| int32_t Answer(int32_t slotId, int32_t serialId) | 接听电话,slotId 表示卡槽ID,serialId 表示请求的序列化ID。 | 49| int32_t SendGsmSms(int32_t slotId, int32_t serialId, const GsmSmsMessageInfo &gsmSmsMessageInfo) | 发送GSM短信,slotId 表示卡槽ID,serialId 表示请求的序列化ID,gsmSmsMessageInfo 表示GSM短信信息。| 50| int32_t SetActiveSim(int32_t slotId, int32_t serialId, int32_t index, int32_t enable) | 激活或去激活SIM卡,slotId 表示卡槽ID,serialId 表示请求的序列化ID,index 表示SIM卡信息的索引值,enable 表示激活状态 | 51| int32_t GetOperatorInfo(int32_t slotId, int32_t serialId) | 查询运营商名称信息,slotId 表示卡槽ID,serialId 表示请求的序列化ID。 | 52| int32_t ActivatePdpContext(int32_t slotId, int32_t serialId, const DataCallInfo &dataCallInfo) | 查询运营商名称信息,slotId 表示卡槽ID,dataCallInfo 表示数据业务信息。 | 53| int32_t SetRadioState(int32_t slotId, int32_t serialId, int32_t fun, int32_t rst) | 给Modem上下电,slotId 表示卡槽ID,serialId 表示请求的序列化ID,fun 表示功能模式,rst 表示是否复位。 | 54 55完整的接口说明请参考:[ drivers_interface_ril](https://gitee.com/openharmony/drivers_interface/blob/master/ril/v1_1/IRil.idl)。 56 57### 使用说明 58 59本节以拨打电话为例进行介绍。 60 61代码示例 62 63```c++ 64#include "V1_1/iril.h" 65 66/* Ril回调类 */ 67class RilCallback : public HDI::Ril::V1_1::IRilCallback { 68 int32_t DialResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 69 int32_t HangupResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 70 int32_t RejectResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 71 int32_t AnswerResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 72 ... 73} 74 75/* 回调函数 */ 76int32_t RilCallback::DialResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) 77{ 78 printf("DialResponse"); 79 return 0; 80} 81 82void RilSample(void) 83{ 84 /* 创建Ril接口实例 */ 85 sptr<OHOS::HDI::Ril::V1_1::IRil> g_rilInterface = OHOS::HDI::Ril::V1_1::IRil::Get(); 86 if (g_rilInterface == nullptr) { 87 return; 88 } 89 /* 设置回调*/ 90 sptr<HDI::Ril::V1_1::IRilCallback> g_cbObj = new RilCallback(); 91 g_rilInterface->SetCallback(RilCallback()); 92 93 /**拨打电话**/ 94 int32_t slotId = 0; 95 int32_t serialId = 1; 96 HDI::Ril::V1_1::DialInfo dialInfo = {}; 97 dialInfo.address = "10086"; 98 dialInfo.clir = 0; 99 int32_t ret = g_rilInterface->Dial(slotId, serialId, dialInfo); 100} 101``` 102 103## 相关仓 104 105[驱动子系统](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) 106 107[drivers\_framework](https://gitee.com/openharmony/drivers_framework/blob/master/README_zh.md) 108 109[drivers\_adapter](https://gitee.com/openharmony/drivers_adapter/blob/master/README_zh.md) 110 111[drivers\_adapter\_khdf\_linux](https://gitee.com/openharmony/drivers_adapter_khdf_linux/blob/master/README_zh.md) 112 113[drivers\_peripheral](https://gitee.com/openharmony/drivers_peripheral) 114 115[telephony_core_service](https://gitee.com/openharmony/telephony_core_service/blob/master/README_zh.md) 116 117[telephony\_ril\_adapter](https://gitee.com/openharmony/telephony_ril_adapter/blob/master/README_zh.md) 118 119