Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

utility.h

00001 #ifndef SCTAPI_UTILITY_H
00002 #define SCTAPI_UTILITY_H
00003 
00004 #include <iostream>
00005 #include <boost/shared_array.hpp>
00006 
00007 #include "SctApiFwd.h"
00008 
00009 #include "processor.h"
00010 
00011 namespace SctApi {
00012   namespace Utility {
00013     inline void getpcrc(UINT32 mid, unsigned int &partition, unsigned int &crate, unsigned int &rod, unsigned &channel) 
00014     {
00015       partition = (mid & 0xff000000) >> 24;
00016       crate = (mid & 0xff0000) >> 16;
00017       rod = (mid & 0xff00) >> 8;
00018       channel = (mid & 0xff) >> 0;
00019     }
00020 
00021     inline UINT32 packpcrc(unsigned int &partition, unsigned int &crate, unsigned int &rod, unsigned &channel)
00022     {
00023       UINT32 mid = 0;
00024       mid |= (partition & 0xff) << 24;
00025       mid |= (crate & 0xff) << 16;
00026       mid |= (rod & 0xff) << 8;
00027       mid |= (channel & 0xff) << 0;
00028       return mid;
00029     }
00030 
00031     inline void printHex(UINT32 num, int width) {
00032       std::cout << "0x";
00033       char saveFill = std::cout.fill('0');
00034       std::cout.width(width);
00035       std::cout.setf(std::ios::right);
00036       std::cout << std::hex << num << std::dec;
00037       std::cout.fill(saveFill);
00038     }
00039 
00040     void printMemoryBlock(std::ostream &os, unsigned long *mem, unsigned long words, int wordsPerLine, int level = 0);
00041 
00042     int translateBank(BankType bank);
00043 
00044     class MemoryBlock {
00045       unsigned int words;
00046       boost::shared_array<unsigned long> buffer;
00047 
00048     public:
00049       MemoryBlock() : words(0), buffer(0) {}
00050       MemoryBlock(unsigned int size, unsigned long *pointer) : words(size), buffer(pointer) {}
00051 
00052       operator bool() { return buffer; }
00053 
00054       unsigned int size() { return words; } 
00055 
00056       unsigned long operator[] (unsigned int i) {return buffer[i]; }
00057 
00058       unsigned long *address() {return buffer.get(); }
00059     };
00060   }
00061 }
00062 
00063 #endif

Generated on Thu Jul 8 11:41:22 2004 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5