1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
#ifndef SIMPLECCD_H
#define SIMPLECCD_H
/*
INDI Developers Manual
Tutorial #3
"Simple CCD Driver"
We develop a simple CCD driver.
Refer to README, which contains instruction on how to build this driver, and use it
with an INDI-compatible client.
*/
/** \file simpleccd.h
\brief Construct a basic INDI CCD device that simulates exposure & temperature settings. It also generates a random pattern and uploads it as a FITS file.
\author Jasem Mutlaq
\example simpleccd.h
A simple CCD device that can capture images and control temperature. It returns a FITS image to the client. To build drivers for complex CCDs, please
refer to the INDI Generic CCD driver template in INDI SVN (under 3rdparty).
*/
#include "indibase/indiccd.h"
class SimpleCCD : public INDI::CCD
{
public:
SimpleCCD();
void ISGetProperties(const char *dev);
protected:
// General device functions
bool Connect();
bool Disconnect();
const char *getDefaultName();
bool initProperties();
bool updateProperties();
// CCD specific functions
bool StartExposure(float duration);
bool AbortExposure();
int SetTemperature(double temperature);
void TimerHit();
private:
// Utility functions
float CalcTimeLeft();
void setupParams();
void grabImage();
// Are we exposing?
bool InExposure;
// Struct to keep timing
struct timeval ExpStart;
float ExposureRequest;
float TemperatureRequest;
int timerID;
// We declare the CCD temperature property
INumber TemperatureN[1];
INumberVectorProperty TemperatureNP;
};
#endif // SIMPLECCD_H
|