7 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 49 void DisplayError(S32 status,
const char* func_name,
const BRDCHAR* cmd_str)
51 S32 real_status = BRD_errext(status);
56 BRDC_sprintf(msg, _BRDC(
"%s - %s: BRDerr_OK\n"), func_name, cmd_str);
59 BRDC_sprintf(msg, _BRDC(
"%s - %s: BRDerr_BAD_MODE\n"), func_name, cmd_str);
61 case BRDerr_INSUFFICIENT_SERVICES:
62 BRDC_sprintf(msg, _BRDC(
"%s - %s: BRDerr_INSUFFICIENT_SERVICES\n"), func_name, cmd_str);
64 case BRDerr_BAD_PARAMETER:
65 BRDC_sprintf(msg, _BRDC(
"%s - %s: BRDerr_BAD_PARAMETER\n"), func_name, cmd_str);
67 case BRDerr_BUFFER_TOO_SMALL:
68 BRDC_sprintf(msg, _BRDC(
"%s - %s: BRDerr_BUFFER_TOO_SMALL\n"), func_name, cmd_str);
70 case BRDerr_WAIT_TIMEOUT:
71 BRDC_sprintf(msg, _BRDC(
"%s - %s: BRDerr_WAIT_TIMEOUT\n"), func_name, cmd_str);
74 BRDC_sprintf(msg, _BRDC(
"%s - %s: Unknown error, status = %8X\n"), func_name, cmd_str, real_status);
77 BRDC_printf(_BRDC(
"%s"), msg);
84 if(BRDC_stricmp(AdcSrvName, _BRDC(
"ADC28X800M")) &&
85 BRDC_stricmp(AdcSrvName, _BRDC(
"ADC28X1G")) &&
86 BRDC_stricmp(AdcSrvName, _BRDC(
"ADC10X2G")) &&
87 BRDC_stricmp(AdcSrvName, _BRDC(
"ADC210X1G")) &&
88 BRDC_stricmp(AdcSrvName, _BRDC(
"ADC212X1G")) &&
89 BRDC_stricmp(AdcSrvName, _BRDC(
"FM814X125M"))
92 BRDC_printf(_BRDC(
"Clock checking...\r"));
93 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 101 for(
int i = 0; i < 3; i++)
103 BRD_ClkMode clk_mode;
104 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETCLKMODE, &clk_mode);
105 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_SETCLKMODE, &clk_mode);
106 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 112 BRD_ctrl(hADC, 0, BRDctrl_ADC_FIFOSTATUS, &fifo_status);
113 if(fifo_status & 0x1000)
122 BRDC_printf(_BRDC(
" \r"));
124 BRDC_printf(_BRDC(
"Clock is OK\n"));
126 BRDC_printf(_BRDC(
"Clock error\n"));
130 S32
AdcSettings(BRD_Handle hADC,
int idx, BRDCHAR* srvName, BRDCHAR* iniFileName)
138 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETCFG, &adc_cfg);
139 BRDC_printf(_BRDC(
"ADC Config: FIFO size = %d kBytes\n"), adc_cfg.FifoSize / 1024);
146 BRDCHAR iniFilePath[MAX_PATH];
147 BRDCHAR iniSectionName[MAX_PATH];
148 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 149 IPC_getCurrentDir(iniFilePath,
sizeof(iniFilePath)/
sizeof(BRDCHAR));
151 GetCurrentDirectory(
sizeof(iniFilePath)/
sizeof(BRDCHAR), iniFilePath);
153 BRDC_strcat(iniFilePath, iniFileName);
154 BRDC_sprintf(iniSectionName, _BRDC(
"device%d_%s%d"), idx, srvName, 0);
158 adcSpec.command = ADC214X200Mcmd_SETMU;
159 adcSpec.arg= (PVOID)&mu_dflt;
160 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_SETSPECIFIC, &adcSpec);
161 if(!BRD_errcmp(status, BRDerr_OK))
162 DisplayError(status, __FUNCTION__, _BRDC(
"ADC214X200Mcmd_SETMU"));
166 adcSpec.command = ADC216X100Mcmd_SETMU;
167 adcSpec.arg= (PVOID)&mu_dflt;
168 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_SETSPECIFIC, &adcSpec);
169 if(!BRD_errcmp(status, BRDerr_OK))
170 DisplayError(status, __FUNCTION__, _BRDC(
"ADC216X100Mcmd_SETMU"));
174 adcSpec.command = ADC214X400Mcmd_SETMU;
175 adcSpec.arg= (PVOID)&mu_dflt;
176 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_SETSPECIFIC, &adcSpec);
177 if(!BRD_errcmp(status, BRDerr_OK))
178 DisplayError(status, __FUNCTION__, _BRDC(
"ADC214X400Mcmd_SETMU"));
182 adcSpec.command = FM412X500Mcmd_SETMU;
183 adcSpec.arg= (PVOID)&mu_dflt;
184 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_SETSPECIFIC, &adcSpec);
185 if(!BRD_errcmp(status, BRDerr_OK))
186 DisplayError(status, __FUNCTION__, _BRDC(
"FM412X500Mcmd_SETMU"));
188 BRD_IniFile ini_file;
189 BRDC_strcpy(ini_file.fileName, iniFilePath);
190 BRDC_strcpy(ini_file.sectionName, iniSectionName);
191 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_READINIFILE, &ini_file);
198 BRD_SyncMode sync_mode;
199 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETSYNCMODE, &sync_mode);
200 if(BRDC_strstr(srvName, _BRDC(
"ADC1624X192")) ||
201 BRDC_strstr(srvName, _BRDC(
"ADC1624X128")) ||
202 BRDC_strstr(srvName, _BRDC(
"ADC818X800")))
204 if(BRD_errcmp(status, BRDerr_OK))
205 BRDC_printf(_BRDC(
"BRDctrl_ADC_GETSYNCMODE: source = %d, value = %.2f MHz, rate = %.3f kHz\n"),
206 sync_mode.clkSrc, sync_mode.clkValue/1000000, sync_mode.rate/1000);
208 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_ADC_GETSYNCMODE"));
212 if(BRD_errcmp(status, BRDerr_OK))
213 BRDC_printf(_BRDC(
"BRDctrl_ADC_GETSYNCMODE: source = %d, value = %.4f MHz, rate = %.4f MHz\n"),
214 sync_mode.clkSrc, sync_mode.clkValue/1000000, sync_mode.rate/1000000);
216 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_ADC_GETSYNCMODE"));
222 U08 start_struct[40];
223 memset(start_struct, 0x5A, 40);
224 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETSTARTMODE, &start_struct);
225 if(BRD_errcmp(status, BRDerr_OK))
227 if(start_struct[39] == 0x5A)
230 BRD_StartMode* start = (BRD_StartMode*)start_struct;
231 BRDC_printf(_BRDC(
"BRDctrl_ADC_GETSTARTMODE: start source = %d\n"), start->startSrc);
260 BRD_AdcStartMode* start = (BRD_AdcStartMode*)start_struct;
263 BRDC_printf(_BRDC(
"BRDctrl_ADC_GETSTARTMODE: start source = %d\n"), start->src);
267 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_ADC_GETSTARTMODE"));
274 cmp_sc.src = BRDcmps_CHAN0CLK;
275 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 276 IPC_getPrivateProfileString(iniSectionName, _BRDC(
"ComparatorThresholdCHAN0"), _BRDC(
""), buf0,
sizeof(buf0), iniFilePath);
277 IPC_getPrivateProfileString(iniSectionName, _BRDC(
"ComparatorThresholdSDX"), _BRDC(
""), buf1,
sizeof(buf1), iniFilePath);
279 GetPrivateProfileString(iniSectionName, _BRDC(
"ComparatorThresholdCHAN0"), _BRDC(
""), buf0,
sizeof(buf0), iniFilePath);
280 GetPrivateProfileString(iniSectionName, _BRDC(
"ComparatorThresholdSDX"), _BRDC(
""), buf1,
sizeof(buf1), iniFilePath);
282 if(BRDC_strlen(buf0) || BRDC_strlen(buf1))
284 if(BRDC_strlen(buf0))
285 cmp_sc.thr[0] = BRDC_atof(buf0);
288 if(BRDC_strlen(buf1))
289 cmp_sc.thr[1] = BRDC_atof(buf1);
293 status = BRD_ctrl(hADC, 0, BRDctrl_CMPSC_SET, &cmp_sc);
294 if(BRD_errcmp(status, BRDerr_OK))
295 BRDC_printf(_BRDC(
"BRDctrl_CMPSC_SET: comparator source = %d, thresholdCHAN0 = %.2f, thresholdSDX = %.2f\n"),
296 cmp_sc.src, cmp_sc.thr[0], cmp_sc.thr[1]);
298 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_CMPSC_SET"));
304 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETCHANMASK, &chan_mask);
306 if(BRD_errcmp(status, BRDerr_OK))
307 BRDC_printf(_BRDC(
"BRDctrl_ADC_GETCHANMASK: chan_mask = %0X\n"), chan_mask);
309 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_ADC_GETCHANMASK"));
314 numChan += (chan_mask >> i) & 0x1;
318 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETFORMAT, &format);
319 if(BRD_errcmp(status, BRDerr_OK))
320 BRDC_printf(_BRDC(
"BRDctrl_ADC_GETFORMAT: format = %0X\n"), format);
322 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_ADC_GETFORMAT"));
324 BRD_ValChan value_chan;
325 for(i = 0; i < adc_cfg.NumChans; i++)
329 BRDC_printf(_BRDC(
"Channel %d:\n"), value_chan.chan);
331 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETINPRANGE, &value_chan);
332 if(BRD_errcmp(status, BRDerr_OK))
334 BRDC_printf(_BRDC(
"Range = %f\n"), value_chan.value);
336 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_ADC_GETINPRANGE"));
338 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETBIAS, &value_chan);
339 if(BRD_errcmp(status, BRDerr_OK))
341 BRDC_printf(_BRDC(
"Bias = %f\n"), value_chan.value);
343 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_ADC_GETBIAS"));
345 if(BRDC_strstr(srvName, _BRDC(
"ADC212X200M"))
346 || BRDC_strstr(srvName, _BRDC(
"ADC214X200M"))
347 || BRDC_strstr(srvName, _BRDC(
"ADC214X400M"))
348 || BRDC_strstr(srvName, _BRDC(
"ADC10X2G"))
349 || BRDC_strstr(srvName, _BRDC(
"ADC216X100M"))
350 || BRDC_strstr(srvName, _BRDC(
"FM814X125M")))
352 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETINPRESIST, &value_chan);
353 if(BRD_errcmp(status, BRDerr_OK))
356 BRDC_printf(_BRDC(
"Input resist is 50 Om\n"));
359 if(BRDC_strstr(srvName, _BRDC(
"ADC216X100M")))
360 BRDC_printf(_BRDC(
"Input resist is 1 kOm\n"));
362 BRDC_printf(_BRDC(
"Input resist is 1 MOm\n"));
366 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_ADC_GETINPRESIST"));
368 if(BRDC_strstr(srvName, _BRDC(
"ADC28X1G"))
369 || BRDC_strstr(srvName, _BRDC(
"ADC212X200M"))
370 || BRDC_strstr(srvName, _BRDC(
"ADC214X200M"))
371 || BRDC_strstr(srvName, _BRDC(
"ADC214X400M"))
372 || BRDC_strstr(srvName, _BRDC(
"ADC10X2G"))
373 || BRDC_strstr(srvName, _BRDC(
"ADC216X100M"))
374 || BRDC_strstr(srvName, _BRDC(
"FM814X125M")))
376 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETDCCOUPLING, &value_chan);
377 if(BRD_errcmp(status, BRDerr_OK))
380 BRDC_printf(_BRDC(
"Input is OPENED\n"));
382 BRDC_printf(_BRDC(
"Input is CLOSED\n"));
385 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_ADC_GETDCCOUPLING"));
390 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 391 IPC_getPrivateProfileString(iniSectionName, _BRDC(
"IsPreTriggerMode"), _BRDC(
"0"), Buffer,
sizeof(Buffer), iniFilePath);
393 GetPrivateProfileString(iniSectionName, _BRDC(
"IsPreTriggerMode"), _BRDC(
"0"), Buffer,
sizeof(Buffer), iniFilePath);
396 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 397 IPC_getPrivateProfileString(iniSectionName, _BRDC(
"MemPostSamples"), _BRDC(
"16384"), Buffer,
sizeof(Buffer), iniFilePath);
399 GetPrivateProfileString(iniSectionName, _BRDC(
"MemPostSamples"), _BRDC(
"16384"), Buffer,
sizeof(Buffer), iniFilePath);
403 BRD_PretrigMode premode;
404 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETPRETRIGMODE, &premode);
405 if(!BRD_errcmp(status, BRDerr_OK))
408 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_ADC_GETPRETRIGMODE"));
412 BRDC_printf(_BRDC(
"Pre-trigger is enabled. "));
414 BRDC_printf(_BRDC(
"Pre-trigger is assurance. "));
421 BRDC_printf(_BRDC(
"Pre-trigger data size = %d \n"), premode.size);
445 if(!BRDC_stricmp(srvName, _BRDC(
"ADC214X200M")))
447 BRDC_printf(_BRDC(
"Sleeping 600 ms.\n"));
448 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 458 BRDC_printf(_BRDC(
"ADC DRQ flag = %0X\n"),
g_AdcDrqFlag);
459 BRDC_printf(_BRDC(
"SDRAM DRQ flag = %0X\n"),
g_MemDrqFlag);
466 spec.command = ADCcmd_ADJUST;
468 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_SETSPECIFIC, &spec);
469 BRDC_printf(_BRDC(
"IoDelay reset!\n"));
475 for(
int i = 0; i < num; i++)
477 BRD_ctrl(hADC, 0, BRDctrl_ADC_SETSPECIFIC, &spec);
479 BRDC_printf(_BRDC(
"IoDelay = %d\n"),
g_IoDelay);
491 BRDCHAR namePostfixMap[64] = _BRDC(
"data_postfix");
492 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 497 NULL, PAGE_READWRITE,
502 ULONG sample_size = format ? format :
sizeof(short);
511 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_PREPARESTART, NULL );
521 sprintf(
g_pPostfix,
"\r\nDEVICE_NAME_________ " );
531 BRD_ctrl(hADC, 0, BRDctrl_ADC_GETCFG, &adc_cfg);
534 BRD_ctrl(hADC, 0, BRDctrl_ADC_GETCHANMASK, &chanMask);
536 BRD_ctrl(hADC, 0, BRDctrl_ADC_GETFORMAT, &format);
538 ULONG is_complex = 0;
545 BRD_ValChan val_chan;
546 for(ULONG iChan = 0; iChan < adc_cfg.NumChans; iChan++)
549 chans[num_chan++] = iChan;
550 val_chan.chan = iChan;
551 BRD_ctrl(hADC, 0, BRDctrl_ADC_GETGAIN, &val_chan);
552 if(adc_cfg.ChanType == 1)
553 val_chan.value = pow(10., val_chan.value/20);
554 gains[iChan] = val_chan.value;
555 volt_offset[iChan] = 0.0;
558 sprintf(str_buf,
"\r\nNUMBER_OF_CHANNELS__ %d", num_chan);
561 sprintf(str_buf,
"\r\nNUMBERS_OF_CHANNELS_ ");
564 for(
int iChan = 0; iChan < num_chan; iChan++)
567 sprintf(buf,
"%d,", chans[iChan]);
568 lstrcatA(str_buf, buf);
572 ULONG sample_size = format ? format :
sizeof(short);
573 ULONG samples = ULONG(nNumberOfBytes / sample_size / num_chan);
576 sprintf(str_buf,
"\r\nNUMBER_OF_SAMPLES___ %d", samples );
579 sprintf(str_buf,
"\r\nSAMPLING_RATE_______ %f",
g_samplRate );
582 sprintf(str_buf,
"\r\nBYTES_PER_SAMPLES___ %d", sample_size);
585 lstrcatA(
g_pPostfix,
"\r\nSAMPLES_PER_BYTES___ 1");
588 sprintf(str_buf,
"\r\nIS_COMPLEX_SIGNAL?__ YES");
590 sprintf(str_buf,
"\r\nIS_COMPLEX_SIGNAL?__ NO");
594 sprintf(str_buf,
"\r\nSHIFT_FREQUENCY_____ ");
597 int num_fc = num_chan;
598 for(
int iChan = 0; iChan < num_fc; iChan++)
604 lstrcatA(str_buf,
"0.0,");
608 sprintf(str_buf,
"\r\nGAINS_______________ ");
611 for(
int iChan = 0; iChan < num_chan; iChan++)
614 sprintf(buf,
"%f,", gains[chans[iChan]]);
615 lstrcatA(str_buf, buf);
619 sprintf(str_buf,
"\r\nVOLTAGE_OFFSETS_____ ");
622 for(
int iChan = 0; iChan < num_chan; iChan++)
625 sprintf(buf,
"%f,", volt_offset[iChan]);
626 lstrcatA(str_buf, buf);
630 sprintf(str_buf,
"\r\nVOLTAGE_RANGE_______ %f", adc_cfg.InpRange / 1000.);
636 int BitsPerSample = (format == 1) ? 8 : adc_cfg.Bits;
638 if(format == 0 || format == 2)
640 sprintf(str_buf,
"\r\nBIT_RANGE___________ %d", BitsPerSample);
648 S32
DaqIntoFifo(BRD_Handle hADC, PVOID pSig, ULONG bBufSize,
int DspMode)
654 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_FIFORESET, NULL);
659 status = BRD_ctrl(hADC, 0, BRDctrl_SDRAM_FIFORESET, NULL);
660 status = BRD_ctrl(hADC, 0, BRDctrl_SDRAM_ENABLE, &Enable);
662 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_ENABLE, &Enable);
670 status = BRD_ctrl(hADC, 0, BRDctrl_SDRAM_FIFOSTATUS, &Status);
672 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_FIFOSTATUS, &Status);
673 }
while(Status & 0x40);
676 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_ENABLE, &Enable);
679 status = BRD_ctrl(hADC, 0, BRDctrl_SDRAM_ENABLE, &Enable);
681 BRD_DataBuf data_buf;
682 data_buf.pData = pSig;
683 data_buf.size = bBufSize;
688 status = BRD_ctrl(hADC, 0, BRDctrl_SDRAM_GETDATA, &data_buf);
690 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETDATA, &data_buf);
713 status = BRD_ctrl(hADC, 0, BRDctrl_SDRAM_GETSRCSTREAM, &tetrad);
715 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_GETSRCSTREAM, &tetrad);
716 status = BRD_ctrl(hADC, 0, BRDctrl_STREAM_SETSRC, &tetrad);
725 status = BRD_ctrl(hADC, 0, BRDctrl_STREAM_SETDRQ, &flag);
726 if(!BRD_errcmp(status, BRDerr_OK))
727 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_STREAM_SETDRQ"));
729 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_FIFORESET, NULL);
734 status = BRD_ctrl(hADC, 0, BRDctrl_SDRAM_FIFORESET, NULL);
735 status = BRD_ctrl(hADC, 0, BRDctrl_SDRAM_ENABLE, &Enable);
737 status = BRD_ctrl(hADC, 0, BRDctrl_STREAM_RESETFIFO, NULL);
739 BRDctrl_StreamCBufStart start_pars;
740 start_pars.isCycle = 0;
741 status = BRD_ctrl(hADC, 0, BRDctrl_STREAM_CBUF_START, &start_pars);
745 LARGE_INTEGER Frequency, StartPerformCount, StopPerformCount;
746 int bHighRes = QueryPerformanceFrequency (&Frequency);
747 QueryPerformanceCounter (&StartPerformCount);
749 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_ENABLE, &Enable);
751 ULONG msTimeout = 20000;
752 status = BRD_ctrl(hADC, 0, BRDctrl_STREAM_CBUF_WAITBUF, &msTimeout);
754 QueryPerformanceCounter (&StopPerformCount);
756 if(BRD_errcmp(status, BRDerr_WAIT_TIMEOUT))
758 status = BRD_ctrl(hADC, 0, BRDctrl_STREAM_CBUF_STOP, NULL);
783 status = BRD_ctrl(hADC, 0, BRDctrl_ADC_ENABLE, &Enable);
786 status = BRD_ctrl(hADC, 0, BRDctrl_SDRAM_ENABLE, &Enable);
789 double msTime = (double)(StopPerformCount.QuadPart - StartPerformCount.QuadPart) / (double)Frequency.QuadPart * 1.E3;
791 printf(
"DAQ & Transfer by bus rate is %.2f Mbytes/sec\r", ((
double)
g_bBufSize / msTime)/1000.);
806 S32
AllocDaqBuf(BRD_Handle hADC, PVOID* &pSig,
unsigned long long* pbytesBufSize, ULONG bufType, ULONG* pBlkNum)
810 unsigned long long bBufSize = *pbytesBufSize;
815 if(bBufSize > 1073741824)
821 }
while(bBufSize > 1073741824);
823 bBlkSize = (ULONG)bBufSize;
824 void** pBuffer = NULL;
828 pBuffer =
new PVOID[blkNum];
829 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 834 for(ULONG i = 0; i < blkNum; i++)
838 BRDCHAR nameBufMap[64];
839 BRDC_sprintf(nameBufMap, _BRDC(
"data_blk%d"), i);
840 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 841 g_hBufFileMap[i] = IPC_createSharedMemory(nameBufMap, bBlkSize);
845 NULL, PAGE_READWRITE,
848 pBuffer[i] = MapViewOfFile(
g_hBufFileMap[i], FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
855 pBuffer[i] = VirtualAlloc(NULL, bBlkSize, MEM_COMMIT, PAGE_READWRITE);
858 BRDC_printf(_BRDC(
"VirtualAlloc() by allocating buffer %d is error!!!\n"), i);
866 BRDCHAR nameFlagMap[64] = _BRDC(
"data_flg");
868 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 869 g_hFlgFileMap = IPC_createSharedMemory(nameFlagMap, 3*
sizeof(ULONG));
873 NULL, PAGE_READWRITE,
887 for(ULONG i = 0; i < blkNum; i++)
891 status = BRD_ctrl(hADC, 0, BRDctrl_STREAM_CBUF_ALLOC, &
g_buf_dscr);
892 if(!BRD_errcmp(status, BRDerr_OK) && !BRD_errcmp(status, BRDerr_PARAMETER_CHANGED))
893 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_STREAM_CBUF_ALLOC"));
894 if(BRD_errcmp(status, BRDerr_PARAMETER_CHANGED))
896 BRDC_printf(_BRDC(
"Warning!!! BRDctrl_STREAM_CBUF_ALLOC: BRDerr_PARAMETER_CHANGED\n"));
900 pSig =
new PVOID[blkNum];
901 for(ULONG i = 0; i < blkNum; i++)
905 *pbytesBufSize = (
unsigned long long)
g_buf_dscr.blkSize * blkNum;
907 BRDC_printf(_BRDC(
"Allocated memory for Stream:: Number of blocks = %d, Block size = %d kBytes\n"),
916 status = BRD_ctrl(hADC, 0, BRDctrl_STREAM_CBUF_FREE, NULL);
917 if(!BRD_errcmp(status, BRDerr_OK))
918 DisplayError(status, __FUNCTION__, _BRDC(
"BRDctrl_STREAM_CBUF_FREE"));
921 for(ULONG i = 0; i < blkNum; i++)
925 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 935 VirtualFree(
g_buf_dscr.ppBlk[i], 0, MEM_RELEASE);
940 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 1023 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 1025 int SimpleProcWrDir(BRD_Handle hSrv, IPC_handle hfile,
int idx, BRDctrl_StreamCBufAlloc* buf_dscr);
1026 int MultiBlkProcWrDir(BRD_Handle hSrv, IPC_handle hfile,
int idx, BRDctrl_StreamCBufAlloc* buf_dscr);
1029 int SimpleProcWrDir(BRD_Handle hSrv, HANDLE hfile,
int idx, BRDctrl_StreamCBufAlloc* buf_dscr);
1030 int MultiBlkProcWrDir(BRD_Handle hSrv, HANDLE hfile,
int idx, BRDctrl_StreamCBufAlloc* buf_dscr);
1033 void DspFunc(
void* buf, ULONG size);
1042 void DirectFile(ULONG bufType, ULONG FileBufSize, ULONG FileBufNum, ULONG FileBlkNum)
1047 SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
1048 DWORD prior_class = GetPriorityClass(GetCurrentProcess());
1049 BRDC_printf(_BRDC(
"Process Priority = %d\n"), prior_class);
1060 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 1061 IPC_handle hThread = IPC_createThread( _BRDC(
"DirWriteIntoFile"), &
DirWriteIntoFile, &thread_par );
1062 IPC_waitThread(hThread, INFINITE );
1063 IPC_deleteThread(hThread);
1066 HANDLE hThread = (HANDLE)_beginthreadex( NULL, 0, &
DirWriteIntoFile, &(thread_par), 0, &(threadID) );
1067 WaitForSingleObject(hThread, INFINITE );
1068 CloseHandle(hThread);
1075 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 1081 S32 status = BRDerr_OK;
1084 SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST);
1085 int prior = GetThreadPriority(GetCurrentThread());
1086 BRDC_printf(_BRDC(
"Thread Priority = %d\n"), prior);
1089 BRD_Handle hSrv = pThreadParam->
handle;
1090 int idx = pThreadParam->
idx;
1092 BRDCHAR fileName[MAX_PATH];
1094 BRDC_sprintf(fileName, _BRDC(
"%s_%d.bin"),
g_dirFileName, idx);
1098 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 1099 IPC_handle hfile = IPC_openFileEx(fileName,
1100 IPC_CREATE_FILE | IPC_FILE_WRONLY,
1104 BRDC_printf(_BRDC(
"Create file error\n"));
1105 return (thread_value)status;
1108 HANDLE hfile = CreateFile( fileName,
1115 FILE_FLAG_NO_BUFFERING,
1117 if(hfile == INVALID_HANDLE_VALUE)
1119 BRDC_printf(_BRDC(
"Create file error\n"));
1124 BRDctrl_StreamCBufAlloc buf_dscr;
1125 buf_dscr.dir = BRDstrm_DIR_IN;
1129 buf_dscr.ppBlk =
new PVOID[buf_dscr.blkNum];
1130 status = BRD_ctrl(hSrv, 0, BRDctrl_STREAM_CBUF_ALLOC, &buf_dscr);
1131 if(!BRD_errcmp(status, BRDerr_OK) && !BRD_errcmp(status, BRDerr_PARAMETER_CHANGED))
1133 BRDC_printf(_BRDC(
"ERROR!!! BRDctrl_STREAM_CBUF_ALLOC\n"));
1134 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 1135 return (thread_value)status;
1140 if(BRD_errcmp(status, BRDerr_PARAMETER_CHANGED))
1142 BRDC_printf(_BRDC(
"Warning!!! BRDctrl_STREAM_CBUF_ALLOC: BRDerr_PARAMETER_CHANGED\n"));
1145 BRDC_printf(_BRDC(
"Block size = %d Mbytes, Block num = %d, Total blocks = %d\n"), buf_dscr.blkSize / 1024 / 1024, buf_dscr.blkNum,
g_fileBufNum);
1150 status = BRD_ctrl(hSrv, 0, BRDctrl_SDRAM_GETSRCSTREAM, &tetrad);
1152 status = BRD_ctrl(hSrv, 0, BRDctrl_ADC_GETSRCSTREAM, &tetrad);
1153 status = BRD_ctrl(hSrv, 0, BRDctrl_STREAM_SETSRC, &tetrad);
1162 status = BRD_ctrl(hSrv, 0, BRDctrl_STREAM_SETDRQ, &flag);
1165 status = BRD_ctrl(hSrv, 0, BRDctrl_ADC_FIFORESET, NULL);
1166 status = BRD_ctrl(hSrv, 0, BRDctrl_STREAM_RESETFIFO, NULL);
1169 status = BRD_ctrl(hSrv, 0, BRDctrl_SDRAM_FIFORESET, NULL);
1170 status = BRD_ctrl(hSrv, 0, BRDctrl_SDRAM_ENABLE, &Enable);
1173 BRDctrl_StreamCBufStart start_pars;
1174 start_pars.isCycle = 1;
1175 status = BRD_ctrl(hSrv, 0, BRDctrl_STREAM_CBUF_START, &start_pars);
1176 status = BRD_ctrl(hSrv, 0, BRDctrl_ADC_ENABLE, &Enable);
1179 BRDC_printf(_BRDC(
"Data writing into file %s...\n"), fileName);
1186 status = BRD_ctrl(hSrv, 0, BRDctrl_ADC_ENABLE, &Enable);
1188 status = BRD_ctrl(hSrv, 0, BRDctrl_SDRAM_ENABLE, &Enable);
1191 BRDC_printf(_BRDC(
"ERROR (%s): buffers skiped %d\n"), fileName, errCnt);
1192 BRDC_printf(_BRDC(
"Total Buffer Counter (%s) = %d\n"), fileName, buf_dscr.pStub->totalCounter);
1193 status = BRD_ctrl(hSrv, 0, BRDctrl_ADC_FIFOSTATUS, &Status);
1195 BRDC_printf(_BRDC(
"ERROR (%s): ADC FIFO is overflow\n"), fileName);
1198 status = BRD_ctrl(hSrv, 0, BRDctrl_SDRAM_FIFOSTATUS, &Status);
1200 BRDC_printf(_BRDC(
"ERROR (%s): SDRAM FIFO is overflow\n"), fileName);
1202 status = BRD_ctrl(hSrv, 0, BRDctrl_STREAM_CBUF_FREE, &buf_dscr);
1203 delete[] buf_dscr.ppBlk;
1205 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 1206 IPC_closeFile(hfile);
1207 return (thread_value)status;
1215 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 1216 int SimpleProcWrDir(BRD_Handle hSrv, IPC_handle hfile,
int idx, BRDctrl_StreamCBufAlloc* buf_dscr)
1218 int SimpleProcWrDir(BRD_Handle hSrv, HANDLE hfile,
int idx, BRDctrl_StreamCBufAlloc* buf_dscr)
1221 S32 status = BRDerr_OK;
1226 ULONG msTimeout = 40000;
1227 ULONG nNumberOfWriteBytes;
1230 status = BRD_ctrl(hSrv, 0, BRDctrl_STREAM_CBUF_WAITBLOCK, &msTimeout);
1231 if(BRD_errcmp(status, BRDerr_WAIT_TIMEOUT))
1233 status = BRD_ctrl(hSrv, 0, BRDctrl_ADC_FIFOSTATUS, &Status);
1234 BRDC_printf(_BRDC(
"ADC FIFO Status = 0x%04X\n"), Status);
1235 status = BRD_ctrl(hSrv, 0, BRDctrl_STREAM_CBUF_STOP, NULL);
1239 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 1240 if(!idx && IPC_kbhit())
1242 int ch = IPC_getch();
1249 IPC_writeFile(hfile, buf_dscr->ppBlk[curbuf], buf_dscr->blkSize);
1251 if(!idx && GetAsyncKeyState(VK_ESCAPE))
1259 WriteFile(hfile, buf_dscr->ppBlk[curbuf], buf_dscr->blkSize, &nNumberOfWriteBytes, NULL);
1268 if(cnt+1 != (
int)buf_dscr->pStub->totalCounter)
1271 cnt = buf_dscr->pStub->totalCounter;
1273 BRDC_printf(_BRDC(
"Current buffer = %d\r"), cnt);
1279 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 1280 int MultiBlkProcWrDir(BRD_Handle hSrv, IPC_handle hfile,
int idx, BRDctrl_StreamCBufAlloc* buf_dscr)
1285 S32 status = BRDerr_OK;
1287 ULONG total_cnt = 0;
1292 ULONG write_cnt = 0;
1293 ULONG first_err = 0;
1295 int waitblk_cnt = 0;
1296 ULONG msTimeout = 40000;
1297 ULONG nNumberOfWriteBytes;
1300 total_cnt = buf_dscr->pStub->totalCounter;
1301 delta_cnt = total_cnt - write_cnt;
1303 if(delta_cnt > (S32)buf_dscr->blkNum)
1306 first_err = write_cnt;
1310 if(delta_cnt <= 0 || !(delta_cnt % buf_dscr->blkNum))
1314 status = BRD_ctrl(hSrv, 0, BRDctrl_STREAM_CBUF_WAITBLOCK, &msTimeout);
1315 if(BRD_errcmp(status, BRDerr_WAIT_TIMEOUT))
1317 status = BRD_ctrl(hSrv, 0, BRDctrl_ADC_FIFOSTATUS, &Status);
1318 BRDC_printf(_BRDC(
"ADC FIFO Status = 0x%04X\n"), Status);
1319 status = BRD_ctrl(hSrv, 0, BRDctrl_STREAM_CBUF_STOP, NULL);
1325 status = BRD_ctrl(hSrv, 0, BRDctrl_STREAM_CBUF_WAITBLOCK, &msTimeout);
1326 if(BRD_errcmp(status, BRDerr_WAIT_TIMEOUT))
1328 status = BRD_ctrl(hSrv, 0, BRDctrl_ADC_FIFOSTATUS, &Status);
1329 BRDC_printf(_BRDC(
"ADC FIFO Status = 0x%04X\n"), Status);
1330 status = BRD_ctrl(hSrv, 0, BRDctrl_STREAM_CBUF_STOP, NULL);
1341 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 1342 if(!idx && IPC_kbhit())
1344 int ch = IPC_getch();
1352 if(!idx && GetAsyncKeyState(VK_ESCAPE))
1366 cur_buf = write_cnt % buf_dscr->blkNum;
1367 for(
int j = 0; j < delta_cnt; j++)
1376 status = BRD_ctrl(hSrv, 0, BRDctrl_ADC_FIFOSTATUS, &Status);
1378 BRDC_printf(_BRDC(
"ERROR: ADC FIFO is overflow (ADC FIFO Status = 0x%04X)\n"), Status);
1379 #if defined(__IPC_WIN__) || defined(__IPC_LINUX__) 1380 IPC_writeFile(hfile, buf_dscr->ppBlk[cur_buf], buf_dscr->blkSize);
1382 WriteFile(hfile, buf_dscr->ppBlk[cur_buf], buf_dscr->blkSize, &nNumberOfWriteBytes, NULL);
1385 if(cur_buf == buf_dscr->blkNum)
1391 BRDC_printf(_BRDC(
"Delta = %ld, written buffers = %d, errors = %d\r"), delta_cnt, write_cnt, err_cnt);
int CheckClock(BRD_Handle hADC, BRDCHAR *AdcSrvName)
int MultiBlkProcWrDir(BRD_Handle hSrv, HANDLE hfile, int idx, BRDctrl_StreamCBufAlloc *buf_dscr)
void DisplayError(S32 status, const char *func_name, const BRDCHAR *cmd_str)
S32 DaqIntoFifo(BRD_Handle hADC, PVOID pSig, ULONG bBufSize, int DspMode)
struct _THREAD_PARAM THREAD_PARAM
BRDctrl_StreamCBufAlloc g_buf_dscr
S32 AllocDaqBuf(BRD_Handle hADC, PVOID *&pSig, unsigned long long *pbytesBufSize, ULONG bufType, ULONG *pBlkNum)
int SimpleProcWrDir(BRD_Handle hSrv, HANDLE hfile, int idx, BRDctrl_StreamCBufAlloc *buf_dscr)
struct _THREAD_PARAM * PTHREAD_PARAM
void DirectFile(ULONG bufType, ULONG FileBufSize, ULONG FileBufNum, ULONG FileBlkNum)
S32 DaqIntoFifoDMA(BRD_Handle hADC)
S32 AdcSettings(BRD_Handle hADC, int idx, BRDCHAR *srvName, BRDCHAR *iniFileName)
S32 FreeDaqBuf(BRD_Handle hADC, ULONG blkNum)
unsigned __stdcall DirWriteIntoFile(void *pParams)
void MapWrFlagSinc(int flg, int isNewParam)
unsigned long long g_bBufSize
unsigned long long g_samplesOfChannel
void DspFunc(void *buf, ULONG size)
void MappingIsviParams(BRD_Handle hADC, unsigned long long nNumberOfBytes)
long long g_nPostTrigSamples