diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2 (patch) | |
tree | d3bb9f5d25a2dc09ca81adecf39621d871534297 /kstars/kstars/indi/v4ldriver.h | |
download | tdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.tar.gz tdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeedu@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kstars/kstars/indi/v4ldriver.h')
-rw-r--r-- | kstars/kstars/indi/v4ldriver.h | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/kstars/kstars/indi/v4ldriver.h b/kstars/kstars/indi/v4ldriver.h new file mode 100644 index 00000000..9e7936e7 --- /dev/null +++ b/kstars/kstars/indi/v4ldriver.h @@ -0,0 +1,171 @@ +#if 0 + V4L INDI Driver + INDI Interface for V4L devices + Copyright (C) 2003-2005 Jasem Mutlaq (mutlaqja@ikarustech.com) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +#endif + +#ifndef V4L_DRIVER_H +#define V4L_DRIVER_H + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <math.h> +#include <unistd.h> +#include <time.h> +#include <fcntl.h> +#include <signal.h> +#include <errno.h> +#include <sys/stat.h> +#include <sys/time.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <netdb.h> +#include <zlib.h> +#include <asm/types.h> + +#include "indidevapi.h" +#include "indicom.h" +#include "fitsrw.h" +#include "eventloop.h" + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#ifdef HAVE_LINUX_VIDEODEV2_H +#include "webcam/v4l2_base.h" +#else +#include "webcam/v4l1_base.h" +#endif + +#define COMM_GROUP "Main Control" +#define IMAGE_CONTROL "Image Control" +#define IMAGE_GROUP "Image Settings" + +#define MAX_PIXELS 4096 /* Max number of pixels in one dimension */ +#define ERRMSGSIZ 1024 + + +class V4L_Driver +{ + public: + V4L_Driver(); + virtual ~V4L_Driver(); + + /* INDI Functions that must be called from indidrivermain */ + virtual void ISGetProperties (const char *dev); + virtual void ISNewSwitch (const char *dev, const char *name, ISState *states, char *names[], int n); + virtual void ISNewText (const char *dev, const char *name, char *texts[], char *names[], int n); + virtual void ISNewNumber (const char *dev, const char *name, double values[], char *names[], int n); + + virtual void initCamBase(); + virtual void initProperties(const char *dev); + + static void newFrame(void *p); + void updateFrame(); + + protected: + + /* Structs */ + typedef struct { + int width; + int height; + int expose; + unsigned char *Y; + unsigned char *U; + unsigned char *V; + unsigned char *colorBuffer; + unsigned char *compressedFrame; + } img_t; + + + /* Switches */ + ISwitch PowerS[2]; + ISwitch StreamS[2]; + ISwitch CompressS[2]; + ISwitch ImageTypeS[2]; + + /* Texts */ + IText PortT[1]; + IText camNameT[1]; + + /* Numbers */ + INumber ExposeTimeN[1]; + INumber FrameRateN[1]; + INumber FrameN[4]; + #ifndef HAVE_LINUX_VIDEODEV2_H + INumber ImageAdjustN[5]; + #endif + + /* BLOBs */ + IBLOB imageB; + + /* Switch vectors */ + ISwitchVectorProperty PowerSP; /* Connection switch */ + ISwitchVectorProperty StreamSP; /* Stream switch */ + ISwitchVectorProperty CompressSP; /* Compress stream switch */ + ISwitchVectorProperty ImageTypeSP; /* Color or grey switch */ + + /* Number vectors */ + INumberVectorProperty ExposeTimeNP; /* Exposure */ + INumberVectorProperty FrameRateNP; /* Frame rate */ + INumberVectorProperty FrameNP; /* Stream dimenstion */ + INumberVectorProperty ImageAdjustNP; /* Image controls */ + + /* Text vectors */ + ITextVectorProperty PortTP; + ITextVectorProperty camNameTP; + + /* BLOB vectors */ + IBLOBVectorProperty imageBP; /* Data stream */ + + /* Initilization functions */ + virtual void connectCamera(void); + virtual void getBasicData(void); + + /* Stream/FITS functions */ + void updateStream(); + void uploadFile(const char * filename); + int writeFITS(const char *filename, char errmsg[]); + int grabImage(void); + FITS_HDU_LIST * create_fits_header (FITS_FILE *ofp, uint width, uint height, uint bpp); + + /* Helper functions */ + int checkPowerN(INumberVectorProperty *np); + int checkPowerS(ISwitchVectorProperty *sp); + int checkPowerT(ITextVectorProperty *tp); + + #ifndef HAVE_LINUX_VIDEODEV2_H + virtual void updateV4L1Controls(); + V4L1_Base *v4l_base; + #else + virtual void updateV4L2Controls(); + V4L2_Base *v4l_base; + #endif + + char device_name[MAXINDIDEVICE]; + int frameCount; /* For debugging */ + double divider; /* For limits */ + img_t * V4LFrame; /* Video frame */ + +}; + +#endif |