Hi,
I'm using "mmwave_industrial_toolbox_4_7_0\labs\out_of_box_demo\68xx_aop_mmwave_sdk_hwa" for developing.
And I modified function "DPC_ObjectDetection_execute" in "objectdetection.c" file.
I just want UART output 1DFFT with cmplx16ReIm_t format, so I just open 1DFFT function, and I save that data into the data structure reserved for azimuthStaticHeatMap since the data size and type would be similar.
/* fill azimuthStaticHeatMap */ for (rgn = 0; rgn < subFrmObj->staticCfg.numRangeBins - 1; rgn++) { for (tant = 0; tant < subFrmObj->staticCfg.numVirtualAntennas; tant++) { subFrmObj->dpuCfg.aoaCfg.res.azimuthStaticHeatMap[rgn * subFrmObj->staticCfg.numVirtualAntennas + tant].imag = 0; subFrmObj->dpuCfg.aoaCfg.res.azimuthStaticHeatMap[rgn * subFrmObj->staticCfg.numVirtualAntennas + tant].real = 0; } } for (tant = 0; tant < subFrmObj->staticCfg.numTxAntennas; tant++) { for (rant = 0; rant < (subFrmObj->staticCfg.numVirtualAntennas / subFrmObj->staticCfg.numTxAntennas); rant++) { for (rgn = 0; rgn < subFrmObj->staticCfg.numRangeBins - 1; rgn++) { temp = (((cmplx16ReIm_t *)subFrmObj->dpuCfg.rangeCfg.hwRes.radarCube.data) + tant * subFrmObj->staticCfg.numRangeBins * subFrmObj->staticCfg.numDopplerBins * (subFrmObj->staticCfg.numVirtualAntennas / subFrmObj->staticCfg.numTxAntennas) + rant * subFrmObj->staticCfg.numRangeBins + rgn); subFrmObj->dpuCfg.aoaCfg.res.azimuthStaticHeatMap[rgn * subFrmObj->staticCfg.numVirtualAntennas + tant * (subFrmObj->staticCfg.numVirtualAntennas / subFrmObj->staticCfg.numTxAntennas) + rant].imag = temp->imag; subFrmObj->dpuCfg.aoaCfg.res.azimuthStaticHeatMap[rgn * subFrmObj->staticCfg.numVirtualAntennas + tant * (subFrmObj->staticCfg.numVirtualAntennas / subFrmObj->staticCfg.numTxAntennas) + rant].real = temp->real; } } }
Please help to check if my code is correct.
And I output the 1DFFT data with cmplx16ReIm_t format through UART
/* Send data for static azimuth heatmap */
if (pGuiMonSel->rangeAzimuthHeatMap)
{
UART_writePolling (uartHandle,
(uint8_t*)&tl[tlvIdx],
sizeof(MmwDemo_output_message_tl));
UART_writePolling (uartHandle,
(uint8_t *) result->azimuthStaticHeatMap,
result->azimuthStaticHeatMapSize * sizeof(cmplx16ImRe_t));
tlvIdx++;
}
Lastly, I use python to parse the data, I use struct.unpack('Q8I', header) to parse header, but I'm not sure how to parse cmplx16ReIm_t data.
I use struct.unpack('<h', imag) and struct.unpack('<h', real) to parse the data. Is this correct?
Looking forward to your help.
Thanks
Best,
Yunlong