欢迎指正错误,共同学习、共同进步!!

下载链接: Bluetooth PROFILE SPECIFICATIONS (基本涵盖所有蓝牙协议)、 buletooth core 2.1-4.0 SPECIFICATION (三蓝牙版本的核心协议v2.1\v3.0\v4.0)、 蓝牙核心技术与应用 马建仓 版 (蓝牙协议相关初学者必读,开发者参考)

蓝牙核心技术概述(一):蓝牙概述
蓝牙核心技术概述(二):蓝牙使用场景
蓝牙核心技术概述(三): 蓝牙协议规范(射频、基带链路控制、链路管理)
蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)
蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)

蓝牙应用的过程中,不同的场合、功能及相关协议。这篇将做详细的介绍说明。

1、ADVANCED AUDIO DISTRIBUTION PROFILE高级音频分发配置文件

A2DP描述了立体声音频如何从媒体输出(source)传输至输入(sink)。
使用情景:
简单说来,这是一个蓝牙音乐播放器(如MP3播放器、随身听、立体声等)音频输出是音乐播放器,而音频输入是无线耳机或无线立体声音响。
产品范例:
以下是使用A2DP配置文件的部分设备类型:
立体声耳机、立体声音、MP3播放器、音乐手机、立体声音频适配器
技术知识:
此配置文件定义了音频设备的两个角色:输出和输入。
•       输出(SRC)-设备在将数字化音频流传输至微微网的输出时则作为输出设备。
•       输入(SNK)-设备在输入来自同一微微网中SRC的数字化音频流时则作为输入设备。
A2DP定义了在ACL信道实现高品质音频内容的单声道或立体声分发协议和程序。因此,“高级音频”与“蓝牙音频”应该区别开来,后者是指根据基带规格定义的SCO信道中分发窄幅波段的语音。
此配置文件建立在GAVDP基础上。它包括对复杂程度低的次频宽编解码技术(SBC)的必备支持和对MPEG-1,2音频、 MPEG-2,4 AAC和自适应声学转换编码技术(ATRAC)的可选支持。音频数据按适当的格式进行压缩后能在有限频宽中正常使用。环绕声的分发不在此配置文件的范围。

基带、LMP、L2CAP和SDP是蓝牙核心规格中定义的蓝牙协议。AVDTP包括一个用于沟通串流参数的信令实体以及一个处理串流的传输实体(请参阅“配置文件协议栈:配置文件模式”)。应用层是设备定义应用服务和传输服务参数的实体。它可以将音频流数据改编成指定的数据包格式,反之亦可。
2、Audio/VideoControl Transport Protocol Specification 音视频控制传输协议。

3、AUDIO/VIDEO REMOTE CONTROL PROFILE 音视频远程控制配置文件:
(1)、视频控制,这个比较古老的应用

(2)、音频控制,比如蓝牙耳机的音量加减、快进、快退、暂停。

AVRCP可以提供标准接口以控制TV、hi-fi设备或其它设备,从而允许通过一个遥控器(或其它设备)来控制用户可以接入的所有 A/V 设备。它可以与A2DP或VDP配合使用。
使用情景:
基本上你掌控了全部控制。你可以调整通用的菜单功能,例如调整电视的亮度或色调或者调整录像机的时间,此外,你还可以控制声音大小、播放、暂停、跳过等音频功能。
产品范例:
以下例子说明了可能会使用AVRCP配置文件的若干设备类型:
控制器设备
个人电脑 、PDA 、手机 、遥控器 、AV设备,例如:耳机、播放器/录音机、计时器、调音器、显示器等
目标设备
音频播放器/录音器、视频播放器/摄录机、电视 、调音器、扩音器或耳机
技术知识
AVRCP定义了两个角色,即控制器和目标设备。
•       控制器 – 通常为远程控制设备。
•       目标设备 – 目标设备为特征可以更改的设备。
此协议规定了 AV/C 数字接口命令集(AV/C 命令集,由 1394 行业协会定义)的应用范围,实现了简化实施和易操作性。此协议为控制消息采用了AV/C设备模式和命令格式,这些消息可以通过音频/视频控制传输协议(AVCTP)传输。
在AVRCP中,控制器将检测到的用户操作翻译为 A/V 控制信号,然后再将其传输至远程蓝牙设备。常规红外遥控器的可用功能可以在此协议中实现。此协议中描述的远程控制专为A/V控制而设计。
基带、LMP和L2CAP均为OSI层级1和2蓝牙协议。AVCTP定义了用于控制A/V设备而进行交换的程序和信息。SDP是蓝牙服务发现协议[10]。AV控制是负责A/V设备控制信令的实体;该信令基于AV/C指令。
4、BASIC IMAGING PROFILE 图片传输配置文件(BIP)
这个协议包含在OBEX协议中。

5、BASIC PRINTING PROFILE 打印机配置文件(BPP)

6、Common ISDN Access Profile (CIP)

CTP CORDLESS TELEPHONY PROFILE  无绳电话协议

7、DEVICE IDENTIFICATION PROFILE 驱动识别
8、DIAL-UP NETWORKING PROFILE 拨号网络配置文件

With phone ,Dial-up Networking profile

With modem, Dial-up Networking profile

拨号网络(DUN)提供一个通过蓝牙技术接入互联网和其他拨号业务的标准。
使用场景:
最常见的使用场景是把你的手机当作一个无线拨号调制解调器从手提电脑上接入互联网。
产品范例:
以下是你可能发现的使用拨号网络(DUN)的几种设备类型:手提电脑、个人电脑、手机、个人数字助理、调制解调器
技术知识:
拨号网络对两种功能作用进行定义,即网关(GW)功能和数据终端(DT)功能。
•     网关(GW)– 这是提供公共网络接入的设备。
•     数据终端(DT)–这是使用网关的拨号服务的设备。
基带,装入微程序(LMP)以及逻辑链路控制及适配协议(L2CAP)为开放系统接口(OSI)1和2层蓝牙协议。RFCOMM 是全球移动通信GSM TS 07.10 的蓝牙适配版,用于提供串口仿真。SDP指蓝牙服务发现协议。拨号与控制为用于对低层协议提供的异步串行链路之上的自动拨号和控制的命令和程序。
左边的图上所显示的调制解调仿真层为模拟调制解调器的实体,调制解调器的驱动器为数据终端中的驱动器软件。对于左边图中的屏蔽协议/实体,该串口配置文件用作基础标准。对于这些协议,在串口配置文件中所说明的所有要求都适用,除了该配置文件明确说明差别的情况除外。
注意:虽然没有在以上模型中显示出来,该配置文件仍假设该应用层接入到一些低级层的程序(举例,SCO同步链路的建立)
9、FAX PROFILE 传真配置文件
10、FILE TRANSFER PROFILE FTP文件传输配置

Bi-directional File Transfer Example between two PersonalComputeres

文件传输配置文件(FTP)定义了客户端设备如何浏览服务器设备上的文件夹和文件。客户端发现文件或定位后,文件即可使用GOEP从服务器抽出至客户端,或者从客户端推送至服务器。
使用情景:
典型的应用场景是两部个人电脑或手提电脑之间进行无线文件传输,或在服务器上浏览和接收文件。
产品范例:
以下是可能使用FTP的部分设备种类:手提电脑、个人电脑、手机、PDA
技术知识:
FTP定义了两种角色,分别为客户端及服务器。
•     客户端 – 客户端设备启动操作,向服务器推送以及从服务器处抽出目标。
•     服务器 – 服务器设备是目标远程蓝牙设备,提供对象交换服务器并可使用OBEX文件夹列表(Folder Listing)格式浏览文件夹。
基带、LMP和L2CAP均为OSI层级1和2蓝牙协议。RFCOMM是蓝牙对于GSM TS 07.10的采纳。SDP是蓝牙服务发现协议。OBEX是蓝牙对于IrOBEX的采纳。
GOEP中定义了RFCOMM、L2CAP、LMP和Baseband的互操作性要
11、GENERIC AUDIO/VIDEO DISTRIBUTION PROFILE通用A/V分发配置文件 (GAVDP)
GAVDP提供了A2DP和VDP的基础,该系统基础旨在使用蓝牙技术分发视频和音频流。
使用情景:
典型的使用情景是一副无线立体声耳机和一个音乐播放器,例如MP3播放器或者随身听。音乐播放器向耳机传送信息建立连接或调整音频流,反之亦然。
产品范例:
以下例子说明了可能会使用GAVDP的若干设备类型:音乐播放器、立体声耳机、立体声音响、手提电脑、个人电脑、手机、PDA
技术知识:
GAVDP定义了启动设备和接收设备两个角色:
•     启动设备(INT) – 这是启动信号发送过程的设备。
•     接收设备(ACP) – 这是回应INT输入请求的设备。
o     注:设备的角色并不固定。角色会于信号传输过程启动时确定,当过程结束时设备角色也将解除。当启动新一轮过程时,设备的角色可以互换。
基带、LMP、L2CAP和SDP是蓝牙核心规格中定义的蓝牙协议。AVDTP包括一个用于沟通串流参数的信令实体以及一个处理串流的传输实体。
12、GENERIC OBJECT EXCHANGE PROFILE通用对象交换配置文件 (GOEP)
GOEP用于从一个设备向另一个设备传输对象。
使用情景:
一个简单的情景是手机或PDA与电脑之间使用蓝牙技术传输文件、电子名片(vCard)、日历数据(vCalendar)和图像等信息。

产品范例:
以下例子说明了可能会使用GOEP的若干设备类型:手提电脑、个人电脑、手机、PDA、媒体播放器。
技术知识:
GOEP定义了服务器和客户端两个角色:
•     服务器 – 该设备提供对象交换服务器,该服务器可以推送数据对象,而客户端也可以从中拉取数据对象。
•     客户端 – 该设备可以向服务器推送及/或从服务器拉取数据对象。
基带、LMP和L2CAP均为OSI层级1和2蓝牙协议。RFCOMM是蓝牙对于GSM TS 07.10的采纳。SDP是蓝牙服务发现协议。OBEX是蓝牙对于IrOBEX的采纳。
13、HARDCOPY CABLE REPLACEMENT PROFILE硬拷贝电缆更换
Laptop sendinga print job to printer

14、Hands-Free Profile  免提配置
Hands-free  unit  installed in the car

HFP描述了免提设备如何使用网关设备拨打和接听电话。
使用情景:
汽车内的汽车套件是常见的使用情景。汽车套件将连接至手机并用于拨打和接听电话。将无线耳机连接至手机后使用耳机拨打和接听电话则更为常见。
产品范例:
以下例子说明了可能会使用HFP的若干设备类型:汽车、汽车套件、GPS系统、耳机 、手机、PDA
技术知识:
HFP定义了音频网关(AG)和免提组件(HF)两个角色:
•       音频网关(AG) – 该设备为音频(特别是手机)的输入/输出网关。
•       免提组件(HF) – 该设备作为音频网关的远程音频输入/输出机制,并可提供若干遥控功能。
基带、LMP和L2CAP均为OSI层级1和2蓝牙协议。RFCOMM是蓝牙串口模拟设备。SDP是蓝牙服务发现协议。

要求与v1.1或较新版本的核心规格兼容。
免提控制是负责免提组件个别控制信令的设备,该信令乃基于AT指令。
尽管上述模型并无显示,该配置文件已假设免提控制能够接入部分更低层级的程序(例如,同步连接建立)。左图所示音频接口模拟层级是模拟音频网关上音频接口的设备,而音频驱动是免提组件的驱动软件。对于左图阴影部分所示的协议/设备,串口配置文件则用作基础标准。对于这些协议而言,所有强制要求均载于所应用的串口配置文件,如果该规格明确列明其他情况则除外。
15、HID --HUMANINTERFACE DEVICE (HID) PROFILE
比如蓝牙键盘鼠标

遥控:

16、HEADSET PROFILE 耳机配置
HSP描述了蓝牙耳机如何与电脑或例如手机等其他蓝牙设备进行通讯。
使用情景: 典型的使用情景当然是使用无线耳机与手机进行连接。
产品范例: 以下例子说明了可能会使用HSP的若干设备类型:耳机、手机、PDA、个人电脑、手提电脑
技术知识:
HSP定义了音频网关(AG)和耳机(HS)两个角色:
•       音频网关(AG) – 该设备为音频(特别是手机或电脑)的输入/输出网关。
•       耳机(HS) – 该设备作为音频网关的远程音频输入/输出机制。
基带、LMP和L2CAP均为OSI层级1和2蓝牙协议。RFCOMM是蓝牙对于GSM TS 07.10的采纳。SDP是蓝牙服务发现协议。耳机控制是专门负责耳机控制信令的设备,该信令乃基于AT指令。
注:尽管上述模型并无显示,该配置文件已假设耳机控制能够接入部分更低层级的程序(例如,SCO连接建立)。
左图所示音频接口模拟层级是模拟手机或电脑上音频接口的设备,而音频驱动是耳机的驱动软件。对于左图阴影部分所示的协议/设备,串口配置文件则用作基础标准。对于这些协议而言,所有要求均载于所应用的串口配置文件,如果该配置文

17、INTERCOM PROFILE 对讲机

18、OBJECT PUSH PROFILE对象推送配置文件
Push and pull example between two mobile phones


OPP定义了推送服务器和推送客户端的角色。这些角色与GOEP定义的服务器和客户端设备角色类似,而且必须与这些设备角色兼容。
使用情景: 例如,两部手机或一部手机和一部电脑之间交换联络信息或任务。
产品范例: 以下是可能使用OPP的部分设备种类:手机、个人电脑、手提电脑。
技术知识:
OPP定义了两种角色,分别为推送服务器及推送客户端:
•     推送服务器– 该设备提供对象交换服务器。
•     推送客户端– 该设备向服务器推送以及从服务器处抽出目标。
基带、LMP和L2CAP均为OSI层级1和2蓝牙协议。RFCOMM是蓝牙对于GSM TS 07.10的采纳。SDP是蓝牙服务发现协议。OBEX是蓝牙对于IrOBEX的采纳。
19、PersonalArea Networking Profile


20、SERVICE DISCOVERY APPLICATION PROFILE服务发现应用配置文件

SDAP描述了一项应用应如何使用SDP发现远程设备上的服务。

使用情景:
SDAP描述了一项应用应如何使用SDP发现远程设备上的服务,SDAP描述了分别通过询问和询问扫描管理设备发现以及通过SDP管理服务发现的若干方式。SDAP规格中包含的概念增强了GAP、SDP和服务发现基础流程中提供的基本规格。SDAP的用例旨在纳入与所有配置文件和设备相关的大部分服务发现情景。
产品范例:
以下是可能使用SDAP的部分设备种类:个人电脑、手提电脑、手机、PDA、打印机/传真机、耳机
技术知识:
一如GAP所要求,任何蓝牙设备均应能够与任何其他蓝牙设备进行连接。据此,SDAP要求任何应用均应能够发现其连接的任何蓝牙设备中的可用服务。该配置文件负责搜索已知的个别服务以及一般服务。SDAP涉及服务发现用户应用,蓝牙设备对服务进行定位时需要该应用。该应用连接了与其他蓝牙设备发送和接收服务询问的SDP。SDAP依赖GAP,并重复使用GAP的组成部分。
SDAP定义了本地设备(LocDev)和远程设备(RemDev(s))两个角色:
•     本地设备(LocDev) – 该设备启动服务发现程序。
•     远程设备(RemDev(s)) – 通过回应本地设备发出的服务询问从而参与服务发现流程的任何设备。
本地设备(LocDev)界面中的服务发现用户应用(SrvDscApp)与蓝牙SDP客户端连接,发出服务询问并从远程设备(RemDevs)的SDP服务器中接收服务询问回应(BT_SDP_spec:[7])。SDP使用L2CAP中的连接导向(CO)传输服务,该服务则使用基带异步无连接(ACL)链路,从而最终实现无线传输SDP PDUs。服务发现与发现设备紧密相连,而发现设备则与进行询问及呼叫紧密相关。因此,SrvDscApp通过BT_module_Cntrl设备与基带连接,该设备指示蓝牙模组何时进入各种运行搜索模式。
21、SERIAL PORT PROFILE串行端口配置文件 (SPP)
Serial port frofile ,example with two notebooks

SPP定义了如何设置虚拟串口并连接两个蓝牙设备。
使用情景
一种使用情景将是使用两个设备,例如个人电脑或手提电脑作为虚拟串口,并通过蓝牙技术连接两个设备。
产品范例: 以下是可能使用SPP的部分设备种类:个人电脑、手提电脑
技术知识:
SPP定义了设备A和设备B两种角色:
•     设备A– 该设备主动与另一设备建立连接(启动器)。
•     设备B– 该设备等待另一设备启动连接(接收器)。
基带、LMP和L2CAP均为OSI层级1和2蓝牙协议。RFCOMM是蓝牙对GSM TS 07.10的采纳,为串口模拟提供了传输协议。SDP是蓝牙服务发现协议。左图所示端口模拟层级是模拟串口或为应用提供API的设备。两边的应用是典型的遗留应用程序,能够并希望通过串行电缆(在这种情况下为虚拟)进行通讯。但遗留应用程序无法了解设置虚拟串行电缆的蓝牙程序,因此两边均需要像蓝牙识别助手应用程序的帮助。(本配置文件并无明确解决这个问题,其针对的主要问题是蓝牙互操作性。)
22、SYNCHRONIZATION PROFILE 同步
Synchronization example with mobile phone and computer

23、VIDEO DISTRIBUTION PROFILE

蓝牙核心技术概述(二):蓝牙使用场景关键词:蓝牙核心技术协议  A2DP AVDTP  HF HCP BIP BPP…………作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢!)欢迎指正错误,共同学习、共同进步!!下载链接:Bluetooth PROFILE SPECIFICATIONS (基本涵盖所有蓝牙协议)、buletooth core 2.1-4.0 SPECIFICAT 2.3.3 sqlite数据库的简单案例 37 2.3.4 使用 contentprovider组件共享数据 40 2.3.5 使用 contentresolver获取分享数据 42 2.4 文件i/o 43 2.4.1 访问sd卡中的文件 44 2.4.2 访问手机中的文件夹 46 2.4.3 读取assets文件夹下的内容 48 2.5 2d动画的开发 50 2.5.1 surfaceview用法简介 50 2.5.2 使用 surfaceview实现2d动画 50 2.6 socket网络通信 56 2.6.1 socket开发基本知识 56 2.6.2 服务器端 57 2.6.3 客户端 58 2.7 蓝牙 通信 59 2.7.1 蓝牙 通信的基本知识 60 2.7.2 聊天案例概览 60 2.7.3 聊天案例的开发过程 62 2.8 本章小结 75 第3章 初识opengl es 2.0 77 3.1 opengl es 2.0概览 77 3.1.1 opengl es 2.0简介 77 3.1.2 初识opengl es 2.0 应用程序 80 3.2 着色器与渲染管线 89 3.2.1 opengl es 1.x的渲染管线 89 3.2.2 opengl es 2.0的渲染管线 94 3.2.3 opengl es中立体物体的构建 97 3.3 主流android手机gpu大pk 98 3.3.1 手机gpu四大家族对比 99 3.3.2 主流gpu的性能参数比较 103 3.4 本章小结 104 第4章 着色语言shading language 105 4.1 着色语言 概述 105 4.2 着色语言基础 106 4.2.1 数据类型 概述 106 4.2.2 数据类型的基本 使用 110 4.2.3 运算符 112 4.2.4 类型转换 114 4.2.5 限定符 115 4.2.6 流程控制 119 4.2.7 函数的声明与 使用 121 4.2.8 片元着色器中浮点变量精度的指定 122 4.2.9 程序的基本结构 123 4.3 特殊的内建变量 123 4.3.1 顶点着色器中的内建变量 124 4.3.2 片元着色器中的内建变量 124 4.4 着色语言的内置函数 125 4.4.1 角度转换与三角函数 126 4.4.2 指数函数 127 4.4.3 常见函数 127 4.4.4 几何函数 130 4.4.5 矩阵函数 132 4.4.6 向量关系函数 133 4.4.7 纹理采样函数 134 4.4.8 微分函数 135 4.5 本章小结 135 第5章 投影及各种变换 136 5.1 摄像机的设置 136 5.2 两种投影方式 137 5.2.1 正交投影 137 5.2.2 透视投影 145 5.3 各种变换 148 5.3.1 基本变换的相关数学知识 148 5.3.2 平移变换 148 5.3.3 旋转变换 152 5.3.4 缩放变换 153 5.3.5 基本变换的实质 155 5.4 绘制方式 156 5.4.1 各种绘制方式概览 156 5.4.2 点与线段绘制方式 157 5.4.3 三角形条带与扇面绘制方式 159 5.4.4 顶点法与索引法 165 5.5 设置合理的视角 167 5.6 卷绕和背面剪裁 173 5.6.1 基本知识 173 5.6.2 一个简单的案例 174 5.7 本章小结 176 第6章 光照 177 6.1 曲面物体的构建 177 6.1.1 球体构建的基本原理 177 6.2.2 案例效果概览 178 6.2.3 开发步骤 179 6.2 基本光照效果 182 6.2.1 光照的基本模型 182 6.2.2 环境光 183 6.2.3 散射光 185 6.2.4 镜面光 190 6.2.5 三种光照通道的合成 194 6.3 定位光与定向光 196 6.4 点法向量和面法向量 199 6.5 光照的每顶点计算与每片元计算 202 6.6 本章小结 204 第7章 纹理映射 205 7.1 初识纹理映射 205 7.1.1 基本原理 205 7.1.2 纹理映射的简单案例 206 7.2 纹理拉伸 212 7.2.1 两种拉伸方式概览 212 7.2.2 不同拉伸方式的案例 214 7.3 纹理采样 217 7.3.1 纹理采样 概述 217 7.3.2 最近点采样 218 7.3.3 线性纹理采样 219 7.3.4 min与mag采样 220 7.3.5 不同纹理采样方式的案例 221 7.4 mipmap纹理技术 226 7.5 多重纹理与过程纹理 227 7.5.1 案例概览 227 7.5.2 将2d纹理映射到球面上的策略 228 7.5.3 案例的 场景 结构 229 7.5.4 开发过程 230 7.6 本章小结 238 第8章 3d基本形状的构建 239 8.1 圆柱体 239 8.1.1 顶点原始位置的生成 239 8.1.2 案例的开发 241 8.2 圆锥体 244 8.2.1 顶点原始位置的生成 244 8.2.2 案例的开发 246 8.3 圆环体 248 8.3.1 顶点原始位置的生成 248 8.3.2 案例的开发 249 8.4 螺旋管 251 8.4.1 顶点原始位置的生成 252 8.4.2 案例的开发 252 8.5 几何球 253 8.5.1 顶点原始位置的生成 254 8.5.2 案例的开发 255 8.6 足球碳分子模型的搭建 262 8.6.1 搭建的基本原理 262 8.6.2 案例的开发 264 8.7 贝塞尔曲线及旋转面 270 8.7.1 三维旋转曲面的生成 270 8.7.2 贝塞尔曲线 270 8.7.3 bezier曲线生成工具 272 8.7.4 印度古典建筑 场景 的开发 274 8.8 本章小结 276 第9章 3d模型加载 277 9.1 obj模型文件概览 277 9.1.1 obj文件的格式 277 9.1.2 用3dmax设计3d模型 278 9.2 加载obj文件 279 9.2.1 加载仅有顶点坐标与面数据的obj文件 279 9.2.2 加载后自动计算面法向量 283 9.2.3 加载后自动计算平均法向量 286 9.2.4 加载纹理坐标 289 9.3 本章小结 292 第10章 混合与雾 293 10.1 混合技术 293 10.1.1 混合基本知识 293 10.1.2 源因子和目标因子 294 10.1.3 简单混合效果案例 295 10.2 地月系云层效果的实现 297 10.3 雾 300 10.3.1 雾的原理与优势 300 10.3.2 雾的简单实现 301 10.4 本章小结 304 第11章 常用3d开发技巧 305 11.1 标志板 305 11.1.1 案例效果与基本原理 305 11.1.2 开发步骤 306 11.2 灰度图地形 310 11.2.1 基本原理 311 11.2.2 普通灰度图地形 311 11.2.3 过程纹理地形 314 11.2.4 mipmap地形 317 11.3 天空盒与天空穹 318 11.3.1 天空盒 318 11.3.2 天空穹 320 11.3.3 天空盒与天空穹的 使用 技巧 321 11.4 镜像技术 322 11.4.1 镜像基本原理 322 11.4.2 基本效果案例 322 11.4.3 升级效果案例 325 11.5 动态文本输出 327 11.5.1 案例效果与基本原理 327 11.5.2 具体开发步骤 328 11.6 非真实感绘制 330 11.6.1 案例效果与基本原理 330 11.6.2 具体开发步骤 331 11.7 本章小结 332 第12章 几种剪裁与测试 333 12.1 剪裁测试 333 12.1.1 基本原理与核心代码 333 12.1.2 一个主次视角的简单案例 334 12.2 alpha测试 335 12.2.1 alpha测试基本原理 335 12.2.2 一个椭圆窗口的案例 335 12.3 模板测试 337 12.3.1 基本原理 337 12.3.2 一个简单的案例 340 12.4 任意剪裁平面 341 12.4.1 基本原理 341 12.4.2 茶壶被任意平面剪裁的案例 342 12.5 本章小结 344 第13章 顶点着色器的妙用 345 13.1 飘扬的旗帜 345 13.1.1 基本原理 345 13.1.2 开发步骤 346 13.2 扭动的软糖 349 13.2.1 基本原理 349 13.2.2 开发步骤 350 13.3 风吹椰林 场景 的开发 351 13.3.1 椰子树随风摇摆的基本原理 351 13.3.2 开发步骤 352 13.4 展翅飞翔的雄鹰 356 13.4.1 基本原理 356 13.4.2 开发步骤 357 13.5 维扭曲 359 13.5.1 基本原理 359 13.5.2 开发步骤 360 13.6 opengl es 1.x与opengl es 2.0实现方案的对比 363 13.7 本章小结 364 第14章 片元着色器的妙用 365 14.1 程序纹理技术 365 14.1.1 砖块着色器 365 14.1.2 沙滩球着色器 367 14.2 数字图像处理 368 14.2.1 卷积的基本知识 369 14.2.2 平滑过滤 369 14.2.3 边缘检测 371 14.2.4 锐化处理 372 14.2.5 浮雕效果 373 14.2.6 图像渐变 374 14.3 分形着色器 375 14.3.1 曼德布罗集简介 375 14.3.2 曼德布罗集着色器的实现 376 14.3.3 将曼德布罗集纹理应用到实际物体上 378 14.3.4 茱莉亚集着色器的实现 379 14.4 本章小结 380 第15章 真实光学环境的模拟 381 15.1 投影贴图 381 15.1.1 案例效果与基本原理 381 15.1.2 开发步骤 382 15.2 反射环境模拟 385 15.2.1 案例效果与基本原理 385 15.2.2 开发步骤 386 15.3 折射环境模拟 388 15.3.1 案例效果与基本原理 388 15.3.2 开发步骤 390 15.4 色散效果的模拟 391 15.4.1 案例效果与基本原理 391 15.4.2 开发步骤 392 15.5 菲涅尔效果的模拟 393 15.5.1 案例效果与基本原理 393 15.5.2 开发步骤 394 15.6 凹凸映射 395 15.6.1 案例效果与基本原理 395 15.6.2 法向量纹理图的生成 396 15.6.3 案例的开发 399 15.7 平面阴影 404 15.7.1 案例效果与基本原理 405 15.7.2 开发步骤 406 15.8 阴影映射 409 15.8.1 案例效果与基本原理 409 15.8.2 距离纹理图的生成 411 15.8.3 阴影 场景 的绘制 417 15.9 光线跟踪 419 15.9.1 案例效果与基本原理 419 15.9.2 开发步骤 423 15.10 本章小结 436 第16章 游戏开发中的物理学 437 16.1 碰撞检测基本技术 437 16.1.1 aabb包围盒的基本原理 437 16.1.2 aabb包围盒的计算 438 16.1.3 aabb包围盒的碰撞检测 440 16.1.4 一个aabb包围盒的案例 442 16.1.5 旋转后的aabb包围盒 444 16.1.6 aabb包围盒的 使用 要点 448 16.1.7 obb包围盒 448 16.2 穿透效应 449 16.2.1 案例的运行效果与基本原理 449 16.2.2 具体开发步骤 450 16.3 粒子系统 450 16.3.1 案例运行效果与基本原理 451 16.3.2 cpu版案例的开发 452 16.3.3 gpu版案例开发步骤 453 16.4 弹簧质点模型 455 16.4.1 案例运行效果与基本原理 455 16.4.2 具体开发步骤 457 16.5 本章小结 462 第17章 游戏的心脏——物理引擎 463 17.1 物理引擎很重要 463 17.1.1 什么是物理引擎 463 17.1.2 常见的物理引擎 463 17.2 jbullet物理引擎 466 17.2.1 基本的物理学概念 466 17.2.2 jbullet中常用类的介绍 468 17.3 箱子相互碰撞的案例 475 17.3.1 案例运行效果及准备工作 476 17.3.2 案例的基本框架结构 476 17.3.3 常量类——constant 477 17.3.4 3d 场景 渲染类——mysurfaceview 478 17.3.5 水平地面——texfloor类 480 17.3.6 箱子——texcube类 481 17.4 复合碰撞形状的 使用 483 17.4.1 案例运行效果 483 17.4.2 立方体圆柱复合形状——cubecylinder类 483 17.5 凹凸地形的案例 486 17.5.1 案例运行效果 486 17.5.2 地形类——landform 486 17.6 任意形状物体的碰撞 488 17.6.1 案例运行效果 488 17.6.2 加载物体类——loadedobjectvertexnormal 488 17.6.3 加载物体刚体类——loadrigidbody 490 17.7 铰链关节 491 17.7.1 铰链关节的基本知识 491 17.7.2 案例的运行效果 492 17.7.3 铰链关节旋转角速度的计算 493 17.7.4 3d界面渲染类——mysurfaceview 494 17.8 滑动关节 496 17.8.1 滑动关节的基本知识 496 17.8.2 案例效果图 497 17.8.3 3d界面渲染类——mysurfaceview 498 17.9 六自由度关节 502 17.9.1 六自由度关节的基本知识 502 17.9.2 案例的运行效果 503 17.9.3 人偶类——doll 503 17.9.4 拾取时采用的点对点关节 505 17.10 本章小结 509 第18章 传感器应用的开发 510 18.1 基本的开发流程 510 18.2 加速度传感器 512 18.2.1 加速度传感器简介 513 18.2.2 案例的开发 514 18.3 磁场传感器 514 18.3.1 磁场传感器简介 514 18.3.2 案例的开发 514 18.4 光传感器 516 18.4.1 光传感器简介 516 18.4.2 案例的开发 516 18.5 温度传感器 518 18.5.1 温度传感器简介 518 18.5.2 案例的开发 518 18.6 接近传感器 519 18.6.1 接近传感器简介 519 18.6.2 案例的开发 520 18.7 姿态传感器 521 18.7.1 姿态传感器简介 521 18.7.2 案例的开发 522 18.8 本章小结 528 第19章 游戏开发小贴士 529 19.1 3d拾取技术 529 19.1.1 案例效果与基本原理 529 19.1.2 开发步骤 531 19.2 多点触控 537 19.2.1 案例效果与基本原理 537 19.2.2 开发步骤 538 19.3 多键监听 541 19.3.1 案例效果与基本原理 541 19.3.2 开发步骤 542 19.4 本章小结 544 第20章 bn赛艇 545 20.1 游戏背景及功能 概述 545 20.1.1 背景 概述 545 20.1.2 功能介绍 545 20.2 游戏的策划及准备工作 547 20.2.1 游戏的策划 547 20.2.2 android 平台 下游戏的准备工作 548 20.3 游戏的架构 552 20.3.1 各个类简要介绍 553 20.3.2 游戏框架简介 558 20.4 主控制类myactivity 559 20.5 2d界面相关类 563 20.5.1 欢迎界面类welcomeview 563 20.5.2 2d界面父类mysfview 565 20.5.3 主菜单类menuview 565 20.5.4 2d界面绘制类viewfordraw 566 20.5.5 数据库工具类dbutil 568 20.5.6 android系统版本对话框androidversiondialog 570 20.6 选船界面相关类 570 20.6.1 着色器管理类shadermanager 571 20.6.2 围墙类colorlightrect 571 20.6.3 选船房间类housefordraw 573 20.6.4 展台类displaystation 575 20.6.5 赛艇类boat 576 20.6.6 选船界面xcsurfaceview 576 20.7 游戏界面相关类 582 20.7.1 进度条类process 583 20.7.2 3d物体父类bndrawer 584 20.7.3 3d物体控制类tdobjectforcontrol 584 20.7.4 赛艇类boat 585 20.7.5 可碰撞物体父类kzbjdrawer 586 20.7.6 可碰撞物体控制类kzbjforcontr 更新以及优化若干组件的体验问题 开发者工具支持大部分新增 API 的调试支持,及修复若干 bug 优化预览调试逻辑,预览生成的 维码,可被当前 AppID 绑定的任一开发者 使用 基础库更新 A 新增 18 个 蓝牙 相关的 API 详情 A 新增 API wx.chooseAddress 获取收货地址 详情 A 新增 API wx.openSetting 打开小程序设置界面 详情 A 新增 API wx.r 蓝牙 核心技术 概述 ): 蓝牙 使用 场景 蓝牙 核心技术 概述 (三): 蓝牙 协议规范(射频、基带链路控制、链路管理) 蓝牙 核心技术 概述 (四): 蓝牙 协议规范(HCI、 L2CAP、 SDP、 RFOCMM) 蓝牙 核心技术 概述 (五): 蓝牙 协议规范(irOBEX、 BNEP、 AVDTP、 AVCTP)
机会网络(OppNets)是现代类型的间歇性连接网络,其中移动用户通过其短程设备相互通信,以在感兴趣的观察者之间共享数据。 在这种情况下,人类是移动设备的主要载体。 这样,可以通过检索固有的用户习惯,兴趣和社交功能来模拟和评估各种 场景 ,从而利用这种移动性。 最近在文献中已经探讨了有关OppNets中人类移动性的若干研究挑战。 在本文中,我们对三个主要类别的人类流动性问题进行了全面的调查:(1)流动性特征,(2)流动性模型和轨迹以及(3)流动性预测技术。 首先,探讨了人类运动的空间,时间和连通性。 其次,总结了 使用 蓝牙 / Wi-Fi技术或基于位置的社交网络捕获的真实移动性轨迹。 此外,对基于仿真的移动性模型进行了分类,并突出显示了每个类别中的最新技术文章。 第三,新的人类流动性预测技术旨在预测人类流动性的三个方面,即: 比较研究了用户的下一次走动,停留时间和接触机会。 最后, 概述 了一些主要的未解决问题。
时下智能语音交互市场火热,越来越多的设备都开始支持远场AI语音交互。 例如:智能音箱,智能电视等等。但这类产品的识别率和误唤醒率还需再不断的优化提升,以至于日常生活中人们还是离不开各式各样的遥控器。而 蓝牙 语音遥控器这一产品,作为远场语音交互的一个近场配件,也搭上了这趟语音交互的快速列车,成长速度令人惊讶。基于Actions炬芯的ATB1103芯片的语音遥控器,打造了一个AIoT时代的高性价比精品。 一、遥控器应用总体架构 遥控器总体架构分四层,从上到下依次为应用层、应用框架层、硬件抽象层、底层驱动层 1.1、应用层 • 应用状态机– 事件触发让遥控器应用处理不同的状态 • 应用定时器– 定时触发不同的事件,驱动遥控器正常运行 • 应用输入处理– 处理底层来的不同按键消息 • 应用音频输入处理– 将底层的音频处理消息,进行编码,然后通过 蓝牙 发送给对端设备 • BLE profile – HID profile,提供按键输入输出接口服务 – BAS service,提供电池服务 – DIS service,提供读取设备基本信息的接口服务 – ota profile,提供OTA 升级服务 1.2、应用框架层 • 输入管理– 按键映射处理、按键过滤机制 • 消息管理– 消息分配和释放、 消息发送和接收 • 内存管理– 动态内存管理 • 闪灯管理– 灯资源分配和释放 • 电池管理– 电量读取、电量管理策略 1.3、硬件抽象层 将应用层和驱动层剥离开的中间件层 1.4、底层驱动层 底层硬件操作接口 、遥控器模块流程 概述 2.1、系统启动 系统相关初始化、板级相关外设初始化、 蓝牙 协议栈相关初始化、HidApp 应用初始化,并进入Main 主循环,等待消息处理 2.2、遥控器状态机 遥控器在运行过程中,主要靠如下3 种状态维持他的正常运行。 2.2.1. 触发遥控器进去空闲状态的事件: > 广播状态,没有连接成功,出现超时事件,进入idle > 连接状态,断开连接,如无操作主动断开连接,然后进入idle 2.2.2. 触发遥控器进入激活状态的事件: > 空闲状态,有按键、首次上电,进入激活状态 > 连接状态,出现异常断开,需要回连,进入激活状态 2.2.3. 触发遥控器进入工作状态的事件: > 激活状态下,配对成功或者回连成功,进入工作状态。 2.3、按键处理 由于遥控器的键值较多,通常用矩阵键盘方式以节省pin 的 使用 。当使能Key 模块后,Key 控制器就会处于矩阵扫描状态,当检测到外部按键有值时,就会产生中断,中断就将按键信息上报给应用。 2.4、红外处理 • 在非连接状态下,按下按键,就会发射红外码,进而通过红外操作对端设备,如 使用 红外进行配对. • IRC 协议上,最短的红外码重发时间为108 ms,而按键的重复上报时间,可能小于108ms,也可能大于108ms,因此按键输入和红外发送模块时间上存在三种可能: 2.4.1. 慢速点按 慢速点按动作特征是在大于Trpc 时间后有多次的按键输入。在Ta 时刻,发出初次按键值,在Tb 时刻,不做任何响应,在Tc 时刻,继续发送检测到的按键值,不会发送重复码. 2.4.2. 快速点按 快速点按的动作特征是用户在Trpc 时间内有两次或者以上的按键按下弹起的动作. 在Ta 时刻,将发送出初次按键,而Tb 时刻并不发送按键值,在Tc 时刻,如果按键仍然是按下状态,将发出按键值,否则将丢掉按键值. 2.4.3. 长按 长按的动作特征是按键按下后,一直不放开。此时CPU 检测到按键的持续按下,则在Ta 时刻发送出初次按键,发送出此时按键对应的红外键码,而在Trpc 时间内没有检测到按键的松开,则在Tb 时间输出重复码,直至检测到按键弹起为止. 2.5、语音采集 • 当启动Voice Key 后,ADC 开始采集 • 采集的数据通过DMA 搬运到应用的循环buffer 中,同时发送消息给Main 线程,让其处理语音数据。 • 如果Main 线程处理速度不够快,audioin 驱动就会因为分不到buffer,而将采集的语音数据丢弃。 2.6、BLE数据传送 • 将audioin 驱动发送上来的数据进行编码压缩。 • 然后将编码后的压缩数据切成几个20byte 的数据包 • 最后通过hid profile notify 接口发送给BLE 协议栈 2.7、应用软件Timer管理模块 2.8、LED管理模块 遥控器定义了几种LED 指示灯,用于指示遥控器的一些状态,如下表所示 通常遥控器只有一个物理的LED 灯用于各种 场景 的指示,这就需要软件上让其分时复用,如果同时需要显示两种状态,状态需要定义优先级,优先级高的状态先指示。如在配对模式下,处于闪灯状态下,这时候按下按键,那么灯还是处于快闪状态。 2.9、O
The Personal Area Networking (PAN) Profile describe how two or more Bluetooth enabled devices can form an ad-hoc network and how the same mechanism can be used to access a remote network through a network access point. The profile roles contained in this document are the Network Access Point, Group Ad-hoc Network, and Personal Area Network User. Network access points can be a traditional LAN data access point while Group Ad-hoc Networks represent a set of devices that are only attached to one another.
1. 使用 实验楼的虚拟机打开shell(https://www.shiyanlou.com/courses/195)      1.  shiyanlou:~/ $ cd LinuxKernel/linux-3.9.4                            [20:12:24]      2.shiyanlou:linux-3.9.4/ $
蓝牙 init时序图 概述 蓝牙 设备在启动时的时序流程。该时序图包含了四个主要部分:初始化 蓝牙 模块、建立 蓝牙 连接、设置 蓝牙 设备的参数和发送 蓝牙 数据。以下是对每个部分的详细解释: 初始化 蓝牙 模块:这一部分开始于 蓝牙 设备的上电操作。在设备启动后, 蓝牙 芯片将首先进行一些内部的自检,并设置一些基本的配置参数。接着,设备将广播自己的 蓝牙 名称,以便其它 蓝牙 设备可以发现并连接到它。 建立 蓝牙 连接:此时, 蓝牙 设备开始进入连接模式,等待其它设备的连接请求。当一个设备发送连接请求时, 蓝牙 芯片会回复一个同意连接的消息,并进行一些协商操作,以确定连接参数并保持通讯。在建立连接后,两个设备可以开始相互发送信息。 设置 蓝牙 设备的参数:在连接建立后,设备可以对连接进行一些参数设置,以满足特定需求。这些设置包括 蓝牙 设备的工作模式、功耗控制、数据传输速率等。 发送 蓝牙 数据:最后,在完成所有的设置后, 蓝牙 设备可以开始发送数据。发送数据时,发送方将信息打包成数据包,加上一些错误检验码,并将其发送到接收方。接收方会解开数据包,检查其正确性,并将接收到的信息传递给接下来的数据处理。 总之, 蓝牙 Init时序图详细描述了 蓝牙 设备在初始化及连接时的流程,为 蓝牙 设备开发和调试提供了指导和参考。