Generic hardware access library
|
00001 #include "VME64xDeviceTester.hh" 00002 00003 HAL::VME64xDeviceTester::VME64xDeviceTester( string configSpaceDefinitionFile, 00004 string moduleMapperFile, 00005 string addressTableContainerFile ) 00006 throw( HAL::IllegalValueException, 00007 HAL::NoSuchFileException, 00008 HAL::XMLProcessingException, 00009 HAL::HardwareAccessException ) 00010 : busAdapter_( configSpaceDefinitionFile, 00011 HAL::VME64xDummyBusAdapter::VERBOSE_OFF, 00012 HAL::VME64xDummyBusAdapter::MEMORY_MAP_ON ), 00013 moduleMapper_(moduleMapperFile), 00014 addressTableContainer_(moduleMapper_, 00015 addressTableContainerFile), 00016 crate_(busAdapter_, addressTableContainer_, moduleMapper_) 00017 { 00018 00019 } 00020 00021 bool HAL::VME64xDeviceTester::execute() { 00022 bool result = true; 00023 try { 00024 crate_.printAddressMap( std::cout ); 00025 uint32_t slotId = 10; 00026 std::cout << "try to get the device in slot " <<std::dec << slotId << std::endl; 00027 HAL::VME64xDevice* devicePtr = dynamic_cast<HAL::VME64xDevice*> (crate_.getVMEDevice( slotId )); 00028 if ( devicePtr == NULL ) { 00029 std::cout << "all went wrong "<< std::endl; 00030 // throw( HAL::HardwareAccessException( "could not cast to VME64xDevice! ", __FILE__, __LINE__, __FUNCTION__ )); 00031 exit(-1); 00032 } 00033 // dump the config space of slot 00034 HAL::VMEConfigurationSpaceHandler vmeConfigHandler( busAdapter_ ); 00035 00036 std::cout << "dumping CR" << std::endl; 00037 HAL::ConfigROMDumper crDumper; 00038 crDumper.dumpROM( vmeConfigHandler, slotId ); 00039 00040 std::cout << "dumping CSR" << std::endl; 00041 HAL::ConfigCSRDumper csrDumper; 00042 csrDumper.dumpCSR( vmeConfigHandler, slotId ); 00043 00044 // get the serial number 00045 std::string serialNo = devicePtr->getSerialNumber(); 00046 std::cout << "serialNo is " << serialNo << std::endl; 00047 00048 // read an std config item 00049 uint32_t res; 00050 std::string item = "romLength"; 00051 devicePtr->stdConfigRead(item , &res ); 00052 std::cout << "result for item " << item << " is : " << std::hex << res << std::endl; 00053 00054 item = "CRWidth"; 00055 devicePtr->stdConfigRead(item , &res ); 00056 std::cout << "result for item " << item << " is : " << std::hex << res << std::endl; 00057 00058 item = "CSRWidth"; 00059 devicePtr->stdConfigRead(item , &res ); 00060 std::cout << "result for item " << item << " is : " << std::hex << res << std::endl; 00061 00062 item = "CRAMWidth"; 00063 devicePtr->stdConfigRead(item , &res ); 00064 std::cout << "result for item " << item << " is : " << std::hex << res << std::endl; 00065 00066 item = "checksum"; 00067 devicePtr->stdConfigRead(item , &res ); 00068 std::cout << "result for item " << item << " is : " << std::hex << res << std::endl; 00069 00070 item = "romLength"; 00071 devicePtr->stdConfigRead(item , &res ); 00072 std::cout << "result for item " << item << " is : " << std::hex << res << std::endl; 00073 00074 item = "vme64x-csr-confItem1"; 00075 devicePtr->read(item , &res ); 00076 std::cout << "result for item " << item << " is : " << std::hex << res << std::endl; 00077 00078 } catch( HAL::HardwareAccessException& e) { 00079 std::cout << "unexpected exception: test failed:" << std::endl; 00080 std::cout << e.what(); 00081 result = false; 00082 } 00083 return result; 00084 } 00085 00086 string HAL::VME64xDeviceTester::getName() const { 00087 return "VME64xDeviceTester"; 00088 } 00089 00090 string HAL::VME64xDeviceTester::getDescription() const { 00091 return "Performs a test of the HAL::VME64xDevice"; 00092 }