芯片: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功能也正常。
请帮忙分析看看,感谢!