00001 // Trigger polling service for old TI from linux single board computer 00002 00003 // EJW, 12-Jul-2012 00004 00005 00006 00007 #ifndef _linuxTITrigPollingService_hxx 00008 #define _linuxTITrigPollingService_hxx 00009 00010 00011 #include <InterruptibleObject.hxx> 00012 #include <time.h> 00013 #include <pthread.h> 00014 00015 00016 // settable by switches on old TI module 00017 #define TI_BASE_ADDR 0x0ed0 00018 00019 00020 // TI commands 00021 #define VME_ACCESS_MODE 0x29 00022 #define TI_ENABLE_TRIG 0x7 00023 #define TI_DISABLE 0x0 00024 #define TI_PAUSE 0x5 00025 #define TI_RESET 0x80 00026 00027 00028 00029 00030 00031 00032 namespace codaObject { 00033 00034 00035 //----------------------------------------------------------------------------- 00036 //----------------------------------------------------------------------------- 00037 00038 00042 class linuxTITrigPollingService : public InterruptService { 00043 00044 public: 00045 explicit linuxTITrigPollingService(timespec *timeout); 00046 virtual bool setupInterrupt(void); 00047 virtual bool enableInterrupt(void); 00048 virtual bool pauseInterrupt(void); 00049 virtual bool resumeInterrupt(void); 00050 virtual bool deleteInterrupt(void); 00051 00052 virtual void* dispatchInterrupt(void*); 00053 00054 00055 private: 00056 pthread_t linuxTITrigPollingThreadId; 00057 timespec *linuxTITrigPollingTimeout; 00059 pthreadDispatcher<linuxTITrigPollingService,void*,void*> *linuxTITrigPollingPthreadDispatcher; 00060 }; 00061 00062 00063 //----------------------------------------------------------------------------- 00064 //----------------------------------------------------------------------------- 00065 00066 00067 } // namespace codaObject 00068 00069 #endif