Instrument Neutral Distributed Interface INDI  2.0.2
indiccd.h
Go to the documentation of this file.
1 /*******************************************************************************
2  Copyright(c) 2010-2018 Jasem Mutlaq. All rights reserved.
3 
4  Copyright(c) 2010, 2011 Gerry Rozema. All rights reserved.
5 
6  Rapid Guide support added by CloudMakers, s. r. o.
7  Copyright(c) 2013 CloudMakers, s. r. o. All rights reserved.
8 
9  Star detection algorithm is based on PHD Guiding by Craig Stark
10  Copyright (c) 2006-2010 Craig Stark. All rights reserved.
11 
12  This library is free software; you can redistribute it and/or
13  modify it under the terms of the GNU Library General Public
14  License version 2 as published by the Free Software Foundation.
15 
16  This library is distributed in the hope that it will be useful,
17  but WITHOUT ANY WARRANTY; without even the implied warranty of
18  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19  Library General Public License for more details.
20 
21  You should have received a copy of the GNU Library General Public License
22  along with this library; see the file COPYING.LIB. If not, write to
23  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
24  Boston, MA 02110-1301, USA.
25 *******************************************************************************/
26 
27 #pragma once
28 
29 #include "indiccdchip.h"
30 #include "defaultdevice.h"
31 #include "indiguiderinterface.h"
32 #include "indipropertynumber.h"
33 #include "indipropertyswitch.h"
34 #include "inditimer.h"
35 #include "indielapsedtimer.h"
36 #include "fitskeyword.h"
37 #include "dsp/manager.h"
38 #include "stream/streammanager.h"
39 
40 #ifdef HAVE_WEBSOCKET
41 #include "indiwsserver.h"
42 #endif
43 
44 #include <fitsio.h>
45 
46 #include <map>
47 #include <cstring>
48 #include <chrono>
49 #include <stdint.h>
50 #include <mutex>
51 #include <thread>
52 
53 extern const char * IMAGE_SETTINGS_TAB;
54 extern const char * IMAGE_INFO_TAB;
55 extern const char * GUIDE_HEAD_TAB;
56 //extern const char * RAPIDGUIDE_TAB;
57 
58 namespace DSP
59 {
60 class Manager;
61 }
62 namespace INDI
63 {
64 
65 class StreamManager;
66 class XISFWrapper;
67 
116 {
117  public:
118  CCD();
119  virtual ~CCD();
120 
121  enum
122  {
123  CCD_CAN_BIN = 1 << 0,
124  CCD_CAN_SUBFRAME = 1 << 1,
125  CCD_CAN_ABORT = 1 << 2,
127  CCD_HAS_ST4_PORT = 1 << 4,
128  CCD_HAS_SHUTTER = 1 << 5,
129  CCD_HAS_COOLER = 1 << 6,
130  CCD_HAS_BAYER = 1 << 7,
131  CCD_HAS_STREAMING = 1 << 8,
133  CCD_HAS_DSP = 1 << 10
135 
137 
138  typedef struct CaptureFormat
139  {
140  std::string name;
141  std::string label;
142  uint8_t bitsPerPixel {8};
143  bool isDefault {false};
144  bool isLittleEndian {true};
146 
147  virtual bool initProperties() override;
148  virtual bool updateProperties() override;
149  virtual void ISGetProperties(const char * dev) override;
150  virtual bool ISNewNumber(const char * dev, const char * name, double values[], char * names[], int n) override;
151  virtual bool ISNewSwitch(const char * dev, const char * name, ISState * states, char * names[], int n) override;
152  virtual bool ISNewText(const char * dev, const char * name, char * texts[], char * names[], int n) override;
153  virtual bool ISNewBLOB(const char *dev, const char *name, int sizes[], int blobsizes[], char *blobs[], char *formats[],
154  char *names[], int n) override;
155  virtual bool ISSnoopDevice(XMLEle * root) override;
156 
157  static void wsThreadHelper(void * context);
158 
162  static constexpr const char *GUIDE_CONTROL_TAB = "Guider Control";
163  static constexpr const char * WCS_TAB = "WCS";
164 
165 
166  protected:
170  uint32_t GetCCDCapability() const
171  {
172  return capability;
173  }
174 
179  void SetCCDCapability(uint32_t cap);
180 
184  bool CanAbort()
185  {
186  return capability & CCD_CAN_ABORT;
187  }
188 
192  bool CanBin()
193  {
194  return capability & CCD_CAN_BIN;
195  }
196 
200  bool CanSubFrame()
201  {
202  return capability & CCD_CAN_SUBFRAME;
203  }
204 
209  {
210  return capability & CCD_HAS_GUIDE_HEAD;
211  }
212 
216  bool HasShutter()
217  {
218  return capability & CCD_HAS_SHUTTER;
219  }
220 
224  bool HasST4Port()
225  {
226  return capability & CCD_HAS_ST4_PORT;
227  }
228 
232  bool HasCooler()
233  {
234  return capability & CCD_HAS_COOLER;
235  }
236 
240  bool HasBayer()
241  {
242  return capability & CCD_HAS_BAYER;
243  }
244 
249  {
250  if (capability & CCD_HAS_STREAMING)
251  {
252  if(Streamer.get() == nullptr)
253  {
254  Streamer.reset(new StreamManager(this));
255  Streamer->initProperties();
256  }
257  return true;
258  }
259  return false;
260  }
261 
266  {
267  return capability & CCD_HAS_WEB_SOCKET;
268  }
269 
273  bool HasDSP()
274  {
275  if (capability & CCD_HAS_DSP)
276  {
277  if(DSP.get() == nullptr)
278  {
279  DSP.reset(new DSP::Manager(this));
280  }
281  return true;
282  }
283  return false;
284  }
285 
297  virtual int SetTemperature(double temperature);
298 
305  virtual bool StartExposure(float duration);
306 
313  virtual bool ExposureComplete(CCDChip * targetChip);
314 
320  virtual bool AbortExposure();
321 
328  virtual bool StartGuideExposure(float duration);
329 
335  virtual bool AbortGuideExposure();
336 
348  virtual bool UpdateCCDFrame(int x, int y, int w, int h);
349 
361  virtual bool UpdateGuiderFrame(int x, int y, int w, int h);
362 
371  virtual bool UpdateCCDBin(int hor, int ver);
372 
381  virtual bool UpdateGuiderBin(int hor, int ver);
382 
391  virtual bool UpdateCCDFrameType(CCDChip::CCD_FRAME fType);
392 
401  {
402  INDI_UNUSED(mode);
403  return true;
404  }
405 
414  virtual bool UpdateGuiderFrameType(CCDChip::CCD_FRAME fType);
415 
425  virtual void SetCCDParams(int x, int y, int bpp, float xf, float yf);
426 
436  virtual void SetGuiderParams(int x, int y, int bpp, float xf, float yf);
437 
444  virtual IPState GuideNorth(uint32_t ms) override;
445 
452  virtual IPState GuideSouth(uint32_t ms) override;
453 
460  virtual IPState GuideEast(uint32_t ms) override;
461 
468  virtual IPState GuideWest(uint32_t ms) override;
469 
474  virtual bool StartStreaming();
475 
480  virtual bool StopStreaming();
481 
487  virtual bool SetCaptureFormat(uint8_t index);
488 
510  virtual void addFITSKeywords(CCDChip * targetChip, std::vector<FITSRecord> &fitsKeywords);
511 
513  void fits_update_key_s(fitsfile * fptr, int type, std::string name, void * p, std::string explanation, int * status);
514 
519  virtual void activeDevicesUpdated() {}
520 
526  virtual bool saveConfigItems(FILE * fp) override;
527 
532  virtual void GuideComplete(INDI_EQ_AXIS axis) override;
533 
539  virtual void UploadComplete(CCDChip *) {}
540 
546  virtual void checkTemperatureTarget();
547 
555  virtual bool processFastExposure(CCDChip * targetChip);
556 
564  virtual void addCaptureFormat(const CaptureFormat &format);
565 
566  // Epoch Position
567  double RA, Dec;
568 
569  // pier side, read from mount if available, set to -1 if not available
570  int pierSide; // West = 0, East =1. No enum available
571 
572  // J2000 Position
573  double J2000RA;
574  double J2000DE;
576 
577  // exposure information
580 
584  //bool RapidGuideEnabled;
585  //bool GuiderRapidGuideEnabled;
586 
587  bool AutoLoop;
589  bool SendImage;
593 
594  double ExposureTime;
596 
597  // Sky Quality
598  double MPSAS;
599 
600  // Rotator Angle
601  double RotatorAngle;
602 
603  // JJ ed 2019-12-10 current focuser position
605  double FocuserTemp;
606 
607  // Airmass
608  double Airmass;
609  double Latitude;
610  double Longitude;
611  double Azimuth;
612  double Altitude;
613 
614  // Temperature Control
618 
619  // Threading
620  std::mutex ccdBufferLock;
621 
622  std::vector<std::string> FilterNames;
624 
625  std::vector<CaptureFormat> m_CaptureFormats;
626 
627  std::unique_ptr<StreamManager> Streamer;
628  std::unique_ptr<DSP::Manager> DSP;
631 
635 
636 
644 
652 
662 
663  // JJ ed 2019-12-10
665  enum
666  {
672  };
673 
679 
684  enum
685  {
688  };
689 
694  IText BayerT[3] {};
695 
703 
706 
709  enum
710  {
713  FORMAT_XISF
714  };
715 
718 
721  enum
722  {
725  };
726 
727  // Telescope Information
729  enum
730  {
732  Aperture
733  };
734 
735  // Websocket Support
738  enum
739  {
742  };
743 
744 
745  // Websocket Settings
748  enum
749  {
751  };
752 
753  // WCS
756 
757  // WCS CCD Rotation
760 
761  // Fast Exposure Toggle
764 
765  // Fast Exposure Frame Count
768  double m_UploadTime = { 0 };
769  std::chrono::system_clock::time_point FastExposureToggleStartup;
770 
772  enum
773  {
777  };
778 
779  private:
780  uint32_t capability;
781 
782  bool m_ValidCCDRotation {false};
783  std::string m_ConfigCaptureFormatName;
784  int m_ConfigEncodeFormatIndex {-1};
785  int m_ConfigFastExposureIndex {INDI_DISABLED};
786 
787  std::map<std::string, FITSRecord> m_CustomFITSKeywords;
788 
792  bool uploadFile(CCDChip * targetChip, const void * fitsData, size_t totalBytes, bool sendImage, bool saveImage);
793  void getMinMax(double * min, double * max, CCDChip * targetChip);
794  int getFileIndex(const char * dir, const char * prefix, const char * ext);
795  bool ExposureCompletePrivate(CCDChip * targetChip);
796 
797  // Threading for Websocket
798 #ifdef HAVE_WEBSOCKET
799  std::thread wsThread;
800  void wsThreadEntry();
801  INDIWSServer wsServer;
802 #endif
803 
807  friend class StreamManager;
808  friend class StreamManagerPrivate;
809 };
810 }
The CCDChip class provides functionality of a CCD Chip within a CCD.
Definition: indiccdchip.h:35
Class to provide general functionality of CCD cameras with a single CCD sensor, or a primary CCD sens...
Definition: indiccd.h:116
INumberVectorProperty EqNP
Properties.
Definition: indiccd.h:642
bool InGuideExposure
Definition: indiccd.h:583
ISwitchVectorProperty UploadSP
Definition: indiccd.h:717
static constexpr const char * WCS_TAB
Definition: indiccd.h:163
virtual bool StartExposure(float duration)
Start exposing primary CCD chip.
Definition: indiccd.cpp:1867
virtual bool processFastExposure(CCDChip *targetChip)
processFastExposure After an exposure is complete, check if fast exposure was enabled....
Definition: indiccd.cpp:2675
std::chrono::system_clock::time_point FastExposureToggleStartup
Definition: indiccd.h:769
double Longitude
Definition: indiccd.h:610
ITextVectorProperty ActiveDeviceTP
ActiveDeviceTP defines 4 devices the camera driver can listen to (snoop) for properties of interest s...
Definition: indiccd.h:661
CCDChip PrimaryCCD
Definition: indiccd.h:629
uint32_t GetCCDCapability() const
GetCCDCapability returns the CCD capabilities.
Definition: indiccd.h:170
ISwitch WorldCoordS[2]
Definition: indiccd.h:754
@ CCD_CAN_SUBFRAME
Definition: indiccd.h:124
@ CCD_HAS_DSP
Definition: indiccd.h:133
@ CCD_HAS_WEB_SOCKET
Definition: indiccd.h:132
@ CCD_CAN_ABORT
Definition: indiccd.h:125
@ CCD_HAS_GUIDE_HEAD
Definition: indiccd.h:126
@ CCD_HAS_SHUTTER
Definition: indiccd.h:128
@ CCD_HAS_BAYER
Definition: indiccd.h:130
@ CCD_CAN_BIN
Definition: indiccd.h:123
@ CCD_HAS_STREAMING
Definition: indiccd.h:131
@ CCD_HAS_ST4_PORT
Definition: indiccd.h:127
@ CCD_HAS_COOLER
Definition: indiccd.h:129
enum INDI::CCD::@223 CCDCapability
INumberVectorProperty CCDRotationNP
Definition: indiccd.h:759
bool HasGuideHead()
Definition: indiccd.h:208
INumber J2000EqN[2]
Definition: indiccd.h:651
std::unique_ptr< StreamManager > Streamer
Definition: indiccd.h:627
@ ACTIVE_TELESCOPE
Definition: indiccd.h:667
@ ACTIVE_FILTER
Definition: indiccd.h:670
@ ACTIVE_FOCUSER
Definition: indiccd.h:669
@ ACTIVE_SKYQUALITY
Definition: indiccd.h:671
@ ACTIVE_ROTATOR
Definition: indiccd.h:668
bool HasCooler()
Definition: indiccd.h:232
IText BayerT[3]
Definition: indiccd.h:694
double J2000RA
Definition: indiccd.h:573
bool InExposure
Definition: indiccd.h:582
double GuiderExposureTime
Definition: indiccd.h:595
void fits_update_key_s(fitsfile *fptr, int type, std::string name, void *p, std::string explanation, int *status)
Definition: indiccd.cpp:2221
double Airmass
Definition: indiccd.h:608
virtual bool ISNewBLOB(const char *dev, const char *name, int sizes[], int blobsizes[], char *blobs[], char *formats[], char *names[], int n) override
Process the client newBLOB command.
Definition: indiccd.cpp:1850
ISwitchVectorProperty WebSocketSP
Definition: indiccd.h:737
bool CanAbort()
Definition: indiccd.h:184
ISwitch WebSocketS[2]
Definition: indiccd.h:736
INDI::Timer m_TemperatureCheckTimer
Definition: indiccd.h:616
static constexpr const char * GUIDE_CONTROL_TAB
Group Names.
Definition: indiccd.h:162
bool HasST4Port()
Definition: indiccd.h:224
bool HasWebSocket()
Definition: indiccd.h:265
@ UPLOAD_DIR
Definition: indiccd.h:723
@ UPLOAD_PREFIX
Definition: indiccd.h:724
@ KEYWORD_VALUE
Definition: indiccd.h:775
@ KEYWORD_NAME
Definition: indiccd.h:774
@ KEYWORD_COMMENT
Definition: indiccd.h:776
ITextVectorProperty FileNameTP
FileNameTP File name of locally-saved images. By default, images are uploaded to the client but when ...
Definition: indiccd.h:701
bool CanBin()
Definition: indiccd.h:192
virtual void activeDevicesUpdated()
activeDevicesUpdated Inform children that ActiveDevices property was updated so they can snoop on the...
Definition: indiccd.h:519
ISwitchVectorProperty FastExposureToggleSP
Definition: indiccd.h:763
virtual bool UpdateCCDFrame(int x, int y, int w, int h)
CCD calls this function when CCD Frame dimension needs to be updated in the hardware....
Definition: indiccd.cpp:1891
virtual void addFITSKeywords(CCDChip *targetChip, std::vector< FITSRecord > &fitsKeywords)
Generate FITS keywords that will be added to FIST/XISF file.
Definition: indiccd.cpp:1940
ITextVectorProperty BayerTP
BayerTP Bayer pattern offset and type.
Definition: indiccd.h:693
virtual bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n) override
Process the client newSwitch command.
Definition: indiccd.cpp:1451
INDI::PropertyNumber TemperatureRampNP
Temperature Ramp in C/Min with configurable threshold.
Definition: indiccd.h:683
bool SendImage
Definition: indiccd.h:589
ITextVectorProperty UploadSettingsTP
Definition: indiccd.h:720
int CurrentFilterSlot
Definition: indiccd.h:623
virtual bool ExposureComplete(CCDChip *targetChip)
Uploads target Chip exposed buffer as FITS to the client. Dervied classes should class this function ...
Definition: indiccd.cpp:2228
bool ShowMarker
Definition: indiccd.h:591
virtual IPState GuideWest(uint32_t ms) override
Guide westward for ms milliseconds.
Definition: indiccd.cpp:2827
virtual void ISGetProperties(const char *dev) override
define the driver's properties to the client. Usually, only a minimum set of properties are defined t...
Definition: indiccd.cpp:516
std::mutex ccdBufferLock
Definition: indiccd.h:620
virtual int SetTemperature(double temperature)
Set CCD temperature.
Definition: indiccd.cpp:1860
INDI::PropertyNumber ScopeInfoNP
Definition: indiccd.h:728
INumber TemperatureN[1]
Definition: indiccd.h:678
INumber WebSocketSettingsN[1]
Definition: indiccd.h:746
INDI::PropertyText FITSHeaderTP
Definition: indiccd.h:771
virtual bool UpdateGuiderFrame(int x, int y, int w, int h)
CCD calls this function when Guide head frame dimension is updated by the client. Derived classes sho...
Definition: indiccd.cpp:1898
virtual bool UpdateCCDBin(int hor, int ver)
CCD calls this function when CCD Binning needs to be updated in the hardware. Derived classes should ...
Definition: indiccd.cpp:1904
INumber CCDRotationN[1]
Definition: indiccd.h:758
INDI::PropertySwitch EncodeFormatSP
Specifies Driver image encoding format (FITS, Native, JPG, ..etc)
Definition: indiccd.h:708
double exposureDuration
Definition: indiccd.h:579
virtual IPState GuideSouth(uint32_t ms) override
Guide southward for ms milliseconds.
Definition: indiccd.cpp:2813
virtual bool SetCaptureFormat(uint8_t index)
SetCaptureFormat Set Active Capture format.
Definition: indiccd.cpp:3052
INumberVectorProperty J2000EqNP
J200EqNP Snoop property to read the equatorial J2000 coordinates of the mount. ActiveDeviceTP defines...
Definition: indiccd.h:650
bool GuiderAutoLoop
Definition: indiccd.h:588
@ WEBSOCKET_DISABLED
Definition: indiccd.h:741
@ WEBSOCKET_ENABLED
Definition: indiccd.h:740
long FocuserPos
Definition: indiccd.h:604
virtual bool initProperties() override
Initilize properties initial state and value. The child class must implement this function.
Definition: indiccd.cpp:152
virtual bool ISNewText(const char *dev, const char *name, char *texts[], char *names[], int n) override
Process the client newSwitch command.
Definition: indiccd.cpp:884
double snoopedAperture
Definition: indiccd.h:581
virtual bool StartGuideExposure(float duration)
Start exposing guide CCD chip.
Definition: indiccd.cpp:1873
double J2000DE
Definition: indiccd.h:574
virtual bool AbortExposure()
Abort ongoing exposure.
Definition: indiccd.cpp:1879
bool GuiderSendImage
Definition: indiccd.h:590
CCD_UPLOAD_MODE
Definition: indiccd.h:136
@ UPLOAD_BOTH
Definition: indiccd.h:136
@ UPLOAD_LOCAL
Definition: indiccd.h:136
@ UPLOAD_CLIENT
Definition: indiccd.h:136
int pierSide
Definition: indiccd.h:570
virtual IPState GuideNorth(uint32_t ms) override
Guide northward for ms milliseconds.
Definition: indiccd.cpp:2806
char exposureStartTime[MAXINDINAME]
Definition: indiccd.h:578
virtual bool StartStreaming()
StartStreaming Start live video streaming.
Definition: indiccd.cpp:2975
std::unique_ptr< DSP::Manager > DSP
Definition: indiccd.h:628
virtual bool UpdateGuiderFrameType(CCDChip::CCD_FRAME fType)
CCD calls this function when Guide frame type is updated by the client.
Definition: indiccd.cpp:1933
INumberVectorProperty FastExposureCountNP
Definition: indiccd.h:767
virtual bool updateProperties() override
updateProperties is called whenever there is a change in the CONNECTION status of the driver....
Definition: indiccd.cpp:528
virtual IPState GuideEast(uint32_t ms) override
Guide easward for ms milliseconds.
Definition: indiccd.cpp:2820
ISwitch FastExposureToggleS[2]
Definition: indiccd.h:762
INumberVectorProperty WebSocketSettingsNP
Definition: indiccd.h:747
virtual void addCaptureFormat(const CaptureFormat &format)
addCaptureFormat Add a supported camera native capture format (e.g. Mono, Bayer8.....
Definition: indiccd.cpp:3033
friend class StreamManager
Misc.
Definition: indiccd.h:807
double Azimuth
Definition: indiccd.h:611
virtual void checkTemperatureTarget()
checkTemperatureTarget Checks the current temperature against target temperature and calculates the n...
Definition: indiccd.cpp:3002
bool J2000Valid
Definition: indiccd.h:575
double RotatorAngle
Definition: indiccd.h:601
std::vector< std::string > FilterNames
Definition: indiccd.h:622
virtual void SetGuiderParams(int x, int y, int bpp, float xf, float yf)
Setup CCD paramters for guide head CCD. Child classes call this function to update CCD parameters.
Definition: indiccd.cpp:2752
ISwitch UploadS[3]
Definition: indiccd.h:716
ISwitchVectorProperty WorldCoordSP
Definition: indiccd.h:755
@ WS_SETTINGS_PORT
Definition: indiccd.h:750
INDI::ElapsedTimer m_TemperatureElapsedTimer
Definition: indiccd.h:617
virtual bool UpdateGuiderBin(int hor, int ver)
CCD calls this function when Guide head binning is updated by the client. Derived classes should impl...
Definition: indiccd.cpp:1919
bool HasDSP()
Definition: indiccd.h:273
virtual bool saveConfigItems(FILE *fp) override
saveConfigItems Save configuration items in XML file.
Definition: indiccd.cpp:2762
bool CanSubFrame()
Definition: indiccd.h:200
INumber FastExposureCountN[1]
Definition: indiccd.h:766
bool HasStreaming()
Definition: indiccd.h:248
virtual void GuideComplete(INDI_EQ_AXIS axis) override
GuideComplete Signal guide pulse completion.
Definition: indiccd.cpp:2970
virtual bool ISSnoopDevice(XMLEle *root) override
Process a snoop event from INDI server. This function is called when a snooped property is updated in...
Definition: indiccd.cpp:728
virtual void UploadComplete(CCDChip *)
UploadComplete Signal that capture is completed and image was uploaded and/or saved successfully.
Definition: indiccd.h:539
bool GuiderShowMarker
Definition: indiccd.h:592
INDI::PropertySwitch CaptureFormatSP
Specifies Camera NATIVE capture format (e.g. Mono, RGB, RAW8..etc).
Definition: indiccd.h:705
struct INDI::CCD::CaptureFormat CaptureFormat
void SetCCDCapability(uint32_t cap)
SetCCDCapability Set the CCD capabilities. Al fields must be initialized.
Definition: indiccd.cpp:138
IText FileNameT[1]
Definition: indiccd.h:702
bool AutoLoop
Definition: indiccd.h:587
bool HasBayer()
Definition: indiccd.h:240
virtual bool ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) override
Process the client newNumber command.
Definition: indiccd.cpp:1070
INumberVectorProperty TemperatureNP
TemperatureNP Camera Temperature in Celcius.
Definition: indiccd.h:677
IText ActiveDeviceT[5]
Definition: indiccd.h:664
double Latitude
Definition: indiccd.h:609
bool HasShutter()
Definition: indiccd.h:216
@ RAMP_THRESHOLD
Definition: indiccd.h:687
@ RAMP_SLOPE
Definition: indiccd.h:686
IText UploadSettingsT[2]
Definition: indiccd.h:719
double MPSAS
Definition: indiccd.h:598
CCDChip GuideCCD
Definition: indiccd.h:630
@ FORMAT_NATIVE
Definition: indiccd.h:712
@ FORMAT_XISF
Definition: indiccd.h:713
@ FORMAT_FITS
Definition: indiccd.h:711
static void wsThreadHelper(void *context)
virtual bool UpdateCCDFrameType(CCDChip::CCD_FRAME fType)
CCD calls this function when CCD frame type needs to be updated in the hardware.
Definition: indiccd.cpp:1926
double RA
Definition: indiccd.h:567
virtual void SetCCDParams(int x, int y, int bpp, float xf, float yf)
Setup CCD paramters for primary CCD. Child classes call this function to update CCD parameters.
Definition: indiccd.cpp:2742
@ Aperture
Definition: indiccd.h:732
@ FocalLength
Definition: indiccd.h:731
virtual bool UpdateCCDUploadMode(CCD_UPLOAD_MODE mode)
CCD calls this function when client upload mode switch is updated.
Definition: indiccd.h:400
virtual ~CCD()
Definition: indiccd.cpp:131
virtual bool StopStreaming()
StopStreaming Stop live video streaming.
Definition: indiccd.cpp:2981
double snoopedFocalLength
Definition: indiccd.h:581
double FocuserTemp
Definition: indiccd.h:605
std::vector< CaptureFormat > m_CaptureFormats
Definition: indiccd.h:625
double m_UploadTime
Definition: indiccd.h:768
double m_TargetTemperature
Definition: indiccd.h:615
INumber EqN[2]
Definition: indiccd.h:643
virtual bool AbortGuideExposure()
Abort ongoing exposure.
Definition: indiccd.cpp:1885
double Altitude
Definition: indiccd.h:612
double Dec
Definition: indiccd.h:567
double ExposureTime
Definition: indiccd.h:594
Class to provide extended functionality for devices in addition to the functionality provided by INDI...
The ElapsedTimer class provides a fast way to calculate elapsed times.
The Timer class provides repetitive and single-shot timers.
Definition: inditimer.h:41
Class to provide video streaming and recording functionality.
double max(void)
double min(void)
ISState
Switch state.
Definition: indiapi.h:150
IPState
Property state.
Definition: indiapi.h:160
#define MAXINDINAME
Definition: indiapi.h:191
INDI_EQ_AXIS
Definition: indibasetypes.h:34
const char * IMAGE_SETTINGS_TAB
Definition: indiccd.cpp:61
const char * IMAGE_INFO_TAB
Definition: indiccd.cpp:62
const char * GUIDE_HEAD_TAB
Definition: indiccd.cpp:63
#define INDI_UNUSED(x)
Definition: indidevapi.h:131
The DSP Namespace adds signal processing to INDI drivers. Primarily written for sensors and detectors...
Definition: convolution.cpp:40
Namespace to encapsulate INDI client, drivers, and mediator classes.
__le16 type
Definition: pwc-ioctl.h:0
One number descriptor.
One switch descriptor.
One text descriptor.
Number vector property descriptor.
Definition: indiapi.h:319
Switch vector property descriptor.
Definition: indiapi.h:367
Text vector property descriptor.
Definition: indiapi.h:246