TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2340R5: 如何讓CC2340 Notify

Part Number:CC2340R5

請問我透過nRF APP的藍芽功能從FFF1寫入值,我要如何在我寫完之後Notify結果回來到nRF APP上面
是否有範例程式可以參考?

Dongfu Lee:

需要将fff1这个特征设置成notify和write权限,basic_ble下有char4是有notify的,notify调用的是设置特征的函数,你可以看下。最重要的两个文件是simple_gatt_profile.c(在sdk的source/ti/bleapp/profile下)和app_simple_gatt.c(在sdk的example/rtos/LP_EM_CC2340R5/ble5stack/basic_ble/app/profile下),有个simpleGatt_notifyChar4函数。你可以通过CCS导入basic_ble例程修改即可。

,

Ryan:

simple_gatt_profile.c與app_simple_gatt.c有找到 如果我要把basic_ble裡的值Notify出去 像是這樣嗎?但是這感覺只有設定,好像沒有Notify出去想問有沒有更詳細的設定? 感謝!

,

Dongfu Lee:

notify是设置特征值的,读取app发送的数据是获取特征值。basic_ble是收到char3的特征值就通过char4 notify出去,只有1个字节。你需要修改特征的配置,将特征设置成写和notify权限,特征值是数组的形式。

,

Dongfu Lee:

你需要在simple_gatt_profile最前面修改下char的权限和特征值,还有特征表也需要改,然后在set和get参数函数也需要修改。

,

Ryan:

意思是notify主要是用來查看APP發送的數據是否有收到嗎? 並不是用來回傳CC2340的變數或陣列等等

,

Dongfu Lee:

不是的,是ti的basic_ble例程是这么做,你可以修改的,将if条件去掉。

,

Ryan:

那麼他notify數據 是用SimpleGattProfile_getParameter 這個Function去 發送值給nRF APP嗎

,

Dongfu Lee:

不是,是simpleGattprofile_SetParameter。

,

Ryan:

了解 我直接在simpleGattprofile_SetParameter的Char4上修改 帶入我自己宣告的值 但是呼叫SimpleGatt_notifyChar4()後,在nRF上只有notify一個Byte是我要的 後面全部是0,我想他應該是哪裡有限制到notify的長度,但是我找不到他在那裡限制,想問notify要如何解除限制長度

,

Galaxy Yue:

在BLE通信中,notify的最大长度由BLE Stack版本和MTU共同决定的,最大长度应该有251字节,

解除限制的话可以考虑修改MTU

,

Ryan:

那能夠自動notify嗎? 我發現simpleGattprofile_SetParameter並不能達到我的需求,這個Function還是得在nRF去read才會有值有找到一個GATT_Notification 不知道這個是否能夠自動notify? 如果是有什麼範例Code嗎?

,

Dongfu Lee:

你这个是在setparameter里面限制了长度,里面应该参考char5使用memcpy,还有,你修改了char4的特征值成数组了么。

,

Ryan:

我似乎找到原因了,readAttrCB那邊只存了一個Byte,所以才只有一個Byte被Notify。

但是我發現這不符合我的預期,我想要讓CC2340可以在我Write指令進去,讀取到值之後,可以自動notify出來所以我在SimpleGattProfile_writeAttrCB得到Value之後呼叫GATT_Notification(),但呼叫之後會跑進去iCall_abort()的while裡 不知是否有其他解決方法

,

Ryan:

有成功了 感謝你!

,

Galaxy Yue:

感谢Dongfu的解答 

,

Galaxy Yue:

感谢Dongfu的解答

赞(0)
未经允许不得转载:TI中文支持网 » CC2340R5: 如何讓CC2340 Notify
分享到: 更多 (0)