乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      BLE GATT 介紹

       iamlijin 2019-05-15

      GATT(Generic Attribute Profile),描述了一種使用ATT的服務(wù)框架
      該框架定義了服務(wù)(Server)和服務(wù)屬性(characteristic)的過程(Procedure)及格式
      Procedure定義了characteristic的發(fā)現(xiàn)、讀、寫、通知(Notifing)、指示(Indicating)
      及配置characteristic的廣播

      GATT可以被Application或其他Profile使用
      其協(xié)議棧如下圖
      ---------------        ---------------
      | Application | <----> | Application |
      ---------------        ---------------
      |  Attribute  |        | Attribute   |
      |  Protocol   | <----> | Protocol    |
      ---------------        ---------------
      |    L2CAP    | <----> |    L2CAP    |
      ---------------        ---------------
      |  Controller | <----> |  Controller |
      ---------------        ---------------

      GATT可以配置為如下兩種角色(Role)
      - Client : 命令、請求發(fā)起方
      - Server : 命令、請求接收方

      角色配置實(shí)例如下

      _________ / ======= \ / __________\ | ___________ | Request /\ | |Computer | | ----------> / / | |(Client) | | <---------- / / Sensor(Server) | |_________| | Response / / \=____________/ \/ / ''''''''''' \ / ::::::::::::: \ (_________________)

      Computer是一個溫度服務(wù)客戶端, Sensor是溫度服務(wù)服務(wù)器
      Computer向Sensor發(fā)起Procedure來讀Sensor的值

      GATT對下層的需求如下
      - Physical Link : 使用GAP Channel Establishment建立的ATT Bearer
      - GATT Role     : 不依賴于Coontroller角色(Master/Slave)
      - Security      : 對于LE,Security Features(Authorization、Authentication、Encryption)是可選的
                        對于BR/EDR, Encryption是強(qiáng)制的
      - TX order      : GATT中的多字節(jié)字段,采用Least Significant octet先發(fā)送(Little Endian)

      2 內(nèi)容

      2.1 Configured Broadcast

      對于LE物理鏈路,在Server廣播模式過程中
      Client通過Configured Broadcast告知Server應(yīng)該在advertising data加入Characteristic Value

      方法是Client設(shè)置指定bit位
      廣播頻率則是Service、Characteristic行為定義的一部分

      2.2 GATT Profile Hierarchy

      GATT指定了數(shù)據(jù)交互的結(jié)構(gòu)(Structure)
      這個結(jié)構(gòu)體定義了一些基本元素,如Service、Characteristic
      這些元素存在于Attribute中

      image

      GATT中最上層是Profile,Profile由一個或多個服務(wù)(Service)組成
      服務(wù)是由Characteristics組成,或是其他服務(wù)的引用(Reference)
      Characteristic包含一個值(Value),可能包含該Value的相關(guān)信息

      2.2.1 Service

      Service是[數(shù)據(jù)]和與之關(guān)聯(lián)的[完成某個特定功能的行為]/[特性]的集合
      在GATT中,一個服務(wù)由服務(wù)定義(Service Defintion)來實(shí)現(xiàn)
      一個服務(wù)定義可能包含引用服務(wù)(Reference Service)、強(qiáng)制Characteristic和可選Characteristic

      為了實(shí)現(xiàn)舊版本的兼容,新版本中服務(wù)定義只能增加新的引用服務(wù)或可選Characteristic
      新版本中的服務(wù)定義禁止從舊的服務(wù)定義中改變行為

      Server有兩類
      - Primary Service   : 擁有基本功能的服務(wù),可被其他服務(wù)包含,可以通過Primary Service Discovery過程來發(fā)現(xiàn)
      - Secondary Service : 僅用來被Primary/Other Secondary Service、高層協(xié)議引用的服務(wù)

      判讀一個服務(wù)是Primary or Secondary Service可通過高層協(xié)議強(qiáng)制規(guī)定

      2.2.2 Included Service

      一個Included Service是一種引用已存在服務(wù)的方法,
      具體辦法為在服務(wù)定義的開始加上Included Service的引用,
      這樣整個Included Service定義成為新服務(wù)定義的一部分

      2.2.3 Characteristic

      Characteristic由Characteristic Definition定義,
      包含一個Characteristic聲明、Characteristic屬性、值、值的描述(Optional)

      3 Service Interoperability Requirements

      3.1 Service Definition

      服務(wù)定義(Service Definition)包含一個服務(wù)申明(Service Declaration)
          可能包含Include Definitions和Characteristic Definitions
      在下一個服務(wù)申明前或到達(dá)Maximum Attribute Handle時結(jié)束
      服務(wù)定義在服務(wù)端上基于Attribute Handle順序呈現(xiàn)

      服務(wù)定義中的Include Definitions和Characteristic Definitions被認(rèn)為是服務(wù)的一部分
      服務(wù)定義中的順序?yàn)?
      Service Declaration ~ Include Definitions(>=0) ~ Characteristic Definitions(>=0)

      Service Declaration如下

      Attribute HandleAttribute TypeAttribute ValueAttribute Permission
      0xNNNN0x2800 – UUID for <Primary Service>
      0x2801 – UUID for <Secondary Service>
      16-bit Bluetooth UUID
      128-bit UUID for Service
      Read Only,
      No Authentication,
      No Authorization

      規(guī)則如下:
      - 當(dāng)多個服務(wù)存在時
            使用16-bit Bluetooth UUID服務(wù)定義的服務(wù)應(yīng)該分組(如按順序排列)
            同理,使用128-bit UUID的服務(wù)定義的服務(wù)也分組
      - 一個設(shè)備或高層協(xié)議可能有多個服務(wù)定義,同時多個服務(wù)定義含有相同的Service UUID
      - 服務(wù)端的所有Attributes應(yīng)該包含一個服務(wù)聲明或存在一個服務(wù)定義
      - 服務(wù)端的服務(wù)定義可能無序;Client不應(yīng)該認(rèn)為服務(wù)端的服務(wù)定義一定是有序的

      3.2 Include Definition

      一個Include Definition只包含一個Include Declaration

      Include Declaration如下

      Attribute HandleAttribute TypeAttribute ValueAttribute Permission
      0xNNNN0x2802 – UUID
      for<Include>
      Included Service
      Attribute Handle
      End Group
      Handle
      Service UUID Read Only,
      No Authentication,
      No Authorization

      其中,僅當(dāng)UUID是16-bit Bluetooth UUID時才存在

      如果一個Service的Include Definition(A)是引用其他Server的Include Definition(B)
      那么Include Definition(B)不應(yīng)該引用Include Definition(A),否則就是循環(huán)引用(Circular Reference)

      當(dāng)一個Client檢測到循環(huán)引用或detects nested include declarations to a greater level than it expects
      Client應(yīng)當(dāng)終止本次通信(ATT Bearer)

      3.3 Characteristic Definition

      Characteristic Definition包含如下內(nèi)容
      - Characteristic Declaration                       : First
      - Characteristic Value declaration                 : Second
      - Characteristic Descriptor Declarations(Optional) : Last(含多個時順序不關(guān)緊要)

      Characteristic Definitions在服務(wù)端以Attribute Handle排序

      以上每個Declaration包含在一個單獨(dú)的Attribute中

      3.3.1 Characteristic Declaration

      Characteristic Declaration如下

      Attribute HandleAttribute TypeAttribute ValueAttribute Permission
      0xNNNN0x2803
      – UUID for
      Characteristic
      Characteristic
      Properties
      Characteristic
      Value
      Attribute Handle
      Characteristic
      UUID
      Read Only,
      No Authentication,
      No Authorization

      其中,Attribute Value只讀
      Attribute Value字段如下

      Attribute ValueSizeDescription
      Characteristic Properties 1 octetsBit field of characteristic properties
      Characteristic
      Value Handle
      2 octetsHandle of the Attribute containing the value of this characteristic
      Characteristic UUID2/16 octets16-bit Bluetooth UUID or 128-bit UUID for Characteristic Value

      一個Service可能含有相同Characteristic UUID的Characteristic Definitions

      在一個服務(wù)定義中,一些強(qiáng)制的Characteristics應(yīng)該位于Include Declarations之后、其他可選characteristics之前
      而Client不應(yīng)該認(rèn)為Characteristic是有序的
      同時,16-bit Bluetooth UUIDs和128-bit Bluetooth UUIDs應(yīng)該分別分組

      Characteristic Properties以bit位的方式?jīng)Q定如下內(nèi)容
      - Characteristic Value的使用方式
      - Characteristic Descriptors的訪問方式

      Characteristic Properties bit field的詳細(xì)內(nèi)容如下
      Notice: 多個比特位可以同時設(shè)置

      PropertiesValueDescription
      Broadcast0x01If set, permits broadcasts of the Characteristic Value
      using Characteristic Configuration Descriptor
      Read0x02If set, permits reads of the Characteristic
      Value using procedures defined in Section 4.8
      Write Without
      Response
      0x04If set, permit writes of the Characteristic Value
      without response using procedures
      defined in Section 4.9.1
      Write0x08If set, permits writes of the Characteristic Value
      with response using procedures
      defined in Section 4.9.3 or Section 4.9.4
      Notify0x10If set, permits notifications of a Characteristic Value
      without acknowledgement using the procedure
      defined in Section 4.10
      Indicate0x20If set, permits indications of a Characteristic Value
      with acknowledgement using the procedure
      defined in Section 4.11
      Authenticated
      Signed Writes
      0x40If set, permits signed writes to the Characteristic Value
      using the procedure defined in Section 4.9.2
      Extended
      Properties
      0x80If set, additional characteristic properties are
      defined in the Characteristic Extended Properties Descriptor
      defined in Section 3.3.3.1

      3.3.2 Characteristic Value Declaration

      Characteristic Value Declaration如下

      Attribute HandleAttribute TypeAttribute ValueAttribute Permissions
      0xNNNN0xuuuu – 16-bit Bluetooth UUID
      or
      128-bit UUID for Characteristic UUID
      Characteristic ValueHigher layer profile
      or
      implementation specific

      3.3.3 Characteristic Descriptor Declarations

      Characteristic Descriptor Declarations包含了Characteristic Value相關(guān)信息

      GATT定義了一系列的標(biāo)準(zhǔn)Characteristic Descriptors供高層協(xié)議使用
      高層協(xié)議也可以定義協(xié)議相關(guān)的Characteristic Descriptors

      Characteristic Descriptors在服務(wù)端上是無序的,Client不應(yīng)該理所當(dāng)然
      Characteristic Descriptors Declarations Permissions由高層協(xié)議定義或協(xié)議相關(guān)的
      Client不應(yīng)該理所當(dāng)然地認(rèn)為是可讀的

      Characteristic Descriptor Declarations包括如下內(nèi)容(詳細(xì)見規(guī)范)

      - Characteristic Extended Properties
      - Characteristic User Description
      - Client Characteristic Configuration
      - Server Characteristic Configuration
      - Characteristic Presentation Format
      - Characteristic Aggregate Format

      3.4 Summary of GATT Profile Attribute Types

      Attribute TypeUUIDDescription
      <Primary Service>0x2800Primary Service Declaration
      <Secondary Service>0x2801Secondary Service Declaration
      <Include>0x2802Include Declaration
      <Characteristic>0x2803Characteristic Declaration
      <Characteristic Extended Properties>0x2900Characteristic Extended Properties
      <Characteristic User Description>0x2901Characteristic User Description Descriptor
      <Client Characteristic Configuration>0x2902Client Characteristic Configuration Descriptor
      <Server Characteristic Configuration>0x2903Server Characteristic Configuration Descriptor
      <Characteristic Format>0x2904Characteristic Format Descriptor
      <Characteristic Aggregate Format>0x2905Characteristic Aggregate Format Descriptor

      4. GATT Feature Requirements

      4.1 Overview

      GATT中定義了11項(xiàng)Feature
      1.  Server Configuration
      2.  Primary Service Discovery
      3.  Relationship Discovery
      4.  Characteristic Discovery
      5.  Characteristic Descriptor Discovery
      6.  Reading a Characteristic Value
      7.  Writing a Characteristic Value
      8.  Notification of a Characteristic Value
      9.  Indication of a Characteristic Value
      10. Reading a Characteristic Descriptor
      11. Writing a Characteristic Descriptor

      每個Feature都有對應(yīng)的過程和子過程,這些過程描述了如何使用ATT來實(shí)現(xiàn)各自的功能

      4.2 Feature Support and Procedure Mapping

      詳細(xì)的對應(yīng)列表如下表

      No

      Feature

      Sub-Procedure

      Ref

      Client
      Support

      Server
      Support

      1

      Server Configuration

      Exchange MTU

      4.3.1

      O

      O

      2

      Primary Service

      Discovery

      Discover All Primary Services

      4.4.1

      O

      M

      Discover Primary Services By
      Service UUID

      4.4.2

      O

      M

      3

      Relationship Discovery

      Find Included Services

      4.5.1

      O

      M

      4

      Characteristic
      Discovery

      Discover All Characteristic of a Service

      4.6.1

      O

      M

      Discover Characteristic by UUID

      4.6.2

      O

      M

      5

      Characteristic
      Descriptor Discovery

      Discover All Characteristic Descriptors

      4.7.1

      O

      M

      6

      Characteristic

      Value Read

      Read Characteristic Value

      4.8.1

      O

      M

      Read Using Characteristic UUID

      4.8.1

      O

      M

      Read Long Characteristic Values

      4.8.2

      O

      O

      Read Multiple Characteristic Values

      4.8.3

      O

      O

      7

      Characteristic

      Value Write

      Write Without Response

      4.9.1

      O

      C.1

      Signed Write Without Response

      4.9.2

      O

      O

      Write Characteristic Value

      4.9.3

      O

      C.2

      Write Long Characteristic Values

      4.9.4

      O

      O

      Characteristic Value Reliable Writes

      4.9.5

      O

      O

      8

      Characteristic

      Value Notification

      Notifications

      4.10.1

      O

      O

      9

      Characteristic

      Value Indication

      Indications

      4.11.1

      M

      C.3

      10

      Characteristic
      Descriptor Value Read

      Read Characteristic Descriptors

      4.12.1

      O

      O

      Read Long Characteristic Descriptors

      4.12.2

      O

      O

      11

      Characteristic
      Descriptor Value Write

      Write Characteristic Descriptors

      4.12.3

      O

      O

      Write Long Characteristic Descriptors

      4.12.4

      O

      O

      C1: Write Without Response is mandatory if Signed Write Without Response is supported

      otherwise optional

      C2: Write Characteristic Value is mandatory if Write Long Characteristic Values is supported

      otherwise optional

      C3: If Service Change Characteristic is present, this feature is mandatory, otherwise optional.

      4.3 Server Configuration

      該過程可被Client用來配置Attribute Protocol的MTU大小

      4.3.1 Exchange MTU

      Client使用該子過程來設(shè)置適配雙方均支持的最大ATT_MTU

      在BR/EDR物理鏈路中不應(yīng)該使用該過程,而應(yīng)該使用L2CAP Channel Configuration Procedures

      該過程對應(yīng)于ATT的MTU Exchange Request/Response
      見<Bluetooth ATT介紹 - 4.2 MTU Exchange>

      4.4 Primary Service Discovery

      Client使用該過程來發(fā)現(xiàn)服務(wù)端的Primary Services
      一旦發(fā)現(xiàn)服務(wù)存在,可通過其他過程來訪問Primary Services的附加信息(關(guān)聯(lián)主服務(wù)和次服務(wù))
      可使用的其他過程包括Characteristic Discovery和Relationship Discovery

      該過程包括兩個子過程:
      - Discover All Primary Services
      - Discover Primary Services by Service UUID

      在BR/EDR物理鏈路上則使用SDP service discovery來發(fā)現(xiàn)服務(wù)

      4.4.1 Discover All Primary Services

      Client使用該子過程來發(fā)現(xiàn)服務(wù)端的所有Primary Services

      該子過程使用ATT的Read By Group Type Request,同時設(shè)置如下參數(shù)
      - Starting Handle : 0x0001
      - Ending Handle   : 0xFFFF
      - Attribute Type  : UUID for <Primary Service>

      可能的回應(yīng)有
      - Read By Group Type Response
      - Error Response

      Read By Group Type Response返回三元組列表
      三元組包括
      - Attribute Handle : 服務(wù)聲明的Handle
      - End Group Handle : 服務(wù)定義中最后一個Attribute的Handle
      - Attribute Value  : 服務(wù)端支持的服務(wù)的Service UUID

      當(dāng)收到Error Response<Error Code: Attribute Not Found>時
      則表明該過程已經(jīng)完成

      當(dāng)Client找到自己所需要的服務(wù)時,可以終止該過程

      Note: 3.1中已指出Service Declaration是可讀,并且不需要認(rèn)證或授權(quán)
               因此權(quán)限相關(guān)的錯誤不會發(fā)生

      下圖是一個實(shí)例圖

      image

      4.4.2 Discover Primary Service by Service UUID

      當(dāng)Client只知道Service UUID時,可以使用該子過程來發(fā)現(xiàn)對應(yīng)的主服務(wù)

      該子過程使用ATT的Find By Type Value Request,同時設(shè)置參數(shù)如下
      - Starting Handle : 0x0001
      - Ending Handle   : 0xFFFF
      - Attribute Value : 16-bit Bluetooth UUID or 128-bit UUID
      - Attribute Type  : UUID for <Primary Service>

      可能的回應(yīng)有
      - Find By Type Value Response
      - Error Response

      Find By Type Value Response返回Attribute Handle ranges列表
      Attribute Handle range即服務(wù)定義的Starting HandleEnding Handle
      如果Attribute Handle range中的End Found Handle不是0xFFFF
      那么Client將會再請求一次Req
      同時將Starting Handle設(shè)置為收到的最后一個Attribute Handle+1

      終止規(guī)則和權(quán)限問題同Discover All Primary Services

      下圖是一個實(shí)例圖

      image

      4.5 Relationship Discovery

      Client使用該過程來發(fā)現(xiàn)和其他服務(wù)的服務(wù)關(guān)系

      4.5.1 Find Include Services

      Client使用該子過程來發(fā)現(xiàn)一個服務(wù)定義包含的服務(wù)申明

      該子過程使用ATT的Read By Type Request,同時設(shè)置參數(shù)如下
      - Starting Handle : 所要查找服務(wù)的Starting Handle
      - Ending Handle   : 所要查找服務(wù)的Ending Handle
      - Attribute Type  : UUID for <Include>

      可能的回應(yīng)有
      - Find By Type Response
      - Error Response

      Find By Type Response返回[Attribute Handle, Attribute Value]集合對
      Attribute Value由所包含服務(wù)申明的Attribute HandleEnd Group Handle組成
      當(dāng)UUID為16-bit Bluetooth UUID時,那么它也將包含在Rsp中

      該Req應(yīng)該被再次請求,同時設(shè)置Starting Handle為為收到的最后一個Attribute Handle+1

      當(dāng)Rsp中包含的服務(wù)申明中Attribute Handle等于Req的Ending Handle時,
      該子過程被認(rèn)為完成(當(dāng)然Attribute Not Found-Error Rsp也是)

      當(dāng)Include Service使用128-bit UUID時
      使用Read Request來獲取Include Service UUID
      其中Attribute Handle參數(shù)設(shè)置為Include Service的Attribute Handle

      權(quán)限規(guī)則同上面

      下圖是一個實(shí)例圖

      image 

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多