TI中文支持网
TI专业的中文技术问题搜集分享网站

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的命令。谢谢!

Felix ZF:

RF_cmdPropRxSniff命令使RF进入Rx状态,结束RF_cmdPropRxSniff命令退出Rx状态就是处于IDLE状态了

结束RF_cmdPropRxSniff有两种方式,一个是使用RF_cmdPropRxSniff命令自身的EndTrigger结束命令,一个是使用RF_cancelCmd()

user3895839:

回复 Felix ZF:

您好。如下红色部分所注,发现还是不能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; }; }

Felix ZF:

回复 user3895839:

如下,是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);

赞(0)
未经允许不得转载:TI中文支持网 » CC1310的WakeOnRadio的RF_cmdPropRxSniff怎么立即变为IDLE状态
分享到: 更多 (0)