// // DspCard.cpp // #include #include "DspCard.h" #include "LogFile.h" extern "C" { #include "messages.h" int get_flag (int, int); int set_flag (int, int, int); extern int verb_flag; } // =================================================== // constructors // =================================================== DspCard::DspCard (int dspNr) { _address_map = 0; _dspNr = dspNr; logFile << " Dsp Nr.: " << _dspNr << " is created now " << endl; } DspCard::~DspCard () { logFile << " Dsp Nr.: " << _dspNr << " is deleted " << endl; } // ======================================================== // dsp nummer // ======================================================== int DspCard::dspNr () { return _dspNr; } // ============================================= // set base address of dsp in VME crate // ============================================= int DspCard::address_base ( unsigned short *address) { _address_map = address; if ( _address_map == 0 ) return 0; else return 1; } // ============================================== // boot and initilize dsp // ============================================== int DspCard::init () { if ( _address_map <= 0 ) { logFile << " bad address for dsp " << endl; return 0; } logFile << " boot and initilize dsp " << endl; set_ioBase ( _address_map ); /* --------------------------------------- */ /* allocate memory for the message base */ /* --------------------------------------- */ if ( !memoryMessageBase (0x2000) ) { logFile << " no memory base " << endl; return 0; } /* ----------------------------- */ /* Init the DSP System Code */ /* ----------------------------- */ send_sys_ech (0, 0, "sys_main.asc"); // DspCard::verbFlagOff (); return 1; } // ----------------------------------- // dac's // ----------------------------------- int DspCard::set_ll_dac (int chan, double value) { if ( chan < 0 || chan > 3 ) return 0; if ( do_set_ll_dac ( chan, value) ) { _llDac[chan] = value; return 1; } else return 0; } int DspCard::set_sys_dac (int chan, double value) { if ( chan < 0 || chan > 3 ) return 0; if ( do_set_dac ( chan, value) ) { _sysDac[chan] = value; return 1; } else return 0; } double DspCard::get_sys_dac (int chan) { if ( chan >= 0 && chan < 4 ) return ( _sysDac[chan] ); else return ( -1.0 ); } double DspCard::get_ll_dac (int chan) { if ( chan >= 0 && chan < 4 ) return ( _llDac[chan] ); else return ( -1.0 ); } // ---------------------------------------------- // strobe delay // ----------------------------------------------- int DspCard::set_strobe_delay (int strobe_delay) { if ( strobe_delay < 0 || strobe_delay > 255 ) return 0; if ( do_set_strobe_delay (strobe_delay) ) { _strobeDelay = strobe_delay; return 1; } else return 0; } int DspCard::get_strobe_delay () { return _strobeDelay; } // ---------------------------------------------- // counter value // ----------------------------------------------- int DspCard::set_counterValue (int value) { if ( do_set_counter_val (value) ) { _counterValue = value; return 1; } else return 0; } int DspCard::get_counterValue () { return _counterValue; } // -------------------------------- // flags // -------------------------------- int DspCard::getFlag (int flagNr) { int flag; flag = get_flag (0, flagNr); logFile << " flag : " << flag << endl; return flag; } int DspCard::setFlag (int flagNr, int flagValue) { set_flag (0, flagNr, flagValue); return 1; } void DspCard::verbFlagOn () { DspCard::setFlag (6, 1); verb_flag = 1; } void DspCard::verbFlagOff () { DspCard::setFlag (6, 0); verb_flag = 0; } // -----------------------------------------------