相关文章推荐

芯片:CC2652

工程:ProjectZero

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

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

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

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 released buttonMsg.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 pressed buttonMsg.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配置后按键死机的情况呢?

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

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

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

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

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

请帮忙分析看看,感谢!

 
推荐文章