1、Master怎样发送、接收数据?
Master发送数据:
RTLSHost_sendMsg(RTLS_CMD_AOA_RESULT_ANGLE, HOST_ASYNC_RSP, (uint8_t *)&aoaResult, sizeof(rtlsAoaResultAngle_t));
uint8_t NPITask_sendToHost(_npiFrame_t *pMsg);
NPIUtil_enqueueMsg(npiTxQueue, syncEvent, NPITASK_TX_READY_EVENT,(unsigned char *) pMsg);
if (NPITask_events & NPITASK_TX_READY_EVENT)
{
NPITask_ProcessTXQ();
NPITL_writeTL(lastQueuedTxMsg, pMsg->dataLen + NPI_MSG_HDR_LENGTH);
transportWrite(npiTxBufLen);
NPITLUART_writeTransport();
UART_write(uartHandle, npiTxBuf, TransportTxLen);
}
Master接收数据:(接收AoA参数设置)
void RTLSCtrl_processMessage(rtlsEvt_t *pMsg) //rtls_ctrl.c
void RTLSCtrl_processHostMessage(rtlsHostMsg_t *pHostMsg);
RTLSCtrl_setAoaParamsCmd(pHostMsg->pData); //Master接收到AoA参数设置命令
// Request RTLS App to set it's own AoA parameters
RTLSCtrl_callRtlsApp(RTLS_REQ_SET_AOA_PARAMS, (uint8_t *)pSetAoaConfigReq);
gRtlsData.appCb((uint8_t *)appReq); //调用回调下面的函数
void RTLSMaster_rtlsCtrlMsgCb(uint8_t *cmd)
{
// Enqueue the message to switch context
RTLSMaster_enqueueMsg(RM_EVT_RTLS_CTRL_MSG_EVT, SUCCESS, (uint8_t *)cmd);
}
static void RTLSMaster_processAppMsg(rmEvt_t *pMsg) //rtls_master.c
case RM_EVT_RTLS_CTRL_MSG_EVT:
{
RTLSMaster_processRtlsCtrlMsg((uint8_t *)pMsg->pData);
RTLSMaster_setAoaParamsReq((rtlsAoaConfigReq_t *)pReq->pData);
// Configure AoA receiver parameters
RTLSSrv_setConnCteReceiveParams(pConfig->connHandle,pConfig->samplingEnable,pConfig->slotDurations,pConfig->numAnt,pConfig->pAntPattern);
// Configure sample accuracy
RTLSSrv_setCteSampleAccuracy(pConfig->connHandle,pConfig->sampleRate,pConfig->sampleSize,pConfig->sampleRate,pConfig->sampleSize,pConfig->sampleCtrl);
}
2、PC是怎样接收、发送数据的?
PC接收数据:
devices = [{"com_port": "COM15", "baud_rate": 460800, "name": "CC26x2 Master"}]
master_node, passive_nodes, all_nodes = rtlsUtil.set_devices(devices)
def set_devices(self, devices_setting):
self._start_message_receiver()
def _start_message_receiver(self):
self._message_receiver_th = threading.Thread(target=self._message_receiver)
def _message_receiver(self):
while not self._message_receiver_stop:
# Get messages from manager
try:
identifier, msg_pri, msg = self._rtls_manager_subscriber.pend(block=True, timeout=0.05).as_tuple()
self._log_incoming_msg(msg, identifier)
if msg.command == 'RTLS_CMD_AOA_SET_PARAMS' and msg.payload.status == 'RTLS_SUCCESS':
sending_node.aoa_initialized = True
if msg.command in ["RTLS_CMD_AOA_RESULT_ANGLE",
"RTLS_CMD_AOA_RESULT_RAW",
"RTLS_CMD_AOA_RESULT_PAIR_ANGLES"] and msg.type == "AsyncReq":
self.aoa_results_queue.put({
"name": sending_node.name,
"type": "aoa",
"identifier": identifier,
"payload": msg.payload
})