WEB开发网
开发学院手机开发Android 开发 Android 中添加 AT 命令流程 阅读

Android 中添加 AT 命令流程

 2010-03-05 06:28:00 来源:WEB开发网   
核心提示:3, hardware/ril/libril/ril_commands.h在该文件的最后添加函数映射表,Android 中添加 AT 命令流程(2), 形如{MARK, dispatch, response}解释如下:首先第1个参数即为我们之前所定义的标识,即MARK,这里我们可以处理异常,一般可通过如下代码处理(假设

3。 hardware/ril/libril/ril_commands.h

在该文件的最后添加函数映射表, 形如{MARK, dispatch, response}

解释如下:

首先第1个参数即为我们之前所定义的标识,即MARK。

第2个参数是下层的从数据流中解出数据的函数,这里要和上层所传下来的类型对应,例如上层传下来的是int数组,这里也得是dispathInts, 否则数据会出错

第3个参数是该函数所要返回的值, 这里的和第2个参数的一样。

4。 hardware/ril/reference-ril/reference-ril.c

这里就是发AT命令的核心文件,在static void onRequest (int request, void *data, size_t datalen, RIL_Token t)里面添加我们所要处理的AT命令函数。

照着别人写的, 自己加以修改就可以了。这里对2个发送AT命令的函数进行说明下:

一般来说, 都是这样的,对只返回成功与否的AT命令,我们用at_send_command()。 而对于有返回值的命令,我们用at_send_command_singleline()。

最后回到上层的RIL.java中,在processUnsolicited()或者processSolicited()里面添加返回值即可。

这里我们只选择其中一个来处理,在processUnsolicited()是处理主动上报类型的命令的,即不需要你发送命令去查询的类型。 而processSolicited()则是需要通过发送命令才会返回结果的类型。

大家只要看看那函数里面的值是如何返回的即可, 注意我们选用的返回函数,得和我们在ril_command.h里面所添加的函数映射表里的返回函数对应。

到了这里,AT命令的过程就添加结束, 命令的返回值就在调用Phone里面的函数所传入的Message中。 返回的是一个AsyncResult, 就是Message的obj成员 。

这里我们可以处理异常,一般可通过如下代码处理(假设传入的Message为msg):

AsyncResult ar = (AsyncResult)msg.obj

if (ar.exception != null) 处理异常

处理结果,就对ar.result进行处理。

上一页  1 2 

Tags:Android 添加 AT

编辑录入:coldstar [复制链接] [打 印]
赞助商链接