Commit 12c3d949 authored by Jasem Mutlaq's avatar Jasem Mutlaq

+ Adding Meridian flip notifications (started, completed, failed)

+ Fixed park/unpark notifications

CCMAIL:kstars-devel@kde.org
parent 960f016e
......@@ -3096,6 +3096,8 @@ void Capture::processTelescopeNumber(INumberVectorProperty *nvp)
appendLogText(i18n("Telescope completed the meridian flip."));
KNotification::event( QLatin1String( "MeridianFlipCompleted" ) , i18n("Meridian flip is successfully completed"));
if (resumeAlignmentAfterFlip == true)
{
appendLogText(i18n("Performing post flip re-alignment..."));
......@@ -3188,6 +3190,8 @@ bool Capture::checkMeridianFlip()
appendLogText(i18n("Current hour angle %1 hours exceeds meridian flip limit of %2 hours. Auto meridian flip is initiated.", QString::number(currentHA, 'f', 2), meridianHours->value()));
meridianFlipStage = MF_INITIATED;
KNotification::event( QLatin1String( "MeridianFlipStarted" ) , i18n("Meridian flip started"));
// Suspend guiding first before commanding a meridian flip
//if (isAutoGuiding && currentCCD->getChip(ISD::CCDChip::GUIDE_CCD) == guideChip)
// emit suspendGuiding(false);
......@@ -3221,6 +3225,9 @@ void Capture::checkMeridianFlipTimeout()
if (meridianFlipStage < MF_ALIGNING)
{
appendLogText(i18n("Telescope meridian flip timed out."));
KNotification::event( QLatin1String( "MeridianFlipFailed" ) , i18n("Meridian flip failed"));
abort();
}
}
......
......@@ -27,10 +27,8 @@ Telescope::Telescope(GDInterface *iPtr) : DeviceDecorator(iPtr)
{
dType = KSTARS_TELESCOPE;
minAlt=-1;
maxAlt=-1;
IsParked=false;
EqCoordPreviousState=IPS_IDLE;
LastParkingState=IPS_IDLE;
maxAlt=-1;
EqCoordPreviousState=IPS_IDLE;
}
Telescope::~Telescope()
......@@ -95,7 +93,10 @@ void Telescope::registerProperty(INDI::Property *prop)
ISwitch *sp = IUFindSwitch(svp, "PARK");
if (sp)
{
IsParked = ( (sp->s == ISS_ON) && svp->s == IPS_OK);
if ( (sp->s == ISS_ON) && svp->s == IPS_OK)
parkStatus = PARK_PARKED;
else if ( (sp->s == ISS_OFF) && svp->s == IPS_OK)
parkStatus = PARK_UNPARKED;
}
}
}
......@@ -120,7 +121,7 @@ void Telescope::processNumber(INumberVectorProperty *nvp)
}
else if (EqCoordPreviousState == IPS_BUSY && nvp->s == IPS_OK)
{
KNotification::event( QLatin1String( "SlewComplete" ) , i18n("Mount arrived at target location"));
KNotification::event( QLatin1String( "SlewCompleted" ) , i18n("Mount arrived at target location"));
}
EqCoordPreviousState = nvp->s;
......@@ -165,23 +166,49 @@ void Telescope::processSwitch(ISwitchVectorProperty *svp)
ISwitch *sp = IUFindSwitch(svp, "PARK");
if (sp)
{
IsParked = ( (sp->s == ISS_ON) && svp->s == IPS_OK);
if (svp->s == IPS_ALERT)
{
// If alert, set park status to whatever it was opposite to. That is, if it was parking and failed
// then we set status to unparked since it did not successfully complete parking.
if (parkStatus == PARK_PARKING)
parkStatus = PARK_UNPARKED;
else if (parkStatus == PARK_UNPARKING)
parkStatus = PARK_PARKED;
KNotification::event( QLatin1String( "MountParkingFailed" ) , i18n("Mount parking failed"));
}
else if (svp->s == IPS_BUSY && sp->s == ISS_ON && parkStatus != PARK_PARKING)
{
parkStatus = PARK_PARKING;
KNotification::event( QLatin1String( "MountParking" ) , i18n("Mount parking is in progress"));
}
else if (svp->s == IPS_BUSY && sp->s == ISS_OFF && parkStatus != PARK_UNPARKING)
{
parkStatus = PARK_UNPARKING;
KNotification::event( QLatin1String( "MountUnParking" ) , i18n("Mount unparking is in progress"));
}
else if (svp->s == IPS_OK && sp->s == ISS_ON && parkStatus != PARK_PARKED)
{
parkStatus = PARK_PARKED;
KNotification::event( QLatin1String( "MountParked" ) , i18n("Mount parked"));
}
else if (svp->s == IPS_OK && sp->s == ISS_OFF && parkStatus != PARK_UNPARKED)
{
parkStatus = PARK_UNPARKED;
KNotification::event( QLatin1String( "MountUnparked" ) , i18n("Mount unparked"));
}
}
if (svp->s == IPS_ALERT)
KNotification::event( QLatin1String( "ParkingMountFailed" ) , i18n("Mount parking failed"));
else if (svp->s == IPS_BUSY && LastParkingState != IPS_BUSY)
KNotification::event( QLatin1String( "ParkingMount" ) , i18n("Mount parking is in progress"));
else if (LastParkingState == IPS_BUSY && IsParked)
KNotification::event( QLatin1String( "MountParked" ) , i18n("Mount parked"));
else if (LastParkingState == IPS_BUSY && IsParked == false)
KNotification::event( QLatin1String( "MountUnparked" ) , i18n("Mount unparked"));
LastParkingState = svp->s;
emit switchUpdated(svp);
return;
}
else if (!strcmp(svp->name, "TELESCOPE_ABORT_MOTION"))
{
if (svp->s == IPS_OK)
{
KNotification::event( QLatin1String( "MountAborted" ) , i18n("Mount motion was aborted"));
}
}
DeviceDecorator::processSwitch(svp);
}
......@@ -733,11 +760,6 @@ void Telescope::setAltLimits(double minAltitude, double maxAltitude)
maxAlt=maxAltitude;
}
bool Telescope::isParked()
{
return IsParked;
}
Telescope::TelescopeStatus Telescope::getStatus()
{
INumberVectorProperty *EqProp(NULL);
......
......@@ -34,6 +34,7 @@ public:
typedef enum { MOTION_WEST, MOTION_EAST } TelescopeMotionWE;
typedef enum { MOTION_START, MOTION_STOP } TelescopeMotionCommand;
typedef enum { MOUNT_IDLE, MOUNT_SLEWING, MOUNT_TRACKING, MOUNT_PARKING, MOUNT_PARKED, MOUNT_ERROR } TelescopeStatus;
typedef enum { PARK_UNKNOWN, PARK_PARKED, PARK_PARKING, PARK_UNPARKING, PARK_UNPARKED } ParkStatus;
void registerProperty(INDI::Property *prop);
void processSwitch(ISwitchVectorProperty *svp);
......@@ -53,7 +54,8 @@ public:
bool canSync();
bool canPark();
bool isSlewing();
bool isParked();
bool isParked() { return parkStatus == PARK_PARKED; }
ParkStatus getParkStatus() { return parkStatus; }
bool isInMotion();
TelescopeStatus getStatus();
bool doPulse(GuideDirection ra_dir, int ra_msecs, GuideDirection dec_dir, int dec_msecs );
......@@ -79,8 +81,8 @@ signals:
private:
SkyPoint currentCoord;
double minAlt,maxAlt;
bool IsParked;
IPState EqCoordPreviousState, LastParkingState;
ParkStatus parkStatus = PARK_UNKNOWN;
IPState EqCoordPreviousState;
};
......
......@@ -699,6 +699,12 @@ Comment[sv]=Stativ har nått målposition
Comment[uk]=Лафет навів телескоп на точку цілі
Comment[x-test]=xxMount arrived at target locationxx
Action=None
[Event/MountAborted]
Name=Mount Aborted
Name[x-test]=xxMount Abortedxx
Comment=Mount motion was aborted
Comment[x-test]=xxMount motion was abortedxx
Action=None
[Event/MountParking]
Name=Mount Parking
Name[ca]=Aparcament de la muntura
......@@ -916,3 +922,11 @@ Name[sv]=Videoinspelning stoppad
Name[uk]=Припинено запис відео
Name[x-test]=xxVideo Recording Stoppedxx
Action=None
[Event/MeridianFlipStarted]
Name=Meridian Flip Started
Action=None
[Event/MeridianFlipCompleted]
Name=Meridian Flip Completed
Action=None
[Event/MeridianFlipFailed]
Name=Meridian Flip Failed
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment