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

cc2540在哪里捕获上位机读取Characteristic的事件

亲爱的TI工程师,您好:

        想在上位机读取到下位机的Characteristic之后,下位机能够捕获到这个事件,然后就主动断开与主机的连接,以防止因与主机长时间保持连接,而增加从机的功耗。

所以,我想问一下,主机读取完从机Characteristic这个事件在哪个函数的哪个事件里面捕获,麻烦您了,谢谢~o(∩_∩)o 哈哈

CC2540蓝牙4.0BLE开发:

在相应的Profile里面的读回调

Bob Chen2:

回复 CC2540蓝牙4.0BLE开发:

您好,能具体描述一下怎么实现吗?

前期,在示例工程 SimpleBLEPeripheral 中我看到 simpleBLEPeripheral.c 文件中有有一个关于Profile的回调函数

static void simpleProfileChangeCB( uint8 paramID )

然后在其中插入CHAR5(我要读的那个characteristic)的代码,如下:

static void simpleProfileChangeCB( uint8 paramID )
{switch( paramID ){//..(其它case)case SIMPLEPROFILE_CHAR5://xxxx(其它代码)break;}
}

但是仿真的时候,发现,我用上位机读取CHAR5的时候,并不会进入这个回调函数,是不是说这个函数只对Profile的写有响应。

然后,上面那个函数即 simpleProfileChangeCB 是注册在 simpleBLEPeripheral_SimpleProfileCBs 这个结构体中,这个结构体是一个 simpleProfileCBs_t类型的结构体。

//Simple GATT Profile Callbacks
static simpleProfileCBs_t simpleBLEPeripheral_SimpleProfileCBs=
{simpleProfileChangeCB// Characteristic value change callback
}

并把这个结构体赋值给了 simpleProfile_AppCBs  这个同样是 simpleProfileCBs_t结构体类型的指针

最后在

static bStatus_t simpleProfile_WriteAttrB( uint16 connHandle, gattAttribute_t*pAttr, uint8 *pValue, uint8 len, uint16 offset ){//..(其它代码)//If a charactersitic value changed then callback function to notify application of changeif( (notifyApp!=0xff) && simpleProfile_AppCBs && simpleProfile_AppCBs->pfnSimpleProfileChange ){simpleProfile_AppCBs->pfnSimpleProfileChange( notifyApp );}
}

这个函数中被调用。

不管是从字面解释上看,还是从函数的调用关系,他应该是Characteristic 值变化的时候,才会回调,即面向的是主机对从机的写过程。而主机对从机的读过程,因为不会改变Characteristic的值,所以并不会触发这个回调,不知道我理解的是否正确。

那如果这样的话,那 “相应的Profile里面的读回调”在哪儿啊?

还望您不惜赐教,谢谢~o(∩_∩)o 哈哈

Bob Chen2:

回复 CC2540蓝牙4.0BLE开发:

哈哈,非常感谢,将下面这段代码,添加到 static uint8 simpleProfile_ReadAttrCB(..)函数中,并作适当的修改之后,就成功响应了,并对CC2540的GATTProfile的实现方法有了进一步的了解~
//If a charactersitic value changed then callback function to notify application of changeif( (notifyApp!=0xff) && simpleProfile_AppCBs && simpleProfile_AppCBs->pfnSimpleProfileChange ){simpleProfile_AppCBs->pfnSimpleProfileChange( notifyApp );}

再次表示感谢~o(∩_∩)o 哈哈

赞(0)
未经允许不得转载:TI中文支持网 » cc2540在哪里捕获上位机读取Characteristic的事件
分享到: 更多 (0)