mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-31 04:50:29 -04:00 
			
		
		
		
	FeatureAPI: Added more convenient getIdentifier pure virtual method
This commit is contained in:
		
							parent
							
								
									55a0ceadf3
								
							
						
					
					
						commit
						920d160f13
					
				| @ -159,6 +159,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -68,6 +68,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -69,6 +69,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -120,6 +120,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -162,6 +162,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -107,6 +107,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -155,6 +155,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -109,6 +109,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -122,6 +122,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -68,6 +68,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -87,6 +87,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -126,6 +126,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -105,6 +105,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -27,6 +27,7 @@ | |||||||
| #include "SWGDeviceState.h" | #include "SWGDeviceState.h" | ||||||
| #include "SWGStarTrackerDisplaySettings.h" | #include "SWGStarTrackerDisplaySettings.h" | ||||||
| 
 | 
 | ||||||
|  | #include "device/deviceset.h" | ||||||
| #include "dsp/dspengine.h" | #include "dsp/dspengine.h" | ||||||
| #include "util/weather.h" | #include "util/weather.h" | ||||||
| #include "util/units.h" | #include "util/units.h" | ||||||
| @ -53,8 +54,6 @@ StarTracker::StarTracker(WebAPIAdapterInterface *webAPIAdapterInterface) : | |||||||
|     m_worker->moveToThread(&m_thread); |     m_worker->moveToThread(&m_thread); | ||||||
|     m_state = StIdle; |     m_state = StIdle; | ||||||
|     m_errorMessage = "StarTracker error"; |     m_errorMessage = "StarTracker error"; | ||||||
|     connect(&m_updatePipesTimer, SIGNAL(timeout()), this, SLOT(updatePipes())); |  | ||||||
|     m_updatePipesTimer.start(1000); |  | ||||||
|     m_networkManager = new QNetworkAccessManager(); |     m_networkManager = new QNetworkAccessManager(); | ||||||
|     QObject::connect( |     QObject::connect( | ||||||
|         m_networkManager, |         m_networkManager, | ||||||
| @ -69,10 +68,13 @@ StarTracker::StarTracker(WebAPIAdapterInterface *webAPIAdapterInterface) : | |||||||
|     m_temps.append(new FITS(":/startracker/startracker/408mhz_ra_dec.fits")); |     m_temps.append(new FITS(":/startracker/startracker/408mhz_ra_dec.fits")); | ||||||
|     m_temps.append(new FITS(":/startracker/startracker/1420mhz_ra_dec.fits")); |     m_temps.append(new FITS(":/startracker/startracker/1420mhz_ra_dec.fits")); | ||||||
|     m_spectralIndex = new FITS(":/startracker/startracker/408mhz_ra_dec_spectral_index.fits"); |     m_spectralIndex = new FITS(":/startracker/startracker/408mhz_ra_dec_spectral_index.fits"); | ||||||
|  |     scanAvailableChannels(); | ||||||
|  |     connect(MainCore::instance(), SIGNAL(channelAdded(int, ChannelAPI*)), this, SLOT(handleChannelAdded(int, ChannelAPI*))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| StarTracker::~StarTracker() | StarTracker::~StarTracker() | ||||||
| { | { | ||||||
|  |     disconnect(MainCore::instance(), SIGNAL(channelAdded(int, ChannelAPI*)), this, SLOT(handleChannelAdded(int, ChannelAPI*))); | ||||||
|     QObject::disconnect( |     QObject::disconnect( | ||||||
|         m_networkManager, |         m_networkManager, | ||||||
|         &QNetworkAccessManager::finished, |         &QNetworkAccessManager::finished, | ||||||
| @ -170,23 +172,6 @@ bool StarTracker::handleMessage(const Message& cmd) | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void StarTracker::updatePipes() |  | ||||||
| { |  | ||||||
|     QList<AvailablePipeSource> availablePipes = updateAvailablePipeSources("startracker.display", StarTrackerSettings::m_pipeTypes, StarTrackerSettings::m_pipeURIs, this); |  | ||||||
| 
 |  | ||||||
|     if (availablePipes != m_availablePipes) |  | ||||||
|     { |  | ||||||
|         m_availablePipes = availablePipes; |  | ||||||
|         if (getMessageQueueToGUI()) |  | ||||||
|         { |  | ||||||
|             MsgReportPipes *msgToGUI = MsgReportPipes::create(); |  | ||||||
|             QList<AvailablePipeSource>& msgAvailablePipes = msgToGUI->getAvailablePipes(); |  | ||||||
|             msgAvailablePipes.append(availablePipes); |  | ||||||
|             getMessageQueueToGUI()->push(msgToGUI); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| QByteArray StarTracker::serialize() const | QByteArray StarTracker::serialize() const | ||||||
| { | { | ||||||
|     return m_settings.serialize(); |     return m_settings.serialize(); | ||||||
| @ -902,3 +887,92 @@ bool StarTracker::calcSkyTemperature(double frequency, double beamwidth, double | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | void StarTracker::scanAvailableChannels() | ||||||
|  | { | ||||||
|  |     MainCore *mainCore = MainCore::instance(); | ||||||
|  |     MessagePipes& messagePipes = mainCore->getMessagePipes(); | ||||||
|  |     std::vector<DeviceSet*>& deviceSets = mainCore->getDeviceSets(); | ||||||
|  |     m_availableChannels.clear(); | ||||||
|  | 
 | ||||||
|  |     for (const auto& deviceSet : deviceSets) | ||||||
|  |     { | ||||||
|  |         DSPDeviceSourceEngine *deviceSourceEngine =  deviceSet->m_deviceSourceEngine; | ||||||
|  | 
 | ||||||
|  |         if (deviceSourceEngine) | ||||||
|  |         { | ||||||
|  |             for (int chi = 0; chi < deviceSet->getNumberOfChannels(); chi++) | ||||||
|  |             { | ||||||
|  |                 ChannelAPI *channel = deviceSet->getChannelAt(chi); | ||||||
|  | 
 | ||||||
|  |                 if (StarTrackerSettings::m_pipeURIs.contains(channel->getURI()) && !m_availableChannels.contains(channel)) | ||||||
|  |                 { | ||||||
|  |                     qDebug("StarTracker::scanAvailableChannels: register %d:%d %s (%p)", | ||||||
|  |                         deviceSet->getIndex(), chi, qPrintable(channel->getURI()), channel); | ||||||
|  |                     ObjectPipe *pipe = messagePipes.registerProducerToConsumer(channel, this, "startracker.display"); | ||||||
|  |                     MessageQueue *messageQueue = qobject_cast<MessageQueue*>(pipe->m_element); | ||||||
|  |                     QObject::connect( | ||||||
|  |                         messageQueue, | ||||||
|  |                         &MessageQueue::messageEnqueued, | ||||||
|  |                         this, | ||||||
|  |                         [=](){ this->handleChannelMessageQueue(messageQueue); }, | ||||||
|  |                         Qt::QueuedConnection | ||||||
|  |                     ); | ||||||
|  |                     connect(pipe, SIGNAL(toBeDeleted(int, QObject*)), this, SLOT(handleMessagePipeToBeDeleted(int, QObject*))); | ||||||
|  |                     m_availableChannels.insert(channel); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void StarTracker::handleChannelAdded(int deviceSetIndex, ChannelAPI *channel) | ||||||
|  | { | ||||||
|  |     qDebug("StarTracker::handleChannelAdded: deviceSetIndex: %d:%d channel: %s (%p)", | ||||||
|  |         deviceSetIndex, channel->getIndexInDeviceSet(), qPrintable(channel->getURI()), channel); | ||||||
|  |     DeviceSet *deviceSet = MainCore::instance()->getDeviceSets()[deviceSetIndex]; | ||||||
|  |     DSPDeviceSourceEngine *deviceSourceEngine =  deviceSet->m_deviceSourceEngine; | ||||||
|  | 
 | ||||||
|  |     if (deviceSourceEngine && StarTrackerSettings::m_pipeURIs.contains(channel->getURI())) | ||||||
|  |     { | ||||||
|  |         if (!m_availableChannels.contains(channel)) | ||||||
|  |         { | ||||||
|  |             MessagePipes& messagePipes = MainCore::instance()->getMessagePipes(); | ||||||
|  |             ObjectPipe *pipe = messagePipes.registerProducerToConsumer(channel, this, "startracker.display"); | ||||||
|  |             MessageQueue *messageQueue = qobject_cast<MessageQueue*>(pipe->m_element); | ||||||
|  |             QObject::connect( | ||||||
|  |                 messageQueue, | ||||||
|  |                 &MessageQueue::messageEnqueued, | ||||||
|  |                 this, | ||||||
|  |                 [=](){ this->handleChannelMessageQueue(messageQueue); }, | ||||||
|  |                 Qt::QueuedConnection | ||||||
|  |             ); | ||||||
|  |             connect(pipe, SIGNAL(toBeDeleted(int, QObject*)), this, SLOT(handleMessagePipeToBeDeleted(int, QObject*))); | ||||||
|  |             m_availableChannels.insert(channel); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void StarTracker::handleMessagePipeToBeDeleted(int reason, QObject* object) | ||||||
|  | { | ||||||
|  |     if (reason == 0) // producer (channel)
 | ||||||
|  |     { | ||||||
|  |         if (m_availableChannels.contains((ChannelAPI*) object)) | ||||||
|  |         { | ||||||
|  |             qDebug("StarTracker::handleMessagePipeToBeDeleted: removing channel at (%p)", object); | ||||||
|  |             m_availableChannels.remove((ChannelAPI*) object); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void StarTracker::handleChannelMessageQueue(MessageQueue* messageQueue) | ||||||
|  | { | ||||||
|  |     Message* message; | ||||||
|  | 
 | ||||||
|  |     while ((message = messageQueue->pop()) != nullptr) | ||||||
|  |     { | ||||||
|  |         if (handleMessage(*message)) { | ||||||
|  |             delete message; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | |||||||
| @ -21,7 +21,6 @@ | |||||||
| 
 | 
 | ||||||
| #include <QThread> | #include <QThread> | ||||||
| #include <QNetworkRequest> | #include <QNetworkRequest> | ||||||
| #include <QTimer> |  | ||||||
| 
 | 
 | ||||||
| #include "feature/feature.h" | #include "feature/feature.h" | ||||||
| #include "util/message.h" | #include "util/message.h" | ||||||
| @ -109,6 +108,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
| @ -160,8 +160,6 @@ private: | |||||||
| 
 | 
 | ||||||
|     QNetworkAccessManager *m_networkManager; |     QNetworkAccessManager *m_networkManager; | ||||||
|     QNetworkRequest m_networkRequest; |     QNetworkRequest m_networkRequest; | ||||||
|     QList<AvailablePipeSource> m_availablePipes; |  | ||||||
|     QTimer m_updatePipesTimer; |  | ||||||
|     Weather *m_weather; |     Weather *m_weather; | ||||||
|     float m_solarFlux; |     float m_solarFlux; | ||||||
| 
 | 
 | ||||||
| @ -176,7 +174,6 @@ private: | |||||||
|     double applyBeam(const FITS *fits, double beamwidth, double ra, double dec, int& imgX, int& imgY) const; |     double applyBeam(const FITS *fits, double beamwidth, double ra, double dec, int& imgX, int& imgY) const; | ||||||
| 
 | 
 | ||||||
| private slots: | private slots: | ||||||
|     void updatePipes(); |  | ||||||
|     void networkManagerFinished(QNetworkReply *reply); |     void networkManagerFinished(QNetworkReply *reply); | ||||||
|     void weatherUpdated(float temperature, float pressure, float humidity); |     void weatherUpdated(float temperature, float pressure, float humidity); | ||||||
| }; | }; | ||||||
|  | |||||||
| @ -139,6 +139,7 @@ public: | |||||||
|     virtual bool handleMessage(const Message& cmd); |     virtual bool handleMessage(const Message& cmd); | ||||||
| 
 | 
 | ||||||
|     virtual void getIdentifier(QString& id) const { id = objectName(); } |     virtual void getIdentifier(QString& id) const { id = objectName(); } | ||||||
|  |     virtual QString getIdentifier() const { return objectName(); } | ||||||
|     virtual void getTitle(QString& title) const { title = m_settings.m_title; } |     virtual void getTitle(QString& title) const { title = m_settings.m_title; } | ||||||
| 
 | 
 | ||||||
|     virtual QByteArray serialize() const; |     virtual QByteArray serialize() const; | ||||||
|  | |||||||
| @ -58,6 +58,7 @@ public: | |||||||
| 
 | 
 | ||||||
|     const QString& getURI() const { return m_uri; } |     const QString& getURI() const { return m_uri; } | ||||||
|     virtual void getIdentifier(QString& id) const = 0; |     virtual void getIdentifier(QString& id) const = 0; | ||||||
|  |     virtual QString getIdentifier() const = 0; | ||||||
|     virtual void getTitle(QString& title) const = 0; |     virtual void getTitle(QString& title) const = 0; | ||||||
|     virtual void setName(const QString& name) { m_name = name; } |     virtual void setName(const QString& name) { m_name = name; } | ||||||
|     virtual const QString& getName() const { return m_name; } |     virtual const QString& getName() const { return m_name; } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user