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.

[参考译文] LAUNCHXL-CC2640R2:读取传输信号强度、然后在 ProxReporter 功率级别服务中设置值?

Guru**** 2577385 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/591257/launchxl-cc2640r2-read-transmit-signal-strength-then-set-value-at-proxreporter-power-level-service

器件型号:LAUNCHXL-CC2640R2

您好!

  我正在尝试读取发射信号强度、然后在 ProxReporter 功率级别服务中设置值。 读取发送信号强度的 C 函数为 HCI_ReadTransmitPowerLevelCmd ()。 但是、为了能够使用 HCI 命令、我需要在初始化  GAP_RegisterForMsgs (self EntityMain)时调用;? 下面这应该是我的程序流程?

初始化:

 GAP_RegisterForMsgs (self EntityMain);

使用 TI-RTOS 时钟定期调用:

HCI_ReadTransmitPowerLevelCmd (HCI_READ_TRANSPORT_POWER、TxPower_Status);

ProxReporter SetParameter (PP_TX_POWER_LEVEL、sizeof (INT8_t)、&TxPower_Status);

-克尔

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

    默认情况下、TX 功率设置为0dBm、除非您明确更改它。 您为什么需要定期查询它? 如果更改了它、则可以更新 ProxReporter 服务。

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

    很抱歉我感到困惑。 我需要将 TX 功率设置为4 DBM。 我将使用下面的命令。

    HCI_EXT_SetTxPowerCmd (HCI_EXT_TX_POWER_4_DBM);

    我需要使用智能手机应用程序检查的是信号强度。 我们有一个自定义蓝牙配置文件来读取信号强度。 我想它的命令如下所示。

    hciStatus_t HCI_ReadRssiCmd (uint16 connHandle);

    您是否有如何使用 HCI_ReadRssiCmd ()的示例代码片段?

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

    您好!

      我在简单的中央位置找到了用于读取 RSSI 值的示例代码。 这是 RSSI 值为 storerd 的代码片段。

    静态空 SimpleBLECentral_processCmdCompleteEvt (hciEvt_CmdComplete_t *pMsg)
    {
    switch (pMsg->cmdOpcode)
    {
    HCI_READ_RSSI 案例:
    {
    INT8 RSSI =(INT8) pMsg->pReturnParam[3];
    
    Display_Print1 (dispHandle、4、0、"RSSI -dB:%d"、(uint32_t)(-RSSI));
    }
    中断;
    
    默认值:
    中断;
    }
    

    然后、我需要使用下面的代码行将 RSSI 值设置为我们的信号强度 BLE 配置文件。

    SigStruph_SetParameter (SIGSTRENTH_RSSILEVEL、sizeof (uint8_t)、&(-RSSI));

    我的最终产品是具有加速计的蓝牙标签、它基于简单的外设示例程序。 它不能用作简单的中央系统。 在简单的中央位置、需要以下这些函数来读取 RSSI。 我 是否需要为最终产品使用 SimpleBLECentral_RssiAlloc()、SimpleBLECentral_RssiFind()? 我是否可以定期调用 HCI_ReadRssiCmd ()?

    静态 bStatus_t SimpleBLECentral_StartRssi (uint16_t connHandle、uint16_t period);
    静态 bStatus_t SimpleBLECentral_CancelRssi (uint16_t connHandle);
    静态 readRssi_t * SimpleBLECentral_RssiAlloc (uint16_t connHandle);
    静态 readRssi_t * SimpleBLECentral_Rssifind (uint16_t connHandle);
    静态空 SimpleBLECentral_RssiFree (uint16_t connHandle);

    -克尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    读取 RSSI 和处理命令完成事件的过程在中央和外设上是相同的。 软件用户指南中介绍了该过程:
    software-dl.ti.com/.../index.html

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

    我认为、如果我遵循软件用户指南中的 RSSI 读取代码会好得多。 我的应用似乎不需要以下这些。

    静态 readRssi_t * SimpleBLECentral_RssiAlloc (uint16_t connHandle);
    静态 readRssi_t * SimpleBLECentral_Rssifind (uint16_t connHandle);
    静态空 SimpleBLECentral_RssiFree (uint16_t connHandle);

    -克尔