色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CC26xx BLE 添加indication屬性的特征值

星星科技指導員 ? 來源:TI ? 作者:TI ? 2023-03-22 10:25 ? 次閱讀

CC26xx 是TI 提供的高性能2.4GHz射頻SOC芯片。最新一代CC2652可以支持BLE,ZigBee,Thread,TI15.4以及私有協(xié)議。能以multi-protocol模式同時運行BLE+ZigBee ,BLE+TI15.4,或者BLE+2.4G 私有協(xié)議,任意兩種組合。

TI提供CC26xx的SDK,SDK里面包含了各種協(xié)議支持,其中就包含BLE。BLE協(xié)議里,TI提供了很多例程。其中simple peripheral例程是最為廣泛使用的一個,里面提供了BLE最基本的各種read, write,notify屬性的特征值,唯獨沒有indication屬性的特征值。Indication 屬性和notify屬性類似,但又不一樣,它是需要BLE Client設備收到數(shù)據后回復確認的一種機制。

本文基于CC2652的SDK V3.30版本的simple peripheral 例程實現(xiàn)indication。本文提供的方式適用于所有CC26xx系列的芯片

1 BLE 特征值的indication屬性

BLE特征值的indication是由server端主動向client端發(fā)送數(shù)據的一種方式,和notification方式類似,但indication不一樣的地方是需要client端收到數(shù)據后回復confirm包給server端。這些行為都是在GATT層完成,并可以通知client應用層對方成功接收數(shù)據。由于有自動確認機制,indication在很多應用層級的協(xié)議制定中有比較廣泛應用。

poYBAGQaZyaAakabAAA8IWRiqZc838.png

圖1. BLE indication

2 CC2652 indication的實現(xiàn)

本文基于CC2652的SDK V3.30版本的simple peripheral 例程實現(xiàn)indication,在simple GATT service中的特征值2上添加indication機制,特征值2將同時支持read和indication的屬性。

2.1 特征值2的定義

2.1.1 特征值2 屬性修改

在simple_gatt_profile.c中,給Characteristic 的屬性添加indication 屬性:

pYYBAGQaZyeAYCjwAAAi-nvoYLM069.JPG

同時,在特征值定義表格中,特征值2的讀寫屬性里,把GATT_PERMIT_READ這一定義去掉,完全交由前面定義的simpleProfileChar2Props來決定,不然該特征值還是會被認為只有read屬性:

pYYBAGQaZyeAWkwcAAAhpv25FB4830.JPG

2.1.2 特征值2 的配置屬性添加

就像帶有notification屬性的特征值一樣,作為帶有indication屬性的特征值,也必須有一個CCC(Client Characteristic Configuration)緊隨該特征值的value定義,將它添加在特征值2的value定義后面:

poYBAGQaZyeALTT8AADcV7-U-Hc669.JPG

同時,我們需要在特征值定義表格中把這個CCC的定義attribute也添加進去,位置是在特征值2的value定義之后,該attribute的讀寫屬性為可讀+可寫。

pYYBAGQaZyiAXzOMAABLTH92z3Q823.JPG

注意,由于在表格里添加了一個attribute,表格數(shù)組的尺寸定義也要加1,由17變?yōu)?8:

pYYBAGQaZyiAAuvDAAAN2dhxDo4588.JPG

在service初始化函數(shù)中,把特征值2的CCC值也進行初始化,位置在SimpleProfile_AddService() 函數(shù):

pYYBAGQaZymADtvzAABhyQNwOS0083.JPG

特征值的定義部分完成。

2.2 特征值2的CCC值操作

Indication或者notification的CCC值是由client(通常是central設備,極個別profile可以是peripheral設備)來用來使能server端的indication或者notification。這個操作本質上是client對CCC值的一個寫操作,而寫操作的處理在simpleProfile_WriteAttrCB()函數(shù)里,區(qū)分和例程里特征值4的notification的CCC值,添加代碼如下,替換原來的:

poYBAGQaZymARVseAABtc9qrRWs416.JPG

注意GATT_CLIENT_CFG_INDICATE和GATT_CLIENT_CFG_NOTIFY的區(qū)別,分別對應indication和notification。這里的添加,就會修改simpleProfileChar2Config值,并且使能或者關閉特征值2的indication功能。

另外注意simpleProfileChar2Config本質是一個指針,指向gattCharCfg_t結構體:

pYYBAGQaZymAE7KAAAA2HauiYds506.JPG

每一個CCC的value,對應一個connection handle,也就是對應一個BLE的連接。從其在SimpleProfile_AddService()函數(shù)里的初始化也可以看出,simpleProfileChar2Config被分配了MAX_NUM_BLE_CONNS個gattCharCfg_t尺寸的空間,這就為每個BLE連接都單獨預留了indication的CCC的配置,每一個連上本設備的central設備都能單獨開關特征值2的indication。

2.3 特征值2的indication數(shù)據發(fā)送

在CC26xx的SDK中,發(fā)送indication或者notification有兩種方式,一種是調用封裝的函數(shù)GATTServApp_ProcessCharCfg(),另一種是直接調用GATT的API函數(shù)GATT_Indication()和GATT_Notification()。

2.3.1 調用GATTServApp_ProcessCharCfg()

在SimpleProfile_SetParameter()中,應用層會調用該函數(shù)來做特征值操作,把對應的特征值2的部分修改如下:

poYBAGQaZyqARpVLAACAVAL_s1c466.JPG

這里把len的長度加1的目的是為了得到應用層的task ID。這就是indication和notification的區(qū)別之一,藍牙協(xié)議規(guī)定indication發(fā)送后是需要對方回復confirm確認的,這個確認必須要有一個對應的實體也就是task去接收并且處理(也可以不處理,只是當作一個indication成功的通知,接收這個動作是必須的)。所以indication發(fā)送的時候必須要提前制定確認消息的接收task ID。這里就會通過SimpleProfile_SetParameter() 被應用層調用來指定發(fā)送的indication的值和接收確認消息的task ID,一般就由應用層task本身接收。

2.3.2 調用GATT_Indication()

另一種方法直接調用GATT層API GATT_Indication(),實現(xiàn)代碼如下。由于CC26xx支持一從多主模式,所以有可能同時存在多條BLE鏈路,因此代碼的實現(xiàn)也考慮到這一點,所有當前存在的BLE鏈路都要進行判斷,根據CCC值的開關狀態(tài)決定是否需要向對應的主機發(fā)送該特征值的indication。

pYYBAGQaZyqAANJbAAD4bO1XGO0056.JPG

上面這段代碼同時也實現(xiàn)了如何在service的表格里查找某特征值對應的attribute handle,可以借鑒用到其他地方。

2.4 應用層代碼添加

添加用于indication的值,該值會每發(fā)送一次就累加一次:

poYBAGQaZyuACmxcAAAPYO5x8g0451.JPG

在SimplePeripheral_performPeriodicTask()中定時發(fā)送特征值2的indication,和特征值4的notification一起發(fā)送:

pYYBAGQaZyuAZHwoAADMygulkxQ910.JPG

針對特征值2操作的參數(shù)是兩個字節(jié)長度,第一個字節(jié)是要發(fā)送的值,第二個字節(jié)就是indication發(fā)送后central回復確認的時候進行接收的task ID,這里用的就是應用層task本身的ID。

注意,TI-RTOS的每個task有個entity ID,這個其實就是task ID:

poYBAGQaZyuAR0C3AAAdtu8qOrE811.JPG

在應用層中添加indication發(fā)送后,收到central的確認消息的操作。在函數(shù)SimplePeripheral_processGATTMsg() 中添加ATT_HANDLE_VALUE_CFM的操作:

pYYBAGQaZyyAYs3PAAAzMN4fOCs495.JPG

這里只簡單打印一下結果,打印的值為這一次發(fā)送成功的indication的值,具體可以根據實際情況進行修改,比如需要收到confirm之后發(fā)送下一個indication數(shù)據等。

3 Indication 測試

編譯下載代碼到CC2652 LaunchPad上。

打開手機上BLE的APP,比如LightBlue,查找Simple Peripheral,找到后連接。可以看到特征值2已經帶indication屬性。

poYBAGQaZyyAFszNAABLMb3Hfqw849.jpg

圖2. 特征值2的屬性

3. 點進特征值2界面,點擊Listetn for notification。這里“notification”只是界面顯示,其實是indication。因為特征值2的屬性顯示已經是indication。

pYYBAGQaZy2ALfjXAABJe9StI9w716.jpg

圖3. 使能特征值2的indication

4. 手機收到CC2652發(fā)送過來的indication,并且在CC2652連接PC的串口終端上能看到手機回復收到indication之后的確認包。

poYBAGQaZy2AKIYVAABC4VuowbY184.jpg

pYYBAGQaZy2Ae_64AABAKM6UpPQ198.jpg

圖4. Indication發(fā)送和確認

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 射頻
    +關注

    關注

    104

    文章

    5618

    瀏覽量

    168164
  • soc
    soc
    +關注

    關注

    38

    文章

    4199

    瀏覽量

    218998
  • ZigBee
    +關注

    關注

    158

    文章

    2271

    瀏覽量

    243293
  • BLE
    BLE
    +關注

    關注

    12

    文章

    670

    瀏覽量

    59552
收藏 人收藏

    評論

    相關推薦

    CC26xx用戶手冊1

    `CC26xx用戶手冊1`
    發(fā)表于 02-25 09:48

    CC26xx開發(fā)環(huán)境——搭建教程

    本帖最后由 冒汗的心情 于 2016-3-9 09:14 編輯 CC26xx開發(fā)環(huán)境——搭建教程教程下載1 概述CC26xx具有低功耗、高性能、統(tǒng)一的芯片架構、支持多種無線標準,用戶只需要
    發(fā)表于 03-08 13:49

    CC2541主機讀取特征值教程

    后自動讀取特征值數(shù)據)二、實驗平臺協(xié)議棧版本:BLE-CC254x-1.4.0編譯軟件:IAR 8.20.2硬件平臺:兩塊Smart RF(主芯片CC2541)三、實驗前提在進行本文步驟前,請先閱讀
    發(fā)表于 04-14 10:14

    CC26xx技術參考手冊

    CC26xx技術參考手冊
    發(fā)表于 09-25 11:03

    CC26xx BLE添加indication屬性特征值的方法

    摘要 CC26xx 是TI 提供的高性能2.4GHz射頻SOC芯片。最新一代CC2652可以支持BLE,ZigBee,Thread,TI15.4以及私有協(xié)議。能以multi-protocol模式同時
    發(fā)表于 11-07 06:46

    CC2538/CC26xx系列應用指南

      This application report provides a brief overview on the serial bootloader that resides in ROM on the CC2538 and CC13xx/
    發(fā)表于 09-14 15:42 ?13次下載
    <b class='flag-5'>CC</b>2538/<b class='flag-5'>CC26xx</b>系列應用指南

    CC26xx/CC13xx應用指南

    environmentfor the SimpleLink CC26xx and CC13xx wireless MCUs using Eclipse as integrated development environment (IDE).
    發(fā)表于 09-14 15:45 ?16次下載

    CC13xx/CC26xx系列器件的應用(3)

    WCS (4.2c) CC13xx CC26xx Schematics (3)
    的頭像 發(fā)表于 08-23 01:19 ?4952次閱讀

    CC13xx/CC26xx系列器件的應用(1)

    WCS (4.2a) CC13xx CC26xx Schematics (1)
    的頭像 發(fā)表于 08-23 01:15 ?9060次閱讀

    關于超低功耗無線微控制器CC26xx的特點及應用介紹

    CC26xx超低功耗無線微控制器
    的頭像 發(fā)表于 08-10 00:14 ?4775次閱讀

    關于CC26xx超低功耗無線MCU開發(fā)平臺的特點及應用介紹

    CC26xx超低功耗無線微控制器開發(fā)平臺介紹
    的頭像 發(fā)表于 08-06 00:18 ?4775次閱讀

    CC26xx BLE添加indication屬性特征值

    CC26xx BLE添加indication屬性特征值
    的頭像 發(fā)表于 01-13 17:21 ?2341次閱讀
    <b class='flag-5'>CC26xx</b> <b class='flag-5'>BLE</b><b class='flag-5'>添加</b><b class='flag-5'>indication</b><b class='flag-5'>屬性</b>的<b class='flag-5'>特征值</b>

    CC26xx BLE 添加indication屬性特征值

    CC26xx BLE 添加indication屬性特征值
    發(fā)表于 10-31 08:23 ?0次下載
    <b class='flag-5'>CC26xx</b> <b class='flag-5'>BLE</b> <b class='flag-5'>添加</b><b class='flag-5'>indication</b><b class='flag-5'>屬性</b>的<b class='flag-5'>特征值</b>

    CC13xxCC26xxCC23xx系列無線MCU的晶體振蕩器和晶體選型

    電子發(fā)燒友網站提供《CC13xxCC26xxCC23xx系列無線MCU的晶體振蕩器和晶體選型.pdf》資料免費下載
    發(fā)表于 08-30 11:15 ?0次下載
    <b class='flag-5'>CC13xx</b>、<b class='flag-5'>CC26xx</b>和<b class='flag-5'>CC23xx</b>系列無線MCU的晶體振蕩器和晶體選型

    CC13xx/CC26xx硬件配置和PCB設計注意事項

    電子發(fā)燒友網站提供《CC13xx/CC26xx硬件配置和PCB設計注意事項.pdf》資料免費下載
    發(fā)表于 09-03 11:12 ?0次下載
    <b class='flag-5'>CC13xx</b>/<b class='flag-5'>CC26xx</b>硬件配置和PCB設計注意事項
    主站蜘蛛池模板: 丝袜诱惑qvod | 国产免国产免费 | 久久ZYZ资源站无码中文动漫 | 伊人久在线观看视频 | 人人舔人人爱 | 亚洲高清国产拍精品5g | 最近高清中文字幕无吗免费看 | 午夜福利视频极品国产83 | 摸董事长的裤裆恋老小说 | 亚洲人成色777777老人头 | 亚洲欧美日韩高清专区 | 老司机深夜福利ae 入口网站 | 青青青视频在线 | 我的家庭女教师 | 俄罗斯15一16处交 | 国产人妻人伦精品836700 | 乳欲性高清在线 | 好硬好湿好爽再深一点视频 | 国产久青青青青在线观看 | 国产精品成人不卡在线观看 | 最新高清无码专区在线视频 | 日韩精品久久日日躁夜夜躁影视 | 青青久久精品 | 免费看男人J放进女人J无遮掩 | 亚洲国产中文在线视频 | 蜜柚免费视频高清观看在线 | 国产精品 日韩精品 欧美 | 亚洲A片不卡无码久久尤物 亚洲a免费 | 中文字幕高清在线观看 | 久久性生大片免费观看性 | 99精品视频免费在线观看 | 视频一区二区中文字幕 | 中国xxxxxxxxx孕交 | 国产在线AV一区二区香蕉 | 夫外出被公侵犯日本电影 | 日韩精品AV一区二区三区 | 日日噜噜噜夜夜爽爽狠狠 | 黑色丝袜在线观看 | 久久精品中文字幕有码日本 | 777米奇色狠狠俺去啦 | 青青伊人网 |