00001 #ifndef PIT_DRIVER_FOCHANNEL_H 00002 #define PIT_DRIVER_FOCHANNEL_H 00003 00004 #include "pit_def.h" 00005 #include "pit_comm.h" 00006 #include "pit_driver_opticalLink.h" 00007 00008 00009 using namespace std; 00010 00011 #define FASTOR_COUNTER_OFFSET 0x88 00012 00013 00014 #define FASTOR_COUNTER_OFFSET 0x88 00015 00016 #define UDF_FO_OFFSET 10 00017 #define FO_SELF_MASK_OFFSET 20 00018 #define FO_MASK_OFFSET 0 00019 #define MIN_FASTOR_INNER_OFFSET 0x60 00020 #define MAX_FASTOR_INNER_OFFSET 0x6A 00021 #define MIN_FASTOR_OUTER_OFFSET 0x74 00022 #define MAX_FASTOR_OUTER_OFFSET 0x7E 00023 00024 class pit_driver_opticalLink; 00025 00026 class pit_driver_foChannel 00027 { 00028 00030 00033 unsigned int foChannelNumber; 00034 00036 00039 pit_driver_opticalLink *parent_opticalLink; 00040 00042 00046 pit_comm *commFEE; 00047 00049 log4cpp::Category *logDriverFoChannel; 00050 00051 // Data members representing hardware settings 00052 00054 bool channelRequired; 00055 00057 bool masked; 00058 00060 bool forced; 00061 00063 bool validRate; 00064 00065 00066 public: 00068 00072 pit_driver_foChannel(unsigned int foChannelNumber, pit_comm *commFEE, pit_driver_opticalLink *parentOpticalLink); 00073 00075 ~pit_driver_foChannel(void); 00076 00078 void refresh(bool makeParentRead = true); 00079 00081 unsigned int getFoChannelNumber() const {return foChannelNumber;} 00083 unsigned int getLinkNumber() const;// {return mother_opticalLink->getLinkNumber();} 00085 unsigned int getBoardNumber() const; //{return this->mother_opticalLink->getBoardNumber();} 00086 00088 t_sideCoord getSide() const ; //{return mother_opticalLink->getSide();} 00089 00091 unsigned int getSector() const; // {return mother_opticalLink->getSector();} 00092 00094 unsigned int getHalfStave() const; // {return mother_opticalLink->getHalfStave();} 00095 00096 00098 inline bool isRequired(void) const { return channelRequired; } 00099 00100 00102 inline bool isMasked() const { return masked; } 00103 00105 void setMask(bool masked); 00106 00107 00108 00110 inline bool isForced(void) const { return forced; } // returns TRUE if channel is forced 00111 00113 void forceHigh(bool yesNo); 00114 00115 00116 00118 bool isRateValid(void)const; 00119 00121 UInt32 readCounter(void)const; 00122 00123 }; 00124 00125 #endif