读书人

蓝牙工场模式调试

发布时间: 2012-08-22 09:50:35 作者: rapoo

蓝牙工厂模式调试

高通qrd方案一站式服务,蓝牙模块配合好相关主板配电即可以正常工作了。

不过由于之前工厂测试模式是之前项目架构好的,工厂测试模式需要满足jni调用相关的要求。

按照fae提供的函数,调用后无法进行工厂测试。主要是权限问题。与framework相关人员确认了下,是andorid系统安全,避免第三方应用调用到system中内核驱动权限。

因此,只能jni中启动服务,服务执行进入工厂模式的相关操作。

1. 服务

主要是在system目录外的文件夹中启动相关的服务项。选择在vendor目录下新立项目。

新文件夹下,android.mk控制模块生成。

LOCAL_SHARED_LIBRARIES:=libbluedroid

LOCAL_C_INCLUDES: =\

$(LOCAL_PATH)/system/bluedroid/include \

System/bluedtooth/bluez-clean-headers

LOCAL_C_INCLUDES +=\

$(call include-path-for, bluedroid)

由于我的服务中需要用到system里面生成的库。这里就选择了libbluedroid.

之前我选择包含头文件时,有时候总是要写很长一个绝对路径,这里注意包括库的头文件LOCAL_C_INCLUDES +=$(call include-path-for, bluedroid)

系统能够自动找到服务中的include头文件。

然后介绍服务,就是调用bluedroid中的函数。

#includ <bluedroid/Bluetooth.h>

Int main()

{

Bt_disable();

}

2. 启动服务

系统提供了property_set(“ctl.start”,bttest_enable)启动服务。

或者采用触发条件

on property:persist.sys.ty_dmsg=1

start bttest_enable

启动服务中需要注意服务的option

oneshot

在服务退出后不重启。

disabled

这个服务的级别将不会自动启动,它必须被依照服务名指定启动才可以启动。

作为受控的测试服务,新加的服务属性需要加上这两项。

读书人网 >移动开发

热点推荐