[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kstars/ekoslive] kstars/ekos: Initial support for profile control
From: Jasem Mutlaq <null () kde ! org>
Date: 2018-06-05 22:44:55
Message-ID: E1fQKhD-0003KE-Pb () code ! kde ! org
[Download RAW message or body]
Git commit dbb941945b0e5274aab320d5e3e28307196a9d9b by Jasem Mutlaq.
Committed on 05/06/2018 at 22:44.
Pushed by mutlaqja into branch 'ekoslive'.
Initial support for profile control
M +1 -4 kstars/ekos/align/align.cpp
M +46 -5 kstars/ekos/ekoslive/ekosliveclient.cpp
M +17 -3 kstars/ekos/ekoslive/ekosliveclient.h
M +6 -0 kstars/ekos/ekosmanager.cpp
M +3 -0 kstars/ekos/ekosmanager.h
https://commits.kde.org/kstars/dbb941945b0e5274aab320d5e3e28307196a9d9b
diff --git a/kstars/ekos/align/align.cpp b/kstars/ekos/align/align.cpp
index 0b615ef09..610bf121e 100644
--- a/kstars/ekos/align/align.cpp
+++ b/kstars/ekos/align/align.cpp
@@ -4878,10 +4878,7 @@ void Align::startPAHRefreshProcess()
}
void Align::setPAHRefreshComplete()
-{
- pahStage = PAH_REFRESH;
- emit newPAHStage(pahStage);
-
+{
abort();
Options::setAstrometrySolverWCS(rememberSolverWCS);
diff --git a/kstars/ekos/ekoslive/ekosliveclient.cpp \
b/kstars/ekos/ekoslive/ekosliveclient.cpp index 13a142013..d4873026f 100644
--- a/kstars/ekos/ekoslive/ekosliveclient.cpp
+++ b/kstars/ekos/ekoslive/ekosliveclient.cpp
@@ -45,6 +45,7 @@ QMap<EkosLiveClient::COMMANDS, QString> const \
EkosLiveClient::commands = {GET_MOUNTS, "get_mounts"},
{GET_SCOPES, "get_scopes"},
{GET_FILTER_WHEELS, "get_filter_wheels"},
+ {NEW_CONNECTION_STATE, "new_connection_state"},
{NEW_MOUNT_STATE, "new_mount_state"},
{NEW_CAPTURE_STATE, "new_capture_state"},
{NEW_GUIDE_STATE, "new_guide_state"},
@@ -57,6 +58,10 @@ QMap<EkosLiveClient::COMMANDS, QString> const \
EkosLiveClient::commands = {NEW_NOTIFICATION, "new_notification"},
{NEW_TEMPERATURE, "new_temperature"},
+
+ {START_PROFILE, "profile_start"},
+ {STOP_PROFILE, "profile_stop"},
+
{CAPTURE_PREVIEW, "capture_preview"},
{CAPTURE_TOGGLE_VIDEO, "capture_toggle_video"},
{CAPTURE_START, "capture_start"},
@@ -96,6 +101,7 @@ QMap<EkosLiveClient::COMMANDS, QString> const \
EkosLiveClient::commands = {PAH_SET_MOUNT_ROTATION, "polar_set_mount_rotation"},
{PAH_SET_CROSSHAIR, "polar_set_crosshair"},
{PAH_SELECT_STAR_DONE, "polar_star_select_done"},
+ {PAH_REFRESHING_DONE, "polar_refreshing_done"},
};
EkosLiveClient::EkosLiveClient(EkosManager *manager) : QDialog(manager), \
m_Manager(manager) @@ -361,7 +367,13 @@ void \
EkosLiveClient::onMessageTextReceived(const QString &message)
if (command == commands[GET_PROFILES])
sendProfiles();
- else if (command == commands[GET_STATES])
+ else if (command.startsWith("profile_"))
+ processProfileCommands(command, payload);
+
+ if (m_Manager->getEkosStartingStatus() != EkosManager::EKOS_STATUS_SUCCESS)
+ return;
+
+ if (command == commands[GET_STATES])
sendStates();
else if (command == commands[GET_CAMERAS])
sendCameras();
@@ -392,10 +404,11 @@ void EkosLiveClient::sendProfiles()
for (const auto &oneProfile: m_Manager->profiles)
profileArray.append(oneProfile->toJson());
- sendResponse(commands[GET_PROFILES], profileArray);
-
- //QJsonObject profiles = {{"token", token}, {"type", commands[GET_PROFILES]}, \
{"payload",profileArray}};
- //sendMessage(QJsonDocument(profiles).toJson(QJsonDocument::Compact));
+ QJsonObject profiles = {
+ {"selectedProfile", m_Manager->getCurrentProfile()->name},
+ {"profiles", profileArray}
+ };
+ sendResponse(commands[GET_PROFILES], profiles);
}
void EkosLiveClient::connectAuthServer()
@@ -588,6 +601,9 @@ void EkosLiveClient::sendStates()
if (m_isConnected == false)
return;
+ QJsonObject connectionState = {{"online", m_Manager->getEkosStartingStatus() == \
EkosManager::EKOS_STATUS_SUCCESS}}; + \
sendResponse(EkosLiveClient::commands[EkosLiveClient::NEW_CONNECTION_STATE], \
connectionState); +
QJsonObject captureState = {{ "status", m_Manager->captureStatus->text()}};
sendResponse(EkosLiveClient::commands[EkosLiveClient::NEW_CAPTURE_STATE], \
captureState);
@@ -959,6 +975,10 @@ void EkosLiveClient::processPolarCommands(const QString \
&command, const QJsonObj {
align->setPAHCorrectionSelectionComplete();
}
+ else if (command == commands[PAH_REFRESHING_DONE])
+ {
+ align->setPAHRefreshComplete();
+ }
}
void EkosLiveClient::setPAHStage(Ekos::Align::PAHStage stage)
@@ -1018,3 +1038,24 @@ void EkosLiveClient::setFOVTelescopeType(int index)
sendResponse(EkosLiveClient::commands[EkosLiveClient::NEW_ALIGN_STATE], \
alignState); }
+void EkosLiveClient::processProfileCommands(const QString &command, const \
QJsonObject &payload) +{
+ if (command == commands[START_PROFILE])
+ {
+ m_Manager->setProfile(payload["name"].toString());
+ m_Manager->start();
+ }
+ else if (command == commands[START_PROFILE])
+ {
+ m_Manager->stop();
+ }
+}
+
+void EkosLiveClient::setEkosStatingStatus(EkosManager::CommunicationStatus status)
+{
+ if (status == EkosManager::EKOS_STATUS_PENDING)
+ return;
+
+ QJsonObject connectionState = {{"online", status == \
EkosManager::EKOS_STATUS_SUCCESS}}; + \
sendResponse(EkosLiveClient::commands[EkosLiveClient::NEW_CONNECTION_STATE], \
connectionState); +}
diff --git a/kstars/ekos/ekoslive/ekosliveclient.h \
b/kstars/ekos/ekoslive/ekosliveclient.h index 5bb0d2706..b9f6ec2d1 100644
--- a/kstars/ekos/ekoslive/ekosliveclient.h
+++ b/kstars/ekos/ekoslive/ekosliveclient.h
@@ -14,12 +14,12 @@
#include <memory>
#include "ekos/ekos.h"
+#include "ekos/ekosmanager.h"
#include "ekos/align/align.h"
#include "indi/indicommon.h"
#include "ui_ekoslivedialog.h"
#include "ksnotification.h"
-class EkosManager;
class QProgressIndicator;
class QNetworkAccessManager;
class QNetworkReply;
@@ -45,13 +45,13 @@ public:
void sendEvent(const QString &message, KSNotification::EventType event);
enum COMMANDS
- {
- GET_PROFILES,
+ {
GET_STATES,
GET_CAMERAS,
GET_MOUNTS,
GET_SCOPES,
GET_FILTER_WHEELS,
+ NEW_CONNECTION_STATE,
NEW_MOUNT_STATE,
NEW_CAPTURE_STATE,
NEW_GUIDE_STATE,
@@ -64,6 +64,14 @@ public:
NEW_NOTIFICATION,
NEW_TEMPERATURE,
+ // Profiles
+ GET_PROFILES,
+ START_PROFILE,
+ STOP_PROFILE,
+
+ // Configuration
+ SET_BANDWIDTH,
+
// Capture
CAPTURE_PREVIEW,
CAPTURE_TOGGLE_VIDEO,
@@ -109,6 +117,7 @@ public:
PAH_SET_MOUNT_ROTATION,
PAH_SET_CROSSHAIR,
PAH_SELECT_STAR_DONE,
+ PAH_REFRESHING_DONE,
};
static QMap<COMMANDS, QString> const commands;
@@ -121,6 +130,8 @@ public slots:
void setPAHEnabled(bool enabled);
void setFOVTelescopeType(int index);
+
+ void setEkosStatingStatus(EkosManager::CommunicationStatus status);
//void setAlignFrame(FITSView* view);
signals:
@@ -173,6 +184,9 @@ private:
// Polar
void processPolarCommands(const QString &command, const QJsonObject &payload);
+ // Profile
+ void processProfileCommands(const QString &command, const QJsonObject &payload);
+
// Profiles
void sendProfiles();
void sendStates();
diff --git a/kstars/ekos/ekosmanager.cpp b/kstars/ekos/ekosmanager.cpp
index 0bac7343b..2f2215076 100644
--- a/kstars/ekos/ekosmanager.cpp
+++ b/kstars/ekos/ekosmanager.cpp
@@ -630,6 +630,7 @@ bool EkosManager::start()
qDeleteAll(managedDrivers);
managedDrivers.clear();
ekosStartingStatus = EKOS_STATUS_ERROR;
+ emit newEkosStartingStatus(ekosStartingStatus);
return false;
}
@@ -637,6 +638,7 @@ bool EkosManager::start()
SLOT(processServerTermination(QString,QString)));
ekosStartingStatus = EKOS_STATUS_PENDING;
+ emit newEkosStartingStatus(ekosStartingStatus);
if (currentProfile->autoConnect)
appendLogText(i18n("INDI services started on port %1.", \
managedDrivers.first()->getPort())); @@ -686,6 +688,7 @@ bool EkosManager::start()
qDeleteAll(managedDrivers);
managedDrivers.clear();
ekosStartingStatus = EKOS_STATUS_ERROR;
+ emit newEkosStartingStatus(ekosStartingStatus);
QApplication::restoreOverrideCursor();
return false;
}
@@ -695,6 +698,7 @@ bool EkosManager::start()
QApplication::restoreOverrideCursor();
ekosStartingStatus = EKOS_STATUS_PENDING;
+ emit newEkosStartingStatus(ekosStartingStatus);
appendLogText(
i18n("INDI services started. Connection to remote INDI server is \
successful. Waiting for devices...")); @@ -723,6 +727,7 @@ void \
EkosManager::checkINDITimeout() if (nDevices <= 0)
{
ekosStartingStatus = EKOS_STATUS_SUCCESS;
+ emit newEkosStartingStatus(ekosStartingStatus);
return;
}
@@ -902,6 +907,7 @@ void EkosManager::processNewDevice(ISD::GDInterface \
*devInterface) if (nDevices <= 0)
{
ekosStartingStatus = EKOS_STATUS_SUCCESS;
+ emit newEkosStartingStatus(ekosStartingStatus);
connectB->setEnabled(true);
disconnectB->setEnabled(false);
diff --git a/kstars/ekos/ekosmanager.h b/kstars/ekos/ekosmanager.h
index 84d4b6372..661e9c814 100644
--- a/kstars/ekos/ekosmanager.h
+++ b/kstars/ekos/ekosmanager.h
@@ -139,6 +139,9 @@ class EkosManager : public QDialog, public Ui::EkosManager
*/
Q_SCRIPTABLE bool stop();
+ signals:
+ void newEkosStartingStatus(CommunicationStatus status);
+
protected:
void closeEvent(QCloseEvent *);
void hideEvent(QHideEvent *);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic