oFono 是基于 GPLv2 协议的,它移动电话应用程序提供了一个高级的 D-Bus API。oFono 本身还包含低层次的插件 API 用来集成开源的第三方的电话应用、无线调制解调器以及存储后端等等。下图是 oFono 的体系结构:
1. 背景 回顾一下当今智能手机的架构。目前,很多智能手机都是采用双处理器架构:一个处理器用来运行操作系统相关的工作,应用程序都是运行在这个上面,所以这个处理器又叫Application Processor(AP),一个处理器用来负责和无线射频通讯相关的工作,即Baseband Processor(BP)。AP与BP之间最常见的是使用串口相连接。AP与BP之间通讯协议就是AT命令。 当下,每一个M
摘要: 本文主要讲述GAtChat库接收AT命令的过程。 1. AT命令结果接收 在创建at_chat的过程中,我们会创建一个GAtIO对象。在该对象创建之后,会向主时间循环中添加一个IO可读的监视事件。当发现IO中存在数据时,调用received_data函数来接收,并把接收到的数据上传给上层gatchat进行返回结果的解析。 1 static GAtIO *create_io(GIOChan
摘要 本文主要对oFono中的四大核心部件的概念进行整理。主要是翻译oFono的官方doc 四大核心部件 1.1 Core Daemon Core Daemon提供了供oFono内部使用的一些服务。这些服务包括,将drivers和plugins载入到oFono中;Atoms部件的发现及Atom设备间交流;和PDU短信相关的编码,解码,分段的APIs;读写SIM以及解释EF文件的APIs;设置字符集
摘要 oFono支持动态的检测modem设备的插拔。本文主要讲解oFono如何实现对modem的插拔进行检测的。这篇文章也解释了plugin是如何扩展oFono功能而不是仅仅作为modem/atom驱动的容器。 1.modem设备检测分析 1.1初始化 当设备检测plugin被oFono载入到系统后,系统会对plugin进行初始化。 1 static int detect_init(void)
因为oFono的plugins中加入了对Nokia Phonet的支持,oFono已经可以支持市场上比较高端的N系列手机了,如N900,N97等。我手上没有支持手机的列表,如果你有兴趣的,可以把你的手机通过数据线连上PC,在Linux用oFono看看它能不能识别出手机来。 连接Nokia手机 1. sudo src/ofonod –nd ‘*’ 启动oFono。 2. 用数据线连接手机,我的N90
以下为阅读ofono发送gsm短信流程笔记 1,上层通过DBus调用ofono的sms.c::sms_send_message 1)这一步传入参数: DBusConncetion conn DBusMessage *msg to 收件人地址 text 短信内容 void *data ofono_sms *sms 2)从DBusMessage中取出text和to,验证to合法之后调用sms_text
收发短信是oFono所支持的一项基本功能。用phonesim也可以模拟短信的收发。oFono本身不会保存短信,而是希望第三方plugin如sms history来把短信保存到sim卡或者SD卡上。 1. 启动oFono并power on modem。 2. ./ofono/test/receive-sms 用来监听是否有新的短信 3. 通过send-sms脚本可以发短信。比如 xxx@xxx:~/
摘要 在从IO收到GSM/GPRS模块回传的数据后,就可以按照一定的规则解析这些命令。熟悉Android的朋友可能会想起RIL架构中readline以及process_line这两个函数,一个负责接受一行数据,一个负责对这一行数据进行解析。在GATChat这个库中,将解析这个过程抽象成了一个GATSyntax对象,方便用户进行扩展操作。并分别提供了两个不同的GATSyntax的实现。 1. GAT
摘要 主要说明oFono启动流程。 1.启动分析 1 int main(int argc, char **argv) 2 { 3 /*....*/ 4 g_dbus_set_disconnect_function(conn, system_bus_disconnected, 5 NULL, NULL); 6 7 __o
https://blog.csdn.net/wlsfling/article/details/52354906
问题内容: 我对诺言不太熟悉。我想从承诺电话中隐藏承诺的实现。 例: 然后我将在同一文件中而不是在同一函数中解决我的诺言,我称其为诺言。 现在,我知道“ promiseFriend”是不确定的。我如何才能将承诺电话与承诺解决方案区分开? 问题答案: 如果要在函数中定义一个promise并在其他地方使用它,则首先需要从该函数返回promise,而您在代码中没有这样做。然后,您需要实际调用您也没有执行
突然来电话,说电话上简单聊一聊,因为有事,就把时间控制在5min,说后面还有正式的技术面。 ------------------------- 总共大约7分钟 ------------------------- 1.epoll,poll,select的区别是什么? 2.讲一下多态? 3.你说到动态多态,再详细讲一下。抽象方法是子类调用还是父类调用? 4.看你用过selenium,你一般是怎么获取p
我是新的Android和试图研发应用程序快速帮助。一旦用户双击电源按钮,我希望我的应用程序为两种情况直接呼叫救护车(屏幕打开/关闭)。我已经写了这段代码,但它不起作用。任何帮助将不胜感激。提前谢谢你。:) Android显示 我的电话服务。JAVA MyReceiver.java 主要活动。JAVA
下午2点约的电话面,面试官没来,下午4点多给我打的电话。说要了解一下大致情况。问了测试开发的理解,答错了,他又给解释了一下(大概他也很无语吧)。问了项目具体做什么,项目可能没什么难点,也不是很吸引人,也没继续问。还有Python基础(我说我只会码代码,深层的原理不太明白),后来问了两个深层次的原理都没答上来,就没再问了。然后反问。最后了解完了,挂了电话,感觉已经凉了,全程仅10分钟 被自己菜到。背
一定身着西装,展现出你很重视这个工作机会和认真的态度。(面试认真、工作才会态度认真) 1.做个自我介绍-巴拉巴拉说了详细很多-面试官面带微笑 为什么想投递解决方案经理这个岗位?--相比于纯技术开发,解决方案经理需要与人沟通协调的工作,这能够更加锻炼自身的综合能力;与人交流会更加地打开自己的格局,纯研发的工作可能会让自己的发展空间局限在技术上。 2.你更偏向于国企吗?你对行业有什么看法?-我认为电信
本文向大家介绍开源电商app常用标签"hot"之第三方开源LabelView,包括了开源电商app常用标签"hot"之第三方开源LabelView的使用技巧和注意事项,需要的朋友参考一下 先给大家展示下效果图,看看是不是在你的意料之中哈。 LabelView是在github上一个开源的标签库。其项目主页是:https://github.com/linger1216//labelview Label