当包字节数小于20时,没问题。
当是20字节时,发现不能进入语句
if ( pMsg->method == ATT_READ_BY_TYPE_RSP &&
pMsg->msg.readByTypeRsp.numPairs > 0 )
于是,我改成
if (( pMsg->method == ATT_READ_BY_TYPE_RSP &&
pMsg->msg.readByTypeRsp.numPairs > 0 )|| pMsg->method == ATT_ERROR_RSP)
if( pMsg->method == ATT_ERROR_RSP )
{
HalLcdWriteStringValueValue("opcode,handle",pMsg->msg.errorRsp.reqOpcode,16,pMsg->msg.errorRsp.handle,16,HAL_LCD_LINE_4);
HalLcdWriteStringValue("errCode",pMsg->msg.errorRsp.errCode,16,HAL_LCD_LINE_5);
}
果然是发生了错误
reqOpcode 0x08
handle 0x0035———————————正好是特征值6的句柄
errorCode 0x0A
#define ATT_ERR_ATTR_NOT_FOUND 0x0a //!< No attribute found within the given attribute handle range
在给定的attr句柄范围内没有找到attribute,为什么找不到??
if ( pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP &&
pMsg->msg.findByTypeValueRsp.numInfo > 0 )
{
HalLcdWriteStringValueValue("handlesInfo",pMsg->msg.findByTypeValueRsp.handlesInfo[0].handle,16,pMsg->msg.findByTypeValueRsp.handlesInfo[0].grpEndHandle,16,HAL_LCD_LINE_5);
simpleBLESvcStartHdl = pMsg->msg.findByTypeValueRsp.handlesInfo[0].handle;
simpleBLESvcEndHdl = pMsg->msg.findByTypeValueRsp.handlesInfo[0].grpEndHandle;
}
handle范围:
simpleBLESvcStartHdl:0x0023
simpleBLESvcStartHdl:0xFFFF
这没什么问题啊,value长度改成19这个范围也是这么多;
TI的工程师能不能回复一个?
一直没人回复我