日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

profile、服务、特征、属性之间的关系

發布時間:2023/12/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 profile、服务、特征、属性之间的关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個profile有很多的服務,一個服務又有很多的特性,一個特性中又有幾種屬性條目組成。


profile(數據配置文件)

一個profile文件可以包含一個或者多個服務,一個profile文件包含需要的服務的信息或者為對等設備如何交互的配置文件的選項信息。設備的GAP和GATT的角色都可能在數據的交換過程中改變,因此,這個文件應該包含廣播的種類、所使用的連接間隔、所需的安全等級等信息。 需要注意的是:?一個profile中的屬性表不能包含另一個屬性表。

服務

一個服務包含一個或多個特性,這些特性是邏輯上相關的集合體。 GATT服務一般包含幾塊具有相關的功能,比如特定傳感器的讀取和設置,人機接口的輸入輸出。組織具有相關的特性到服務中既實用又有效,因為它使得邏輯上和用戶數據上的邊界變得更加清晰,同時它也有助于不同應用程序間代碼的重用。GATT基于藍牙技術聯盟(SIG)官方而設計,SIG建議根據它們的規范設計自己的profile。

Characteristic

Characteristic 特征值,BLE 主從機的通信均是通過 Characteristic 來實現,可以理解為一個標簽,通過這個標簽可以獲取或者寫入想要的內容。


屬性

對特征的定義和描述。是Characteristic通信實現的細節。 其中特性中的屬性條目有兩種:屬性值或描述符。任何在特性中的屬性條目不是定義為屬性值就是為描述符。 屬性值:包含?特征的聲明(Characteristic Declaration)條目、特征的值(Characteristic Value)條目 一個特性至少包含2個屬性條目(也即屬性值必須要有,而描述符根據需要可選):一個屬性條目用于聲明(Characteristic Declaration),一個屬性條目用于存放特性的值(Characteristic Value)。 描述符:包含?特征的客戶配置(Client Characteristic Configuration)條目、特征的用戶描述(Characteristic User Description)條目 描述符是一個額外的屬性以提供更多特性的信息,它提供一個人類可識別的特性描述的實例。 然而,有一個特別的描述符值得特別地提起:客戶端特性配置描述符(Client Characteristic Configuration Descriptor,CCCD),它的UUID是0x2902,這個描述符是給任何支持通知或指示功能的特性額外增加的。在CCCD中寫入“1”使能通知功能,寫入“2”使能指示功能,寫入“0”同時禁止通知和指示功能。 如果屬性值的許可(permissions)含有通知或通知時,特性中的屬性中需要有客戶端特性配置描述符(CCCD)條目用戶描述(Characteristic User Description)條目可有可無的。
一個特性中的屬性包含的內容(1、2必須要有,3根據1、2有無通知指示可有無,4可選): 1. 特征的聲明(Characteristic Declaration)(屬性值):描述器存儲其性能,位置和特征值的數據類型。 2. 特征的值(Characteristic Value)(屬性值):就是特征值的數據值 3. 特征的客戶配置(Client Characteristic Configuration)(描述符):這個允許GATT服務端配置特征值為通知(發送給GATT服務端)或指示(發送給GATT服務端并期望一個回復)。 4. 特征的用戶描述(Characteristic User Description)(描述符):這是個ASCII字符串描述的特征值。
一個特性中的屬性條目之間的關系: Characteristic Declaration 條目中只是說明property 屬性, 而Characteristic Value條目則直接指明了這個值能被“允許” 干嘛。 Client Characteristic Configuration條目 才是真正說明我這個值是可以被“notify”的,配置成開啟/禁止通知,Characteristic Declaration條目 只是說明屬性。 總之,1(Characteristic Declaration)條目 以只是”Declare“ 一下而已,具體做事的還是后面的2、3條目。
屬性值或描述符均稱為屬性條目的一種,所有的這些屬性條目都會存在GATT服務端的一個屬性表中。除了其值本身,每個屬性條目都有下面的性質: 一個屬性條目包含UUID(類型)、許可、句柄、值 1.?句柄(Handle)這是基本的屬性條目在表中的索引。每個屬性都有一個獨一的句柄 2.?類型(type):這個用來說明屬性條目數據代表的意思。經常是作為UUID(universal unique Ididentifier)的。這其中的一些是Bluetooth-SIG定義的一些是用戶的。 3.?許可(permissions):這個會強制一個GATT客戶端設備是否和怎樣訪問屬性條目的值。 4.?UUID
/** * GATT Attribute Type format. */ typedef struct { uint8 len; //!< Length of UUID const uint8 *uuid; //!< Pointer to UUID } gattAttrType_t; /** * GATT Attribute format. */ typedef struct attAttribute_t { gattAttrType_t type; //!< Attribute type (2 or 16 octet UUIDs) uint8 permissions; //!< Attribute permissions uint16 handle; //!< Attribute handle - assigned internally by attribute server uint8* const pValue; //!< Attribute value - encoding of the octet array is defined in //!< the applicable profile. The maximum length of an attribute //!< value shall be 512 octets. } gattAttribute_t;

總結

以上是生活随笔為你收集整理的profile、服务、特征、属性之间的关系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。