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