CC1310的WakeOnRadio的RF_cmdPropRxSniff怎么立即变为IDLE状态
TI工程师,您好。请问下CC1310的WakeOnRadio的RF_cmdPropRxSniff怎么立即变为IDLE状态?我想在case PROP_DONE_OK: 之后,就立即变为IDLE。是变化RF_cmdPropRxSniff.commandNo吗?并且立即触发RF_cmdPropRxSniff.startTrigger.triggerType ,但是我只看到 CMD_PROP_RX_SNIFF的命令,没有看到IDLE的命令。谢谢!
RF_cmdPropRxSniff命令使RF进入Rx状态,结束RF_cmdPropRxSniff命令退出Rx状态就是处于IDLE状态了
结束RF_cmdPropRxSniff有两种方式,一个是使用RF_cmdPropRxSniff命令自身的EndTrigger结束命令,一个是使用RF_cancelCmd()
您好。如下红色部分所注,发现还是不能RF_Close,请问这个是啥原因啊。我关闭的目的是为了重新设置RF的参数。
/* Enter main loop */
while(1)
{
/* Set next wakeup time in the future */
RF_cmdPropRxSniff.startTime += WOR_WAKE_UP_INTERVAL_RAT_TICKS(WOR_WAKEUPS_PER_SECOND);
/* Schedule RX */
RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropRxSniff, RF_PriorityNormal, &callback, RF_EventRxEntryDone);
/* Log RX_SNIFF status */
switch(RF_cmdPropRxSniff.status) {
case PROP_DONE_IDLE:
/* Idle based on RSSI */
worStatistics.doneIdle++;
break;
case PROP_DONE_IDLETIMEOUT:
/* Idle based on PQT */
worStatistics.doneIdleTimeout++;
break;
case PROP_DONE_RXTIMEOUT:
/* Got valid preamble on the air, but did not find sync word */
worStatistics.doneRxTimeout++;
break;
case PROP_DONE_OK:
/* Received packet */
worStatistics.doneOk++;
//
RF_cancelCmd(rfHandle,RF_cmdPropRxSniff.commandNo,0);
RF_cmdPropRxSniff.commandNo = 0x00;
RF_yield(rfHandle);
RF_close(rfHandle);
break;
default:
/* Unhandled status */
break;
};
}
如下,是SDK中rfPacketErrorRate示例工程中,使用RF_cancelCmd相关部分的代码,供参考。
rxCmdHndl = RF_postCmd(rfHandle, (RF_Op*)&RF_cmdPropRx, RF_PriorityNormal, &rx_callback, RF_EventRxEntryDone);
RF_cancelCmd(rfHandle, rxCmdHndl, 0);
RF_pendCmd(rfHandle, rxCmdHndl, RF_EventRxEntryDone);
RF_close(rfHandle);