linux查看蓝牙驱动版本号,linux蓝牙驱动代码阅读笔记

news/2024/11/24 12:05:29/

昨天看了一下介绍蓝牙协议文档,今天索性对照看了看kernel里的代码(bluez),这里记点笔记,还是继承了老毛病,只关注整体流程而忽略细节,先了解个大概,等真正需要时再仔细分析。

net/hci_core.c

HCI在主机端的驱动主要是为上层提供一个统一的接口,让上层协议不依赖于具体硬件的实现。HCI在硬件中的固件与HCI在主机端的驱动通信方式有多种,比如像UART、USB和PC Card等等。hci_core.c相当于一个框架,用于把各种具体通信方式胶合起来,并提供一些公共函数的实现。

hci_cmd_task是负责发送CMD的任务,它从hdev->cmd_q队列中取CMD,然后调用hci_send_frame把CMD发送出去,hci_send_frame又会调用实际的HCI驱动的send函数发送数据。

hci_rx_task是负责接收数据的任务,它从hdev->rx_q队列中取数据,然后根据数据的类型调用上层函数处理。数据包有三种类型:

HCI_EVENT_PKT: 用于处理一些通信事件,比如连接建立,连接断开,认证和加密等事件,这些事件控制协议状态的改变。

HCI_ACLDATA_PKT: 异步非连接的数据包,通过hci_acldata_packet提交给上层的L2CAP协议处理(hci_proto[HCI_PROTO_L2CAP])。

HCI_SCODATA_PKT: 同步面向连接的数据包,通过hci_scodata_packet提供给上层的SCO协议处理(hci_proto[HCI_PROTO_SCO])。

hci_tx_task 是负责发送数据的任务,发送所有connect


http://www.ppmy.cn/news/584790.html

相关文章

为ubuntu 18.04添加蓝牙驱动

目录 背景方法 背景 从网上买的能直接插ubuntu 1804的usb蓝牙太少了,而且还贵。我就直接从JD下单的一个便宜的USB蓝牙,结果插上机器没有驱动起不来。我的PC是个3年前的老机器,实在是不想升级系统,于是捣鼓半天捣鼓好了&#xff0…

js精度问题之bignumber.jsdecimal.js的基本使用

一、背景 JavaScript中存在精度缺失问题 为什么? 主要是由于浮点数的表示方式以及计算机的二进制运算原理导致的 JavaScript使用IEEE 754标准定义了浮点数的表示和计算规则。在这种表示方式中,浮点数由符号位、指数位和尾数位组成。尾数位的长度是固…

nuxt 设置i18n后多语言文件不会动态更新

nuxt 设置i18n后多语言文件不会动态更新 昨天遇到的一个问题,然后研究了一整天,今天才得到解决 nuxt 设置i18n多语言时多语言文件不会动态更新 我的原始代码如下: {modules: [nuxtjs/i18n,],i18n: {locales: [{code: en,iso: en-US,name:…

武汉理工大学自动化学院研究生07年就业情况(官方统计)

http://bbs.kaoyan.com/t2701374p1 专业 就业单位 地点 电力电子与电力传动 武汉商贸职业学院 湖北省武汉市 电力电子与电力传动 四川民生石油天然气勘察设计有限公司 四川省成都市 电力电子与电力传动 武汉光迅科技股份有限…

致dudu,分享一下服务器组装与配置

先声明,该文章没有牵涉到.NET 程序设计,但是该服务器是为了给我公司提供sps与.NET服务的。 前几天cnblogs的服务器出现问题,接着由dudu提出为blogs配置第二台服务器的想法,并实行自愿捐款。在此,我也贡献一点自己微薄的…

电脑买回来了

以后晚上就再也不用在办公室呆着了,可以回住的地方做点饭,一边吃一边看东西。晚上也可以熬熬夜,搞点东西。 01年刚工作时候就想着买电脑,可惜当时没钱,只好一直盼望着盼望着,直到如今,电脑配置…

7月18日自助装机配置专家点评

标题类型作者地区时间不到9000的超级游戏高清方案游戏发烧方案raywyzy 2008-7-17 11:11:45 装机理由高性能的CPU4G内存4870显卡22寸显示器,游戏高清绝对都是非常的畅快 配件数量单价品牌型号CPU11175Intel Core 2 Quad Q6600/散装散热系统1249Tt Ruby Orb(CL-P0391)主板1899昂…

Java线程

线程是一个单独程序流程。多线程是指一个程序可以同时运行多个任务,每个任务由一个单独的线程来完成。也就是说,多个线程可以同时在一个程序中运行,并且每一个线程完成不同的任务。程序可以通过控制线程来控制程序的运行,例如线程…