예제 #1
0
파일: sfdaq.c 프로젝트: GumpChan/blackcat
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;
}
예제 #2
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));
}
예제 #3
0
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");


}