从机给主机发送数据有两种方式:
第一种:通过GATT_Notification()这个函数来通知主机。
第二种:通过GATTServApp_ProcessCharCfg()这个函数通知主机。
简介这两种方式,
一、GATT_Notification():
在从机代码中使用,由从机主动通知,且不需要主机发出请求和回应。
例如,在需要从机给主机发送数据的地方,直接使用这个函数即可。
void GUA_SimpleGATTprofile_Char1_Notify(uint16 nGUA_ConnHandle, uint8 *pGUA_Value, uint8 nGUA_Len)
{
attHandleValueNoti_t stGUA_Noti;
//填充数据
stGUA_Noti.handle = simpleProfileAttrTbl[3].handle; //读取notification对应的handle
stGUA_Noti.len = nGUA_Len; //数据长度
osal_memcpy(stGUA_Noti.value, pGUA_Value, nGUA_Len); //赋值
//发送数据
GATT_Notification(nGUA_ConnHandle, &stGUA_Noti, FALSE);
}
注意:在这里函数GATT_Notification()直接把通知发送给主机,不管是否通知是否使能。即无论notify开关是否打开,从机都能把数据发送给主机。
二、GATTServApp_ProcessCharCfg()[这个函数里依然会调用GATT_Notification()这个函数,只是等待收到主机通知/read请求后,才会调用GATT_Notification()。]
在从机代码中使用,需要主机发送一次“通知请求”给从机,从机收到“通知请求”,才发送通知。
即:函数GATTServApp_ProcessCharCfg内部会先判断not
cc2541之Notification
最新推荐文章于 2024-01-21 23:22:40 发布

本文介绍了蓝牙低功耗从机通知主机数据的两种方式:GATT_Notification()和GATTServApp_ProcessCharCfg()。GATT_Notification()允许从机直接发送数据,无视通知是否使能;而GATTServApp_ProcessCharCfg()则在收到主机通知请求后发送数据。详细阐述了两种方法的工作原理和使用场景,并解释了如何在主机和从机端操作Client Characteristic Configuration (CCC)来控制通知开关。
最低0.47元/天 解锁文章
1616

被折叠的 条评论
为什么被折叠?



