[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