Skip to content

Commit

Permalink
Remove temperature ramp since it is taken care of by INDI::CCD class.…
Browse files Browse the repository at this point in the history
… Could fix #425
  • Loading branch information
knro committed Jul 14, 2021
1 parent 62ebc40 commit 292d550
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 114 deletions.
2 changes: 1 addition & 1 deletion indi-mi/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ find_package(Threads REQUIRED)
find_package(CFITSIO REQUIRED)

set(INDI_MI_VERSION_MAJOR 1)
set(INDI_MI_VERSION_MINOR 7)
set(INDI_MI_VERSION_MINOR 8)

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/indi_miccd.xml.cmake ${CMAKE_CURRENT_BINARY_DIR}/indi_miccd.xml)
Expand Down
32 changes: 1 addition & 31 deletions indi-mi/mi_ccd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,11 +149,6 @@ bool MICCD::initProperties()
FilterSlotN[0].min = 1;
FilterSlotN[0].max = numFilters;

// Temp ram
IUFillNumber(&TemperatureRampN[0], "TEMP_RAMP", "Max. dT (C/min)", "%2.0f", 0, 30, 1, 2);
IUFillNumberVector(&TemperatureRampNP, TemperatureRampN, 1, getDeviceName(), "CCD_TEMP_RAMP", "Temp. Ramp",
MAIN_CONTROL_TAB, IP_WO, 60, IPS_IDLE);

IUFillSwitch(&CoolerS[0], "COOLER_ON", "ON", ISS_ON);
IUFillSwitch(&CoolerS[1], "COOLER_OFF", "OFF", ISS_OFF);
IUFillSwitchVector(&CoolerSP, CoolerS, 2, getDeviceName(), "CCD_COOLER", "Cooler", MAIN_CONTROL_TAB, IP_WO,
Expand Down Expand Up @@ -214,7 +209,6 @@ void MICCD::ISGetProperties(const char *dev)
{
if (HasCooler())
{
defineProperty(&TemperatureRampNP);
defineProperty(&CoolerSP);
defineProperty(&CoolerNP);
}
Expand Down Expand Up @@ -249,7 +243,6 @@ bool MICCD::updateProperties()
{
if (HasCooler())
{
defineProperty(&TemperatureRampNP);
defineProperty(&CoolerSP);
defineProperty(&CoolerNP);
temperatureID = IEAddTimer(getCurrentPollingPeriod(), MICCD::updateTemperatureHelper, this);
Expand Down Expand Up @@ -284,7 +277,6 @@ bool MICCD::updateProperties()
{
if (HasCooler())
{
deleteProperty(TemperatureRampNP.name);
deleteProperty(CoolerSP.name);
deleteProperty(CoolerNP.name);
RemoveTimer(temperatureID);
Expand Down Expand Up @@ -779,8 +771,7 @@ bool MICCD::ISNewSwitch(const char *dev, const char *name, ISState *states, char
bool on = !IUFindOnSwitchIndex(&CoolerSP);
double temp = on ? TemperatureRequest : TEMP_COOLER_OFF;

if (gxccd_set_temperature_ramp(cameraHandle, TemperatureRampN[0].value) < 0 ||
gxccd_set_temperature(cameraHandle, temp) < 0)
if (gxccd_set_temperature(cameraHandle, temp) < 0)
{
char errorStr[MAX_ERROR_LEN];
gxccd_get_last_error(cameraHandle, errorStr, sizeof(errorStr));
Expand Down Expand Up @@ -861,26 +852,6 @@ bool MICCD::ISNewNumber(const char *dev, const char *name, double values[], char
return true;
}

if (!strcmp(name, TemperatureRampNP.name))
{
IUUpdateNumber(&TemperatureRampNP, values, names, n);

if (!isSimulation() && gxccd_set_temperature_ramp(cameraHandle, TemperatureRampN[0].value) < 0)
{
char errorStr[MAX_ERROR_LEN];
gxccd_get_last_error(cameraHandle, errorStr, sizeof(errorStr));
LOGF_ERROR("Setting temp. ramp failed: %s.", errorStr);
TemperatureRampNP.s = IPS_ALERT;
}
else
{
TemperatureRampNP.s = IPS_OK;
}

IDSetNumber(&TemperatureRampNP, nullptr);
return true;
}

if (!strcmp(name, PreflashNP.name))
{
IUUpdateNumber(&PreflashNP, values, names, n);
Expand Down Expand Up @@ -1000,7 +971,6 @@ bool MICCD::saveConfigItems(FILE *fp)
{
INDI::CCD::saveConfigItems(fp);

IUSaveConfigNumber(fp, &TemperatureRampNP);
IUSaveConfigSwitch(fp, &ReadModeSP);

if (numFilters > 0)
Expand Down
153 changes: 71 additions & 82 deletions indi-mi/mi_ccd.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,114 +28,103 @@

class MICCD : public INDI::CCD, public INDI::FilterInterface
{
public:
MICCD(int cameraId, bool eth = false);
virtual ~MICCD();
public:
MICCD(int cameraId, bool eth = false);
virtual ~MICCD();

virtual const char *getDefaultName() override;
virtual const char *getDefaultName() override;

virtual bool initProperties() override;
virtual void ISGetProperties(const char *dev) override;
virtual bool updateProperties() override;
virtual bool initProperties() override;
virtual void ISGetProperties(const char *dev) override;
virtual bool updateProperties() override;

virtual bool Connect() override;
virtual bool Disconnect() override;
virtual bool Connect() override;
virtual bool Disconnect() override;

virtual int SetTemperature(double temperature) override;
virtual bool StartExposure(float duration) override;
virtual bool AbortExposure() override;
virtual int SetTemperature(double temperature) override;
virtual bool StartExposure(float duration) override;
virtual bool AbortExposure() override;

virtual IPState GuideNorth(uint32_t ms) override;
virtual IPState GuideSouth(uint32_t ms) override;
virtual IPState GuideEast(uint32_t ms) override;
virtual IPState GuideWest(uint32_t ms) override;
virtual IPState GuideNorth(uint32_t ms) override;
virtual IPState GuideSouth(uint32_t ms) override;
virtual IPState GuideEast(uint32_t ms) override;
virtual IPState GuideWest(uint32_t ms) override;

virtual bool ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) override;
virtual bool ISNewText(const char *dev, const char *name, char *texts[], char *names[], int num) override;
virtual bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n) override;
virtual bool ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) override;
virtual bool ISNewText(const char *dev, const char *name, char *texts[], char *names[], int num) override;
virtual bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n) override;

protected:
// Misc.
virtual void TimerHit() override;
virtual bool saveConfigItems(FILE *fp) override;
protected:
// Misc.
virtual void TimerHit() override;
virtual bool saveConfigItems(FILE *fp) override;

// CCD
virtual bool UpdateCCDFrame(int x, int y, int w, int h) override;
virtual bool UpdateCCDBin(int binx, int biny) override;
// CCD
virtual bool UpdateCCDFrame(int x, int y, int w, int h) override;
virtual bool UpdateCCDBin(int binx, int biny) override;

// Filter Wheel CFW
virtual int QueryFilter() override;
virtual bool SelectFilter(int position) override;
// Filter Wheel CFW
virtual int QueryFilter() override;
virtual bool SelectFilter(int position) override;

INumber FanN[1];
INumberVectorProperty FanNP;
INumber FanN[1];
INumberVectorProperty FanNP;

INumber WindowHeatingN[1];
INumberVectorProperty WindowHeatingNP;
INumber WindowHeatingN[1];
INumberVectorProperty WindowHeatingNP;

ISwitch CoolerS[2];
ISwitchVectorProperty CoolerSP;
ISwitch CoolerS[2];
ISwitchVectorProperty CoolerSP;

INumber CoolerN[1];
INumberVectorProperty CoolerNP;
INumber CoolerN[1];
INumberVectorProperty CoolerNP;

INumber TemperatureRampN[1];
INumberVectorProperty TemperatureRampNP;
INumber GainN[1];
INumberVectorProperty GainNP;

INumber GainN[1];
INumberVectorProperty GainNP;
ISwitch ReadModeS[4];
ISwitchVectorProperty ReadModeSP;

ISwitch ReadModeS[4];
ISwitchVectorProperty ReadModeSP;
INumber PreflashN[2];
INumberVectorProperty PreflashNP;

INumber PreflashN[2];
INumberVectorProperty PreflashNP;
private:
char name[MAXINDIDEVICE];

private:
char name[MAXINDIDEVICE];
int cameraId;
camera_t *cameraHandle;
bool isEth;

int cameraId;
camera_t *cameraHandle;
bool isEth;
bool hasGain;
bool useShutter;

bool hasGain;
bool useShutter;
int numReadModes;
int numFilters;
float minExpTime;
int maxFanValue;
int maxHeatingValue;
int maxBinX;
int maxBinY;
int maxGainValue;

int numReadModes;
int numFilters;
float minExpTime;
int maxFanValue;
int maxHeatingValue;
int maxBinX;
int maxBinY;
int maxGainValue;
int temperatureID;
int timerID;

int temperatureID;
int timerID;
bool downloading;

bool downloading;
bool canDoPreflash;

bool canDoPreflash;
INDI::CCDChip::CCD_FRAME imageFrameType;

INDI::CCDChip::CCD_FRAME imageFrameType;
float TemperatureRequest;
float ExposureRequest;
struct timeval ExpStart;

float TemperatureRequest;
float ExposureRequest;
struct timeval ExpStart;
bool setupParams();

bool setupParams();
float calcTimeLeft();
int grabImage();

float calcTimeLeft();
int grabImage();

void updateTemperature();
static void updateTemperatureHelper(void *);

friend void ::ISGetProperties(const char *dev);
friend void ::ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int num);
friend void ::ISNewText(const char *dev, const char *name, char *texts[], char *names[], int num);
friend void ::ISNewNumber(const char *dev, const char *name, double values[], char *names[], int num);
friend void ::ISNewBLOB(const char *dev, const char *name, int sizes[], int blobsizes[], char *blobs[],
char *formats[], char *names[], int n);
friend void ::ISSnoopDevice(XMLEle *root);
void updateTemperature();
static void updateTemperatureHelper(void *);
};

0 comments on commit 292d550

Please sign in to comment.