Vector Blog

写写看看记记 , be happy!

Uinput

uinput是Linux提供的一个可以在用户空间创建input设备的驱动程序。目前看到在Android 中蓝牙鼠标就是利用的 uinput 来发送key event . kernel 中 uinput 的 init 代码如下: /drivers/input/misc/uinput.c static int __init uinput_init(void) { return misc...

Android Bluetooth HID

1. 概述 HID (Human Interface Device) 定义了蓝牙在人机接口设备中的协议、特征和使用规程。典型的应用包括蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等。 2. 协议略读 HID 设备主要分为 Host 和 Device , 其基本通信方式如下图 : 2.1 HID Report Bluetooth HID devices 支持 3 种 report type : In...

Android Bluetooth AVRCP

1. 概述 AVRCP(Audio/Video Remote Control Profile),即音频/视频远程控制规范。 AVRCP 定义了如何控制流媒体的特征和流程, 特征包括暂停、停止、启动重放、音量控制及其它类型的远程控制操作。 AVRCP 定义了两个角色: CT (controller) 和 TG (target) , controller 发送操作命令 , target 接...

Alarm in Bluedroid & Bluetooth 之 bluedroid A2DP Play

1. Alarm in Bluedroid bluedroid 中采用了 POSIX 定时器, 其主要函数有3个 /* 创建定时器 * clock_id :基于哪一种时钟,取值为 CLOCK_REALTIME ,CLOCK_MONOTONIC 等等 * evp :包含定时到期时的信号内型及 callback 函数指针等 * timerid :将指向创建好的定时器ID */ int ti...

WLAN CSMA/CA & QoS

参考 802.11协议精读2:DCF与CSMA/CA 1. CSMA/CA 当在同一个媒介下多个节点同时传输数据时,必然可能产生信道使用的冲突问题造成丢包或大量重传。 在有线网络中最常使用的方法( 此处仅考虑以太网) 是CSMA/CD( Carrier Sense Multiple Access/Collision Detect, 载波监听多路访问/冲突检测机制) 。 其主要工...

wifi 连接抓包 & 4-way handshake

本地试验时因环境较复杂一直无法抓到完整的连接流程, 以下示例均来源于网络,本地试验和示例流程相同。 1. 连接抓包示例 1.1 open方式下的connect 在 open 方式下并不会有 4-way handshake 的过程, 后续传输的 package 并不会被加密。 抓到的air log 中的 data包都可以被直接解析出来。 1.2 wpa/wpa2-psk方式下的c...

EAP & 802.1x

主要内容来自 《深入理解Android:WiFi模块 NFC和GPS卷》 1. EAP 目前身份验证方面最基础的安全协议就是EAP( Extensible Authentication Protocol) , 协议文档定义在RFC3748中。 EAP是一种协议, 更是一种协议框架。 基于这个框架, 各种认证方法都可得到很好的支持。 1.1 EAP 结构 几个概念 : Aut...

Bluetooth 之 bluedroid A2DP Connect

连接流程 Bluedroid 中 A2DP 对外的接口为 bt_av_sink_interface , 其中 connet 对应的是 src_connect_sink static bt_status_t src_connect_sink(bt_bdaddr_t *bd_addr) { BTIF_TRACE_EVENT("%s", __FUNCTION__); CHECK_B...

Bluetooth 之 L2CAP

一.概述 逻辑连接控制和适配协议( the Logical Link Control and Adaptation Layer Protoco),缩写为 L2CAP L2CAP通过协议多路复用、分段重组操作和组概念,向高层提供面向连接的和无连接的数据服务, L2CAP还屏蔽了低层传输协议中的很多特性,使得高层协议应用开发人员可以不必了解基层协议而进行开发 L2CAP通过 channel id...

Bluetooth 之 bluedroid A2DP Init

1. init @ btif_av.c static bt_status_t init_src(btav_callbacks_t* callbacks, int max_a2dp_connections, int a2dp_multicast_state, const char* offload_cap) { ..... ...