BT 协议调用流程
来源:互联网 发布:人工智能定理证明 编辑:程序博客网 时间:2024/05/16 04:41
android 4.2后的BT协议由原来的bluze更换成了brodcom的协议,代码路径:
external/bluetooth/bluedroid/
该协议与android framework层是通过JNI来相互调用
android的大部份BT协议或功能都在Bluetooth.apk中实现
源码路径:packages/apps/Bluetooth
JNI的也在此实现,源文件是:
jni/com_android_bluetooth_btservice_AdapterService.cpp
同时该协议需要用户实现一个bt_vendor_interface_t接口
const bt_vendor_interface_t BLUETOOTH_VENDOR_LIB_INTERFACE = {
sizeof(bt_vendor_interface_t),
bt_vnd_init,
bt_vnd_op,
bt_vnd_cleanup,
};
libbt-vendor.so在协议初始化时被加载
external/bluetooth/bluedroid/hci/src/bt_hw.c
- void init_vnd_if(unsigned char *local_bdaddr)
- {
- void *dlhandle;
- dlhandle = dlopen("libbt-vendor.so", RTLD_NOW);
- bt_vnd_if = (bt_vendor_interface_t *) dlsym(dlhandle, "BLUETOOTH_VENDOR_LIB_INTERFACE");
- bt_vnd_if->init(&vnd_callbacks, local_bdaddr);
- }
void init_vnd_if(unsigned char *local_bdaddr){ void *dlhandle; dlhandle = dlopen("libbt-vendor.so", RTLD_NOW); bt_vnd_if = (bt_vendor_interface_t *) dlsym(dlhandle, "BLUETOOTH_VENDOR_LIB_INTERFACE"); bt_vnd_if->init(&vnd_callbacks, local_bdaddr);}
我们可以由上看到,在bt_vendor_interface_t 初始化时实际上传入了一个参数 vnd_callbacks,其实在bt_vendor_interface_t最终还是通过vnd_callbacks来操作设备。
从external/bluetooth/bluedroid/hci/src/bt_hw.c中发现vnd_callbacks中所定义的接口进一步调用的接口有bt_hc_cbacks与p_hci_if,这两种接口都在
external/bluetooth/bluedroid/hci/src/bt_hci_bdroid.c中定义
- BT 协议调用流程
- BT 协议调用流程
- BT协议
- BT协议
- bt协议翻译
- bt协议翻译
- BT协议参考资料
- BT协议分析
- bt 协议及分析
- BT协议分析
- BT协议集合
- 转:BT协议分析
- BT DHT协议规范
- BT协议详解
- 1. BT协议
- BT协议各种消息
- BT协议简介
- BT协议分析
- C++ 增强型方法
- Windows Server时间服务器配置方法
- 使用sitemesh建立复合视图 - 1.hello
- x264_macroblock_analyse模块分析-2
- 用NMAKE创建VS2012 C++工程二 创建目录结构
- BT 协议调用流程
- tips for using maven and testng/junit
- jquery dialog
- Debug和Release区别
- 如何快速接手一个项目(内部项目或开源项目)
- java发起http请求提交表单
- android屏幕适配2
- 利用Ansj进行新闻关键词提取
- 二叉树遍历