微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 使用LightBlue读写一个characteristic时,RTOS会调用什么函数来处理?

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

时间:10-02 整理:3721RD 点击:

在使用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的值呢?

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top