xWRL6432 MMWAVE-L-SDK  05.04.00.01
rangeprochwa.h
Go to the documentation of this file.
1 /*
2  *
3  * NOTE:
4  * (C) Copyright 2018 - 2022 Texas Instruments, Inc.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in the
15  * documentation and/or other materials provided with the
16  * distribution.
17  *
18  * Neither the name of Texas Instruments Incorporated nor the names of
19  * its contributors may be used to endorse or promote products derived
20  * from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  */
34 
50 /**************************************************************************
51  *************************** Include Files ********************************
52  **************************************************************************/
53 #ifndef RANGEPROCHWA_H
54 #define RANGEPROCHWA_H
55 
56 /* Standard Include Files. */
57 #include <stdint.h>
58 #include <stdlib.h>
59 #include <stddef.h>
60 #include <string.h>
61 #include <stdio.h>
62 
63 /* MCU Plus SDK Drivers include files */
64 #include <drivers/hwa.h>
65 
66 /* mmWave SDK Data Path Include Files */
69 #include <datapath/dpif/dp_error.h>
72 #include <datapath/dpu/rangeproc/v0/rangeproc_common.h>
73 
74 #ifdef __cplusplus
75 extern "C" {
76 #endif
77 
79 #define DPU_RANGEPROCHWA_NUM_HWA_PARAM_SETS 4U
80 
82 #define DPU_RANGEPROCHWA_DCRANGESIGMEAN_BYTE_ALIGNMENT_DSP 8U
83 
85 #define DPU_RANGEPROCHWA_DCRANGESIGMEAN_BYTE_ALIGNMENT_R5F 4U
86 
88 #define DPU_RANGEPROCHWA_RADARCUBE_BYTE_ALIGNMENT_R5F CSL_CACHE_L1D_LINESIZE
89 
91 #define DPU_RANGEPROCHWA_RADARCUBE_BYTE_ALIGNMENT_DSP (sizeof(int16_t))
92 
101 #define DPU_RANGEPROCHWA_EINVAL (DP_ERRNO_RANGE_PROC_BASE-1)
102 
106 #define DPU_RANGEPROCHWA_ENOMEM (DP_ERRNO_RANGE_PROC_BASE-2)
107 
111 #define DPU_RANGEPROCHWA_EINTERNAL (DP_ERRNO_RANGE_PROC_BASE-3)
112 
116 #define DPU_RANGEPROCHWA_ENOTIMPL (DP_ERRNO_RANGE_PROC_BASE-4)
117 
121 #define DPU_RANGEPROCHWA_EINPROGRESS (DP_ERRNO_RANGE_PROC_BASE-5)
122 
126 #define DPU_RANGEPROCHWA_ECMD (DP_ERRNO_RANGE_PROC_BASE-6)
127 
131 #define DPU_RANGEPROCHWA_ESEMA (DP_ERRNO_RANGE_PROC_BASE-7)
132 
136 #define DPU_RANGEPROCHWA_EDCREMOVAL (DP_ERRNO_RANGE_PROC_BASE-8)
137 
141 #define DPU_RANGEPROCHWA_EADCBUF_INTF (DP_ERRNO_RANGE_PROC_BASE-9)
142 
146 #define DPU_RANGEPROCHWA_ERADARCUBE_INTF (DP_ERRNO_RANGE_PROC_BASE-10)
147 
151 #define DPU_RANGEPROCHWA_EWINDOW (DP_ERRNO_RANGE_PROC_BASE-11)
152 
156 #define DPU_RANGEPROCHWA_EBUTTERFLYSCALE (DP_ERRNO_RANGE_PROC_BASE-12)
157 
161  #define DPU_RANGEPROCHWA_EEDMA_ERROR (DP_ERRNO_RANGE_PROC_BASE-13)
162 
177 typedef uint32_t DPU_RangeProcHWA_InputMode;
178 #define DPU_RangeProcHWA_InputMode_MAPPED (uint32_t) 0U
179 #define DPU_RangeProcHWA_InputMode_ISOLATED (uint32_t) 1U
180 #define DPU_RangeProcHWA_InputMode_HWA_INTERNAL_MEM (uint32_t) 2U
181 
191 typedef uint32_t DPU_RangeProcHWA_Cmd;
192 #define DPU_RangeProcHWA_Cmd_dcRangeCfg (uint32_t) 0
193 #define DPU_RangeProcHWA_Cmd_triggerProc (uint32_t) 1
194 
204 typedef struct DPU_RangeProcHWA_FFTtuning_t{
210 
217 
219 
220 
230 typedef struct DPU_RangeProcHWA_HwaConfig_t
231 {
234 
236  uint8_t numParamSet;
237 
241  uint8_t hwaWinSym;
242 
244  uint16_t hwaWinRamOffset;
245 
248 
250  uint8_t dmaTrigSrcChan[2];
251 
254 
256 
266 typedef struct DPU_RangeProcHWA_EDMAInputConfig_t
267 {
272 
276 
286 typedef struct DPU_RangeProcHWA_EDMAOutputConfigPath_t
287 {
292 
296 
299 
301 
302 
303 
304 
325 typedef struct DPU_RangeProcHWA_EDMAOutputConfig_t
326 {
327 
330  uint32_t dummySrc;
332  uint32_t dummyDst;
333 
335 
336 
346 typedef struct DPU_RangeProcHWA_HW_Resources_t
347 {
350 
353 
356 
359 
361  /* NOTE: Application needs to provide address of the EDMA interrupt object.
362  * This needs to be done as there might be multiple subframes configured
363  * and each subframe needs EDMA interrupt to be registered.
364  */
366 
375  cmplx32ImRe_t *dcRangeSigMean;
376 
379 
387 
391 
402 typedef struct DPU_RangeProcHWA_compressCfg_t
403 {
404 
406 
407  /* number of complex samples to compress */
409 
411 
421 typedef struct DPU_RangeProcHWA_StaticConfig_t
422 {
424  uint8_t numTxAntennas;
425 
428 
430  uint16_t numRangeBins;
431 
433 // uint16_t numFFTBins;
435  uint16_t rangeFftSize;
436 
438  uint16_t isChirpDataReal;
439 
442 
445 
448 
451 
454 
459  int32_t *window;
460 
465  uint32_t windowSize;
466 
469 
475 
478 
482 
485 
488 
491 
493  uint8_t lowPowerMode;
494 
497 
500 
502 
512 typedef struct DPU_RangeProcHWA_DynamicConfig_t
513 {
515  DPU_RangeProc_CalibDcRangeSigCfg *calibDcRangeSigCfg;
517 
527 typedef struct DPU_RangeProcHWA_Config_t
528 {
531 
534 
538 
548 typedef struct DPU_RangeProcHWA_InitParams_t
549 {
553 
563 typedef struct DPU_RangeProcHWA_OutParams_t
564 {
567 
569  DPU_RangeProc_stats stats;
571 
578 typedef void* DPU_RangeProcHWA_Handle ;
579 
580 /*================================================================
581  rangeProcHWA DPU exposed APIs
582  ================================================================*/
584 (
585  DPU_RangeProcHWA_InitParams *initParams,
586  int32_t* errCode
587 );
588 
590 (
592  DPU_RangeProcHWA_Config* rangeHwaCfg
593 );
594 
596 (
598  DPU_RangeProcHWA_OutParams* outParams
599 );
600 
602 (
605  void* arg,
606  uint32_t argSize
607 );
608 
610 (
612 );
613 
615 (
617  uint8_t *numUsedHwaParamSets
618 );
619 
620 #ifdef __cplusplus
621 }
622 #endif
623 
624 #endif
DPU_RangeProcHWA_InitParams::hwaHandle
HWA_Handle hwaHandle
HWA Handle.
Definition: rangeprochwa.h:551
DPU_RangeProcHWA_HwaConfig::numParamSet
uint8_t numParamSet
Number of HWA param sets must be DPU_RANGEPROCHWA_NUM_HWA_PARAM_SETS.
Definition: rangeprochwa.h:236
DPU_RangeProcHWA_HW_Resources::radarCube
DPIF_RadarCube radarCube
Radar cube data interface. Radar cube buffer (radarCube.data) For R5F: Byte alignment Requirement = D...
Definition: rangeprochwa.h:386
DPU_RangeProcHWA_Cmd
uint32_t DPU_RangeProcHWA_Cmd
rangeProc control command
Definition: rangeprochwa.h:191
DPU_RangeProcHWA_HW_Resources::edmaHandle
EDMA_Handle edmaHandle
EDMA Handle.
Definition: rangeprochwa.h:349
DPU_RangeProcHWA_HwaConfig::hwaWinRamOffset
uint16_t hwaWinRamOffset
HWA windowing RAM offset in number of samples.
Definition: rangeprochwa.h:244
DPU_RangeProcHWA_StaticConfig::numVirtualAntennas
uint8_t numVirtualAntennas
Number of virtual antennas.
Definition: rangeprochwa.h:427
DPU_RangeProcHWA_OutParams::endOfChirp
bool endOfChirp
End of Chirp indication for rangeProcHWA.
Definition: rangeprochwa.h:566
DPU_RangeProcHWA_HwaConfig::dataInputMode
DPU_RangeProcHWA_InputMode dataInputMode
Data Input Mode,.
Definition: rangeprochwa.h:247
DPU_RangeProcHWA_EDMAInputConfig::dataInSignature
DPEDMA_ChanCfg dataInSignature
EDMA configuration for rangeProc data Input Signature.
Definition: rangeprochwa.h:274
DPU_RangeProcHWA_EDMAOutputConfigPath
RangeProc EDMA configuration.
Definition: rangeprochwa.h:287
DPU_RangeProcHWA_FFTtuning::fftOutputDivShift
uint16_t fftOutputDivShift
Specify amount of right (divide) shift to apply to convert HWA internal 24-bit Range FFT output to 16...
Definition: rangeprochwa.h:209
DPU_RangeProcHWA_StaticConfig::isBpmEnabled
bool isBpmEnabled
Flag that indicates if BPM is enabled. BPM can only be enabled/disabled during configuration time.
Definition: rangeprochwa.h:481
Edma_IntrObject
EDMA interrupt configuration object. The object is passed to the EDMA_registerIntr() function....
Definition: edma/v0/edma.h:451
DPU_RangeProcHWA_HW_Resources::intrObj
Edma_IntrObject * intrObj
EDMA interrupt object.
Definition: rangeprochwa.h:365
DPU_RangeProcHWA_StaticConfig
RangeProcHWA static configuration.
Definition: rangeprochwa.h:422
DPIF_ADCBufData
ADC Data buffer definition.
Definition: dpif_adcdata.h:111
DPU_RangeProcHWA_StaticConfig::numChirpsPerFrame
uint16_t numChirpsPerFrame
Number of chirps per frame.
Definition: rangeprochwa.h:441
DPU_RangeProcHWA_HwaConfig::paramSetStartIdx
uint8_t paramSetStartIdx
HWA paramset Start index.
Definition: rangeprochwa.h:233
DPU_RangeProcHWA_StaticConfig::rangeFFTtuning
DPU_RangeProcHWA_FFTtuning rangeFFTtuning
Range FFT Tuning Params.
Definition: rangeprochwa.h:477
DPU_RangeProcHWA_StaticConfig::numRangeBins
uint16_t numRangeBins
Number of range bins.
Definition: rangeprochwa.h:430
DPU_RangeProcHWA_StaticConfig::enableMinorMotion
bool enableMinorMotion
Minor motion detection enable flag.
Definition: rangeprochwa.h:487
DPU_RangeProcHWA_StaticConfig::enableMajorMotion
bool enableMajorMotion
Major motion detection enable flag.
Definition: rangeprochwa.h:484
DPU_RangeProcHWA_StaticConfig::windowSize
uint32_t windowSize
Range FFT window coefficients size in bytes non-symmetric window, size = sizeof(uint32_t) * numADCSam...
Definition: rangeprochwa.h:465
DPU_RangeProcHWA_StaticConfig::window
int32_t * window
Range FFT window coefficients, Appliation provided windows coefficients After DPU_RangeProcHWA_config...
Definition: rangeprochwa.h:459
dp_error.h
Base error codes for the data path Modules.
DPU_RangeProcHWA_compressCfg::compressionFactor
uint8_t compressionFactor
Definition: rangeprochwa.h:405
DPU_RangeProcHWA_HwaConfig::hardwareTrigSrc
uint8_t hardwareTrigSrc
HWA hardware trigger source. This is used only in DPU_RangeProcHWA_InputMode_HWA_INTERNAL_MEM mode.
Definition: rangeprochwa.h:253
DPU_RangeProcHWA_StaticConfig::isCompressionEnabled
bool isCompressionEnabled
compression enable/disable flag for radar cube data
Definition: rangeprochwa.h:496
DPU_RangeProcHWA_StaticConfig::numDopplerChirpsPerFrame
uint16_t numDopplerChirpsPerFrame
Number of Doppler chirps per frame.
Definition: rangeprochwa.h:444
DPEDMA_2LinkChanCfg
EDMA channel configuration with 2 shadow channels.
Definition: dpedma.h:190
DPU_RangeProcHWA_StaticConfig::numMinorMotionChirpsPerFrame
uint16_t numMinorMotionChirpsPerFrame
Number of chirps per frame for Minor Motion Detection.
Definition: rangeprochwa.h:450
DPU_RangeProcHWA_EDMAOutputConfigPath::dataOutMinor
DPEDMA_ChanCfg dataOutMinor
EDMA configuration for rangeProc data Out for Minor Motion Radar cube.
Definition: rangeprochwa.h:295
DPU_RangeProcHWA_HW_Resources
RangeProcHWA hardware resources.
Definition: rangeprochwa.h:347
DPU_RangeProcHWA_process
int32_t DPU_RangeProcHWA_process(DPU_RangeProcHWA_Handle handle, DPU_RangeProcHWA_OutParams *outParams)
DPU_RangeProcHWA_HwaConfig
RangeProc HWA configuration.
Definition: rangeprochwa.h:231
dpedmahwa.h
EDMA Configuration Utility API definitions for HWA.
DPU_RangeProcHWA_init
DPU_RangeProcHWA_Handle DPU_RangeProcHWA_init(DPU_RangeProcHWA_InitParams *initParams, int32_t *errCode)
DPU_RangeProcHWA_Config::hwRes
DPU_RangeProcHWA_HW_Resources hwRes
rangeProc hardware resources
Definition: rangeprochwa.h:530
DPU_RangeProcHWA_StaticConfig::ADCBufData
DPIF_ADCBufData ADCBufData
ADCBuf buffer interface.
Definition: rangeprochwa.h:468
DPU_RangeProcHWA_HW_Resources::hwaCfg
DPU_RangeProcHWA_HwaConfig hwaCfg
HWA configuration.
Definition: rangeprochwa.h:352
dpif_adcdata.h
Defines RF ADCBuf interface.
DPU_RangeProcHWA_HW_Resources::dcRangeSigMean
cmplx32ImRe_t * dcRangeSigMean
Pointer to Calibrate DC Range signature buffer The size of the buffer = DPU_RANGEPROC_SIGNATURE_COMP_...
Definition: rangeprochwa.h:375
DPU_RangeProcHWA_StaticConfig::compressCfg
DPU_RangeProcHWA_compressCfg compressCfg
compression parameters for radar cube data
Definition: rangeprochwa.h:499
DPU_RangeProcHWA_InputMode
uint32_t DPU_RangeProcHWA_InputMode
RangeProc data input mode.
Definition: rangeprochwa.h:177
DPU_RangeProcHWA_StaticConfig::frmCntrModNumFramesPerMinorMot
uint32_t frmCntrModNumFramesPerMinorMot
Frame counter to support power saving mode.
Definition: rangeprochwa.h:490
DPU_RangeProcHWA_StaticConfig::rangeFftSize
uint16_t rangeFftSize
Number of bins used in Range FFT Calculation.
Definition: rangeprochwa.h:435
DPU_RangeProcHWA_OutParams
rangeProcHWA output parameters populated during rangeProc Processing time
Definition: rangeprochwa.h:564
DPU_RangeProcHWA_EDMAInputConfig
RangeProc EDMA configuration.
Definition: rangeprochwa.h:267
DPU_RangeProcHWA_Config::staticCfg
DPU_RangeProcHWA_StaticConfig staticCfg
rangeProc static configuration
Definition: rangeprochwa.h:533
DPU_RangeProcHWA_GetNumUsedHwaParamSets
int32_t DPU_RangeProcHWA_GetNumUsedHwaParamSets(DPU_RangeProcHWA_Handle handle, uint8_t *numUsedHwaParamSets)
DPU_RangeProcHWA_InitParams
rangeProcHWA output parameters populated during rangeProc Processing time
Definition: rangeprochwa.h:549
DPU_RangeProcHWA_EDMAInputConfig::dataIn
DPEDMA_2LinkChanCfg dataIn
EDMA configuration for rangeProc data Input This is needed only in DPU_RangeProcHWA_InputMode_ISOLATE...
Definition: rangeprochwa.h:271
DPU_RangeProcHWA_HW_Resources::dcRangeSigMeanSize
uint32_t dcRangeSigMeanSize
DC range calibration scratch buffer size.
Definition: rangeprochwa.h:378
DPU_RangeProcHWA_Config
Range FFT configuration.
Definition: rangeprochwa.h:528
DPIF_RadarCube
Radar Cube Buffer Interface.
Definition: dpif_radarcube.h:105
DPU_RangeProcHWA_StaticConfig::lowPowerMode
uint8_t lowPowerMode
Low power mode 0-disabled, 1-enabled, 2-test mode (power stays on, system coftware components reset)
Definition: rangeprochwa.h:493
DPU_RangeProcHWA_EDMAOutputConfigPath::dataOutMajor
DPEDMA_ChanCfg dataOutMajor
EDMA configuration for rangeProc data Out for Major Motion Radar cube It must be a HWACC triggered ED...
Definition: rangeprochwa.h:291
hwa.h
DPU_RangeProcHWA_DynamicConfig
RangeProcHWA dynamic configuration.
Definition: rangeprochwa.h:513
DPU_RangeProcHWA_EDMAOutputConfig::dummyDst
uint32_t dummyDst
Dummy location
Definition: rangeprochwa.h:332
dpif_radarcube.h
Defines the data path radar cube data interface.
DPU_RangeProcHWA_HW_Resources::edmaOutCfg
DPU_RangeProcHWA_EDMAOutputConfig edmaOutCfg
EDMA configuration for rangeProc data Output.
Definition: rangeprochwa.h:358
DPU_RangeProcHWA_StaticConfig::numFramesPerMinorMotProc
uint16_t numFramesPerMinorMotProc
Number of frames per Minor Motion Processing.
Definition: rangeprochwa.h:453
DPU_RangeProcHWA_StaticConfig::resetDcRangeSigMeanBuffer
uint8_t resetDcRangeSigMeanBuffer
Flag to reset dcRangeSigMean buffer 1 - to reset the dcRangeSigMean buffer and counter 0 - do not res...
Definition: rangeprochwa.h:474
DPU_RangeProcHWA_control
int32_t DPU_RangeProcHWA_control(DPU_RangeProcHWA_Handle handle, DPU_RangeProcHWA_Cmd cmd, void *arg, uint32_t argSize)
EDMA_Handle
void * EDMA_Handle
A handle that is returned from a EDMA_open() call.
Definition: edma/v0/edma.h:471
DPU_RangeProcHWA_StaticConfig::isChirpDataReal
uint16_t isChirpDataReal
1 if ADC Samples are real
Definition: rangeprochwa.h:438
DPU_RangeProcHWA_config
int32_t DPU_RangeProcHWA_config(DPU_RangeProcHWA_Handle handle, DPU_RangeProcHWA_Config *rangeHwaCfg)
DPU_RangeProcHWA_Handle
void * DPU_RangeProcHWA_Handle
rangeProc DPU Handle
Definition: rangeprochwa.h:578
DPU_RangeProcHWA_OutParams::stats
DPU_RangeProc_stats stats
rangeProcHWA stats
Definition: rangeprochwa.h:569
DPU_RangeProcHWA_HwaConfig::hwaWinSym
uint8_t hwaWinSym
Flag to indicate if HWA windowing is symmetric see HWA_WINDOW_SYMM definitions in HWA driver's doxyge...
Definition: rangeprochwa.h:241
DPU_RangeProcHWA_EDMAOutputConfig::dummySrc
uint32_t dummySrc
Dummy location.
Definition: rangeprochwa.h:330
DPU_RangeProcHWA_compressCfg
Compression parameters.
Definition: rangeprochwa.h:403
DPU_RangeProcHWA_deinit
int32_t DPU_RangeProcHWA_deinit(DPU_RangeProcHWA_Handle handle)
DPU_RangeProcHWA_HW_Resources::radarCubeMinMot
DPIF_RadarCube radarCubeMinMot
Radar cube data interface for Minor Motion Detection.
Definition: rangeprochwa.h:389
DPU_RangeProcHWA_HW_Resources::edmaInCfg
DPU_RangeProcHWA_EDMAInputConfig edmaInCfg
EDMA configuration for rangeProc data Input.
Definition: rangeprochwa.h:355
DPU_RangeProcHWA_EDMAOutputConfigPath::evtDecim
DPEDMA_2LinkChanCfg evtDecim
EDMA for chirp event decimation for minor motion detection
Definition: rangeprochwa.h:298
DPU_RangeProcHWA_StaticConfig::numDopplerChirpsPerProc
uint16_t numDopplerChirpsPerProc
Number of Doppler chirps per processing, determines the radar cube size.
Definition: rangeprochwa.h:447
dpedma.h
EDMA Configuration Utility API definitions.
DPU_RangeProcHWA_compressCfg::numComplexElements
uint32_t numComplexElements
Definition: rangeprochwa.h:408
HWA_Handle
void * HWA_Handle
A handle that is returned from a HWA_open() call.
Definition: hwa/v0/hwa.h:620
DPU_RangeProcHWA_Config::dynCfg
DPU_RangeProcHWA_DynamicConfig dynCfg
rangeProc dynamic configuration
Definition: rangeprochwa.h:536
DPU_RangeProcHWA_StaticConfig::numTxAntennas
uint8_t numTxAntennas
Number of transmit antennas.
Definition: rangeprochwa.h:424
DPU_RangeProcHWA_FFTtuning
rangeProc FFT tuning parameters for HWA based Range FFT
Definition: rangeprochwa.h:204
DPU_RangeProcHWA_EDMAOutputConfig
RangeProc output EDMA configuration.
Definition: rangeprochwa.h:326
DPU_RangeProcHWA_DynamicConfig::calibDcRangeSigCfg
DPU_RangeProc_CalibDcRangeSigCfg * calibDcRangeSigCfg
Pointer to Calibrate DC Range signature configuration.
Definition: rangeprochwa.h:515
DPU_RangeProcHWA_FFTtuning::numLastButterflyStagesToScale
uint16_t numLastButterflyStagesToScale
Specify number of Last butterfly stages to scale to avoid clipping within HWA FFT stages....
Definition: rangeprochwa.h:216
DPEDMA_ChanCfg
EDMA channel configuration.
Definition: dpedma.h:132