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

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CC26xx BLE添加indication屬性的特征值

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2022-01-13 17:21 ? 次閱讀

Yan Zhang

摘要

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

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

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

目錄

1. BLE 特征值的indication屬性........................................................................................................... 2

2. CC2652 indication的實(shí)現(xiàn)................................................................................................................ 2

2.1 特征值2的定義............................................................................................................................. 2

2.1.1 特征值2 屬性修改.................................................................................................................... 2

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

2.2 特征值2的CCC值操作................................................................................................................. 4

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

2.3.1 調(diào)用GATTServApp_ProcessCharCfg()................................................................................... 4

2.3.2 調(diào)用GATT_Indication()............................................................................................................ 5

2.4 應(yīng)用層代碼添加........................................................................................................................... 6

3. Indication 測(cè)試................................................................................................................................ 7

4. 參考文獻(xiàn)........................................................................................................................................... 9

圖表

圖1. BLE indication............................................................................................................................ 2

圖2. 特征值2的屬性.............................................................................................................................. 8

圖3. 使能特征值2的indication............................................................................................................. 9

圖4. Indication發(fā)送和確認(rèn)................................................................................................................... 9

1 BLE 特征值的indication屬性

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

poYBAGGKS8yAC6AIAAA8IWRiqZc083.png

圖1. BLE indication

2 CC2652 indication的實(shí)現(xiàn)

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

2.1 特征值2的定義

2.1.1 特征值2 屬性修改

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

poYBAGGKS82AdaCYAAAi-nvoYLM705.jpg

同時(shí),在特征值定義表格中,特征值2的讀寫(xiě)屬性里,把GATT_PERMIT_READ這一定義去掉,完全交由前面定義的simpleProfileChar2Props來(lái)決定,不然該特征值還是會(huì)被認(rèn)為只有read屬性:

pYYBAGGKS8-AE5NtAAAhpv25FB4808.jpg

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

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

pYYBAGGKS9GAc4OBAADcV7-U-Hc979.jpg

同時(shí),我們需要在特征值定義表格中把這個(gè)CCC的定義attribute也添加進(jìn)去,位置是在特征值2的value定義之后,該attribute的讀寫(xiě)屬性為可讀+可寫(xiě)。

pYYBAGGKS9KAEk6rAABLTH92z3Q779.jpg

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

poYBAGGKS9SAGodCAAAN2dhxDo4547.jpg

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

pYYBAGGKS9aASFeTAABhyQNwOS0752.jpg

特征值的定義部分完成。

2.2 特征值2的CCC值操作

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

poYBAGGKS9eAdFuTAABtc9qrRWs044.jpg

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

另外注意simpleProfileChar2Config本質(zhì)是一個(gè)指針,指向gattCharCfg_t結(jié)構(gòu)體:

poYBAGGKS9mAM45fAAA2HauiYds031.jpg

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

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

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

2.3.1 調(diào)用GATTServApp_ProcessCharCfg()

在SimpleProfile_SetParameter()中,應(yīng)用層會(huì)調(diào)用該函數(shù)來(lái)做特征值操作,把對(duì)應(yīng)的特征值2的部分修改如下:

pYYBAGGKS9uAUts3AACAVAL_s1c499.jpg

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

2.3.2 調(diào)用GATT_Indication()

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

pYYBAGGKS92AbE3uAAD4bO1XGO0932.jpg

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

2.4 應(yīng)用層代碼添加

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

poYBAGGKS96APn__AAAPYO5x8g0346.jpg

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

poYBAGGKS-CAanFdAADMygulkxQ282.jpg

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

注意,TI-RTOS的每個(gè)task有個(gè)entity ID,這個(gè)其實(shí)就是task ID:

pYYBAGGKS-GAeNOHAAAdtu8qOrE887.jpg

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

pYYBAGGKS-OAKc47AAAzMN4fOCs702.jpg

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

3 Indication 測(cè)試

編譯下載代碼到CC2652 LaunchPad上。

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

poYBAGGKS-WAQACnAABLMb3Hfqw650.jpg

圖2. 特征值2的屬性

3. 點(diǎn)進(jìn)特征值2界面,點(diǎn)擊Listetn for notification。這里“notification”只是界面顯示,其實(shí)是indication。因?yàn)樘卣髦?的屬性顯示已經(jīng)是indication。

poYBAGGKS-aAfZP1AABJe9StI9w627.jpg

圖3. 使能特征值2的indication

4. 手機(jī)收到CC2652發(fā)送過(guò)來(lái)的indication,并且在CC2652連接PC的串口終端上能看到手機(jī)回復(fù)收到indication之后的確認(rèn)包。

審核編輯:金巧

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4161

    瀏覽量

    218167
  • 嵌入式處理
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    10012
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1035

    瀏覽量

    45903
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CC33xx硬件集成

    電子發(fā)燒友網(wǎng)站提供《CC33xx硬件集成.pdf》資料免費(fèi)下載
    發(fā)表于 11-14 15:13 ?0次下載
    <b class='flag-5'>CC33xx</b>硬件集成

    CC33xx WLAN特性

    電子發(fā)燒友網(wǎng)站提供《CC33xx WLAN特性.pdf》資料免費(fèi)下載
    發(fā)表于 10-29 09:14 ?0次下載
    <b class='flag-5'>CC33xx</b> WLAN特性

    SimpleLink CC33xx主機(jī)接口

    電子發(fā)燒友網(wǎng)站提供《SimpleLink CC33xx主機(jī)接口.pdf》資料免費(fèi)下載
    發(fā)表于 09-27 09:30 ?0次下載
    SimpleLink <b class='flag-5'>CC33xx</b>主機(jī)接口

    CC31xxCC32xx頻率調(diào)諧

    電子發(fā)燒友網(wǎng)站提供《CC31xxCC32xx頻率調(diào)諧.pdf》資料免費(fèi)下載
    發(fā)表于 09-20 11:21 ?0次下載
    <b class='flag-5'>CC31xx</b>和<b class='flag-5'>CC32xx</b>頻率調(diào)諧

    CC13xx IQ樣本

    電子發(fā)燒友網(wǎng)站提供《CC13xx IQ樣本.pdf》資料免費(fèi)下載
    發(fā)表于 09-20 11:12 ?0次下載
    <b class='flag-5'>CC13xx</b> IQ樣本

    CC2538/CC26x0/CC26x2串行引導(dǎo)加載程序接口

    電子發(fā)燒友網(wǎng)站提供《CC2538/CC26x0/CC26x2串行引導(dǎo)加載程序接口.pdf》資料免費(fèi)下載
    發(fā)表于 09-05 11:35 ?0次下載
    <b class='flag-5'>CC</b>2538/<b class='flag-5'>CC26</b>x0/<b class='flag-5'>CC26</b>x2串行引導(dǎo)加載程序接口

    硬件從CC26x0遷移到CC26x2R

    電子發(fā)燒友網(wǎng)站提供《硬件從CC26x0遷移到CC26x2R.pdf》資料免費(fèi)下載
    發(fā)表于 09-05 11:34 ?0次下載
    硬件從<b class='flag-5'>CC26</b>x0遷移到<b class='flag-5'>CC26</b>x2R

    Simplelink CC33xx安全特性

    電子發(fā)燒友網(wǎng)站提供《Simplelink CC33xx安全特性.pdf》資料免費(fèi)下載
    發(fā)表于 09-03 11:49 ?0次下載
    Simplelink <b class='flag-5'>CC33xx</b>安全特性

    CC13xx/CC26xx硬件配置和PCB設(shè)計(jì)注意事項(xiàng)

    電子發(fā)燒友網(wǎng)站提供《CC13xx/CC26xx硬件配置和PCB設(shè)計(jì)注意事項(xiàng).pdf》資料免費(fèi)下載
    發(fā)表于 09-03 11:12 ?0次下載
    <b class='flag-5'>CC13xx</b>/<b class='flag-5'>CC26xx</b>硬件配置和PCB設(shè)計(jì)注意事項(xiàng)

    CC13xxCC26xxCC23xx系列無(wú)線(xiàn)MCU的晶體振蕩器和晶體選型

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

    請(qǐng)問(wèn)gatt_server如何一個(gè)服務(wù)增加多個(gè)特征值

    )gatts_profile_a_event_handler函數(shù)中case ESP_GATTS_CREATE_EVT 中增加特征值,可是增加特征值不成功,日志打印也沒(méi)有異常,請(qǐng)問(wèn)下怎么增加多個(gè)特征值
    發(fā)表于 06-26 08:21

    在IDF最新的SDK中的ble gatt server例子里的特征值改不了,為什么?

    在IDF 最新的SDK中的ble gatt server例子里的特征值改不了 同時(shí)也無(wú)法增加新的profile,一直只有兩個(gè)profile0x00ff 0xff010x00ee0xee01去更改宏
    發(fā)表于 06-19 06:30

    請(qǐng)問(wèn)esp32如何創(chuàng)建具有多個(gè)藍(lán)牙服務(wù)和多個(gè)特征值的示例?

    想要?jiǎng)?chuàng)建五個(gè)藍(lán)牙服務(wù),并且每個(gè)服務(wù)下面需要三個(gè)特征值,但是使用例程發(fā)現(xiàn)gatt_server例程無(wú)法增加特征值,請(qǐng)問(wèn)該怎么辦?
    發(fā)表于 06-18 07:21

    ESP32有無(wú)連接接收BLE HID設(shè)備的可能?

    屬性特征值,成功使能通知,設(shè)備有成功發(fā)送數(shù)據(jù)的反應(yīng)(閃藍(lán)燈),但通知事件無(wú)任何反應(yīng)。 BLE HID主機(jī)連接從機(jī)的原理過(guò)程設(shè)備幾乎找不到,就想請(qǐng)教一下ESP32有無(wú)連接接收BLE H
    發(fā)表于 06-06 07:43

    如何快速為DB塊變量添加屬性

    有些情況需要為PLC DB塊變量添加一些屬性,常規(guī)的做法是在DB塊中選中這個(gè)變量,然后打開(kāi)變量屬性輸入屬性名稱(chēng)和屬性
    的頭像 發(fā)表于 01-02 14:18 ?2163次閱讀
    如何快速為DB塊變量<b class='flag-5'>添加</b><b class='flag-5'>屬性</b>
    主站蜘蛛池模板: 囯产精品久久久久久久久免费蜜桃| 被高跟鞋调教丨vk| qvod 艺术片| 国产亚洲精品精华液| 久久精品热老司机| 日本亚洲精品无码区国产电影 | 91久久精品国产亚洲| 俄罗斯美女破处| 久久国产视频网| 三级黄色网| 18禁黄久久久AAA片| 国产成人啪精品视频免费网| 久久性生大片免费观看性| 人妻熟妇乱又伦精品视频中文字幕| 亚洲精品偷拍影视在线观看 | 99日精品欧美国产| 国产午夜精品久久理论片小说| 免费看a毛片| 亚洲国产成人精品无码区99| japanese色系free日本| 紧缚束缚调教丨vk| 色综合久久网女同蕾丝边| 中文字幕A片视频一区二区| 国产精品97久久AV色婷婷| 蜜臀AV熟女人妻中文字幕| 亚洲AV久久婷婷蜜臀无码不卡| 把极品白丝老师啪到腿软| 久久久免费热线精品频| 先锋资源久久| 草莓视频免费在线观看| 伦理片在线线看手机版| 亚洲AV无码乱码国产麻豆P| 超碰 无码 中文字幕| 快插我我好湿啊公交车上做| 亚洲AV日韩AV欧美在线观看网| 被吊起玩弄的女性奴| 蜜臀色欲AV无人A片一区| 野花韩国高清完整版在线| 国产精品18久久久久久欧美| 青青草国拍2018| 91chinesevideo|