Generic hardware access library
/home/cschwick/hal/generic/classtester/src/common/VME64xDeviceTester.cc
Go to the documentation of this file.
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 }