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

使用LightBlue读写一个characteristic时,RTOS会调用什么函数来处理?

在使用SimpleBLEPeripheral这个工程文件改写,在simpleGATTProfile.c这个文件的

bStatus_t SimpleProfile_SetParameter( uint8 param, uint8 len, void *value )

函数的开头部分添加以下语句(头文件已添加,能编译通过):

if(*((uint8*)value) == 0xff)

{

PINCC26XX_setOutputValue(Board_LED1, 0);
PINCC26XX_setOutputValue(Board_LED2, 0);
PINCC26XX_setOutputValue(Board_LED3, 0);
PINCC26XX_setOutputValue(Board_LED4, 0); }
else if(*((uint8*)value) == 0xee)
{
PINCC26XX_setOutputValue(Board_LED1, 1);
PINCC26XX_setOutputValue(Board_LED2, 1);
PINCC26XX_setOutputValue(Board_LED3, 1);
PINCC26XX_setOutputValue(Board_LED4, 1); }

判断设置的参数是否为0xff或者0xee,分别用4个LED的亮和灭来表示。但是在手机的LightBlue软件中,重新设置参数,却没有LED的闪烁,调试的时候,在这个函数加入断点,也没有进入。

问题是:如果在手机端(Client)设置参数,不是进入bStatus_t SimpleProfile_SetParameter( uint8 param, uint8 len, void *value )这个函数中进行,那么是进入到了什么函数来设置characteristic的值呢?

Barbara Wu:

SetParameter接口可以理解成是给2640的APP部分调用的读写接口

static bStatus_t simpleProfile_WriteAttrCB(uint16_t connHandle, gattAttribute_t *pAttr, uint8_t *pValue, uint16_t len, uint16_t offset, uint8_t method)这个函数是协议栈调用的接口

现在你是用手机读写2640的数值 所以任何数值的改变都是手机从蓝牙传输到2640 通过蓝牙协议栈传到APP层的

所以读写调用的应该是

simpleProfile_ReadAttrCB和simpleProfile_WriteAttrCB

赞(0)
未经允许不得转载:TI中文支持网 » 使用LightBlue读写一个characteristic时,RTOS会调用什么函数来处理?
分享到: 更多 (0)