• 【BLE】蓝牙Profile


    【BLE】蓝牙Profile

    Profile 这个单词在蓝牙核心规范中出现的非常多,也是让很多同学很费解的一个单词。

    Profile 本意是”脸的侧面轮廓“,一定要注意:“脸的侧面轮廓”不等于脸本身(脸本身是非常复杂和细致的),而是对脸的一部分进行抽象、描述和定义。

    蓝牙规范是非常复杂的,包含的内容非常多(蓝牙4.0/4.1/4.2/5.0/5.1……),同时蓝牙规范又是十分灵活的,市面上大部分蓝牙产品只需要实现其中很少的一部分就可以实现互联互通,其中大部分可选的规范都可以称之为Profile,所以如果把Profile翻译为“子规范”就可以很好地理解。

    为什么蓝牙没有直接选用“子规范”这个名字,因为英文里没有这样一个单词,所以选用了 Profile(而没有用spec,spec作为core spec已经被用了),这就可以很好地理解 Profile 出现这么多的原因,因为蓝牙的可选规范太多了,下面我们会一个个介绍。

    蓝牙的 Profile 存在层级之分

    Profile定义了一种基于蓝牙的应用,每个Profile规范主要包括针对开发者的接口,消息的格式和标准(例如音频压缩),使用蓝牙协议栈的组件等。

    每一种Profile对应于一个UUID,Bluetooth种UUID的概念类似于TCP/IP中端口的概念,每一个UUID运行一种服务。

    GAP

    GAP,Generic Access Profile,通用访问规范

    该 Profile 保证不同的蓝牙产品可以发现对方并建立连接。

    一般访问应用规范(GAP)定义了蓝牙设备如何发现和建立与其他设备的安全(或不安全)连接。它处理一些一般模式的业务(如询问、命名和搜索)和一些安全性问题(如担保),同时还处理一些有关连接的业务(如链路建立、信道和连接建立)。GAP规定的是一些一般性的运行任务。因此,它具有强制性,并作为所有其它蓝牙应用规范的基础。

    GATT

    GATT,Generic Attribute Profile,通用属性配置规范

    定义了属性类型并规定了如何使用,包括了一个数据传输和存储的框架和一些基本操作。

    GATT定义了两种角色:

    • Server:指提供数据的设备。
    • Client:指通过GATT的服务器获取数据的设备。
      GATT使用场景:智能穿戴设备,手环,汽车,家用电子等。

    SDAP

    SDAP,Service Discovery Application Profile,服务发现应用规范

    通过该Profile,一个Bluetooth设备可以找到其它Bluetooth设备提供的服务,以及查询相关的信息。

    SPP

    SPP,Serial Port Profile,串口规范

    定义了如何在两台BT设备之间建立虚拟串口并进行连接。
    例如,在两台电脑或者Labtop之间就可以建立这种连接。

    GOEP

    GOEP,Generic Object Exchange Profile,通用对象交换规范

    这个Profile的名字有些费解,它定义的是数据的传输,包括同步,文件传输,或者推送其它的数据。可以理解为与内容无关的传输层协议,可以被任何应用用来传输自己定义的数据对象。

    A2DP

    A2DP,Advenced Audio Distribution Profile,先进音频传输规范

    A2DP能提供mono或stereo的音质,一般来讲,在市面的应用产品中,支持A2DP的蓝牙产品都有支持AVRCP。

    A2DP定义了两个角色:

    • Source:音频数据流的源。
    • Sink:音频数据流的接收者。
      A2DP应用场景:典型应用场景为用蓝牙立体声耳机听音乐、将立体声音乐播放器与耳机听筒相连接。

    AVRCP

    AVRCP,Audio/Video Remote Control Profile,音频/视频远程控制规范。

    AVRCP是控制音频视频流的协议,包括暂停、停止、启动重放、音量控制及其它类型的远程控制操作。

    AVRCP主要是对应一些媒体播放控制,基本可以等价于HID,例如PC的“多媒体键盘”上的音量键、播放暂停键等。
    AVRCP事件可以看成HID的特殊情况,具体在Android的keybord layout中定义按键的具体含义。

    AVRCP定义了两个角色:

    • Target:被控制目标设备,接收命令并按命令响应的设备,如播放/录音设备、电视,手机等。
    • Controller:远程控制端设备,通过发送命令帧到目标发起传输。如车载系统、耳机,蓝牙音箱等。
      AVRCP使用场景:例如手机和蓝牙耳机,两者互相使用蓝牙连结,并且能够从耳机端以无线方式操作手机端的音乐播放:停止、播放、音量调整和前后跳曲目。常规红外遥控器可以基于该规范实现。

    DUN

    DUN,Dial-up Networking Profile,拨号规范

    实现一台蓝牙设备通过另外一个带无线功能的蓝牙设备共享上网。
    参照:http://msdn.microsoft.com/en-us/library/cc510743.aspx。

    HID

    HID,Human Interface Device Profile,人机接口设备

    HID是标准的键盘、鼠标等的输入输出,例如可以用这个Profile来实现一些简单的远程按键控制。

    Android中HID的事件捕获与backKey等等方式相同,可以在使用View.OnKeyListener的onKey来捕获对应的keyCode。

    使用场景:鼠标、键盘、摇杆、简单的按键和指示灯

    HSP

    HSP,Headset Profile,耳机规范

    提供手机与耳机之间通话所需的基本功能,实现了最基本的通话操作:接听电话、挂断电话、调节音量、声音在手机/蓝牙耳机之间切换。

    HSP定义了两个角色:

    • Audio Gate:音频设备输入输出网关,例如手机、电脑等。
    • Headset:远程控制端设备,例如蓝牙耳机。
      HSP使用场景:用蓝牙耳机可以控制手机:接听、挂断、调节音量。

    HFP

    HFP,Hands free Profile,免提功能

    让蓝牙设备可以控制电话,如接听、挂断、拒接、拨号、免提等。 HSP仅实现了最基本的通话操作:接听电话、挂断电话、调节音量、声音在手机/蓝牙耳机之间切换, HFP在功能上是对HSP的扩展,除了上述功能以外,还包括控制三方通话、耳机端来电显示等高级功能。

    HFP定义了两个角色:

    • Audio Gate:音频设备输入输出网关,例如手机、电脑等。
    • Hands Free:远程控制端设备,例如车载蓝牙,蓝牙音响等。
      HFP使用场景:应用比较广泛的是在车载蓝牙中,手机与车载连接后可以通过汽车中控来接听挂断电话。

    OPP

    OPP,Object push profile,面向对象传输协议

    用于传输文件。由于OPP profile又细分为OPPC (client)端和OPPS(server)端profile,这两个profile区别在于只有client端可以发起数据传输的过程,但是附件设备与手机通信的情景中,既有手机发起数据传输请求也有设备侧发起传输请求的需要,所以要在设备中实现OPPC和OPPS两个profile。

    OPP定义了两种角色:

    • OPPC(client):OPP客户端,文件传输发起端。
    • OPPS(server): OPP服务端,文件传输接收端。
      OPP使用场景:典型应用场景为使用手机传送mp3给别外一个手机。

    其他不常用的请参考wiki:https://en.wikipedia.org/wiki/List_of_Bluetooth_profiles

  • 相关阅读:
    VMware Workstation 15 安装教程
    linux目录与文件操作命令
    Cadence OrCAD Capture 关键网络逐个检查方法
    MySQL事务
    新能源+低代码:百数服务商新领域,跨行业结合所碰撞出的新火花
    数学建模| 线性规划(Matlab)
    Modern C++ JSON nlohmann::json 使用详解
    CSS3新增特性(一)
    ESP32-arduino,超好玩的定时器!
    基于javaweb+mysql的宿舍管理系统
  • 原文地址:https://blog.csdn.net/weixin_40108380/article/details/127562961