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.

[参考译文] CC2340R5:如何在同一个项目中正确使用 HCI 命令和 BLE?

Guru**** 2595770 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1355088/cc2340r5-how-to-properly-use-hci-commands-and-ble-in-the-same-project

器件型号:CC2340R5

您好!

我将 Basic_ble 项目用作启动项目、同时使用 HCI 命令来检测载波。
当我使用 HCI 命令时的问题它与 ble API 混乱、这意味着当我使用 HCI 命令、然后尝试通告系统锁定…。 我找到了某个问题的解决方法、但仍有更多问题出现。

不确定能否一起正确使用 HCI 和 BLE?

这是我如何实现 CW 检测(请注意、HCI 命令和 BLE 广播不同时运行):

 

  • 通过调用函数 START_CW ()启动 CW 采样
  • 触发事件 BLEAPPUTIL_HCI_VE_EVENT_CODE 后、我们将读取信号的 RSSI 值
  • 触发 BLEAPPUTIL_HCI_COMMAND_COMPLETE_EVENT_CODE 后、我们将关闭 HCI HCI_EXT_EndModemTestCmd ()
  • 触发 HCI_EXT_END_MODEM_TEST 后、我们重新初始化低频处理程序、以便下次广播。 因为 HCI 会以某种方式导致 BLE 堆栈

我所做的是对吗? ……我仍有很多问题、例如无法连接到传感器0 Ω
是该函数 HCI_EXT_EndModemTestCmd 足以阻止 HCI?
我是否需要再次初始化 BLE 堆栈、因为它被 HCI 破坏了?



void start_CW()
{
    cw_detected_flag = false;
    retval = HCI_EXT_ModemTestRxCmd(35);
}  


void CWEventHandler(uint32 event, BLEAppUtil_msgHdr_t *pMsgData)
{

    switch(event)
    {
        // Process HCI Command Complete Event case.
        case BLEAPPUTIL_HCI_COMMAND_COMPLETE_EVENT_CODE:
        {
          // Parse Command Complete Event for opcode and status.

          command_complete = (hciEvt_CmdComplete_t*) pMsgData;
          uint8_t status = command_complete->pReturnParam[0];

          // Find which command this command complete is for
          switch (command_complete->cmdOpcode)
          {
             case HCI_READ_RSSI:
             {
                if (status == SUCCESS)
                {
			
cw_detected_flag = true;


                }

                hci_status = HCI_EXT_EndModemTestCmd();

             } break; // case HCI_READ_RSSI
          }
        } break;

        case BLEAPPUTIL_HCI_VE_EVENT_CODE:
        {
          hciEvt_VSCmdComplete_t *vsdat = (hciEvt_VSCmdComplete_t *)pMsgData;

          switch(vsdat->cmdOpcode) {

              case HCI_EXT_MODEM_TEST_RX:
              {

                  // Send HCI command to read RSSI (Emits HCI_READ_RSSI event)
                  rssi_val = HCI_ReadRssiCmd(0xFFFE);

              } break;

              case HCI_EXT_END_MODEM_TEST:
              {

                  // Allow advertising to work after modem test
                status_ble_adv_init = BLEAppUtil_initAdvSet(&peripheralAdvHandle_1, &advSetInitParamsSet_1);

              } break;
          }

        } break;

    }
}

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

    大家好、Haithem:

    我目前正在对此进行研究、本周我将提供反馈。 感谢您的耐心!

    此致、

    羊绒

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

    您好!

    由于我们在调用期间已对齐、我将关闭该主题。 如有需要、请随时打开新问题。 非常感谢!

    现金