1.OpenHarmony源码解析之电话子系统——通话流程
2.OpenHarmony 3GPP协议开发深度剖析——一文读懂RIL
3.信道和套接字有什么区别和联系
4.无线数据终端怎么用
OpenHarmony源码解析之电话子系统——通话流程
OpenAtom OpenHarmony的电话子系统为OS提供了基础的无线通信能力,支持多种网络制式,包括高速无线数据传输和互联网接入。主要功能涵盖语音、短信、彩信、解套指标源码SIM卡管理等。
电话子系统是OpenHarmony架构的重要组成部分,负责CS域(如语音呼叫)和PS域(如数据业务)的服务。系统结构包括应用层(如电话应用、短信应用等)、框架层(SDK提供接口,Framework提供功能模块,如call_manager、cellular_call等)、Hril层(抽象无线硬件设备)和Vendor lib层(与modem交互)等。
代码结构方面,通话管理模块负责CS、IMS和OTT通话,蜂窝通话模块支持2G到5G的语音和数据功能。电话核心服务提供RIL管理和SIM卡功能,数据库模块负责数据存储。RIL Adapter模块屏蔽硬件差异,短彩信模块处理短信和彩信功能,状态注册模块监控网络状态等变化。
源码解析中,etcd分析源码通话功能的实现涉及多个模块间的协作,如通话管理、蜂窝通话服务、Telephony核心服务和RIL适配。以电话接听(Answer)为例,流程从用户点击answer,通过层层调用,涉及call_manager、cellular_call等服务,最终到达modem处理AT命令。整个过程显示了系统内部复杂的服务交互和跨层通信机制。
电话子系统的核心类处理了各种通话类型和上层应用的接口,如dial、answer等。从UI响应到调用底层modem,每个环节都体现了OpenHarmony的模块化设计和通信流程。
OpenHarmony 3GPP协议开发深度剖析——一文读懂RIL
市场上针对终端操作系统3GPP协议开发的相关资料较为稀缺,即便在Android领域,相关学习文档也较为有限,更不用说专门的协议开发书籍了。这可能与市场需求有关,目前市场上从事前后端软件开发的人员最多,包括我自己。
鉴于我在某手机协议开发团队工作过一段时间,对协议的sender编程源码AP侧和CP侧开发都有所涉猎,因此我尝试基于OpenAtom OpenHarmony(以下简称“OpenHarmony”)源码编写一些内容,旨在帮助大家了解协议开发领域,尽可能将3gpp协议内容与OpenHarmony电话子系统模块相结合进行讲解。据我所知,目前终端协议开发人才非常紧缺。首先声明,我不是协议专家,且已离开该领域五六年,如有错误,欢迎指正。
谈到终端协议开发,我首先想到的就是RIL。
CP:Communication Processor(通信处理器),通常理解为modem侧,也可以理解为底层协议,这部分由各个modem芯片厂商完成(如海思、高通)。
AP:Application Processor(应用处理器),通常指手机终端,通常理解为上层协议,主要由操作系统Telephony服务进行处理。
RIL:Radio Interface Layer(无线电接口层),通常理解为硬件抽象层,即AP侧将通信请求传给CP侧的中间层。
AT指令:AT指令是趋势周期源码应用于终端设备与PC应用之间连接与通信的指令。
常规的Modem开发与调试可以使用AT指令进行操作,而各家的Modem芯片的AT指令都会有各自的差异。因此,手机终端厂商为了能在各种不同型号的产品中集成不同modem芯片,需要进行解耦设计来屏蔽各家AT指令的差异。
于是,OpenHarmony采用RIL对Modem进行HAL(硬件抽象),作为系统与Modem之间的通信桥梁,为AP侧提供控制Modem的接口,各Modem厂商则负责提供对应于AT命令的Vender RIL(这些一般为封装好的so库),从而实现操作系统与Modem间的解耦。
框架层:Telephony Service,电话子系统核心服务模块,主要功能是初始化RIL管理、SIM卡和搜网模块。对应OpenHarmony的源码仓库OpenHarmony/telephony_core_service。这个模块也是非常重要的一个模块,后期单独再做详细解读。
硬件抽象层:即我们要讲的RIL,对应OpenHarmony的源码仓库OpenHarmony/telephony_ril_adapter。RIL Adapter模块主要包括厂商库加载,业务接口实现以及事件调度管理。主要用于屏蔽不同modem厂商硬件差异,为上层提供统一的接口,通过注册HDF服务与上层接口通讯。tabbar配置源码
芯片层:Modem芯片相关代码,即CP侧,这些代码各个Modem厂商是不开放的,不出现在OpenHarmony中。
硬件抽象层又被划分为hril_hdf层、hril层和venderlib层。
hril_hdf层:HDF服务,基于OpenHarmony HDF框架,提供hril层与Telephony Service层进行通讯。
hril层:hril层的各个业务模块接口实现,比如通话、短彩信、数据业务等。
vendorlib层:各Modem厂商提供的对应于AT命令库,各个厂商可以出于代码闭源政策,在这里以so库形式提供。目前源码仓中已经提供了一套提供代码的AT命令操作,至于这个是针对哪个型号modem芯片的,我后续了解清楚再补充。
下面是ril_adapter仓的源码结构:
本文解读RIL层很小一部分代码,RIL是如何通过HDF与Telephony连接上的,以后更加完整的逻辑梳理会配上时序图讲解,会更加清晰。首先,我们要对OpenHarmony的HDF(Hardware Driver Foundation)驱动框架做一定了解,最好是动手写一个Demo案例,具体的可以单独去官网查阅HDF资料。
首先,找到hril_hdf.c文件的代码,它承担的是驱动业务部分,源码中是不带中文注释的,为了梳理清楚流程,我给源码关键部分加上了中文注释。
上述代码中配置了对应该驱动的moduleName为"hril_hdf",因此我们需要去找到对应驱动的配置文件,以HiDV开发板为例,它的驱动配置在vendor_hisilicon/HiDV/hdf_config/uhdf/device_info.hcs代码中可以找到,如下:
这里可以发现该驱动对应的服务名称为cellular_radio1,那么telephony_core_service通过HDF与RIL进行通信肯定会调用到该服务名称,因此无查找telephony_core_service的相关代码,可以很快定位到telephony_core_service/services/tel_ril/src/tel_ril_manager.cpp该代码,该代码中有一个关键类TelRilManager,它用来负责管理tel_ril。
看tel_ril_manager.cpp中的一个关键函数ConnectRilAdapterService,它就是用来通过HDF框架获取RIL_ADAPTER的服务,之前定义过RIL_ADAPTER_SERVICE_NAME常量为"cellular_radio1",它就是在vendor_hisilicon/XXXX/hdf_config/uhdf/device_info.hcs中配置的hril_hdf驱动对应的服务名称。
信道和套接字有什么区别和联系
信道是通信领域里物理层的概念,一般有有线信道和无线信道这两大类.一条物理信道可划分为多个子信道,划分方式多种多样, 按频率,时间或空间来划分.物理信道的信号收发处理一般由调制解调芯片(modem)完成,是硬件设备.它的最重要特点就是: 我不关心你收发的是什么数据,我只负责把它收对发对.有线通信的modem比较简单,无线modem则复杂且贵很多.
物理信道在"形而上"的概念,你可以理解为线缆(有线)或者空气(无线)里的电磁波.是传播信息的媒介.
套接字不太清楚,如果是在TCP IP协议里的socket,那只是一个编程的接口吧.是纯软的一个东西.跟信道好像没啥关系.
如果有关系也是应用程序先调用己方socket,形成数据包,经过己方modem发送,经过物理信道的传输,到达对方modem解码,再经过对方socket,再到达对方应用程序.
我猜你是学CS,不是学EE的.
EE负责底层设备,CS偏软的多一点.在通信人眼里,modem才是大头,上层协议不过是玩过家家的小把戏.
就这么说吧,你就算把TCP IP啃得透透的,你也仅仅知道发出去的数据格式罢了,数据是怎么经过电磁波到达对方的你永远也不会知道.
无线数据终端怎么用
无线数据传输终端即实现无线数据传输所使用的终端模块,通常与下位机相连,实现无线数据传输的目的,有“工业领域的手机”的称号,因为其传输原理和我们平常使用的手机的数据传输时基本一致的。其中比较典型的设备包括无线数传,无线路由器,无线Modem等设备,下面介绍的就是应用最广泛的DTU的相关参数作为参考。
DTU的主要功能是把远端设备的数据通过无线的方式传送回后台中心。
如右图所示,要完成数据的传输需要建立一套完整的数据传输系统。在这个系统中包括:DTU,客户设备、移动网络、后台中心。在前端,DTU和客户的设备通过或者接口相连。DTU上电运行后先注册到移动的GPRS网络,然后去和设置在DTU中的后台中心建立SOCKET连接。后台中心作为SOCKET的服务端,DTU是SOCKET连接的客户端。因此只有DTU是不能完成数据的无线传输的,还需要有后台软件的配合一起使用。在建立连接后,前端的设备和后台的中心就可以通过DTU进行无线数据传输了,而且是双向的传输。
DTU已经广泛应用于电力、环保、LED信息发布、物流、水文、气象等行业领域。如上图所示,尽管应用的行业不同,但应用的原理是相同的。大都是DTU和行业设备相连,然后和后台建立无线的通信连接。在物联网日益发展的今天,DTU的使用也越来越广泛。为各行业之间的产业融合提供了帮助。
应用案例:
用户首先关心的是传输距离问题,距离其实不是问题。近则采用MHz频段无线DTU终端DTD,远则选用GPRS透明传输数据终端DTP_SF。所谓“近”,指3公里以内可以覆盖大多数厂矿;所谓“远”,是指通讯距离超过3公里,甚至跨越不同地域以及不同国家,好在中国移动网络已经覆盖了全球,所以距离不是问题。DTP_SF与DTD远近结合可以满足绝大部分无线测控的要求。
◆多台PLC之间的无线通信方案
多台西门子S7_之间的无线MODBUS通信设计说明,具有设计说明及PLC主机和从机的程序。
多台三菱PLC之间的无线N:N通信设计,汇川PLC与三菱PLC方案一样。
两个台达PLC之间的MODBUS无线通信例程,程序源代码和设计说明。
◆无线PLC数据终端与无线MODBUS测控终端的连接应用
PLC与3公里以内4DI/4DO无线开关量终端DTDH以及4AI/4AO无线模拟量终端DTDF进行MODBUS协议无线通信,实现无线MODBUS传输。
◆触摸屏与PLC的无线通信方案
西门子PLC和无线PLC数据终端与深圳步科触摸屏的无线通信;
威纶触摸屏与S7-的无线PPI通信;
昆仑通态触摸屏MCGS与PLC的无线通信;
Autoface触摸屏与西门子PLC的无线MODBUS通信;
显控触摸屏无线通信实例;
运行触摸屏组态程序,能采用MODBUS协议,西门子PPI协议,三菱N:N协议,永宏PLC协议,台达PLC协议等。
◆组态软件与PLC的无线通信方案
组态王软件与西门子PLC的无线PPI、MODBUS通信;
力控组态软件与西门子PLC的无线通信;
DTDF工业级无线模拟量终端DTU可以直接替代传统有线变送器实现无线模拟量采集和传输,解决了有线方案施工繁琐、设备后期维护成本高的难题。与传感器、变送器、PLC、DCS、变频器、智能仪表等配套使用,已经成功的应用有:
◆ 石油钻井架井绳张力无线传输设备;
◆ 泵房变频器无线调速控制;
◆ 锅炉房设备监控、钢铁厂监控设备、灌浆设备无线遥控;
◆ 电力变压器油温无线监控;
◆ 橡胶厂硫化生产工艺无线监测系统。
DTDH工业级无线开关量终端DTU可以直接替代传统有线开关实现无线遥测遥控,解决了有线方案施工繁琐、设备后期维护成本高的难题。可以与PLC、变频器、软启动器、节能设备、电控柜等配套使用,已经成功的应用有:
◆ 泵房电磁阀无线控制;
◆ 水池液位无线遥测遥控;
◆ 加工车间天车无线告知器;
◆ 锅炉房设备监控、钢铁厂监控设备、锻压机械无线遥控;
◆ 垃圾发电设备、污水处理设备、水泥厂电控设备的无线遥控器;
◆ 造纸、造船、机床厂、制药厂等电器开关柜无线遥控。