Instrument Neutral Distributed Interface INDI  1.9.5
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 extern const char * IMAGE_SETTINGS_TAB;
52 extern const char * IMAGE_INFO_TAB;
53 extern const char * GUIDE_HEAD_TAB;
54 //extern const char * RAPIDGUIDE_TAB;
55 
56 namespace DSP
57 {
58 class Manager;
59 }
60 namespace INDI
61 {
62 
63 class StreamManager;
64 
113 {
114  public:
115  CCD();
116  virtual ~CCD();
117 
118  enum
119  {
120  CCD_CAN_BIN = 1 << 0,
121  CCD_CAN_SUBFRAME = 1 << 1,
122  CCD_CAN_ABORT = 1 << 2,
124  CCD_HAS_ST4_PORT = 1 << 4,
125  CCD_HAS_SHUTTER = 1 << 5,
126  CCD_HAS_COOLER = 1 << 6,
127  CCD_HAS_BAYER = 1 << 7,
128  CCD_HAS_STREAMING = 1 << 8,
130  CCD_HAS_DSP = 1 << 10
131  } CCDCapability;
132 
134 
135  virtual bool initProperties() override;
136  virtual bool updateProperties() override;
137  virtual void ISGetProperties(const char * dev) override;
138  virtual bool ISNewNumber(const char * dev, const char * name, double values[], char * names[], int n) override;
139  virtual bool ISNewSwitch(const char * dev, const char * name, ISState * states, char * names[], int n) override;
140  virtual bool ISNewText(const char * dev, const char * name, char * texts[], char * names[], int n) override;
141  virtual bool ISNewBLOB(const char *dev, const char *name, int sizes[], int blobsizes[], char *blobs[], char *formats[],
142  char *names[], int n) override;
143  virtual bool ISSnoopDevice(XMLEle * root) override;
144 
145  static void wsThreadHelper(void * context);
146 
150  static constexpr const char *GUIDE_CONTROL_TAB = "Guider Control";
151  static constexpr const char * WCS_TAB = "WCS";
152 
153 
154  protected:
158  uint32_t GetCCDCapability() const
159  {
160  return capability;
161  }
162 
167  void SetCCDCapability(uint32_t cap);
168 
172  bool CanAbort()
173  {
174  return capability & CCD_CAN_ABORT;
175  }
176 
180  bool CanBin()
181  {
182  return capability & CCD_CAN_BIN;
183  }
184 
188  bool CanSubFrame()
189  {
190  return capability & CCD_CAN_SUBFRAME;
191  }
192 
197  {
198  return capability & CCD_HAS_GUIDE_HEAD;
199  }
200 
204  bool HasShutter()
205  {
206  return capability & CCD_HAS_SHUTTER;
207  }
208 
212  bool HasST4Port()
213  {
214  return capability & CCD_HAS_ST4_PORT;
215  }
216 
220  bool HasCooler()
221  {
222  return capability & CCD_HAS_COOLER;
223  }
224 
228  bool HasBayer()
229  {
230  return capability & CCD_HAS_BAYER;
231  }
232 
237  {
238  if (capability & CCD_HAS_STREAMING)
239  {
240  if(Streamer.get() == nullptr)
241  {
242  Streamer.reset(new StreamManager(this));
243  Streamer->initProperties();
244  }
245  return true;
246  }
247  return false;
248  }
249 
254  {
255  return capability & CCD_HAS_WEB_SOCKET;
256  }
257 
261  bool HasDSP()
262  {
263  if (capability & CCD_HAS_DSP)
264  {
265  if(DSP.get() == nullptr)
266  {
267  DSP.reset(new DSP::Manager(this));
268  }
269  return true;
270  }
271  return false;
272  }
273 
285  virtual int SetTemperature(double temperature);
286 
293  virtual bool StartExposure(float duration);
294 
301  virtual bool ExposureComplete(CCDChip * targetChip);
302 
308  virtual bool AbortExposure();
309 
316  virtual bool StartGuideExposure(float duration);
317 
323  virtual bool AbortGuideExposure();
324 
336  virtual bool UpdateCCDFrame(int x, int y, int w, int h);
337 
349  virtual bool UpdateGuiderFrame(int x, int y, int w, int h);
350 
359  virtual bool UpdateCCDBin(int hor, int ver);
360 
369  virtual bool UpdateGuiderBin(int hor, int ver);
370 
379  virtual bool UpdateCCDFrameType(CCDChip::CCD_FRAME fType);
380 
389  {
390  INDI_UNUSED(mode);
391  return true;
392  }
393 
402  virtual bool UpdateGuiderFrameType(CCDChip::CCD_FRAME fType);
403 
413  virtual void SetCCDParams(int x, int y, int bpp, float xf, float yf);
414 
424  virtual void SetGuiderParams(int x, int y, int bpp, float xf, float yf);
425 
432  virtual IPState GuideNorth(uint32_t ms) override;
433 
440  virtual IPState GuideSouth(uint32_t ms) override;
441 
448  virtual IPState GuideEast(uint32_t ms) override;
449 
456  virtual IPState GuideWest(uint32_t ms) override;
457 
462  virtual bool StartStreaming();
463 
468  virtual bool StopStreaming();
469 
492  virtual void addFITSKeywords(fitsfile * fptr, CCDChip * targetChip);
493 
495  void fits_update_key_s(fitsfile * fptr, int type, std::string name, void * p, std::string explanation, int * status);
496 
501  virtual void activeDevicesUpdated() {}
502 
508  virtual bool saveConfigItems(FILE * fp) override;
509 
514  virtual void GuideComplete(INDI_EQ_AXIS axis) override;
515 
521  virtual void checkTemperatureTarget();
522 
530  virtual bool processFastExposure(CCDChip * targetChip);
531 
532 
533  // Epoch Position
534  double RA, Dec;
535 
536  // pier side, read from mount if available, set to -1 if not available
537  int pierSide; // West = 0, East =1. No enum available
538 
539  // J2000 Position
540  double J2000RA;
541  double J2000DE;
543 
544  // exposure information
547 
551  //bool RapidGuideEnabled;
552  //bool GuiderRapidGuideEnabled;
553 
554  bool AutoLoop;
556  bool SendImage;
560 
561  double ExposureTime;
563 
564  // Sky Quality
565  double MPSAS;
566 
567  // Rotator Angle
568  double RotatorAngle;
569 
570  // JJ ed 2019-12-10 current focuser position
572  double FocuserTemp;
573 
574  // Airmass
575  double Airmass;
576  double Latitude;
577  double Longitude;
578  double Azimuth;
579  double Altitude;
580 
581  // Temperature Control
585 
586  // Threading
587  std::mutex ccdBufferLock;
588 
589  std::vector<std::string> FilterNames;
591 
592  std::unique_ptr<StreamManager> Streamer;
593  std::unique_ptr<DSP::Manager> DSP;
596 
600 
601 
609 
617 
627 
628  // JJ ed 2019-12-10
630  enum
631  {
637  };
638 
644 
649  enum
650  {
653  };
654 
659  IText BayerT[3] {};
660 
668 
671 
674  enum
675  {
678  };
679 
682  enum
683  {
686  };
687 
688  // Websocket Support
691  enum
692  {
695  };
696 
697 
698  // Websocket Settings
701  enum
702  {
704  };
705 
706  // WCS
709 
710  // WCS CCD Rotation
713 
714  // Fast Exposure Toggle
717 
718  // Fast Exposure Frame Count
721  double m_UploadTime = { 0 };
722  std::chrono::system_clock::time_point FastExposureToggleStartup;
723 
724  // FITS Header
727  enum
728  {
731  };
732 
733  private:
734  uint32_t capability;
735 
736  bool m_ValidCCDRotation;
737  int m_ConfigFastExposureIndex {INDI_DISABLED};
738 
742  bool uploadFile(CCDChip * targetChip, const void * fitsData, size_t totalBytes, bool sendImage, bool saveImage);
743  void getMinMax(double * min, double * max, CCDChip * targetChip);
744  int getFileIndex(const char * dir, const char * prefix, const char * ext);
745  bool ExposureCompletePrivate(CCDChip * targetChip);
746 
747  // Threading for Websocket
748 #ifdef HAVE_WEBSOCKET
749  std::thread wsThread;
750  void wsThreadEntry();
751  INDIWSServer wsServer;
752 #endif
753 
757  friend class StreamManager;
758  friend class StreamManagerPrivate;
759 };
760 }
INDI::CCD::WorldCoordS
ISwitch WorldCoordS[2]
Definition: indiccd.h:707
INDI::CCD::StartStreaming
virtual bool StartStreaming()
StartStreaming Start live video streaming.
Definition: indiccd.cpp:2710
INDI::CCD::FastExposureToggleStartup
std::chrono::system_clock::time_point FastExposureToggleStartup
Definition: indiccd.h:722
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:1306
INDI::CCD::CCD_HAS_SHUTTER
@ CCD_HAS_SHUTTER
Definition: indiccd.h:125
indipropertynumber.h
INDI::CCD::GuideWest
virtual IPState GuideWest(uint32_t ms) override
Guide westward for ms milliseconds.
Definition: indiccd.cpp:2562
indiccdchip.h
INDI::CCD::UploadSettingsTP
ITextVectorProperty UploadSettingsTP
Definition: indiccd.h:673
INDI::CCD::CCD_CAN_BIN
@ CCD_CAN_BIN
Definition: indiccd.h:120
INDI::CCD::pierSide
int pierSide
Definition: indiccd.h:537
INDI::CCD::HasBayer
bool HasBayer()
Definition: indiccd.h:228
INDI::CCD::ACTIVE_TELESCOPE
@ ACTIVE_TELESCOPE
Definition: indiccd.h:632
INDI::CCD::~CCD
virtual ~CCD()
Definition: indiccd.cpp:119
INDI::CCD::TemperatureRampNP
INDI::PropertyNumber TemperatureRampNP
Temperature Ramp in C/Min with configurable threshold.
Definition: indiccd.h:648
INDI::CCD::RA
double RA
Definition: indiccd.h:534
INDI::CCD::CCD_HAS_BAYER
@ CCD_HAS_BAYER
Definition: indiccd.h:127
INDI::CCD::RAMP_SLOPE
@ RAMP_SLOPE
Definition: indiccd.h:651
INDI::CCD::WebSocketSettingsN
INumber WebSocketSettingsN[1]
Definition: indiccd.h:699
INDI::CCD::ShowMarker
bool ShowMarker
Definition: indiccd.h:558
INDI::CCD::FocuserPos
long FocuserPos
Definition: indiccd.h:571
IPState
IPState
Property state.
Definition: indiapi.h:158
INDI::CCD::SetTemperature
virtual int SetTemperature(double temperature)
Set CCD temperature.
Definition: indiccd.cpp:1695
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:1733
INDI::CCD::GuideEast
virtual IPState GuideEast(uint32_t ms) override
Guide easward for ms milliseconds.
Definition: indiccd.cpp:2555
min
double min(void)
INDI::CCD::J2000RA
double J2000RA
Definition: indiccd.h:540
ISwitch
One switch descriptor.
INDI::CCD::HasGuideHead
bool HasGuideHead()
Definition: indiccd.h:196
INDI::CCD::HasWebSocket
bool HasWebSocket()
Definition: indiccd.h:253
INDI::CCD::GUIDE_CONTROL_TAB
static constexpr const char * GUIDE_CONTROL_TAB
Group Names.
Definition: indiccd.h:150
INDI::CCD::FITS_OBJECT
@ FITS_OBJECT
Definition: indiccd.h:730
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:2081
INDI::CCD::RAMP_THRESHOLD
@ RAMP_THRESHOLD
Definition: indiccd.h:652
INDI::CCD::guiderFocalLength
double guiderFocalLength
Definition: indiccd.h:548
INDI::CCD::FITSHeaderTP
ITextVectorProperty FITSHeaderTP
Definition: indiccd.h:726
INumber
One number descriptor.
INDI::CCD::FocuserTemp
double FocuserTemp
Definition: indiccd.h:572
inditimer.h
MAXINDINAME
#define MAXINDINAME
Definition: indiapi.h:190
INDI::CCD::CCD_CAN_ABORT
@ CCD_CAN_ABORT
Definition: indiccd.h:122
INDI::CCD::WebSocketSettingsNP
INumberVectorProperty WebSocketSettingsNP
Definition: indiccd.h:700
INDI::CCD::TELESCOPE_PRIMARY
@ TELESCOPE_PRIMARY
Definition: indiccd.h:684
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:1754
INDI::CCD::m_TemperatureElapsedTimer
INDI::ElapsedTimer m_TemperatureElapsedTimer
Definition: indiccd.h:584
INDI::CCD::FITSHeaderT
IText FITSHeaderT[2]
Definition: indiccd.h:725
INDI::CCD::GuiderAutoLoop
bool GuiderAutoLoop
Definition: indiccd.h:555
INDI::CCD::TELESCOPE_GUIDE
@ TELESCOPE_GUIDE
Definition: indiccd.h:685
INDI::StreamManager
Definition: streammanager.h:96
INDI::CCD::GuiderExposureTime
double GuiderExposureTime
Definition: indiccd.h:562
INDI::CCD::Airmass
double Airmass
Definition: indiccd.h:575
INDI::CCD::GuideNorth
virtual IPState GuideNorth(uint32_t ms) override
Guide northward for ms milliseconds.
Definition: indiccd.cpp:2541
INDI_UNUSED
#define INDI_UNUSED(x)
Definition: indidevapi.h:799
INDI::CCD::J2000Valid
bool J2000Valid
Definition: indiccd.h:542
INDI::CCD::ACTIVE_ROTATOR
@ ACTIVE_ROTATOR
Definition: indiccd.h:633
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:2482
INDI::CCD::Latitude
double Latitude
Definition: indiccd.h:576
INDI::Timer
The Timer class provides repetitive and single-shot timers.
Definition: inditimer.h:40
INDI::CCD::J2000DE
double J2000DE
Definition: indiccd.h:541
INDI::CCD::InGuideExposure
bool InGuideExposure
Definition: indiccd.h:550
INDI::CCD::WEBSOCKET_DISABLED
@ WEBSOCKET_DISABLED
Definition: indiccd.h:694
GUIDE_HEAD_TAB
const char * GUIDE_HEAD_TAB
Definition: indiccd.cpp:57
INDI::CCD::TelescopeTypeS
ISwitch TelescopeTypeS[2]
Definition: indiccd.h:680
INDI::CCD::exposureDuration
double exposureDuration
Definition: indiccd.h:546
INDI::CCD::wsThreadHelper
static void wsThreadHelper(void *context)
INDI::CCD::HasStreaming
bool HasStreaming()
Definition: indiccd.h:236
INDI::CCD::CurrentFilterSlot
int CurrentFilterSlot
Definition: indiccd.h:590
IMAGE_INFO_TAB
const char * IMAGE_INFO_TAB
Definition: indiccd.cpp:56
INDI::CCD::PrimaryCCD
CCDChip PrimaryCCD
Definition: indiccd.h:594
StreamManager
Class to provide video streaming and recording functionality.
INDI::CCD::CCD_HAS_STREAMING
@ CCD_HAS_STREAMING
Definition: indiccd.h:128
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:1775
INDI::CCD::WebSocketSP
ISwitchVectorProperty WebSocketSP
Definition: indiccd.h:690
INDI::CCD::TelescopeTypeSP
ISwitchVectorProperty TelescopeTypeSP
Definition: indiccd.h:681
INDI::CCD::BayerTP
ITextVectorProperty BayerTP
BayerTP Bayer pattern offset and type.
Definition: indiccd.h:658
INDI::CCD::StopStreaming
virtual bool StopStreaming()
StopStreaming Stop live video streaming.
Definition: indiccd.cpp:2716
max
double max(void)
INDI::CCD::guiderAperture
double guiderAperture
Definition: indiccd.h:548
INDI::CCD::Altitude
double Altitude
Definition: indiccd.h:579
INDI::CCD::BayerT
IText BayerT[3]
Definition: indiccd.h:659
_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:112
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
INDI::CCD::CCDCapability
enum INDI::CCD::@169 CCDCapability
type
__le16 type
Definition: pwc-ioctl.h:2
INDI::CCD::CCD_HAS_DSP
@ CCD_HAS_DSP
Definition: indiccd.h:130
_INumberVectorProperty
Number vector property descriptor.
Definition: indiapi.h:317
INDI::CCD::CCD_CAN_SUBFRAME
@ CCD_CAN_SUBFRAME
Definition: indiccd.h:121
INDI::CCD::StartGuideExposure
virtual bool StartGuideExposure(float duration)
Start exposing guide CCD chip.
Definition: indiccd.cpp:1708
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:838
INDI::CCD::Dec
double Dec
Definition: indiccd.h:534
INDI::CCD::CCD_UPLOAD_MODE
CCD_UPLOAD_MODE
Definition: indiccd.h:133
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:2492
IMAGE_SETTINGS_TAB
const char * IMAGE_SETTINGS_TAB
Definition: indiccd.cpp:55
IText
One text descriptor.
INDI::CCD::EqN
INumber EqN[2]
Definition: indiccd.h:608
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:1739
streammanager.h
INDI::CCD::HasShutter
bool HasShutter()
Definition: indiccd.h:204
INDI::CCD::initProperties
virtual bool initProperties() override
Initilize properties initial state and value. The child class must implement this function.
Definition: indiccd.cpp:140
INDI::CCD::ACTIVE_SKYQUALITY
@ ACTIVE_SKYQUALITY
Definition: indiccd.h:636
INDI::CCD::checkTemperatureTarget
virtual void checkTemperatureTarget()
checkTemperatureTarget Checks the current temperature against target temperature and calculates the n...
Definition: indiccd.cpp:2737
INDI::PropertyNumber
Definition: indipropertynumber.h:27
INDI::CCD::EqNP
INumberVectorProperty EqNP
Properties.
Definition: indiccd.h:607
INDI::GuiderInterface
Definition: indiguiderinterface.h:50
INDI::CCD::DSP
std::unique_ptr< DSP::Manager > DSP
Definition: indiccd.h:593
INDI::CCD::FastExposureCountNP
INumberVectorProperty FastExposureCountNP
Definition: indiccd.h:720
INDI::CCD::UPLOAD_DIR
@ UPLOAD_DIR
Definition: indiccd.h:676
INDI::CCD::MPSAS
double MPSAS
Definition: indiccd.h:565
indielapsedtimer.h
INDI::CCD::ActiveDeviceT
IText ActiveDeviceT[5]
Definition: indiccd.h:629
INDI::ElapsedTimer
The ElapsedTimer class provides a fast way to calculate elapsed times.
Definition: indielapsedtimer.h:35
INDI::CCD::UPLOAD_PREFIX
@ UPLOAD_PREFIX
Definition: indiccd.h:677
INDI::CCD::AbortExposure
virtual bool AbortExposure()
Abort ongoing exposure.
Definition: indiccd.cpp:1714
INDI::CCD::Azimuth
double Azimuth
Definition: indiccd.h:578
INDI::CCD::GuideSouth
virtual IPState GuideSouth(uint32_t ms) override
Guide southward for ms milliseconds.
Definition: indiccd.cpp:2548
INDI::CCD::TemperatureNP
INumberVectorProperty TemperatureNP
TemperatureNP Camera Temperature in Celcius.
Definition: indiccd.h:642
INDI::CCD::ExposureTime
double ExposureTime
Definition: indiccd.h:561
INDI::CCD::UPLOAD_LOCAL
@ UPLOAD_LOCAL
Definition: indiccd.h:133
xml_ele_
Definition: lilxml.c:105
INDI::CCD::InExposure
bool InExposure
Definition: indiccd.h:549
INDI::CCD::activeDevicesUpdated
virtual void activeDevicesUpdated()
activeDevicesUpdated Inform children that ActiveDevices property was updated so they can snoop on the...
Definition: indiccd.h:501
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:485
INDI::CCD::UpdateCCDUploadMode
virtual bool UpdateCCDUploadMode(CCD_UPLOAD_MODE mode)
CCD calls this function when client upload mode switch is updated.
Definition: indiccd.h:388
defaultdevice.h
INDI::CCD::UPLOAD_BOTH
@ UPLOAD_BOTH
Definition: indiccd.h:133
INDI::CCD::WCS_TAB
static constexpr const char * WCS_TAB
Definition: indiccd.h:151
INDI::CCD::CCDRotationNP
INumberVectorProperty CCDRotationNP
Definition: indiccd.h:712
INDI::CCD::FastExposureToggleSP
ISwitchVectorProperty FastExposureToggleSP
Definition: indiccd.h:716
INDI::CCD::CanSubFrame
bool CanSubFrame()
Definition: indiccd.h:188
INDI::CCD::GuiderShowMarker
bool GuiderShowMarker
Definition: indiccd.h:559
INDI::CCD::CCD_HAS_WEB_SOCKET
@ CCD_HAS_WEB_SOCKET
Definition: indiccd.h:129
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:1768
INDI::CCD::primaryAperture
double primaryAperture
Definition: indiccd.h:548
INDI::CCD::HasST4Port
bool HasST4Port()
Definition: indiccd.h:212
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:2074
INDI::CCD::AutoLoop
bool AutoLoop
Definition: indiccd.h:554
INDI::CCD::AbortGuideExposure
virtual bool AbortGuideExposure()
Abort ongoing exposure.
Definition: indiccd.cpp:1720
INDI::CCD::ActiveDeviceTP
ITextVectorProperty ActiveDeviceTP
ActiveDeviceTP defines 4 devices the camera driver can listen to (snoop) for properties of interest s...
Definition: indiccd.h:626
INDI::CCD::GuiderSendImage
bool GuiderSendImage
Definition: indiccd.h:557
INDI::CCD::UploadSettingsT
IText UploadSettingsT[2]
Definition: indiccd.h:672
DSP
The DSP Namespace adds signal processing to INDI drivers. Primarily written for sensors and detectors...
Definition: convolution.cpp:39
INDI::CCD::FITS_OBSERVER
@ FITS_OBSERVER
Definition: indiccd.h:729
INDI::CCD::WorldCoordSP
ISwitchVectorProperty WorldCoordSP
Definition: indiccd.h:708
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:666
INDI::CCD::WS_SETTINGS_PORT
@ WS_SETTINGS_PORT
Definition: indiccd.h:703
INDI::CCD::m_TemperatureCheckTimer
INDI::Timer m_TemperatureCheckTimer
Definition: indiccd.h:583
INDI::CCD::CanBin
bool CanBin()
Definition: indiccd.h:180
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:1685
INDI::CCD::TemperatureN
INumber TemperatureN[1]
Definition: indiccd.h:643
INDI::CCD::UPLOAD_CLIENT
@ UPLOAD_CLIENT
Definition: indiccd.h:133
name
const char * name
Definition: indiserver.c:116
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:471
manager.h
INDI::CCD::processFastExposure
virtual bool processFastExposure(CCDChip *targetChip)
processFastExposure After an exposure is complete, check if fast exposure was enabled....
Definition: indiccd.cpp:2415
INDI::CCD::m_UploadTime
double m_UploadTime
Definition: indiccd.h:721
INDI::CCD::SetCCDCapability
void SetCCDCapability(uint32_t cap)
SetCCDCapability Set the CCD capabilities. Al fields must be initilized.
Definition: indiccd.cpp:126
INDI::CCD::J2000EqNP
INumberVectorProperty J2000EqNP
J200EqNP Snoop property to read the equatorial J2000 coordinates of the mount. ActiveDeviceTP defines...
Definition: indiccd.h:615
INDI::CCD::FastExposureToggleS
ISwitch FastExposureToggleS[2]
Definition: indiccd.h:715
INDI::CCD::CCDRotationN
INumber CCDRotationN[1]
Definition: indiccd.h:711
INDI::CCD::GuideComplete
virtual void GuideComplete(INDI_EQ_AXIS axis) override
GuideComplete Signal guide pulse completion.
Definition: indiccd.cpp:2705
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:678
INDI
Namespace to encapsulate INDI client, drivers, and mediator classes.
Definition: AlignmentSubsystemForClients.cpp:11
INDI::CCD::SendImage
bool SendImage
Definition: indiccd.h:556
INDI_EQ_AXIS
INDI_EQ_AXIS
Definition: indibasetypes.h:32
INDI::CCD::UploadS
ISwitch UploadS[3]
Definition: indiccd.h:669
INDI::CCD::saveConfigItems
virtual bool saveConfigItems(FILE *fp) override
saveConfigItems Save configuration items in XML file.
Definition: indiccd.cpp:2502
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:1761
INDI::CCD::UploadSP
ISwitchVectorProperty UploadSP
Definition: indiccd.h:670
INDI::CCD::FileNameT
IText FileNameT[1]
Definition: indiccd.h:667
INDI::CCD::CanAbort
bool CanAbort()
Definition: indiccd.h:172
INDI::CCD::CCD_HAS_GUIDE_HEAD
@ CCD_HAS_GUIDE_HEAD
Definition: indiccd.h:123
INDI::CCD::GuideCCD
CCDChip GuideCCD
Definition: indiccd.h:595
INDI::CCD::WEBSOCKET_ENABLED
@ WEBSOCKET_ENABLED
Definition: indiccd.h:693
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:948
INDI::CCD::GetCCDCapability
uint32_t GetCCDCapability() const
GetCCDCapability returns the CCD capabilities.
Definition: indiccd.h:158
INDI::CCD::exposureStartTime
char exposureStartTime[MAXINDINAME]
Definition: indiccd.h:545
INDI::CCD::ACTIVE_FOCUSER
@ ACTIVE_FOCUSER
Definition: indiccd.h:634
ISState
ISState
Switch state.
Definition: indiapi.h:148
INDI::CCD::primaryFocalLength
double primaryFocalLength
Definition: indiccd.h:548
INDIWSServer
Definition: indiwsserver.h:46
INDI::CCD::StartExposure
virtual bool StartExposure(float duration)
Start exposing primary CCD chip.
Definition: indiccd.cpp:1702
INDI::StreamManagerPrivate
Definition: streammanager_p.h:48
INDI::CCD::HasCooler
bool HasCooler()
Definition: indiccd.h:220
INDI::CCD::m_TargetTemperature
double m_TargetTemperature
Definition: indiccd.h:582
INDI::CCD::RotatorAngle
double RotatorAngle
Definition: indiccd.h:568
INDI::CCD::Longitude
double Longitude
Definition: indiccd.h:577
INDI::CCD::ACTIVE_FILTER
@ ACTIVE_FILTER
Definition: indiccd.h:635
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:757
INDI::CCD::J2000EqN
INumber J2000EqN[2]
Definition: indiccd.h:616
INDI::CCD::FastExposureCountN
INumber FastExposureCountN[1]
Definition: indiccd.h:719
INDI::CCD::FilterNames
std::vector< std::string > FilterNames
Definition: indiccd.h:589
INDI::CCD::Streamer
std::unique_ptr< StreamManager > Streamer
Definition: indiccd.h:592
INDI::CCD::HasDSP
bool HasDSP()
Definition: indiccd.h:261
INDI::CCD::WebSocketS
ISwitch WebSocketS[2]
Definition: indiccd.h:689
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:1726
INDI::CCD::CCD_HAS_COOLER
@ CCD_HAS_COOLER
Definition: indiccd.h:126
INDI::CCD::ccdBufferLock
std::mutex ccdBufferLock
Definition: indiccd.h:587
_ISwitchVectorProperty
Switch vector property descriptor.
Definition: indiapi.h:365
INDI::CCD::CCD_HAS_ST4_PORT
@ CCD_HAS_ST4_PORT
Definition: indiccd.h:124
INDI::BaseDevice::INDI_DISABLED
@ INDI_DISABLED
Definition: basedevice.h:65