主机写入特征值成功,但是在CC2541从模式中未看到调用simpleProfile_WriteAttrCB
手机端蓝牙作为主模式,CC2541作为从模式;
当主机对CC2541写特征值的时候,正常是特征值被主机修改后,先调用了simpleProfile_WriteAttrCB,并且在函数末尾再调用了simpleProfileChangeCB。但是在应用的情况会偶尔出现(大概十几次出现一次)手机端蓝牙已经写入成功,但是在CC2541中调试发现没有调用simpleProfile_WriteAttrCB,当然也未进入SIMPLEPROFILE_CHAR2_UUID,这是什么情况呢?
case SIMPLEPROFILE_CHAR2_UUID:
//Validate the value
// Make sure it's not a blob oper
if ( offset == 0 )
{
if ( len != SIMPLEPROFILE_CHAR2_LEN )
{
status = ATT_ERR_INVALID_VALUE_SIZE;
}
}
else
{
status = ATT_ERR_ATTR_NOT_LONG;
}
//Write the value
if ( status == SUCCESS )
{
uint8 *pCurValue = (uint8 *)pAttr->pValue;
VOID osal_memcpy( pCurValue, pValue, SIMPLEPROFILE_CHAR2_LEN );
notifyApp = SIMPLEPROFILE_CHAR2;
}
break;
在断点不好判断问题的时,抓下包分析看看。首先看交互过程是否有如你所说的writereq和rsp.
thanks TY,
我抓包分析器查看了,没有发现writereq和rsp(此刻在安卓中调试:采用onCharacteristicWrite 該函数对CC2541写返回是GATT_SUCCESS)
下面是抓包
结束: