This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2640R2F:GATT_ReadCharValue 始终返回0x01故障

Guru**** 2562990 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/586559/cc2640r2f-gatt_readcharvalue-always-returning-0x01-failure

器件型号: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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Jerome、

    您可以查看有关 GATT_ReadCharValue ()( software-dl.ti.com/.../group___a_t_t___g_a_t_t.html )的文档的 BLE API 文档。

    如何读取返回值?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marie、

    感谢您的提问、我给出了答案:

    status =GATT_ReadCharValue (connHandleMap[connIndex].connHandle、&req、self 实体); 

    而不是

    状态= GATT_ReadCharValue (connHandleMap[connIndex].connHandle、&req、self 实体); 

    我将尝试将其添加为代码分析错误。

    此致、

    Jerome