int DAQ_New (const SnortConfig* sc, const char* intf) { DAQ_Config_t cfg; if ( !daq_mod ) FatalError("DAQ_Init not called!\n"); if ( intf ) interface_spec = SnortStrdup(intf); intf = DAQ_GetInterfaceSpec(); memset(&cfg, 0, sizeof(cfg)); cfg.name = (char*)intf; cfg.snaplen = snap; cfg.timeout = PKT_TIMEOUT; cfg.mode = daq_mode; cfg.extra = NULL; cfg.flags = 0; DAQ_LoadVars(&cfg, sc); if ( !ScReadMode() ) { if ( !(sc->run_flags & RUN_FLAG__NO_PROMISCUOUS) ) cfg.flags |= DAQ_CFG_PROMISC; } DAQ_Config(&cfg); if ( !DAQ_ValidateInstance() ) FatalError("DAQ configuration incompatible with intended operation.\n"); if ( DAQ_UnprivilegedStart() ) daq_dlt = daq_get_datalink_type(daq_mod, daq_hand); if ( intf && *intf ) { LogMessage("Acquiring network traffic from \"%s\".\n", strcmp(intf, "-") == 0 ? "stdin" : intf); } DAQ_SetFilter(sc->bpf_filter); daq_config_clear_values(&cfg); return 0; }
int CLabInput::TriggerSetup() { short starttrig=0; _ASSERTE(!GetDevCaps()->IsESeries()); // E series not supported by this function if (_triggerType & TRIG_TRIGGER_IS_HARDWARE) { switch(_triggerType) { case HW_DIGITAL: starttrig=1; break; default: return E_E_SERIES_ONLY; } } return(DAQ_Config(_id, starttrig, (short)_clockSrc)); }
void main(void) { /* * Local Variable Declarations: */ i16 iStatus = 0; i16 iRetVal = 0; i16 iDevice = 1; i16 iChan = 1; i16 iStartTrig = 0; i16 iExtScan = 2; i16 iGain = 1; f64 dSampRate = 1000.0; u32 ulCount = 200; f64 dGainAdjust = 1.0; f64 dOffset = 0.0; i16 iUnits = 0; i16 iSampTB = 0; u16 uSampInt = 0; i16 iScanTB = 0; u16 uScanInt = 0; static i16 piBuffer[200] = {0}; static f64 pdVoltBuffer[200] = {0.0}; i16 iDAQstopped = 0; u32 ulRetrieved = 0; i16 iNumChans = 2; static i16 piChanVect[2] = {1, 2}; static i16 piGainVect[2] = {1, 1}; i16 iIgnoreWarning = 0; i16 iYieldON = 1; /* Setup for external scan timing with iExtScan = 2. */ iStatus = DAQ_Config(iDevice, iStartTrig, iExtScan); iRetVal = NIDAQErrorHandler(iStatus, "DAQ_Config", iIgnoreWarning); /* Convert sample rate (S/sec) to appropriate timebase and sample interval values. (NOT scan interval values) */ iStatus = DAQ_Rate(dSampRate, iUnits, &iSampTB, &uSampInt); iStatus = SCAN_Setup(iDevice, iNumChans, piChanVect, piGainVect); iRetVal = NIDAQErrorHandler(iStatus, "SCAN_Setup", iIgnoreWarning); /* Acquire data */ iStatus = SCAN_Start(iDevice, piBuffer, ulCount, iSampTB, uSampInt, iScanTB, uScanInt); iRetVal = NIDAQErrorHandler(iStatus, "SCAN_Start", iIgnoreWarning); printf(" Apply your external scan timing pulses to the 'external scan clock' pin.\n"); while ((iDAQstopped != 1) && (iStatus == 0)) { /* Loop until all acquisition is complete. HINT: You can be doing other foreground tasks during this time. */ iStatus = DAQ_Check(iDevice, &iDAQstopped, &ulRetrieved); iRetVal = NIDAQYield(iYieldON); } iRetVal = NIDAQErrorHandler(iStatus, "DAQ_Check", iIgnoreWarning); iStatus = SCAN_Demux(piBuffer, ulCount, iNumChans, 0); iRetVal = NIDAQErrorHandler(iStatus, "SCAN_Demux", iIgnoreWarning); iStatus = DAQ_VScale(iDevice, iChan, iGain, dGainAdjust, dOffset, ulCount, piBuffer, pdVoltBuffer); iRetVal = NIDAQErrorHandler(iStatus, "DAQ_VScale", iIgnoreWarning); /* CLEANUP - Don't check for errors on purpose. */ /* Set scan timing back to initial state. */ iStatus = DAQ_Config(iDevice, 0, 0); iStatus = DAQ_Clear(iDevice); printf(" The plot shows Channel 1 data then Channel 2 data.\n"); /* Plot acquired data */ iRetVal = NIDAQPlotWaveform(pdVoltBuffer, ulCount, WFM_DATA_F64); printf(" The data is available in 'pdVoltBuffer'.\n"); }