大神们:
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, ¬i, 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, ¬i, FALSE ); } } }
这是我的代码,麻烦你了,看看可行不行。
Yan:
回复 lele li1:
lele,
pLinkItem->connectionHandle 是指连接的Handle, 你跟对方设备连上以后会产生一个Handle. 这个Handle在连接建立成功的事件中可以找到, 你仔细看一下代码.
value的默认值是一个字节的, 你要这样赋值的话得改一下, 改成数组.
simpleProfileAttrTbl, 的位置12 是CHAR4 的Client Characteristic Configuration, 记得发Notification 之前, 通过master设备把这个值设置成 0x0001, 打开notification.