协议栈概述 Sam 一年前在Linux 下写了一个类似Windows 下BTW 的库--BTX。现在需要添加新功能时发现很多知识点都忘记了。所以决定在这次学习中,把一些bluez API 记录下来。这几天又想,这样还不够,不如把Linux 下的Bluetooth 编程基础给记录下来吧。 前言:随着嵌入式系统的飞速发展,很多嵌入式平台上需要Bluetooth 设备和应用。但在Linux下如何对Bluetooth 编程,一直没有一份很好的中文文档。Sam 结合自己的工作,一步一步将一些有用的东西记录下来,希望对其它Linux 下Bluetooth 编程的朋友有点帮助。 一:Bluetooth 基本概念: Bluetooth 是爱立信、诺基亚、东芝、IBM 和Intel 5 家公司在1998 年联合推出的一项无线网络技术。其宗旨是提供一种短距离、低成本的无线传输应用技术。在行业协会筹备阶段,需要一个极具有表现力的名字来命名这项高新技术。行业组织人员,在经过一夜关于欧洲历史和未来无限技术发展的讨论后,有些人认为用Blatand 国王的名字命名再合适不过了。Blatand国王将现在的挪威,瑞典和丹麦统一起来;就如同这项即将面世的技术,将标准不一的短距离无线传输技术统一起来。 Intel 负责半导体芯片和传输软件的开发,爱立信负责无线射频和移动电话软件的开发,IBM和东芝负责笔记本电脑接口规格的开发。 蓝牙是无线数据和语音传输的开放式标准,它将各种通信设备、计算机及其终端设备、各种数字数据系统、甚至家用电器采用无线方式联接起来。它的传输距离为 10cm~10m,如果增加功率或是加上某些外设便可达到 100m 的传输距离。它采用2.4GHz ISM 频段和调频、跳频技术,使用权向纠错编码、ARQ、TDD 和基带协议。TDMA 每时隙为 0.625μ s,基带符合速率为 1Mb/s。蓝牙支持 64kb/s 实时语音传输和数据传输,语音编码为 CVSD,发射功率分别为 1mW、2.5mW 和100mW,并使用全球统一的48 比特的设备识别码。由于蓝牙采用无线接口来代替有线电缆连接,具有很强的移植性,并且适用于多种场合,加上该技术功耗低、对人体危害小,而且应用简单、容易实现,所以易于推广。 蓝牙技术的系统结构分为三大部分:底层硬件模块、中间协议层和高层应用。底层硬件部分包括无线跳频(RF)、基带(BB)和链路管理(LM)。无线跳频层通过 2.4GHz 无需授权的ISM 频段的微波,实现数据位流的过滤和传输,本层协议主要定义了蓝牙收发器在此频带正常工作所需要满足的条件。基带负责跳频以及蓝牙数据和信息帧...