#ifndef COSY_Camera #define COSY_Camera #ifndef ROOT_TMutex #include #endif #ifndef ROOT_TCondition #include #endif #ifdef __CINT__ typedef unsigned long int pthread_t; struct timeval; #else #include #include #endif #include "PixGetter.h" #include "PixClient.h" class Camera : public PixGetter { private: // // Geometry // static const int cols = 768; static const int rows = 576; static const int depth = 3; // // Hardware Descriptors // int fd; int iBufferSize; int iOffsets[2]; char *pMapBuffer; // // Thread interface // unsigned long fNum; int fStop; // int fRunning; char fImg[cols*rows]; struct timeval fTime; PixClient &fClient; pthread_t fThread; TCondition fCond; TMutex *fMutex; //pthread_mutex_t fMux; //pthread_cond_t fCond; // // Hardware dependant functions // static void SigAlarm(int signal); int Ioctl(int req, void *opt, const char *str=NULL); void SigInit(); void Error(const char *str, int fatal=true); int StartGrab(unsigned int frame); char *GetImg(unsigned int frame); // // Execution thread which processes the pictures // void Thread(); static void *MapThread(void *arg); void LoopStep(const unsigned long n); public: Camera(PixClient &client, Int_t ch=0); virtual ~Camera(); // // Starts, stops the execution // void Loop(const unsigned long nof=0); void ExitLoop(); int IsRunning() const; // // Execution of one frame - this function may be overloaded! // //virtual void ProcessFrame(const unsigned long n, // byte *img, struct timeval *tm); // // hardware features // void SetPicPar(int bright, int hue, int contrast); void GetPicPar(int *bright, int *hue, int *contrast); ClassDef(Camera, 0) }; #endif