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

关于GATT服务中发送Notification和Indication的问题

芯片:CC2652

工程:ProjectZero

过程:修改了projectzero里面的dataservice.c,打开了以送Notification,并把DataService_SetParameter函数放到了按键处理函数中,期待每次按键能够触发发送Notification,但是没有效果T_T

问题:打开了Notification后,当DataService_SetParameter被调用时,是否projectzero会主动发送当前参数值到连接的BTool上?

我看到打印的log显示connhandle是fffff,而与BTool的connhandle是0,所以此处是否有问题?

Susan Yang:

请问能否给出具体代码?

z z46:

回复 Susan Yang:

static void buttonDebounceSwiFxn(UArg buttonId)
{uint8_t tempString_r[]="Button released.",tempString_p[]="Button pressed.";switch(buttonId){case Board_PIN_BUTTON0:// If button is now released (buttonPinVal is active low, so release is 1)// and button state was pressed (buttonstate is active high so press is 1)if(buttonPinVal && button0State){// Button was releasedbuttonMsg.state = button0State = 0;sendMsg = TRUE; DataService_SetParameter(DS_STREAM_ID, sizeof(tempString_r), tempString_r);Log_info0("Board_PIN_BUTTON0_r\r\n");}else if(!buttonPinVal && !button0State){// Button was pressedbuttonMsg.state = button0State = 1;sendMsg = TRUE;
DataService_SetParameter(DS_STREAM_ID, sizeof(tempString_p), tempString_p);Log_info0("Board_PIN_BUTTON0_p\r\n");}break;...}
}

其中红色加粗部分是我添加上去的

ProjectZero与BTool连接后,直接按按键0,BTool端显示的数据没有变化,然后利用BTool修改CCCD为notification及indication,再按键,projectzero就死机了T_T

BTool的修改见上图

求大神解答.

1.我想利用notification向BTool同步本地数据这样可行吗?这种方式是由projectzero主动发起更新数据请求吗?

2.上述工程哪里不对啊,为什么会出现按键后未更新以及修改stream CCCD配置后按键死机的情况呢?

z z46:

回复 Susan Yang:

求回复~~

z z46:

回复 Susan Yang:

大神,前几天弄别的去了,我现在又回来纠结这个问题了!求回复!求解答!

user3864717:

回复 z z46:

mark

@susan,遇到了同样的问题,我的setparameters函数是在sensor controller的CBs中直接调用的。

不过现象与zz的一样,主机端打开notify之后,从机死机。

进一步测试后发现,即使是操作同一个characteristic value,如果不打开notify,setparameters函数都可以正常写入。

打开notify后,死机发生在setparameters内层调用GATT_Notification()时,可以顺利判断notify状态,但执行GATT_Notification()时死机,没有任何返回值。

另外,尝试过在CBs中创建定时启动的event,触发后再执行同样的Setparameter函数。这种情况下,就没再发生死机的情况,notify功能也正常。

请帮忙分析看看,感谢!

赞(0)
未经允许不得转载:TI中文支持网 » 关于GATT服务中发送Notification和Indication的问题
分享到: 更多 (0)