
电子发烧友网报道(文/黄晶晶)最近OpenHarmony社区的专家连志安发表了一个视频。视频是说使用润和DAYU200开发套件,搭载OpenHarmony3.1 Release版本,能够在拨号界面打出电话,还表示这个新版本越来越像手机了。
自华为手机搭配鸿蒙系统以来,国产手机 *** 作系统的呼声越来越高。受限于竞争的关系,其他手机厂商并没有直接采用鸿蒙系统。而在万物互联的自主 *** 作系统的发展趋势下,OpenHarmony或许是另一大选择。
OpenHarmony是由开放原子开源基金会孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,搭建一个智能终端设备 *** 作系统的框架和平台,促进万物互联产业的繁荣发展。
当然,OpenHarmony起初来自于华为的捐赠。
2020年9月,开放原子开源基金会接受华为捐赠的智能终端 *** 作系统基础能力相关代码,随后进行开源,并根据命名规则为该开源项目命名为OpenAtom OpenHarmony(简称“OpenHarmony”)。
华为于2019年8月发布的鸿蒙系统(Harmony OS),可以说也是基于OpenHarmony的基础能力发展起来的商业版本的自有品牌的鸿蒙系统。
同样的,这两年基于OpenHarmony发展起来的 *** 作系统已经面向家电、工业、金融等领域。
例如,2021年10月14日,美的发布了美的物联网 *** 作系统1.0,该系统由美的与开放原子开源基金会合作推出,具有跨平台、分布式、开放性的特点。
这也是首个除华为之外的基于OpenHarmony2.0的物联网系统。
还有,中软国际与汇川技术发布了全球首款OpenHarmony工业智能 *** 作系统,共同推进基于国产自主可控底座的工业智能化进程。
目前,唯独在智能手机领域还缺少基于OpenHarmony的手机 *** 作系统。
如今,搭载OpenHarmony3.1 Release版本的开发套件,能够实现打电话功能了,相信又提振了大家对于OpenHarmony手机 *** 作系统的信心。
首先我们来看硬件方面对OpenHarmony3.1的支持,这里以标准系统来看,电子发烧友网查阅,主要有Hi3516DV300,和RK3568等芯片。
Hi3516DV300是新一代Smart HD IP摄像机SOC,集成新一代ISP(Image Signal Processor)、H.265视频压缩编码器、高性能NNIE引擎,在低码率、高画质、智能处理和分析、低功耗等方面有较好的性能。可用在带屏设备上,比如带屏冰箱、车机等。这个芯片对应的开发板型号是Hi3516DV300。
瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,集成4核arm架构A55处理器和Mali G52 2EE图形处理器,支持4K解码和1080P编码。RK3568支持SATA/PCIE/USB3.0等各类型外围接口,内置独立的NPU,可用于轻量级人工智能应用。RK3568支持安卓11和linux系统,主要面向物联网网关、NVR存储、工控平板、工业检测、工控盒、卡拉OK、云终端、车载中控等行业定制市场。这个芯片对应的开发板有润和DAYU200。
润和HH-SCDAYU200是基于Rockchip RK3568,集成双核心架构GPU以及高效能NPU;板载四核64位Cortex-A55 处理器采用22nm先进工艺,主频高达2.0GHz;支持蓝牙、Wi-Fi、音频、视频和摄像头等功能,拥有丰富的扩展接口,支持多种视频输入输出接口;配置双千兆自适应RJ45以太网口,可满足NVR、工业网关等多网口产品需求。影音 娱乐 、智慧出行、智能家居,如烟机、烤箱、跑步机等。
根据之前的介绍,润和软件的DAYU是为OpenHarmony 2.0 Canary 版本提供支持手机类的开发套件。不过,打电话功能应该是在OpenHarmony3.1版本上才实现的。
软件方面,OpenHarmony自发布以来,已经更新了几个版本。
2020年9月10日,OpenHarmony 1.0 版本正式上线,支持内存为128K到128M的终端设备;
2021年6月1日,OpenHarmony 2.0 Canary 版本宣布上线,支持内存128M以上的各种智能终端设备。与OpenHarmony 1.0不同,OpenHarmony 2.0覆盖设备范围延伸到百兆内存及以上的富媒体终端设备。
2021年10月,OpenHarmony 3.0版本发布。
2021年12月31 日OpenHarmony-v3.1-Beta 版本发布。
OpenHarmony-v3.1-Beta 在OpenHarmony 3.0 LTS的基础上,更新支持了以下能力:
标准系统OS基础能力增强: 内核提升CMA利用率特性、图形新增支持RenderService渲染后端引擎、短距离通信支持STA(Station)和SoftAP基础特性、支持地磁场的算法接口、传感器驱动模型能力增强、支持应用帐号信息查询和订阅等、全球化特性支持、编译构建支持统一的构建模板、编译运行时提供Windows/MacOS/Linux的前端编译工具链、JS运行时支持预览器、新增支持JSON处理、Eventbus、Vcard、Protobuf、RxJS、LibphoneNumber等6个JS三方库、新增时间时区管理、DFX新增支持HiSysEvent部件提供查询和订阅接口。
标准系统分布式能力增强: 包括新增支持分布式DeviceProfile特性、分布式数据管理支持跨设备同步和订阅、分布式软总线支持网络切换组网、分布式文件系统支持Statfs API能力等。
标准系统应用程序框架能力增强: 新增ArkUI自定义绘制能力和Lottie动画能力、新增包管理探秘隐式查询和多hap包安装、事件通知支持权限管理、设置通知振动、通知声音设置和查询、通知免打扰、会话类通知等。
标准系统应用能力增强: 输入法应用支持文本输入和横屏下布局显示、短信应用信息管理、联系人应用通话记录和拨号盘显示、设置应用更多设置项。
轻量系统能力增强: HiStreamer轻量级支持可定制的媒体管线框架、Linux版本init支持热插拔、OS轻内核&驱动启动优化、快速启动能力支持。
简单来说,OpenHarmony 3.1版本由于支持更多的能力,比如联系人通话记录和拨号盘显示,比如支持更大内存的终端设备,才使得 *** 作系统界面的优化和功能越来越像手机。
以OpenHarmony覆盖万物的目标来说,它可在多种终端设备上运行。既可运行在百 KB 级别的资源受限设备和穿戴类设备上,也可运行在百 MB 级别的智能家用摄像头、行车记录仪等相对资源丰富的设备上,以及 GB 级别的智能电视等设备上。我们看到从1.0发展起来,它支持的内存容量正在增大。
对于手机而言,早期的智能手机具有512MB、1GB的内存,后来是3GB的内存,现在6GB、8GB、12GB的内存成为主流趋势。要运行应用程序就必须有可使用的内存,例如像微信、图像视频APP、 游戏 等都不同的内存需求。
虽然目前演试的是平板搭载OpenHarmony打电话,但其实目前已有不少手机芯片支持鸿蒙系统。高通骁龙870、888、联发科天玑720、800等支持华为鸿蒙系统。而这些手机芯片未来支持OpenHarmony应该也是自然而然的事。
在鸿蒙系统发布的时候,外界会有安卓套壳的质疑?在开发者论坛上,有资料指出,华为HarmonyOS能够运行安卓的应用程序,主要是由于HarmonyOS 实现了现有Android生态应用(即AOSP)的运行。
而OpenHarmony 用户应用程序基于全新设计的 OpenHarmony API/SDK 开发,可以运行在基于 OpenHarmony 开源项目开发的系统上,并可以在多终端之间无缝流转。
OpenHarmony 程序框架仅支持 OpenHarmony 用户应用程序运行,不支持基于安卓 API/SDK 开发的用户应用程序运行。
因此,OpenHarmony更不存在“安卓套壳”这种说法。而是鼓励开发者开发属于OpenHarmony的应用程序。
在繁荣开源生态方面,去年底的一次会议上,OpenHarmony项目群生态建设组组长朱其罡表示:未来,OpenHarmony 将与主流芯片厂家开展深度合作,逐步实现代码进入社区主干,OpenHarmony 项目群将联合成员单位及工作组提供专项技术支持,预计在2022 年 9月底前与20家主流芯片达成深度合作。随着主流芯片代码进入主干,未来将产生更多的 OpenHarmony 开发板,融合各行业需求,加快技术演进,促进各类终端产品陆续在各行业呈现。
小结:
OpenHarmony以覆盖万物为目标,其中必然绕不开智能手机,这也是万众瞩目的。实际上,OpenHarmony 2.0已具备所有支撑智能手机的能力,包括库和API 接口,此次3.1版本的功能优化,对智能手机的能力进一步的增强。目前尚不知有哪些手机厂商或者第三方厂商会率先推出基于OpenHarmony的智能手机 *** 作系统。如果读者朋友们有进一步的消息,也欢迎向我们爆料。
Linphone是基于WEB的IP电话工具,可以运行于 Linux和Windows下。通过 Linphone可以在互联网上和其他人进行声音、视频通信。 Linphone是遵从SIP协议开发的,它需要和支持SIP协议的设备或者代理服务器进行相互 *** 作。
二、准备工作:
1、DVR联网:
两种方式:
T3DVR连接AI-BOX->T-BOX通过网络转发连接外网。
T3DVR直接接PC,利用PC的网络出外网(桥接)。
2、下载客户端
下载地址:http://www.linphone.org/technical-corner/linphone?qt-technical_corner=2
如上图所示SIP地址为:sip:linphone@192.168.101.3:5060
3、注册自己的账号
T3-DVR的linphone客户端需要账号:
账号注册地址为:https://www.linphone.org/freesip/home
这里我注册的账号为:
SIP地址为: sip:yang-123@sip.linphone.org
Username: yang-123
Domain/Proxy: sip.linphone.org
密码: 123
4、DVR设置账号:
DVR启动后,通过TCP方式设置SIP账号信息:
命令为:CMD_SET_SIP_INFO:sip.linphone.org,yang-123,123
三、linphone *** 作:
1、创建linphone后台进程
linphonecsh init
这一 *** 作开机执行在/etc/profile文件中:
cat /etc/linphonerc >/tmp/linphonerc &/usr/local/bin/linphonecsh init
2、创建linphone后台进程
linphonecsh exit
3、拨号
linphonecsh dial <sip uri or number>
比如:linphone dial sip:102@192.168.4.203
4、挂断
linphonecsh generic terminate
5、注册到服务器(账号登陆)
因为我们使用的是sip.linphone.org服务器,此需要联网
linphonecsh register --host sip.linphone.org --username yang-123 --password 123
这一步跟CMD_SET_SIP_INFO:sip.linphone.org,yang-123,123命令一个作用
6、获取注册状态(登陆状态)
用于获取是否注册成功的信息
linphonecsh status register
7、接通电话
linphonecsh generic answer
通讯录:
8、添加一个好友
linphonecsh generic 'friend add <name><addr>'
例:linphonecsh generic 'friend add yang sip:yang@192.168.101.1:5060'
9、查看好友列表
linphonecsh generic 'friend list'
10、给好友打打电话
linphonecsh generic 'friend call <index>'
例:linphonecsh generic 'friend call yang'
11、删除好友
linphonecsh generic 'friend delete <index>'
12、查看历史记录
linphonecsh generic 'call-logs'
可以看出刚才我打电话的记录。
13、静音配置 打开静音
linphonecsh generic mute
14、静音配置 取消静音
linphonecsh generic unmute
四、Linphone中相关api介绍:
Coreapi:
源码目录:t3_dvr/external/linphone/linphone/coreapi/
该通过这些API接口,可以快速构建基于sip的可视化电话系统。
(1)Callback模块:
文件:callbacks.c
该模块下的回调函数都是用于 sal模块调用的。当 sal处理完 sip协议的处理后,就会调用相应 的 callback函数继续后续的处理,包括启动一个音视频传输流,启动响铃等。也就是说这里的 callback 完成了media媒体层的处理以及 linphone上层的处理。
(2)Address 模块:
文件:address.c
调用 sal提供的接口,进行与地址相关的处理, 这里的地址主要是 uri相关的处理。包括获取地 址以及地址中的部分信息或者设置这些信息。在上层地址是一个字符串指针,但是在内部处理时都 会强制转换为 osip_from结构体来处理。实际上就是对linphone_address结构体的处理。
(3)authentication模块:
文件:authentication.c
处理认证信息。 各个认证用户的信息都被保存到 linphone_auto结构体中兵串接在 linphone_core 结构体上。这里的接口就是处理这些数据结构,提供设置和获取相关信息的接口。
(4)Chat 模块:
文件:chat.c
提供创建和销毁 chat room,向 chat room发送消息和从 chat room接收消息的接口,以及设置和 获取用户数据的接口。 类似于 authorization模块,所有的 chat room信息也是保存在linphone_chat结 构体中并串接在 linphone_core结构体上的。
(5)Friends模块:
文件:friend.c
提供处理 friends相关信息的接口。所有的 friends信息保存在linphone_friend结构体中并被串接 在 linphone_core结构体上,这样 *** 作起来,包括设置,获取,添加以及移除都很方便。
(6)Offeranswer模块:
文件:offeranswer.c
管理基于 sdp的媒体协商。根据本地的支持能力和远端支持的能力,根据就低的原则,获得双方都 可以支持的媒体信息。比如编解码格式等。
(7)presence模块:
文件:Presence.c
提供与在线状态相关的处理。
五、Linphone中参数解析:
T3-DVR 中: /etc/linphonerc
[sip]
sip协议相关参数
[net]
[net_policy_0]
net使用ref参数传递
[misc]
唯一的机器生成的标识
[video]
是否显示、是否录像等标志位
[rtp]
rtp音频端口、视频端口等信息:
[sound]
铃声文件目录、音频频率等、
六、 Linphone中通信过程分析:
实验:两个电脑下载linphone进行通话,Wireshark进行抓包分析通信过程。
Linphone 地址为:
A: sip:linphone@172.17.218.66:5060
B: sip:linphone@172.17.218.139:5060
*** 作:
A给B打电话进行实验:
Wireshark置过滤信息:
(ip.src == 172.17.218.139)||(ip.src == 172.17.218.66)
过程:
SIP(Session Initiation Protocol,会话初始协议)是一个控制发起、修改和终结交互式多媒体(音视频、聊天、游戏等)会话的信令协议
1、主叫方发给被叫方的INVITE请求
2、B向A发送呼叫处理中的应答信号。
3、B向A发送 我正在震铃中,请稍等。
4、B向A发送 接通了。
5、A向B发送应答。
6、A和B互相通过RTP(Real-time Transport Protocol实时传输协议)发送音频或视频数据。
7、A要挂断了
8、关闭UDP服务
9、B知道A挂断了,相应ACK
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33487044/article/details/104080018
一、会话和作业的概念:
1、进程:Linux自身运行的独立程序。
2、进程组:进程组是一个或多个进程的集合。
_____________________________________________________
Linux包括三种不同类型的进程,每种进程都有自己的特点和属性:
3、交互进程 —— 由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。
4、批处理进程 —— 这种进程和终端没有联系,是一个进程序列。
5、监控进程(也称守护进程)—— linux系统启动时启动的进程,并在后台运行。
_______________________________________________________________
6、会话:一个用户登录终端后会新建一个会话,它是和控制终端产生IO交互的过程。这个过程可以称之为会话期。会话期可以产生一个 或 多个进程组的集合。(比喻打电话,首先要电话的接通,接通了才可以产生人与人之间的信息交互。在此会话期间可以产生一个或多个不同范畴的话题)
7、作业:作业类似于用户提交给系统的一个任务。一个作业可以包含一个或多个进程共同完成一个任务。(比喻会议上BOSS需要完成一个任务,根据需求可以分配到一个或多个人配合完成。)
8、作业控制:指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程,等一会儿再继续执行该进程。这样用户就能在多个独立作业间进行切换。(比喻正在进行常规工作的员工,经理突发一个事情需要协助处理。这位员工放下手上的工作(挂起)。首先处理经理安排的事情,完事后再处理常规工作的事情。)
二、通过 date 和 sleep 命令理解前台、后台作业。date 命令是显示系统时间,sleep 命令是设置延时。
1、前台执行命令:
1)、前台执行命令。输入输出都是按部就班,执行完一个命令再执行下一个命令,把结果打印出来。
红色下划线:date 查看当前日期时间。
黄色下划线:sleep 10 延时10秒。
蓝色下划线:date 查看当前日期时间。
通过结果可以看出第一个 date 打印出日期时间后,延时10再执行一个 date 打印日期时间。两个时间相隔 10 秒。
2)、系统正在执行前台的命令时,再输入命令是不会马上执行。要执行完毕前面的命令才可以执行后面输入的命令。同样用 date 和 sleep做实验:
红色下划线:date 输出当前日期时间。
黄色下划线:sleep 60 系统执行延时 60 秒的 *** 作。 [root@localhost ~]# 用户标识符没有出现。虽然光标可以进行输入,但输入的 ls /tmp/ 命令并没有马上执行,没有输出。因为此时,前台正在执行 sleep 60 延时60秒的指令。
红色下划线:等待 sleep 60 执行完毕后,再执行一个 date 输出当前日期时间。两个 date 之间时间相隔 60 秒。
黄色下划线:待整条 date sleep 60 date 命令都执行完毕后,再执行刚才延时 60 秒时输入的 ls /tmp/ 命令,输出结果。
蓝色下划线:[root@localhost ~]# 用户标识符出现才算前台命令执行完毕,可以继续正常 *** 作。
2、后台执行命令:
&:命令后面使用 &符号,可以让命令在后台执行。
jobs:可以查看正在后台运行的作业。
jobs选项:-l —— 除了列出作业号外,同时列出 PID。
-r —— 列出仅仅在后台运行的作业。
-s —— 列出仅仅再后台暂停的作业。
1)、后台运行的命令进程不会影响到前台命令进程。
红色下划线:sleep 30 &—— 把 sleep 30 丢到后台运行。
黄色下划线:通过 jobs 命令跟踪进程情况。(Runing —— 正在运行,Done —— 完成)
绿色下划线:sleep 后台运行期间进行了 ls 和 tail 命令的查询输出,正常运作。
蓝色下划线:jobs 没有输出,代表 sleep 已经完结,没有后台进程。
2)、挂起 和 中断后台运行的命令。
Ctrl+c:中断后台进程。Ctrl+z:挂起后台进程。
jobs 命令可以查看到挂起的命令,不可以查看中断的命令。
3)、jobs选项:-l —— 除了列出作业号外,同时列出 PID。
红色下划线:sleep 100 &,后台运行延时100秒的程序。
黄色下划线:jobs -l 列出所有后台进程(-l —— 含作业号、PID、运行状态 和 执行的命令。)
运行状态有 Running 、Stopped 和 Done,后台正在运行会显示 Running,当运行完毕后用 jobs 查看会显示 Done,并且命令后面的 &符号也会消失。Done只出现一次,下次再用 jobs 查看后台程序就没有了系统曾提示过 Done 的命令。挂起正在运行的命令,后台会显示 Stopped 暂停状态。
-r —— 列出仅仅在后台运行的作业。
-s —— 列出仅仅再后台暂停的作业。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)