请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2640R2F 您好!
GATT_ReadCharValue 始终返回0x01、即使在读取之后执行良好。
这应该是指"失败"。
simplelink_cc2640r2_sdk_1_30_00_25
SimpleLink BLE 软件栈2.2.1开发人员指南未提供有关此函数的视网膜软件的信息。
'GATT.h'中的原型文档如下所示:
/** *@简短读取特征值 * 此子过程用于在 客户端知道特征值 *句柄时从服务器读取特征值*。 * *@ref ATT_ReadReq 与 Attribute handle *参数一起使用、该参数设置为 Characteristic Value Handle。 读取 *响应返回 Attribute * Value 参数中的特征值。 * *@注意:读取响应仅包含一个 特性值、*长度小于或等于(ATT_MTU - 1)个八位位组。 如果 *特征值 的长度大于(ATT_MTU - 1)个八位位组*、 则*如果需要其余的特征值、则可以*使用读取长整型特征值过程。 * *@PAR 对应的事件: *如果此函数的返回状态为@ref 成功,则调用 *应用程序任务将收到@ref GATT_MSG_EVENT 消息,方法 为:*-@ref ATT_READ_RSP 类型为@ref attReadRsp_t, @@ @成功*-@ref ATT_ERROR_RSP 类型 @ref attErrorRsp_t,如果服务器上发生错误*@请注意,当@ref ATT_READ_RSP *(具有@ref 成功或 ref bleTimeout 状态)或 ref ATT_ERROR_RSP (具有* ref 成功状态)时,此子过程已完成 被呼叫任务接收。 * **@param connHandle -使用的连接 *@param pReq -要发送的请求的指针 *@param taskId -要通知响应的任务 * @return @ref Success:请求已成功排队。 *@return @ref INVALIDPARAMETER *@return @ref MSG_buffer_NOT_AVAIL *@return @ref bleNotConnected *@return @ref blePending:此服务器的响应正暂挂。 *@return @ref bleMemAllocError *@return @ref bleTimeout:先前的事务超时。 // extern bStatus_t GATT_ReadCharValue (uint16 connHandle、attReadReq_t *pReq、uint8 taskId);
在'comdef.h'中、
/***通用状态返回值***/ #define Success 0x00 //!<成功 #define 失败 0x01 //!<故障 #define INVALIDPARAMETER 0x02 //!<无效参数 #define INVALID_TASK 0x03 //!<无效任务 #define MSG_buffer_NOT_AVAIL 0x04 //!<无 HCI 缓冲器可用 #define INVALID_MSG_POINTER 0x05 //!<无效消息指针 #define INVALID_EVENT_ID 0x06 //!<无效事件 ID #define INVALID_INTERRUPT_ID 0x07 //!<无效中断 ID #define NO_TIMER_AVAIL 0x08 //!<无定时器可用 #define NV_IT_UNINIT 0x09 //!< NV 项目未初始化 #define NV_OPER_FAILED 0x0A //!< NV 操作失败 #define INVALID_MEM_SIZE 0x0B //!<内存大小 #define NV_BAD_ITEM_LEN 无效 0x0C //!< NV 错误项目长度
我找不到该函数的源代码。
该示例基于 multi_role、有一条注释指出:
//发送读取请求。 如果自请求后未成功、则无需免费 //仅放置在 CSTACK 中;未分配
这是不能释放 attReadReq_t 参数的原因吗?
谢谢、
Jerome