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

TCamacModule.hh

解説を見る。
00001 // =====================================================================
00002 //  $Id: TCamacModule.hh,v 1.2 2003/07/30 16:19:10 goiwai Exp $
00003 //  $Name: CLDAQ-1-08-01 $
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

CLDAQ - a Class Library for Data AcQuisition (Version 1.8.1)
Go IWAI <goiwai@users.sourceforge.jp>