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.

[参考译文] CC2564C:RSSI API 上需要的错误和帮助

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1021363/cc2564c-error-and-help-needed-on-rssi-api

器件型号:CC2564C

大家好,  

我尝试使用 堆栈 API  HCI_READ_RSSI 在  BLE 连接中获取 RSSI  

 

L’API 就像  :    

BTPSAPI_Declaration int BTPSAPI HCI_READ_RSSI (unsigned int BluetoothStackID、Word_t Connection_Handle、Byte_t * StatusResult、Word_t * Connection_HandleResult、SByte_t * RSSIResult);

它需要一个连接句柄 ,并且我正在使用连接 ID,在连接 事件   etGATT_Connection_Device_Connection 期间获得

 现在 ,我们始终得到  一个常数 = 81,  无论 距离,设备之间 等等   

请我弄错了吗?  WAT 是获取 RSSI 的正确命令吗?

我在网络或 e2e 上找不到任何示例  

谢谢你  

BR
卡洛

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

    您好、Carlo、

    您是否说此函数的返回值为81? 此函数 可能返回错误。 请参阅以下声明:

     /*! @brief The following function issues the HCI_Read_RSSI Command to the
        * Bluetooth Device that is associated with the Bluetooth Protocol
        * Stack specified by the BluetoothStackID parameter.
        * @param BluetoothStackID Unique identifier assigned to this Bluetooth
        * Protocol Stack via a call to BSC_Initialize
        * @param Connection_Handle Unique identifier for the connection returned
        * in the Connection Complete event associated with the HCI_Create_Connection command.
        * @param StatusResult Returned HCI status code.
        * @param Connection_HandleResult Unique identifier for the connection
        * handle for which the operation was done.
        * @param RSSIResult Difference between the measured RSSI and the limits
        * of the Golden Receive Power Range.  This value may range from
        * -28 to +27 dB.
        * @return This function returns zero if successful, or a non-zero value if there was an
        * error.  If this function returns zero (success) then the
        * StatusResult variable will contain the Status Result returned from
        * the Bluetooth Device AND the Connection_HandleResult variable will
        * contain the Connection Handle Result returned from the Bluetooth
        * Device AND the RSSIResult variable will contain the RSSI Result
        * returned from the Bluetooth Device.
        * \note This function blocks until either a result is returned
        *          from the Bluetooth Device OR the function Times Out
        *          Waiting for a response from the Bluetooth Device.
        */
    BTPSAPI_DECLARATION int BTPSAPI HCI_Read_RSSI(unsigned int BluetoothStackID, Word_t Connection_Handle, Byte_t *StatusResult, Word_t *Connection_HandleResult, SByte_t *RSSIResult);

    您能否澄清这81是 RSSIResult 还是 HCI_READ_RSSI 的返回值?

    谢谢、
    Jacob

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

    此外、我认为连接句柄应该使用来自此事件的数据:

       /*! The following structure represents the Data that is associated
        * with the HCI Connection Complete Event.
        */
    typedef struct _tagHCI_Connection_Complete_Event_Data_t
    {
       Byte_t    Status;
       Word_t    Connection_Handle;
       BD_ADDR_t BD_ADDR;
       Byte_t    Link_Type;
       Byte_t    Encryption_Mode;
    } HCI_Connection_Complete_Event_Data_t;

    此致、

    Jacob

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

    您好,Jacob,  

    更多详细信息,请您帮助?

    我从 HCI_READ_RSSI 读取 的结果始终 为81  、而不是错误.... 81是 RSSI 的固定值  

    作为连接手柄 、我们使用了从 strcut 到的一个

    typedef 结构体_tagHCI_Connection_Complete_Event_Data_t

      byte_t   状态;

      word_t   Connection_Handle;

      BD_ADDR_t BD_ADDR;

      byte_t   Link_Type;

      Byte_t   Encryption_Mode;

    }HCI_Connection_Complete_Event_Data_t;

     

    现在 尝试在事件   etConnection_Complete_Event 中获取它、->但 在启动连接时从未发生这种情况   

    它仅在 BT 音频不在 BLE 连接时启动

    由于 无法 获取连接句柄, 我们使用 GAP_Query_Connection_Handle()   来查看 活动连接  ,但此处始终存在相同的错误 BTPS_ERROR_DEVICE_NOT_CONNECTED (-98)

     

    我们可以做些什么?  谢谢你  

    BR

    卡洛

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

    您好、Carlo、

    那么、您正在使用_tagHCI_Connection_Complete_Event_Data_t 中的 Connection_Handle?  为什么要使用 etConnection_Complete_Event?  

    如果您从 HCI_READ_RSSI 接收到81、则表示存在错误。 BTErrors.h 中的错误 指:

    ```#define BTPS_ERROR_RFCOMM_COMMAND_NOT_ALLOWED                   (-81)```
      

    RSSIResult 变量将包含来自蓝牙器件的实际 RSSI 值。

    您能否向我确认您使用 的是_tagHCI_Connection_Complete_Event_Data_t 的 Connection_Handle?

    谢谢、
    Jacob

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

    您好、Jacob、

    有一个误解、我将尝试澄清。

    1) 1)我们使用:

    RetVal = HCI_READ_RSSI (BluetoothStackID、Connection_Handle、StatusResult、Connection_HandleResult、RSSIResult);

    RetVal 正常

    RSSIResult =-81 (每次调用时固定)

    2)  2)_tagHCI_Connection_Complete_Event_Data_t 由事件 etConnection_Complete_Event 右侧报告?

    在事件 etConnection_Complete_Event 内、我们捕获 Connection_Handle、与   HCI_Read_RSSI 一起使用。

    问题是、当连接 BLE 器件时 、我们永远不会看到事件 tConnection_Complete_Event。

     我们仅在连接 BT EDR 器件时接收事件 tConnection_Complete_Event。

    现在情况是否更加清楚? 那么问题可能是我们没有收到事件 tConnection_Complete_Event 的原因?

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

    您好 Paolo、

    感谢您的澄清。 我将再次检查这些要点、并在星期五之前跟进。

    谢谢、

    Jacob

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

    您好 Paolo、

    以下几点:

    1.确保在您的项目中启用了支持 LE:

    您应该在 CCS 编译器构建设置中的预定义符号中添加此内容。

    2.确保您能够连接到 BLE 设备。 您应该会得到一个带有事件"etLE_Connection_ Complete"的 GAP_LE_Event_Callback。

    3.您是否 仅在连接到器件后调用 HCI_READ_RSSI?

    谢谢、

    Jacob

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

    您好、Jacob、

    1)是的、 启用了__support_low_energy__是因为我们使用连接到 BLE 器件

    2)是的、我们能够连接到器件、并在  GAP_LE_Event_Callback 内收到 evt etLE_Connection_ Complete

    3) 3)我们仅在  建立连接时询问 HCI_READ_RSSI、问题是用于调用 HCI_READ_RSSI 的句柄。 如前所述 、问题是当连接 BLE 器件时 、我们从未收到事件 tConnection_Complete_Event、只有当我们连接到 BT EDR 器件时、我们才会收到此事件、您知道原因吗?

    谢谢、

    Paolo

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

    大家好、Paolo、

    我想我们现在需要获取 BT FW 日志。 您能否在本 文档之后记录日志

    谢谢、
    Jacob

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

    您好、Jacob、

    谢谢、在我们度假的时候、我们将尽快回到办公室。

    此致、

    Paolo

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

    您好、Jacob、

    我们是假期回来的、我们可以通过 BT 日志来执行您要求的测试。

    当我们连接到 BLE 器件时、我们仍然没有收到 evt -> etConnection_Complete_Event
    因此我们使用 API -> GAP_Query_Connection_Handle ()获取错误:BTPS_ERROR_DEVICE_NOT_Connected

    我们进行了两次测试、一次没有在调用 GAP_Query_Connection_Handle 之前交换 BLE 器件的 MAC 地址、第二次交换该地址、总是出现相同的错误。

    如何与您共享日志文件和使用的配置? 我似乎无法在此处上传收集的文件。

    谢谢你

    此致、

    Paolo

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

    您好 Paolo  

    请 离线与我分享  

    谢谢  

    卡洛

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

    您好 Paolo、

    我收到了您的文件、并将查看这些文件、并在明天回复您。

    此致、

    Jacob

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

    您好 Paolo、

    我已经查看过您的日志、但我没有立即看到任何错误。 下周我将进一步调查、周一回来。

    谢谢、
    Jacob

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

    您好 Paolo、

    要成功实现 BLE 连接、您应该会看到 etLE_Connection_Complete etGATT_Connection_Device_Connection 事件(请忽略红色圆圈)。

     我在您的日志中看不到这些内容。 您之前说过、您能够从 GAP_LE_Event_Callback 中看到 etLE_Connection_Complete 事件、情况是否仍然如此? 我认为您的器件实际上并不是在建立连接。  

    谢谢、

    Jacob

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

    您好、Jacob、

    如前所述、器件能够建立连接、您应该能够在日志中看到器件通过 LE 与连接的外设进行通信(即使您未看到连接、我也不明白原因)

    我可以确认我们收到了 evt etLE_Connection_Complete 和 evt etGATT_Connection_Device_Connection。

    我重申、当我们连接到 BLE 器件时、我们仍然不会接收 evt -> etConnection_Complete_Event ->、并且我们仅在建立 BT EDR 连接时才会接收到该事件。
    因此、我们使用 API -> GAP_Query_Connection_Handle ()来获取用于 RSSI API 的正确句柄、但我们得到错误:BTPS_ERROR_DEVICE_NOT_Connected

    能否提供有关 GAP_Query_Connection_Handle()的一些信息?

    请告诉我们,是否必须在 BT 记录器中设置一些具体设置,以便您能够查看收到的事件和/或有关 GAP_Query_Connection_Handle()执行的情况?

    谢谢、

    此致、

    Paolo

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

    您好 Paolo、

    我需要与该团队的另一位专家联系。 请给我另外一天回来。

    谢谢、
    Jacob

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

    您好 Paolo、

    HCI_READ_RSSI 应能够处理您提供的 BLE 连接句柄。 下一步是让我在我的末尾测试这个 我们在美国度过了一个假期(9/6)。 假期结束后、我将返回处理此问题、并在下周四向您提供回复。

    谢谢、
    Jacob

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

    您好 Paolo、

    我能够再现您的问题、但仍在尝试解决。 GAP_Query_Connection_Handle()应该是检索 HCI_READ_RSSI 连接句柄的正确函数。  

    我知道您可以通过 BLE 连接连接来连接您的设备、但您也可以配对吗?  

    谢谢、
    Jacob

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

    您好、Jacob、

    您能够复制这一事实是一个好消息。

    是的、我们能够连接 BLE 器件并与之通信、但在此阶段我们不使用配对或安全模式。

    谢谢、

    Paolo

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

    您好 Paolo、

    我通过从 GAP_Query_Connection_Handle 中提供连接句柄来测试 HCI_READ_RSSI API。   我在有 BLE 连接时收到错误、但在有 BT 连接时没有收到错误。  

    我认为 HCI_READ_RSSI API 只能用于 BT 连接。 您能否使用 BLE 扫描来检索 RSSI?

    谢谢、
    Jacob

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

    您好、Jacob、

    这也是我们的怀疑,我认为这是好的,在你们身边也看到同样的问题,这意味着我们正在做正确的操作和配置。

    目前、当 BLE 器件处于广播阶段时、我们已经在连接建立之前收集 BLE 器件的 RSSI、但遗憾的是、我们的客户也需要在连接寿命期间收集 RSSI。

    您能否验证是否可以这样做?

    谢谢、

    Paolo

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

    您好 Paolo、

    我现在没有前面的硬件设置、但我明天可以为您检查。  

    我很快就会在这里跟大家跟进。

    此致、
    Jacob

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

    您好 Paolo、

    好消息! 深入了解堆栈后、我找到了您需要的 API:

    GAP_LE_Query_Connection_Handle (unsigned int BluetoothStackID、 BD_ADDR_t BD_ADDR、 Word_t *连接_句柄);
    此 API 可在 GAPAPI.h 中找到、并提供 BLE 连接句柄以提供给 HCI_READ_RSSI。 我已验证这对我来说是可行的。 很抱歉,我花了这么长时间才找到!
    谢谢、
    Jacob
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jacob、

    我可以确认这个 API 解决了、现在我们也能够在与我们的器件进行 BLE 连接期间获得 RSSI。

    非常好! 非常感谢您提供的支持。

    Paolo