大家好!
我正在尝试通过定义2个不同的 txEntry、一个260bit/32字节和另一个255byte 来创建一个结构、其中一个发送50次、另一个发送一次。 这正是我要做的:
sync_entry[33]={1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、23、24 、25、26、27、28、29、30、31,333}--> 发送1次。 当50个发送(SYNC_DATA_ENTRY)完成时
data_entry[255]={0};--> 发送50次
执行上述操作;
1.首先,我定义了两个不同的实体。
2.我将使用 RF_runCmd 运行 RF_EventTxEntryDone 回调。
3.每次回调处于活动状态时,我都会保留一个计数器。
4.我根据该计数器的状态更改 txQueu.pCurrent Entry。
相关代码如下:
rfc_dataEntryPointer_t txEntry;
rfc_dataEntryPointer_t sync_txEntry;
dataQueue_t txQueue;
void *rf_transmitThread(void *arg0)
{
txEntry.pNextEntry = (uint8_t*)&txEntry;
txEntry.status = DATA_ENTRY_PENDING;
txEntry.config.type = DATA_ENTRY_TYPE_PTR;
txEntry.pData = (uint8_t*)data_entry;
txEntry.length = sizeof(data_entry);
sync_txEntry.pNextEntry = (uint8_t*)&sync_txEntry;
sync_txEntry.status = DATA_ENTRY_PENDING;
sync_txEntry.config.type = DATA_ENTRY_TYPE_PTR;
sync_txEntry.pData = (uint8_t*)sync_entry;
sync_txEntry.length = sizeof(sync_entry);
txQueue.pCurrEntry = (uint8_t*)&sync_txEntry;
txQueue.pLastEntry = NULL;
while(1)
{
RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropTxAdv, RF_PriorityNormal, &callback, RF_EventTxEntryDone);
}
}
void callback(RF_Handle h, RF_CmdHandle ch, RF_EventMask e)
{
if ( e & RF_EventTxEntryDone)
{
tx_entry_counter++;
}
if(tx_entry_counter % 50 == 0)
{
txQueue.pCurrEntry = (uint8_t*)&sync_txEntry;
}
else
{
txQueue.pCurrEntry = (uint8_t*)&txEntry;
}
}
当我在频谱分析仪中对数据进行解码时、我观察到同步数据包根本没有发送。
我想知道的是这一点。 RF_EventTxEntryDone 是否告知我们要的块已离开射频? 当我读取说明时、我看到它只通知队列已经接收到数据包。 你认为我给出的示例中有任何问题吗?
辛塞莱里