主题中讨论的其他器件:LAUNCHXL-CC26X2R1
工具与软件:
您好!
SW: simplelink_cc13xx_cc26xx_sdk_5_40_00_40
硬件: LAUNCHXL-CC26X2R1 + BOOSTXL-AOA
我正在使用连接 CTE 开发我自己的 AOA 项目。 我在看 RTLS 例程、但我认为它过于臃肿。 我使用 simple_central 演示。 连接 从器件后、我将进行配置
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.
工具与软件:
您好!
SW: simplelink_cc13xx_cc26xx_sdk_5_40_00_40
硬件: LAUNCHXL-CC26X2R1 + BOOSTXL-AOA
我正在使用连接 CTE 开发我自己的 AOA 项目。 我在看 RTLS 例程、但我认为它过于臃肿。 我使用 simple_central 演示。 连接 从器件后、我将进行配置
Tanguy、您好!
我试了一下。 当 HCI_LE_SetConnectionCteReceiveParamsCmd 工作时、我 在 SimpleCentral_processStackMsg ()中侦听 HCI_LE_SET_CONNECTION_CTE_RECEIVE_PARAMS 事件、但没有接收到事件。 我怀疑 HCI 命令在运行时是否能生成 Call_Hdr *30cpMsg
Tanguy、您好!
我查看了用户指南发现它很有用、并对照它验证了我的项目。
1.包含 HCI 传输层头文件。
#include "HCI_TL.h"
Tanguy、您好!
1. 我对 HCI_LE_SetConnectionCteReceiveParamsCmd 的返回值做了判断,还可以。 尽管我注意到该 函数会返回固定值 HCI 成功
static cmd_ack_t cmdCTERxCommand(uint8_t *s, uint16_t len, uint16_t id) { BT_PRINT(("cte ENABLE ! \r\n")); conn_ctx_t *p_conn_ctx = mible_linkdb_get_info_by_conn_index(0); if(p_conn_ctx == NULL) return cmd_ack_invalid_param; BT_DUMP_HEX(p_conn_ctx->connect.peer_addr,6); uint8_t ant_pattern[] = {0,1,2}; uint8_t ret = HCI_LE_SetConnectionCteReceiveParamsCmd(p_conn_ctx->conn_handle,1,2,sizeof(ant_pattern),ant_pattern); /*Configure AoA receiver parameters */ if(ret!= 0) { BT_PRINT(("cte config error !")); } else { BT_PRINT(("cte config ok ! \r\n")); } BT_PRINT(("end,ok,return !")); return cmd_ack_ok; }
2. 我的项目是早期开发的,所以 我使用的是旧版本,稍后我会在新版本中进行测试
3、 这里是我的函数、 我根据外设演示来实现主从函数。 顺便说一下、在 SimplePeripheral_processStackMsg 函数之前、我会有自己的函数处理某 msg 消息、因此 SimplePeripheral_processStackMsg 中的某些情况将为空
static uint8_t SimplePeripheral_processStackMsg(ICall_Hdr *pMsg) { // Always dealloc pMsg unless set otherwise uint8_t safeToDealloc = TRUE; BT_PRINT((" MSG Event type is %02x !!!! \r\n",pMsg->event)); switch (pMsg->event) { case GAP_MSG_EVENT: SimplePeripheral_processGapMessage((gapEventHdr_t*) pMsg); break; case GATT_MSG_EVENT: // Process GATT message safeToDealloc = SimplePeripheral_processGATTMsg((gattMsgEvent_t *)pMsg); break; case HCI_GAP_EVENT_EVENT: { BT_PRINT((" hci message is %02x\r\n",pMsg->status)); // Process HCI message switch(pMsg->status) { case HCI_COMMAND_COMPLETE_EVENT_CODE: // Process HCI Command Complete Events here { SimplePeripheral_processCmdCompleteEvt((hciEvt_CmdComplete_t *) pMsg); break; } case HCI_BLE_HARDWARE_ERROR_EVENT_CODE: AssertHandler(HAL_ASSERT_CAUSE_HARDWARE_ERROR,0); break; // HCI Commands Events case HCI_COMMAND_STATUS_EVENT_CODE: { break; } // LE Events case HCI_LE_EVENT_CODE: { break; } case HCI_BLE_CONNECTION_IQ_REPORT_EVENT: BT_PRINT((" HCI CONNECTION IQ REPORT !!!! \r\n")); break; default: break; } break; } case L2CAP_SIGNAL_EVENT: // Process L2CAP signal //safeToDealloc = SimplePeripheral_processL2CAPMsg((l2capSignalEvent_t *)pMsg); RTLSCoordinator_processL2CAPSignalEvent((l2capSignalEvent_t *)pMsg); break; case L2CAP_DATA_EVENT: RTLSCoordinator_processL2CAPDataEvent((l2capDataEvent_t *)pMsg); break; default: // do nothing break; } return (safeToDealloc); }
以下是一些日志:
[16:57:56.684]发→◇AT+LECCONN=DF6AD712E6DC1 □ [16:57:56.684]收←◆ OK [16:57:56.729]收←◆ MSG Event type is 91 !!!! hci message is 3E MSG Event type is D0 !!!! [16:57:56.749]收←◆ MSG Event type is B0 !!!! MSG Event type is B0 !!!! MSG Event type is 91 !!!! hci message is 3E MSG Event type is B0 !!!! MSG Event type is B0 !!!! [16:57:56.987]收←◆ MSG Event type is 91 !!!! hci message is 3E [16:58:07.377]发→◇AT+CTE_RX □ [16:58:07.380]收←◆cte ENABLE ! DC E6 12 D7 6A DF cte config ok ! end,ok,return ! OK
您好!
我看到您使用 RTLSSRV API (+)为 RTLS 打开了一个新的 e2e 主题:使用 Connection CTE 使用 RTLS API 构建项目基于 simple_peripheral - Bluetooth 论坛- Bluetooth︎- TI E2E 支持论坛、该主题是否仍然与您相关?
此致、
Tanguy