You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
3.8 KiB
155 lines
3.8 KiB
/*
|
|
LX200 Autostar
|
|
Copyright (C) 2003 Jasem Mutlaq (mutlaqja@ikarustech.com)
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with this library; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
|
|
#include "lx200autostar.h"
|
|
#include "lx200driver.h"
|
|
|
|
#define FirmwareGroup "Firmware data"
|
|
|
|
|
|
extern LX200Generic *telescope;
|
|
extern int MaxReticleFlashRate;
|
|
extern ITextVectorProperty Time;
|
|
extern INumberVectorProperty SDTime;
|
|
extern INumberVectorProperty eqNum;
|
|
extern ISwitchVectorProperty ParkSP;
|
|
extern ISwitchVectorProperty PowerSP;
|
|
|
|
static IText VersionT[] ={{ "Date", "", 0, 0, 0, 0} ,
|
|
{ "Time", "", 0, 0, 0, 0} ,
|
|
{ "Number", "", 0, 0, 0 ,0} ,
|
|
{ "Full", "", 0, 0, 0, 0} ,
|
|
{ "Name", "" ,0 ,0 ,0 ,0}};
|
|
|
|
static ITextVectorProperty VersionInfo = {mydev, "Firmware Info", "", FirmwareGroup, IP_RO, 0, IPS_IDLE, VersionT, NARRAY(VersionT), "" ,0};
|
|
|
|
void changeLX200AutostarDeviceName(const char *newName)
|
|
{
|
|
strcpy(VersionInfo.device, newName);
|
|
}
|
|
|
|
LX200Autostar::LX200Autostar() : LX200Generic()
|
|
{
|
|
|
|
//for (int i=0; i < 5; i++)
|
|
//strcpy(VersionInfo.t[i].text, "");
|
|
|
|
}
|
|
|
|
|
|
void LX200Autostar::ISGetProperties (const char *dev)
|
|
{
|
|
|
|
if (dev && strcmp (thisDevice, dev))
|
|
return;
|
|
|
|
LX200Generic::ISGetProperties(dev);
|
|
|
|
IDDefText (&VersionInfo, NULL);
|
|
|
|
}
|
|
|
|
void LX200Autostar::ISNewText (const char *dev, const char *name, char *texts[], char *names[], int n)
|
|
{
|
|
// ignore if not ours //
|
|
if (strcmp (dev, thisDevice))
|
|
return;
|
|
|
|
// suppress warning
|
|
n=n;
|
|
|
|
LX200Generic::ISNewText (dev, name, texts, names, n);
|
|
|
|
}
|
|
|
|
|
|
void LX200Autostar::ISNewNumber (const char *dev, const char *name, double values[], char *names[], int n)
|
|
{
|
|
LX200Generic::ISNewNumber (dev, name, values, names, n);
|
|
}
|
|
|
|
void LX200Autostar::ISNewSwitch (const char *dev, const char *name, ISState *states, char *names[], int n)
|
|
{
|
|
|
|
if (!strcmp(name, ParkSP.name))
|
|
{
|
|
if (checkPower(&ParkSP))
|
|
return;
|
|
|
|
ParkSP.s = IPS_IDLE;
|
|
|
|
if (eqNum.s == IPS_BUSY)
|
|
{
|
|
abortSlew();
|
|
|
|
// sleep for 200 mseconds
|
|
usleep(200000);
|
|
}
|
|
|
|
slewToPark();
|
|
|
|
ParkSP.s = IPS_OK;
|
|
eqNum.s = IPS_IDLE;
|
|
PowerSP.s = IPS_IDLE;
|
|
PowerSP.sp[0].s = ISS_OFF;
|
|
PowerSP.sp[1].s = ISS_ON;
|
|
IDSetNumber(&eqNum, NULL);
|
|
IDSetSwitch(&ParkSP, "The telescope is slewing to park position. Turn off the telescope after park is complete. Disconnecting...");
|
|
IDSetSwitch(&PowerSP, NULL);
|
|
return;
|
|
}
|
|
|
|
LX200Generic::ISNewSwitch (dev, name, states, names, n);
|
|
|
|
}
|
|
|
|
void LX200Autostar::ISPoll ()
|
|
{
|
|
|
|
LX200Generic::ISPoll();
|
|
|
|
}
|
|
|
|
void LX200Autostar::getBasicData()
|
|
{
|
|
|
|
VersionInfo.tp[0].text = new char[64];
|
|
getVersionDate(VersionInfo.tp[0].text);
|
|
VersionInfo.tp[1].text = new char[64];
|
|
getVersionTime(VersionInfo.tp[1].text);
|
|
VersionInfo.tp[2].text = new char[64];
|
|
getVersionNumber(VersionInfo.tp[2].text);
|
|
VersionInfo.tp[3].text = new char[128];
|
|
getFullVersion(VersionInfo.tp[3].text);
|
|
VersionInfo.tp[4].text = new char[128];
|
|
getProductName(VersionInfo.tp[4].text);
|
|
|
|
IDSetText(&VersionInfo, NULL);
|
|
|
|
// process parent
|
|
LX200Generic::getBasicData();
|
|
|
|
}
|