1 #include <xdc/std.h>
3 #include "common.h"
4 #include "outbuf.h"
5 #include "dbgDob.h"
7 #define CAP_OB
8 #ifdef CAP_OB
9 // OB capture buffers
10 #pragma DATA_SECTION(gCapObBuf, ".gCapObBuf");
11 Int32 gCapObBuf[CAP_OB_MAX_NUM_CH][CAP_OB_MAX_NUM_SAMP];
12 Int32 gCapObBufIdx=0;
13 Int32 gCapObBufWrap=0;
14 static UInt32 capObStopCnt=5000;
15 #endif // CAP_OB
17 #ifdef CAP_OB
18 // Capture data in OB buffer to memory
19 Void capOb(
20 PAF_OutBufConfig *pOutBufConfig
21 )
22 {
23 Int8 numCh;
24 Int16 numSamp;
25 Int8 sampSz;
26 Int32 samp;
27 Int8 *pCh;
28 Int16 i, j, k;
29 Int32 *pCapBuf;
31 if (--capObStopCnt == 0)
32 {
33 //SW_BREAKPOINT;
34 }
36 numCh = pOutBufConfig->stride; // get number of channels
37 numSamp = pOutBufConfig->lengthofFrame; // get number of samples to capture
38 sampSz = pOutBufConfig->sizeofElement; // get sample size (bytes)
40 if ((CAP_OB_MAX_NUM_SAMP - gCapObBufIdx) < numSamp)
41 {
42 //return;
43 gCapObBufIdx = 0;
44 gCapObBufWrap++;
45 }
47 for (i=0; i<numCh; i++)
48 {
49 pCapBuf = &gCapObBuf[i][gCapObBufIdx];
50 pCh = &pOutBufConfig->pntr.pSmInt[i*sampSz];
51 for (j=0; j<numSamp; j++)
52 {
53 samp = (Int32)(*(pCh+sampSz-1));
54 for (k=sampSz-2; k>=0; k--)
55 {
56 samp <<= 8;
57 samp |= (UInt8)(*(pCh+k));
58 }
59 samp <<= 32-8*sampSz;
61 *pCapBuf = samp;
62 pCapBuf++;
63 pCh += numCh * sampSz;
64 }
65 }
66 gCapObBufIdx += numSamp;
67 }
68 #endif // CAP_OB