TCamacModule.hh Source File

メインページ モジュール クラス階層 アルファベット順一覧 構成 ファイル一覧 構成メンバ ファイルメンバ 関連ページ

# TCamacModule.hh

解説を見る。

    00001 // =====================================================================
    00002 //  $Id: TCamacModule.hh,v 1.2 2003/07/30 16:19:10 goiwai Exp $
    00003 //  $Name: CLDAQ-1-08-00 $
    00004 //
    00005 //  $Log: TCamacModule.hh,v $
    00006 //  Revision 1.2  2003/07/30 16:19:10  goiwai
    00007 //  ファイルにコミットログをつけることにしました.
    00008 //
    00009 // =====================================================================
    00010 #ifndef __TCAMACMODULE_HH
    00011 #define __TCAMACMODULE_HH
    00012
    00013 #include "Tglobals.h"
    00014 #include "TModule.hh"
    00015
    00016 // interface to use only yasu driver
    00017 typedef struct CamacDriverInterface
    00018 {
    00019   TUint _naf;
    00020   Tshort _q;
    00021   Tshort _x;
    00022   union DataPartOfCamacData
    00023   {
    00024     TUshort _d16;
    00025     TUint _d24;
    00026   } _data;
    00027 };
    00028
    00029 enum Tdata_t {
    00030   t16bitModule = 16,
    00031   t24bitModule = 24,
    00032   tNumberOfDataType
    00033 };
    00034
    00035 class TCamacCrateController;
    00036
    00037 class TCamacModule
    00038   : public TModule
    00039 {
    00040
    00041   protected:
    00042     enum {
    00043       tCamacRead = 0,
    00044       tCamacWrite = 16,
    00045       tCamacClear = 9,
    00046       tCamacTestInterrupt = 8,
    00047       tCamacClearInterrupt = 10,
    00048       tCamacEnableInterrupt = 26,
    00049       tCamacDisableInterrupt = 24
    00050     };
    00051
    00052   protected:
    00053     TCamacCrateController* theCrateController;
    00054     Tdata_t theDataLength;
    00055     Tint theSlotNumber;
    00056     Tint theQ;
    00057     Tint theX;
    00058     TUint theCamacData;
    00059
    00060   public:
    00061     TCamacModule( TCamacCrateController* cc7x00, Tint slot, Tint nch, Tdata_t datalen );
    00062     TCamacModule( const TCamacModule& right );
    00063
    00064   protected:
    00065     virtual ~TCamacModule();
    00066
    00067   public:
    00068     virtual const TCamacModule& operator=( const TCamacModule& right );
    00069     virtual Tbool operator==( const TCamacModule& right ) const;
    00070     virtual Tbool operator!=( const TCamacModule& right ) const;
    00071
    00072   public:
    00073     virtual Tint WaitInterrupt( Tint msec );
    00074     virtual Tint ReadInterrupt();
    00075     virtual Tint Clear();
    00076     virtual Tint Update();
    00077     virtual Tint Initialize();
    00078
    00079   public:
    00080     // generic CAMAC functions
    00081     virtual Tint TestInterrupt();
    00082     virtual Tint ClearInterrupt();
    00083     virtual Tint EnableInterrupt();
    00084     virtual Tint DisableInterrupt();
    00085     virtual Tint Read();
    00086     virtual Tint Read( Tint subaddress );
    00087     virtual Tint Write( Tint data );
    00088
    00089   public:
    00090     TCamacCrateController* GetCrateController() const;
    00091     Tdata_t GetDataLength() const;
    00092     Tint GetSlotNumber() const;
    00093     Tint GetQ() const;
    00094     Tint GetX() const;
    00095     TUint GetCamacData() const;
    00096     Tvoid SetDataLength( Tdata_t datalen );
    00097     Tvoid SetSlotNumber( Tint slot );
    00098     Tvoid SetQ( Tint q );
    00099     Tvoid SetX( Tint x );
    00100     Tvoid SetCamacData( TUint data );
    00101
    00102   protected:
    00103     Tint execute( Tint subaddress, Tint function );
    00104
    00105   private:
    00106     TUint generateNAF( Tint n, Tint a, Tint f );
    00107     Tint execute16bit( TUint naf );
    00108     Tint execute24bit( TUint naf );
    00109
    00110 };
    00111
    00112 inline TCamacCrateController* TCamacModule::GetCrateController() const
    00113 {
    00114   return( theCrateController );
    00115 }
    00116
    00117 inline Tdata_t TCamacModule::GetDataLength() const
    00118 {
    00119   return( theDataLength );
    00120 }
    00121
    00122 inline Tint TCamacModule::GetSlotNumber() const
    00123 {
    00124   return( theSlotNumber );
    00125 }
    00126
    00127 inline Tint TCamacModule::GetQ() const
    00128 {
    00129   return( theQ );
    00130 }
    00131
    00132 inline Tint TCamacModule::GetX() const
    00133 {
    00134   return( theX );
    00135 }
    00136
    00137 inline TUint TCamacModule::GetCamacData() const
    00138 {
    00139   return( theCamacData );
    00140 }
    00141
    00142 inline Tvoid TCamacModule::SetDataLength( Tdata_t datalen )
    00143 {
    00144   theDataLength = datalen;
    00145   return;
    00146 }
    00147
    00148 inline Tvoid TCamacModule::SetSlotNumber( Tint slot )
    00149 {
    00150   theSlotNumber = slot;
    00151   return;
    00152 }
    00153
    00154 inline Tvoid TCamacModule::SetQ( Tint q )
    00155 {
    00156   theQ = q;
    00157   return;
    00158 }
    00159
    00160 inline Tvoid TCamacModule::SetX( Tint x )
    00161 {
    00162   theX = x;
    00163   return;
    00164 }
    00165
    00166 inline Tvoid TCamacModule::SetCamacData( TUint data )
    00167 {
    00168   theCamacData = data;
    00169   return;
    00170 }
    00171
    00172 #endif