请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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;
}
}