Skip to content
Snippets Groups Projects
example.cpp 2.12 KiB
Newer Older
xiyehu2's avatar
xiyehu2 committed
#include <iostream>
#include <set>
#include "../lib/waveform.h"
#include "../lib/AWG.h"

int main() {
    auto sr = 614.4e6;

    auto wfm = ArrayWaveform();
    // idealy, waveform param setting here are loaded from
    // another waveform via some sort of config file
    wfm.setSamplingRate(sr);
    wfm.setFreqResolution(1e3);
    wfm.setFreqTone(
        105e6,
        1e6,
        5
    );
    wfm.setAmplitude(std::vector<double> (5, 2000));
    wfm.setPhase(std::vector<double> (5, 0));
    wfm.printParam();
    // generate waveform
    auto wfmData = wfm.getStaticWaveform();

    // auto awg = AWG();
    // awg.open(0); // open card at index 0
    // awg.setSampleRate(sr); // set card sampling rate
    // awg.setActiveChannels(std::set<int> {0}); // set output channels
    // awg.setChannel( // set channel output params
    //     0,
    //     2500,
    //     AWG::CHANNEL_STOPLVL::ZERO,
    //     true
    // );
    // awg.setTrigMode(
    //     0,
    //     AWG::TRIGGER_MODE::POS
    // ); // set trigger channel 0 (EXT0) mode to be positve edge
    // awg.setTrigMaskOr({
    //     AWG::TRIGGER_MASK::EXT0,
    //     // AWG::TRIGGER_MASK::EXT1
    // }); // set the trigger engine to be OR and enable both
    //     // channel EXT0 and/or EXT1
    // awg.initReplayModeSeq(2); // intializes card for sequence replay mode
    //                          // with two memory segments
    // awg.writeSeqModeSegment(
    //     0,
    //     wfmData.first,
    //     wfmData.second
    // );
    // awg.writeSeqModeSegment(
    //     1,
    //     wfmData.first,
    //     wfmData.second
    // ); // load wfms onto both memory segements for simplicity,
    //    // a memory segment needs only be initialized with data
    //    // if it is configured as part of the step sequence below
    // awg.setSeqModeStep(
    //     0,
    //     0,
    //     1,
    //     1,
    //     AWG::SEQ_LOOPCONDITION::ONTRIG
    // );
    // awg.setSeqModeStep(
    //     1,
    //     1,
    //     0,
    //     1,
    //     AWG::SEQ_LOOPCONDITION::ONTRIG
    // );
    // awg.cardRun();
    // awg.cardStop();
    // awg.close();
    
    return 0;
}