首页 > 编程语言 >oFono/dbus-python环境搭建以及简单认识

oFono/dbus-python环境搭建以及简单认识

时间:2023-08-09 20:13:12浏览次数:37  
标签:libdbus oFono python dbus ofonod 进程

关键词:D-Bus、oFono、dbus-python、ofonod等等。

1. oFono环境搭建(Buildroot+QEMU)和启动

1.1 Buildroot配置ofonod+dbus-python

配置oFono:

Target packages -> Networking application -> connman -> enable ofono support

使能Python3:

Target packages -> Interpreter languages and scripting -> python3

使能dbus-python:

Target packages -> Hardware handling -> dbus-python

初始化随机数脚本:

Target packages -> Security

编译结束后,可以看出oFono对其他模块依赖关系如下:

1.2 ofonod守护进程

oFono作为守护进程在系统启动时开始执行,它的运行依赖于dbus、connman、random number,所以按照顺序启动了如下相关进程:

  • S20urandom:初始化随机数发生器,ofonod启动需要随机数。
  • S30dbus:启动dbus-daemon服务。
  • S45connman:启动connmand服务。
  • S46ofono:启动ofonod服务。

启动后系统oFono相关进程进程:

  148     1 root     S     5336   1%   0% /usr/sbin/ofonod -n
  144     1 root     S     4364   0%   0% /usr/sbin/connmand -n
  104     1 dbus     S     2956   0%   0% dbus-daemon --system

ofonod的依赖库文件:

76bab000-76bbd000 r-xp 00000000 b3:00 193        /lib/libpthread-2.33.so
76bd0000-76c0a000 r-xp 00000000 b3:00 850        /usr/lib/libpcre.so.1.2.13
76c1b000-76cfd000 r-xp 00000000 b3:00 174        /lib/libc-2.33.so
76d17000-76d19000 r-xp 00000000 b3:00 178        /lib/libdl-2.33.so
76d2a000-76d68000 r-xp 00000000 b3:00 723        /usr/lib/libdbus-1.so.3.19.14
76d7a000-76e7e000 r-xp 00000000 b3:00 798        /usr/lib/libglib-2.0.so.0.7200.3
76e90000-76ee4000 r-xp 00000000 b3:00 765        /usr/lib/libell.so.0.0.2

1.3 ofono使用

修改/etc/ofono/phonesim.con文件,去掉#注释;然后重启ofonod服务。

[phonesim]
Address=127.0.0.1
Port=12345

执行./enable-modem /phonesim:

相关进程大致关系如下:

2 DBUS

DBUS是一个进程间通信解决方案,包含:

  • 一个libdbus库,不同进程调用用于进程间连接和交换消息。
  • 一个守护进程dbus-daemon,其他应用可以连接,dbus-damon路由消息其他进程。
  • 基于特定应用框架的dbus库文件,比如libdbus-glib、libdbus-qt、以及基于python、C++的封装文件。

libdbus仅支持一对一连接,libdbus一般作为其他高层封装的底层后台。dbus-daemon一般作为消息中转,调用libdbus的进程通过dbus-daemon收发消息。

更多参考: 《D-Bus Tutorial (dbus.freedesktop.org)》、《dbus (www.freedesktop.org)》。

2.1 dbus-python

更多参考:《dbus-python tutorial — dbus-python 1.3.2 documentation》。

3 oFono

oFono是由Intel和Nokia联合发布的开源电话通讯框架。代码维护在kernel.org的《ofono/ofono.git - Open Source Telephony》。

ofonod是一个提供访问移动电信设备接口的oFono栈守护进程。应用通过D-Bus控制oFono,比如一个应用可以调用org.ofono.at.Manager.Create通知oFono发送AT命令到电信设备。

3.1 oFono架构

来源:《oFono - Open-source telephony (remlab.net)》。

 

标签:libdbus,oFono,python,dbus,ofonod,进程
From: https://www.cnblogs.com/arnoldlu/p/17617469.html

相关文章

  • Python用GARCH对ADBL股票价格时间序列趋势滚动预测、损失、可视化分析
    全文链接:https://tecdat.cn/?p=33398原文出处:拓端数据部落公众号金融市场的股票价格时间序列分析一直以来都是投资者和研究者关注的主题之一。准确预测股票价格的趋势对于制定有效的投资策略和决策具有重要意义。因此,许多研究人员使用各种统计方法和模型来分析和预测股票价格的......
  • Python | 函数、数据容器
    1.函数函数:是组织好的,可重复使用的,用来实现特定功能的代码段。1.1简单案例重复使用计算字符串的长度str1="heystar"str2="python"str3="abcd"count=0for_instr1:count+=1print(f"字符串{str1}的长度是:{count}")count=0for_instr2:coun......
  • Python潮流周刊#2:Rust 让 Python 再次伟大
    这里记录每周值得分享的Python及通用技术内容,部分为英文,已在小标题注明。(本期标题取自其中一则分享,不代表全部内容都是该主题,特此声明。)文章&教程1、Python修饰器的函数式编程介绍了装饰器的实现原理、带参装饰器、多装饰器、类装饰器和几个典型的示例。文章发布于2014年,代码用......
  • Python潮流周刊#5:并发一百万个任务要用多少内存?
    你好,我是猫哥。这里记录每周值得分享的Python及通用技术内容,部分为英文,已在小标题注明。(标题取自其中一则分享,不代表全部内容都是该主题,特此声明。)文章&教程1、并发一百万个任务要用多少内存?(英文)文中测试了主流的编程语言(Rust、Go、Java、C#、Python、Node.js和Elixir),依次运行......
  • 软件测试|Python函数参数之必传参数、默认参数、可变参数、关键字参数的详细使用
    在Python中,函数参数是定义在函数头部的变量,用于接收传递给函数的数据。Python函数参数有四种类型:必传参数、默认参数、可变参数和关键字参数。每种类型都有不同的使用方式和适用场景。本文将详细介绍这四种函数参数的使用方法。Python函数参数类型必传参数:最常用的,必传确定数量的参......
  • python数据分分析
    数据处理的步骤graphLR处理数据-->清洗数据目的:如何用python操作数据对象:需要的是结构化的数据工具:用到的库库名用途NumpyPandasmatplotlibJupyterNotebookScipyScikit-learnStatsmodelspython的内建数据结构;元组、列表、字典元组......
  • 解决window移植到linux shell执行Python脚本提示找不到模块问题
    1、将工程目录添加到sys.path中(测试有效importsyscpath='project_path'#写成项目的地址最好是绝对地址因为有的地方确实会报错不清楚原因sys.path.append(cpath) eg:sys_path=os.path.abspath(os.curdir)sys.path.append(sys_path.split('test_case')[0])#为了......
  • Modbus通信协议实践(1)-通过modbusRTU实现TPC7022kt对电流表数据的读取
    需求:1.昆仑通泰TPC7022kt触摸屏2.安装了MCGSpro的PC一台3.能使用RS485通讯协议的数显直流电流表一个 操作步骤:1.以常规1mm电线和双绞线连接电流表和昆仑通泰触摸屏,网线连接触摸屏和pc。2.根据数显直流表的说明书,设置该表的通讯地址为01,波特率为9600,N81无校验位,8个数据位,1......
  • python 应用包nltk了解
    NLTK(NaturalLanguageToolkit)是一个用于自然语言处理(NLP)的Python库。它为处理和分析人类语言数据提供了许多工具和接口。NLTK包含了一系列用于文本处理、分析、语言学研究以及机器学习的函数和类。NLTK提供了许多功能,包括:1.文本处理:NLTK提供了处理文本的工具,如分词......
  • Python命令行参数输入
    sys.argv#test.pyimportsysif__name__=='__main__':print(sys.argv[1:])终端输入内容并查看接收到的参数使用argparseimportargparseif__name__=='__main__':#python.\excelcompare.py发票列表1.xlsx发票列表2.xlsxsheet1sheet11BC#pars......