Instrument Neutral Distributed Interface INDI  1.9.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 "inditimer.h"
34 #include "indielapsedtimer.h"
35 #include "dsp/manager.h"
36 #include "stream/streammanager.h"
37 
38 #ifdef HAVE_WEBSOCKET
39 #include "indiwsserver.h"
40 #endif
41 
42 #include <fitsio.h>
43 
44 #include <memory>
45 #include <cstring>
46 #include <chrono>
47 #include <stdint.h>
48 #include <mutex>
49 #include <thread>
50 
51 //JM 2019-01-17: Disabled until further notice
52 //#define WITH_EXPOSURE_LOOPING
53 
54 extern const char * IMAGE_SETTINGS_TAB;
55 extern const char * IMAGE_INFO_TAB;
56 extern const char * GUIDE_HEAD_TAB;
57 //extern const char * RAPIDGUIDE_TAB;
58 
59 namespace DSP
60 {
61 class Manager;
62 }
63 namespace INDI
64 {
65 
66 class StreamManager;
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
134  } CCDCapability;
135 
137 
138  virtual bool initProperties() override;
139  virtual bool updateProperties() override;
140  virtual void ISGetProperties(const char * dev) override;
141  virtual bool ISNewNumber(const char * dev, const char * name, double values[], char * names[], int n) override;
142  virtual bool ISNewSwitch(const char * dev, const char * name, ISState * states, char * names[], int n) override;
143  virtual bool ISNewText(const char * dev, const char * name, char * texts[], char * names[], int n) override;
144  virtual bool ISNewBLOB(const char *dev, const char *name, int sizes[], int blobsizes[], char *blobs[], char *formats[],
145  char *names[], int n) override;
146  virtual bool ISSnoopDevice(XMLEle * root) override;
147 
148  static void wsThreadHelper(void * context);
149 
153  static constexpr const char *GUIDE_CONTROL_TAB = "Guider Control";
154  static constexpr const char * WCS_TAB = "WCS";
155 
156 
157  protected:
161  uint32_t GetCCDCapability() const
162  {
163  return capability;
164  }
165 
170  void SetCCDCapability(uint32_t cap);
171 
175  bool CanAbort()
176  {
177  return capability & CCD_CAN_ABORT;
178  }
179 
183  bool CanBin()
184  {
185  return capability & CCD_CAN_BIN;
186  }
187 
191  bool CanSubFrame()
192  {
193  return capability & CCD_CAN_SUBFRAME;
194  }
195 
200  {
201  return capability & CCD_HAS_GUIDE_HEAD;
202  }
203 
207  bool HasShutter()
208  {
209  return capability & CCD_HAS_SHUTTER;
210  }
211 
215  bool HasST4Port()
216  {
217  return capability & CCD_HAS_ST4_PORT;
218  }
219 
223  bool HasCooler()
224  {
225  return capability & CCD_HAS_COOLER;
226  }
227 
231  bool HasBayer()
232  {
233  return capability & CCD_HAS_BAYER;
234  }
235 
240  {
241  if (capability & CCD_HAS_STREAMING)
242  {
243  if(Streamer.get() == nullptr)
244  {
245  Streamer.reset(new StreamManager(this));
246  Streamer->initProperties();
247  }
248  return true;
249  }
250  return false;
251  }
252 
257  {
258  return capability & CCD_HAS_WEB_SOCKET;
259  }
260 
264  bool HasDSP()
265  {
266  if (capability & CCD_HAS_DSP)
267  {
268  if(DSP.get() == nullptr)
269  {
270  DSP.reset(new DSP::Manager(this));
271  }
272  return true;
273  }
274  return false;
275  }
276 
288  virtual int SetTemperature(double temperature);
289 
296  virtual bool StartExposure(float duration);
297 
304  virtual bool ExposureComplete(CCDChip * targetChip);
305 
311  virtual bool AbortExposure();
312 
319  virtual bool StartGuideExposure(float duration);
320 
326  virtual bool AbortGuideExposure();
327 
339  virtual bool UpdateCCDFrame(int x, int y, int w, int h);
340 
352  virtual bool UpdateGuiderFrame(int x, int y, int w, int h);
353 
362  virtual bool UpdateCCDBin(int hor, int ver);
363 
372  virtual bool UpdateGuiderBin(int hor, int ver);
373 
382  virtual bool UpdateCCDFrameType(CCDChip::CCD_FRAME fType);
383 
392  {
393  INDI_UNUSED(mode);
394  return true;
395  }
396 
405  virtual bool UpdateGuiderFrameType(CCDChip::CCD_FRAME fType);
406 
416  virtual void SetCCDParams(int x, int y, int bpp, float xf, float yf);
417 
427  virtual void SetGuiderParams(int x, int y, int bpp, float xf, float yf);
428 
435  virtual IPState GuideNorth(uint32_t ms) override;
436 
443  virtual IPState GuideSouth(uint32_t ms) override;
444 
451  virtual IPState GuideEast(uint32_t ms) override;
452 
459  virtual IPState GuideWest(uint32_t ms) override;
460 
465  virtual bool StartStreaming();
466 
471  virtual bool StopStreaming();
472 
495  virtual void addFITSKeywords(fitsfile * fptr, CCDChip * targetChip);
496 
498  void fits_update_key_s(fitsfile * fptr, int type, std::string name, void * p, std::string explanation, int * status);
499 
504  virtual void activeDevicesUpdated() {}
505 
511  virtual bool saveConfigItems(FILE * fp) override;
512 
517  virtual void GuideComplete(INDI_EQ_AXIS axis) override;
518 
524  virtual void checkTemperatureTarget();
525 
526 
527  // Epoch Position
528  double RA, Dec;
529 
530  // pier side, read from mount if available, set to -1 if not available
531  int pierSide; // West = 0, East =1. No enum available
532 
533  // J2000 Position
534  double J2000RA;
535  double J2000DE;
536 
540  //bool RapidGuideEnabled;
541  //bool GuiderRapidGuideEnabled;
542 
543  bool AutoLoop;
545  bool SendImage;
549 
550  double ExposureTime;
552 
553  // Sky Quality
554  double MPSAS;
555 
556  // Rotator Angle
557  double RotatorAngle;
558 
559  // JJ ed 2019-12-10 current focuser position
561  double FocuserTemp;
562 
563  // Airmass
564  double Airmass;
565  double Latitude;
566  double Longitude;
567  double Azimuth;
568  double Altitude;
569 
570  // Temperature Control
574 
575  // Threading
576  std::mutex ccdBufferLock;
577 
578  std::vector<std::string> FilterNames;
580 
581  std::unique_ptr<StreamManager> Streamer;
582  std::unique_ptr<DSP::Manager> DSP;
585 
589 
590 
598 
608 
609  // JJ ed 2019-12-10
611  enum
612  {
618  };
619 
625 
630  enum
631  {
634  };
635 
640  IText BayerT[3] {};
641 
649 
652 
655  enum
656  {
659  };
660 
663  enum
664  {
667  };
668 
669  // Websocket Support
672  enum
673  {
676  };
677 
678 
679  // Websocket Settings
682  enum
683  {
685  };
686 
687  // WCS
690 
691  // WCS CCD Rotation
694 
695 #ifdef WITH_EXPOSURE_LOOPING
696  // Exposure Looping
697  ISwitch ExposureLoopS[2];
698  ISwitchVectorProperty ExposureLoopSP;
699  enum
700  {
701  EXPOSURE_LOOP_ON,
702  EXPOSURE_LOOP_OFF
703  };
704 
705  // Exposure Looping Count
706  INumber ExposureLoopCountN[1];
707  INumberVectorProperty ExposureLoopCountNP;
708  double uploadTime = { 0 };
709  std::chrono::system_clock::time_point exposureLoopStartup;
710 #endif
711 
712  // FITS Header
715  enum
716  {
719  };
720 
721  private:
722  uint32_t capability;
723 
724  bool m_ValidCCDRotation;
725 
729  bool uploadFile(CCDChip * targetChip, const void * fitsData, size_t totalBytes, bool sendImage, bool saveImage);
730  void getMinMax(double * min, double * max, CCDChip * targetChip);
731  int getFileIndex(const char * dir, const char * prefix, const char * ext);
732  bool ExposureCompletePrivate(CCDChip * targetChip);
733 
734  // Threading for Websocket
735 #ifdef HAVE_WEBSOCKET
736  std::thread wsThread;
737  void wsThreadEntry();
738  INDIWSServer wsServer;
739 #endif
740 
744  friend class StreamManager;
745  friend class StreamManagerPrivate;
746 };
747 }
INDI::CCD::WorldCoordS
ISwitch WorldCoordS[2]
Definition: indiccd.h:688
INDI::CCD::StartStreaming
virtual bool StartStreaming()
StartStreaming Start live video streaming.
Definition: indiccd.cpp:3198
INDI::CCD::ISNewSwitch
virtual bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n) override
Process the client newSwitch command.
Definition: indiccd.cpp:1307
indipropertynumber.h
INDI::CCD::GuideWest
virtual IPState GuideWest(uint32_t ms) override
Guide westward for ms milliseconds.
Definition: indiccd.cpp:3050
indiccdchip.h
INDI::CCD::UploadSettingsTP
ITextVectorProperty UploadSettingsTP
Definition: indiccd.h:654
INDI::CCD::pierSide
int pierSide
Definition: indiccd.h:531
INDI::CCD::HasBayer
bool HasBayer()
Definition: indiccd.h:231
INDI::CCD::CCD_HAS_BAYER
@ CCD_HAS_BAYER
Definition: indiccd.h:130
INDI::CCD::~CCD
virtual ~CCD()
Definition: indiccd.cpp:115
INDI::CCD::TemperatureRampNP
INDI::PropertyNumber TemperatureRampNP
Temperature Ramp in C/Min with configurable threshold.
Definition: indiccd.h:629
INDI::CCD::RA
double RA
Definition: indiccd.h:528
INDI::CCD::WebSocketSettingsN
INumber WebSocketSettingsN[1]
Definition: indiccd.h:680
INDI::CCD::ShowMarker
bool ShowMarker
Definition: indiccd.h:547
INDI::CCD::FocuserPos
long FocuserPos
Definition: indiccd.h:560
IPState
IPState
Property state.
Definition: indiapi.h:158
INDI::CCD::SetTemperature
virtual int SetTemperature(double temperature)
Set CCD temperature.
Definition: indiccd.cpp:1683
INDI::CCD::UpdateGuiderFrame
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:1721
INDI::CCD::GuideEast
virtual IPState GuideEast(uint32_t ms) override
Guide easward for ms milliseconds.
Definition: indiccd.cpp:3043
min
double min(void)
INDI::CCD::J2000RA
double J2000RA
Definition: indiccd.h:534
ISwitch
One switch descriptor.
INDI::CCD::HasGuideHead
bool HasGuideHead()
Definition: indiccd.h:199
INDI::CCD::HasWebSocket
bool HasWebSocket()
Definition: indiccd.h:256
INDI::CCD::UPLOAD_DIR
@ UPLOAD_DIR
Definition: indiccd.h:657
INDI::CCD::GUIDE_CONTROL_TAB
static constexpr const char * GUIDE_CONTROL_TAB
Group Names.
Definition: indiccd.h:153
INDI::CCD::ExposureComplete
virtual bool ExposureComplete(CCDChip *targetChip)
Uploads target Chip exposed buffer as FITS to the client. Dervied classes should class this function ...
Definition: indiccd.cpp:2034
INDI::CCD::CCD_HAS_ST4_PORT
@ CCD_HAS_ST4_PORT
Definition: indiccd.h:127
INDI::CCD::RAMP_THRESHOLD
@ RAMP_THRESHOLD
Definition: indiccd.h:633
INDI::CCD::guiderFocalLength
double guiderFocalLength
Definition: indiccd.h:537
INDI::CCD::FITSHeaderTP
ITextVectorProperty FITSHeaderTP
Definition: indiccd.h:714
INumber
One number descriptor.
INDI::CCD::FocuserTemp
double FocuserTemp
Definition: indiccd.h:561
inditimer.h
INDI::CCD::WebSocketSettingsNP
INumberVectorProperty WebSocketSettingsNP
Definition: indiccd.h:681
INDI::CCD::UpdateGuiderBin
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:1742
INDI::CCD::UPLOAD_PREFIX
@ UPLOAD_PREFIX
Definition: indiccd.h:658
INDI::CCD::m_TemperatureElapsedTimer
INDI::ElapsedTimer m_TemperatureElapsedTimer
Definition: indiccd.h:573
INDI::CCD::FITSHeaderT
IText FITSHeaderT[2]
Definition: indiccd.h:713
INDI::CCD::GuiderAutoLoop
bool GuiderAutoLoop
Definition: indiccd.h:544
INDI::StreamManager
Definition: streammanager.h:96
INDI::CCD::GuiderExposureTime
double GuiderExposureTime
Definition: indiccd.h:551
INDI::CCD::Airmass
double Airmass
Definition: indiccd.h:564
INDI::CCD::GuideNorth
virtual IPState GuideNorth(uint32_t ms) override
Guide northward for ms milliseconds.
Definition: indiccd.cpp:3029
INDI_UNUSED
#define INDI_UNUSED(x)
Definition: indidevapi.h:799
INDI::CCD::SetCCDParams
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:2968
INDI::CCD::Latitude
double Latitude
Definition: indiccd.h:565
INDI::Timer
The Timer class provides repetitive and single-shot timers.
Definition: inditimer.h:40
INDI::CCD::ACTIVE_FILTER
@ ACTIVE_FILTER
Definition: indiccd.h:616
INDI::CCD::J2000DE
double J2000DE
Definition: indiccd.h:535
INDI::CCD::InGuideExposure
bool InGuideExposure
Definition: indiccd.h:539
GUIDE_HEAD_TAB
const char * GUIDE_HEAD_TAB
Definition: indiccd.cpp:57
INDI::CCD::TelescopeTypeS
ISwitch TelescopeTypeS[2]
Definition: indiccd.h:661
INDI::CCD::wsThreadHelper
static void wsThreadHelper(void *context)
INDI::CCD::HasStreaming
bool HasStreaming()
Definition: indiccd.h:239
INDI::CCD::CurrentFilterSlot
int CurrentFilterSlot
Definition: indiccd.h:579
IMAGE_INFO_TAB
const char * IMAGE_INFO_TAB
Definition: indiccd.cpp:56
INDI::CCD::PrimaryCCD
CCDChip PrimaryCCD
Definition: indiccd.h:583
StreamManager
Class to provide video streaming and recording functionality.
INDI::CCD::ACTIVE_ROTATOR
@ ACTIVE_ROTATOR
Definition: indiccd.h:614
INDI::CCDChip::CCD_FRAME
CCD_FRAME
Definition: indiccdchip.h:70
INDI::CCD::addFITSKeywords
virtual void addFITSKeywords(fitsfile *fptr, CCDChip *targetChip)
Add FITS keywords to a fits file.
Definition: indiccd.cpp:1763
INDI::CCD::WebSocketSP
ISwitchVectorProperty WebSocketSP
Definition: indiccd.h:671
INDI::CCD::TelescopeTypeSP
ISwitchVectorProperty TelescopeTypeSP
Definition: indiccd.h:662
INDI::CCD::BayerTP
ITextVectorProperty BayerTP
BayerTP Bayer pattern offset and type.
Definition: indiccd.h:639
INDI::CCD::StopStreaming
virtual bool StopStreaming()
StopStreaming Stop live video streaming.
Definition: indiccd.cpp:3204
max
double max(void)
INDI::CCD::guiderAperture
double guiderAperture
Definition: indiccd.h:537
INDI::CCD::Altitude
double Altitude
Definition: indiccd.h:568
INDI::CCD::BayerT
IText BayerT[3]
Definition: indiccd.h:640
_ITextVectorProperty
Text vector property descriptor.
Definition: indiapi.h:244
INDI::CCD
Class to provide general functionality of CCD cameras with a single CCD sensor, or a primary CCD sens...
Definition: indiccd.h:115
INDI::CCDChip
The CCDChip class provides functionality of a CCD Chip within a CCD.
Definition: indiccdchip.h:48
INDI::CCD::CCD
CCD()
Definition: indiccd.cpp:67
type
__le16 type
Definition: pwc-ioctl.h:2
_INumberVectorProperty
Number vector property descriptor.
Definition: indiapi.h:317
INDI::CCD::StartGuideExposure
virtual bool StartGuideExposure(float duration)
Start exposing guide CCD chip.
Definition: indiccd.cpp:1696
INDI::CCD::ISNewText
virtual bool ISNewText(const char *dev, const char *name, char *texts[], char *names[], int n) override
Process the client newSwitch command.
Definition: indiccd.cpp:813
INDI::CCD::Dec
double Dec
Definition: indiccd.h:528
INDI::CCD::CCD_UPLOAD_MODE
CCD_UPLOAD_MODE
Definition: indiccd.h:136
INDI::CCD::SetGuiderParams
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:2978
INDI::CCD::ACTIVE_TELESCOPE
@ ACTIVE_TELESCOPE
Definition: indiccd.h:613
IMAGE_SETTINGS_TAB
const char * IMAGE_SETTINGS_TAB
Definition: indiccd.cpp:55
INDI::CCD::CCD_HAS_STREAMING
@ CCD_HAS_STREAMING
Definition: indiccd.h:131
INDI::CCD::CCDCapability
enum INDI::CCD::@161 CCDCapability
IText
One text descriptor.
INDI::CCD::EqN
INumber EqN[2]
Definition: indiccd.h:597
INDI::CCD::UpdateCCDBin
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:1727
streammanager.h
INDI::CCD::HasShutter
bool HasShutter()
Definition: indiccd.h:207
INDI::CCD::initProperties
virtual bool initProperties() override
Initilize properties initial state and value. The child class must implement this function.
Definition: indiccd.cpp:133
INDI::CCD::checkTemperatureTarget
virtual void checkTemperatureTarget()
checkTemperatureTarget Checks the current temperature against target temperature and calculates the n...
Definition: indiccd.cpp:3225
INDI::PropertyNumber
Definition: indipropertynumber.h:27
INDI::CCD::EqNP
INumberVectorProperty EqNP
Properties.
Definition: indiccd.h:596
INDI::GuiderInterface
Definition: indiguiderinterface.h:50
INDI::CCD::DSP
std::unique_ptr< DSP::Manager > DSP
Definition: indiccd.h:582
INDI::CCD::MPSAS
double MPSAS
Definition: indiccd.h:554
indielapsedtimer.h
INDI::CCD::WEBSOCKET_DISABLED
@ WEBSOCKET_DISABLED
Definition: indiccd.h:675
INDI::CCD::ActiveDeviceT
IText ActiveDeviceT[5]
Definition: indiccd.h:610
INDI::ElapsedTimer
The ElapsedTimer class provides a fast way to calculate elapsed times.
Definition: indielapsedtimer.h:35
INDI::CCD::WEBSOCKET_ENABLED
@ WEBSOCKET_ENABLED
Definition: indiccd.h:674
INDI::CCD::AbortExposure
virtual bool AbortExposure()
Abort ongoing exposure.
Definition: indiccd.cpp:1702
INDI::CCD::CCD_HAS_GUIDE_HEAD
@ CCD_HAS_GUIDE_HEAD
Definition: indiccd.h:126
INDI::CCD::Azimuth
double Azimuth
Definition: indiccd.h:567
INDI::CCD::GuideSouth
virtual IPState GuideSouth(uint32_t ms) override
Guide southward for ms milliseconds.
Definition: indiccd.cpp:3036
INDI::CCD::TemperatureNP
INumberVectorProperty TemperatureNP
TemperatureNP Camera Temperature in Celcius.
Definition: indiccd.h:623
INDI::CCD::ExposureTime
double ExposureTime
Definition: indiccd.h:550
INDI::CCD::UPLOAD_LOCAL
@ UPLOAD_LOCAL
Definition: indiccd.h:136
xml_ele_
Definition: lilxml.c:105
INDI::CCD::InExposure
bool InExposure
Definition: indiccd.h:538
INDI::CCD::activeDevicesUpdated
virtual void activeDevicesUpdated()
activeDevicesUpdated Inform children that ActiveDevices property was updated so they can snoop on the...
Definition: indiccd.h:504
INDI::CCD::updateProperties
virtual bool updateProperties() override
updateProperties is called whenever there is a change in the CONNECTION status of the driver....
Definition: indiccd.cpp:469
INDI::CCD::UpdateCCDUploadMode
virtual bool UpdateCCDUploadMode(CCD_UPLOAD_MODE mode)
CCD calls this function when client upload mode switch is updated.
Definition: indiccd.h:391
defaultdevice.h
INDI::CCD::CCD_HAS_COOLER
@ CCD_HAS_COOLER
Definition: indiccd.h:129
INDI::CCD::UPLOAD_BOTH
@ UPLOAD_BOTH
Definition: indiccd.h:136
INDI::CCD::CCD_HAS_DSP
@ CCD_HAS_DSP
Definition: indiccd.h:133
INDI::CCD::WCS_TAB
static constexpr const char * WCS_TAB
Definition: indiccd.h:154
INDI::CCD::CCDRotationNP
INumberVectorProperty CCDRotationNP
Definition: indiccd.h:693
INDI::CCD::CanSubFrame
bool CanSubFrame()
Definition: indiccd.h:191
INDI::CCD::GuiderShowMarker
bool GuiderShowMarker
Definition: indiccd.h:548
indiwsserver.h
INDI::CCD::UpdateGuiderFrameType
virtual bool UpdateGuiderFrameType(CCDChip::CCD_FRAME fType)
CCD calls this function when Guide frame type is updated by the client.
Definition: indiccd.cpp:1756
INDI::CCD::primaryAperture
double primaryAperture
Definition: indiccd.h:537
INDI::CCD::HasST4Port
bool HasST4Port()
Definition: indiccd.h:215
INDI::CCD::fits_update_key_s
void fits_update_key_s(fitsfile *fptr, int type, std::string name, void *p, std::string explanation, int *status)
Definition: indiccd.cpp:2027
INDI::CCD::AutoLoop
bool AutoLoop
Definition: indiccd.h:543
INDI::CCD::CCD_CAN_BIN
@ CCD_CAN_BIN
Definition: indiccd.h:123
INDI::CCD::AbortGuideExposure
virtual bool AbortGuideExposure()
Abort ongoing exposure.
Definition: indiccd.cpp:1708
INDI::CCD::ActiveDeviceTP
ITextVectorProperty ActiveDeviceTP
ActiveDeviceTP defines 4 devices the camera driver can listen to (snoop) for properties of interest s...
Definition: indiccd.h:607
INDI::CCD::GuiderSendImage
bool GuiderSendImage
Definition: indiccd.h:546
INDI::CCD::UploadSettingsT
IText UploadSettingsT[2]
Definition: indiccd.h:653
DSP
The DSP Namespace adds signal processing to INDI drivers. Primarily written for sensors and detectors...
Definition: convolution.cpp:39
INDI::CCD::RAMP_SLOPE
@ RAMP_SLOPE
Definition: indiccd.h:632
INDI::CCD::FITS_OBSERVER
@ FITS_OBSERVER
Definition: indiccd.h:717
INDI::CCD::WorldCoordSP
ISwitchVectorProperty WorldCoordSP
Definition: indiccd.h:689
INDI::CCD::FileNameTP
ITextVectorProperty FileNameTP
FileNameTP File name of locally-saved images. By default, images are uploaded to the client but when ...
Definition: indiccd.h:647
INDI::CCD::CCD_CAN_SUBFRAME
@ CCD_CAN_SUBFRAME
Definition: indiccd.h:124
INDI::CCD::m_TemperatureCheckTimer
INDI::Timer m_TemperatureCheckTimer
Definition: indiccd.h:572
INDI::CCD::CanBin
bool CanBin()
Definition: indiccd.h:183
INDI::CCD::ISNewBLOB
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:1673
INDI::CCD::TemperatureN
INumber TemperatureN[1]
Definition: indiccd.h:624
INDI::CCD::UPLOAD_CLIENT
@ UPLOAD_CLIENT
Definition: indiccd.h:136
INDI::CCD::ISGetProperties
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:455
manager.h
INDI::CCD::FITS_OBJECT
@ FITS_OBJECT
Definition: indiccd.h:718
INDI::CCD::SetCCDCapability
void SetCCDCapability(uint32_t cap)
SetCCDCapability Set the CCD capabilities. Al fields must be initilized.
Definition: indiccd.cpp:119
INDI::CCD::CCD_HAS_WEB_SOCKET
@ CCD_HAS_WEB_SOCKET
Definition: indiccd.h:132
INDI::CCD::CCDRotationN
INumber CCDRotationN[1]
Definition: indiccd.h:692
INDI::CCD::GuideComplete
virtual void GuideComplete(INDI_EQ_AXIS axis) override
GuideComplete Signal guide pulse completion.
Definition: indiccd.cpp:3193
indiguiderinterface.h
INDI::CCD::ISSnoopDevice
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:666
INDI
Namespace to encapsulate INDI client, drivers, and mediator classes.
Definition: AlignmentSubsystemForClients.cpp:11
INDI::CCD::SendImage
bool SendImage
Definition: indiccd.h:545
INDI_EQ_AXIS
INDI_EQ_AXIS
Definition: indibasetypes.h:32
INDI::CCD::ACTIVE_FOCUSER
@ ACTIVE_FOCUSER
Definition: indiccd.h:615
INDI::CCD::UploadS
ISwitch UploadS[3]
Definition: indiccd.h:650
INDI::CCD::saveConfigItems
virtual bool saveConfigItems(FILE *fp) override
saveConfigItems Save configuration items in XML file.
Definition: indiccd.cpp:2988
INDI::CCD::UpdateCCDFrameType
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:1749
INDI::CCD::UploadSP
ISwitchVectorProperty UploadSP
Definition: indiccd.h:651
INDI::CCD::FileNameT
IText FileNameT[1]
Definition: indiccd.h:648
INDI::CCD::CanAbort
bool CanAbort()
Definition: indiccd.h:175
INDI::CCD::CCD_HAS_SHUTTER
@ CCD_HAS_SHUTTER
Definition: indiccd.h:128
INDI::CCD::GuideCCD
CCDChip GuideCCD
Definition: indiccd.h:584
INDI::CCD::ACTIVE_SKYQUALITY
@ ACTIVE_SKYQUALITY
Definition: indiccd.h:617
INDI::CCD::ISNewNumber
virtual bool ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) override
Process the client newNumber command.
Definition: indiccd.cpp:921
INDI::CCD::GetCCDCapability
uint32_t GetCCDCapability() const
GetCCDCapability returns the CCD capabilities.
Definition: indiccd.h:161
INDI::CCD::WS_SETTINGS_PORT
@ WS_SETTINGS_PORT
Definition: indiccd.h:684
INDI::CCD::TELESCOPE_PRIMARY
@ TELESCOPE_PRIMARY
Definition: indiccd.h:665
INDI::CCD::CCD_CAN_ABORT
@ CCD_CAN_ABORT
Definition: indiccd.h:125
ISState
ISState
Switch state.
Definition: indiapi.h:148
INDI::CCD::primaryFocalLength
double primaryFocalLength
Definition: indiccd.h:537
INDIWSServer
Definition: indiwsserver.h:46
INDI::CCD::StartExposure
virtual bool StartExposure(float duration)
Start exposing primary CCD chip.
Definition: indiccd.cpp:1690
INDI::StreamManagerPrivate
Definition: streammanager_p.h:48
INDI::CCD::HasCooler
bool HasCooler()
Definition: indiccd.h:223
INDI::CCD::m_TargetTemperature
double m_TargetTemperature
Definition: indiccd.h:571
INDI::CCD::RotatorAngle
double RotatorAngle
Definition: indiccd.h:557
INDI::CCD::Longitude
double Longitude
Definition: indiccd.h:566
INDI::DefaultDevice
Class to provide extended functionality for devices in addition to the functionality provided by INDI...
Definition: defaultdevice.h:118
DSP::Manager
Definition: manager.h:38
INDI::CCD::StreamManager
friend class StreamManager
Misc.
Definition: indiccd.h:744
INDI::CCD::FilterNames
std::vector< std::string > FilterNames
Definition: indiccd.h:578
INDI::CCD::Streamer
std::unique_ptr< StreamManager > Streamer
Definition: indiccd.h:581
INDI::CCD::HasDSP
bool HasDSP()
Definition: indiccd.h:264
INDI::CCD::WebSocketS
ISwitch WebSocketS[2]
Definition: indiccd.h:670
INDI::CCD::UpdateCCDFrame
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:1714
INDI::CCD::ccdBufferLock
std::mutex ccdBufferLock
Definition: indiccd.h:576
_ISwitchVectorProperty
Switch vector property descriptor.
Definition: indiapi.h:365
INDI::CCD::TELESCOPE_GUIDE
@ TELESCOPE_GUIDE
Definition: indiccd.h:666