Instrument Neutral Distributed Interface INDI  2.0.2
indireceiver.h
Go to the documentation of this file.
1 /*******************************************************************************
2  Copyright(c) 2010, 2017 Ilia Platone, Jasem Mutlaq. All rights reserved.
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Library General Public
6  License version 2 as published by the Free Software Foundation.
7 
8  This library is distributed in the hope that it will be useful,
9  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  Library General Public License for more details.
12 
13  You should have received a copy of the GNU Library General Public License
14  along with this library; see the file COPYING.LIB. If not, write to
15  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16  Boston, MA 02110-1301, USA.
17 *******************************************************************************/
18 
19 #pragma once
20 
21 #include "indisensorinterface.h"
22 #include "dsp.h"
23 #include <fitsio.h>
24 
25 #ifdef HAVE_WEBSOCKET
26 #include "indiwsserver.h"
27 #endif
28 
29 #include <fitsio.h>
30 
31 #include <memory>
32 #include <cstring>
33 #include <chrono>
34 #include <stdint.h>
35 #include <mutex>
36 #include <thread>
37 
38 //JM 2019-01-17: Disabled until further notice
39 //#define WITH_EXPOSURE_LOOPING
40 
41 
58 namespace INDI
59 {
60 class StreamManager;
61 
62 class Receiver : public virtual SensorInterface
63 {
64  public:
65  enum
66  {
69 
70  Receiver();
71  virtual ~Receiver();
72 
73  virtual bool initProperties() override;
74  virtual bool updateProperties() override;
75  virtual void ISGetProperties(const char *dev) override;
76  virtual bool ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) override;
77  virtual bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n) override;
78  virtual bool ISNewText(const char *dev, const char *name, char *texts[], char *names[], int n) override;
79  virtual bool ISNewBLOB(const char *dev, const char *name, int sizes[], int blobsizes[], char *blobs[], char *formats[],
80  char *names[], int n) override;
81  virtual bool ISSnoopDevice(XMLEle *root) override;
82 
83  virtual bool StartIntegration(double duration) override;
84  virtual void addFITSKeywords(fitsfile *fptr, uint8_t* buf, int len) override;
85 
90  void setSampleRate(double sr);
91 
96  void setBandwidth(double bandwidth);
97 
102  void setGain(double gain);
103 
108  void setFrequency(double freq);
109 
114  inline double getBandwidth()
115  {
116  return Bandwidth;
117  }
118 
123  inline double getGain()
124  {
125  return Gain;
126  }
127 
132  inline double getFrequency()
133  {
134  return Frequency;
135  }
136 
141  inline double getSampleRate()
142  {
143  return SampleRate;
144  }
145 
150  {
151  return &ReceiverSettingsNP;
152  }
153 
157  uint32_t GetReceiverCapability() const
158  {
159  return capability;
160  }
161 
166  void SetReceiverCapability(uint32_t cap);
167 
178  virtual void setMinMaxStep(const char *property, const char *element, double min, double max, double step,
179  bool sendToClient = true) override;
180 
181  typedef enum
182  {
192 
193  private:
194  double Frequency;
195  double SampleRate;
196  double Bandwidth;
197  double Gain;
198 
199 };
200 }
Class to provide general functionality of Monodimensional Receiver.
Definition: indireceiver.h:63
void setGain(double gain)
setGain Set gain of Receiver device.
virtual bool updateProperties() override
updateProperties is called whenever there is a change in the CONNECTION status of the driver....
void setBandwidth(double bandwidth)
setBandwidth Set bandwidth of Receiver device.
INumber ReceiverSettingsN[7]
Definition: indireceiver.h:191
enum INDI::Receiver::@248 ReceiverCapability
@ SPECTROGRAPH_MAX_CAPABILITY
Definition: indireceiver.h:67
virtual bool initProperties() override
Initilize properties initial state and value. The child class must implement this function.
virtual void setMinMaxStep(const char *property, const char *element, double min, double max, double step, bool sendToClient=true) override
setMinMaxStep for a number property element
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.
virtual bool ISSnoopDevice(XMLEle *root) override
Process a snoop event from INDI server. This function is called when a snooped property is updated in...
void setFrequency(double freq)
setFrequency Set the frequency observed.
INumberVectorProperty ReceiverSettingsNP
Definition: indireceiver.h:190
double getSampleRate()
getSampleRate Get requested sample rate for the sensor in Hz.
Definition: indireceiver.h:141
INumberVectorProperty * getReceiverSettings()
Return Vector Info Property.
Definition: indireceiver.h:149
virtual bool ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) override
Process the client newNumber command.
virtual bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n) override
Process the client newSwitch command.
virtual void addFITSKeywords(fitsfile *fptr, uint8_t *buf, int len) override
Add FITS keywords to a fits file.
double getFrequency()
getFrequency Get requested integration frequency for the sensor in Hz.
Definition: indireceiver.h:132
double getBandwidth()
getBandwidth Get requested integration bandwidth for the sensor in Hz.
Definition: indireceiver.h:114
void SetReceiverCapability(uint32_t cap)
SetReceiverCapability Set the Receiver capabilities. Al fields must be initialized.
virtual ~Receiver()
virtual bool ISNewText(const char *dev, const char *name, char *texts[], char *names[], int n) override
Process the client newSwitch command.
void setSampleRate(double sr)
setSampleRate Set depth of Receiver device.
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...
virtual bool StartIntegration(double duration) override
Start integration from the Sensor device.
double getGain()
getGain Get requested integration gain for the sensor.
Definition: indireceiver.h:123
uint32_t GetReceiverCapability() const
GetReceiverCapability returns the Sensor capabilities.
Definition: indireceiver.h:157
The SensorDevice class provides functionality of a Sensor Device within a Sensor.
Class to provide video streaming and recording functionality.
double max(void)
double min(void)
ISState
Switch state.
Definition: indiapi.h:150
Namespace to encapsulate INDI client, drivers, and mediator classes.
One number descriptor.
Number vector property descriptor.
Definition: indiapi.h:319