// // vxi_vme.cpp // #include #include "LogFile.h" extern "C" { #define VXINT #include "nivxi.h" } #include "Vxi_vme.h" // ============================================== // instance, constructor // ============================================== Vxi_vme* Vxi_vme::_instance = 0; // ------------------------------------- Vxi_vme* Vxi_vme::Instance () { if ( _instance == 0 ) { _instance = new Vxi_vme; } return _instance; } Vxi_vme::Vxi_vme () { _vmeWindow = 0; } // ================================================= // initilize VXI library // ================================================= int Vxi_vme::init ( ) { short stat; // ----------------------------------- // try to close if VXIlib was open // ----------------------------------- if ( _vmeWindow != 0 ) { UnMapVXIAddress (_vmeWindow); } stat = CloseVXIlibrary (); logFile << " close VXI_lib, status = " << stat << endl; if ( stat == 1 ) { return 3; } // --------------------------------- // open VXI lib // --------------------------------- stat = InitVXIlibrary (); logFile << " VXI lib open: " << stat << endl; if ( stat != 0 ) { logFile << " Fail to initilieze VXI library" << endl; return 0; } else { logFile << " Inilized VXI library " << endl; return 1; } } // ============================================================== // get address map // ============================================================== uint16* Vxi_vme::get_baseAddrMap (uint32 address) { int16 ret; int32 timo = 0L; uint16* baseAddr; baseAddr = (uint16 *) MapVXIAddress (2, address, timo, &_vmeWindow, &ret); if ( baseAddr <= 0 ) { logFile << " no address map for dsp " << endl; return 0; } else { logFile << " base Address: " << baseAddr << endl; return baseAddr; } } // ============================================================== // end // ============================================================== void Vxi_vme::end () { UnMapVXIAddress (_vmeWindow); CloseVXIlibrary (); }