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

GATTServApp_ProcessCharCfg和 GATT_NOTIFICATION()区别

大神们:

         GATTServApp_ProcessCharCfg(  )和GATT_Notification俩接口函数 流程是什么样子?

              GATT_Notification:是直接将数据发送给master?

              GATTServApp_ProcessCharCfg:最终会导致master那边调用一个read请求, 然后调用到keyfob这边的sk_ReadAttrCB()?

请指教。

rivers li:

回复 Yan:

Yan

           我刚刚开始看CC2540相关的内容,假如我使用GATT_Notification()这个函数的话,我循环发送数据,在BTOOL上怎样才能看到效果呢?

Yan:

回复 rivers li:

hi rivers,

你会在BTool的接收窗口间隔性的看到收到的数据.

xie weiping:

回复 Yan:

Hi Yan,

Notification 是用GATT_Notofication()发送的?

simpleBLEperipheral例子程序里是用SimpleProfile_SetParameter( SIMPLEPROFILE_CHAR4, sizeof(uint8), &valueToCopy);这个函数吗?在周期函数里,每隔5秒发送notification啊?我找了一下没有找到用GATT_Notification()发送SIMPLEPROFILE_CHAR4啊?这是为什么呢?

谢谢!

Yan:

回复 xie weiping:

hi xie,

请看 simpleGATTProfile.c, 

里面有个SimpleProfile_SetParameter(),  这个就是间隔性被调用的函数.

里面有 case SIMPLEPROFILE_CHAR4: 

调用 GATTServApp_ProcessCharCfg(………………………), 这个函数内部最终会回调到simpleProfile_ReadAttrCB(),

里面的下面代码会设置CHAR4的值.

case SIMPLEPROFILE_CHAR4_UUID: *pLen = 1; pValue[0] = *pAttr->pValue; break;

最后, 如果notification是打开的, GATTServApp_ProcessCharCfg(………………………)内部会调用GATT_Notification().

都在内部封装好了, 所以你看不到, 但是过程是很清楚在那里的.

清楚了?

xie weiping:

回复 Yan:

Hi Yan,

非常感谢!我清楚了。隐藏的太深,哈哈。流程有点复杂,我使用的时候可以直接调用GATT_Notification();发送Notification吗?而不走那么复杂的流程呢?谢谢!

Yan:

回复 xie weiping:

xie,

可以, 直接用GATT_Notification()可以.

lele li1:

回复 Yan:

你好YAN,我也出现了这个问题,我不知道Notification中的handle应该是哪个handle??我就是想使用CHAR4这个UUID。

attHandleValueNoti_t noti;

noti.handle = simpleProfileAttrTbl[11].handle; noti.len = 7; noti.value[0] = "hello";

GATT_Notification( pLinkItem->connectionHandle, &noti, FALSE );

就是这个高亮这个应该怎么写呢??keyfob中发现是个连接的结构体,在Peripheral中有这中结构体吗??

还有就是value的值我可以这样赋值吗?? 麻烦您了。。。

lele li1:

回复 Yan:

static void performPeriodicTask( void ){ if (gapProfileState == GAPROLE_CONNECTED) { if ( GATT_CLIENT_CFG_NOTIFY ) { attHandleValueNoti_t noti;

noti.handle = simpleProfileAttrTbl[11].handle; noti.len = 7; noti.value[0] = "hello";

GATT_Notification( pLinkItem->connectionHandle, &noti, FALSE ); } } }

这是我的代码,麻烦你了,看看可行不行。

Yan:

回复 lele li1:

lele,

 pLinkItem->connectionHandle 是指连接的Handle, 你跟对方设备连上以后会产生一个Handle. 这个Handle在连接建立成功的事件中可以找到, 你仔细看一下代码.

value的默认值是一个字节的, 你要这样赋值的话得改一下, 改成数组.

simpleProfileAttrTbl, 的位置12 是CHAR4 的Client Characteristic Configuration, 记得发Notification 之前, 通过master设备把这个值设置成 0x0001, 打开notification.

赞(0)
未经允许不得转载:TI中文支持网 » GATTServApp_ProcessCharCfg和 GATT_NOTIFICATION()区别
分享到: 更多 (0)