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 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 QByteArray serialize() const; | ||||
|  | ||||
| @ -68,6 +68,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -69,6 +69,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -120,6 +120,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -162,6 +162,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -107,6 +107,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -155,6 +155,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -109,6 +109,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -122,6 +122,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -68,6 +68,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -87,6 +87,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -126,6 +126,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -105,6 +105,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -27,6 +27,7 @@ | ||||
| #include "SWGDeviceState.h" | ||||
| #include "SWGStarTrackerDisplaySettings.h" | ||||
| 
 | ||||
| #include "device/deviceset.h" | ||||
| #include "dsp/dspengine.h" | ||||
| #include "util/weather.h" | ||||
| #include "util/units.h" | ||||
| @ -53,8 +54,6 @@ StarTracker::StarTracker(WebAPIAdapterInterface *webAPIAdapterInterface) : | ||||
|     m_worker->moveToThread(&m_thread); | ||||
|     m_state = StIdle; | ||||
|     m_errorMessage = "StarTracker error"; | ||||
|     connect(&m_updatePipesTimer, SIGNAL(timeout()), this, SLOT(updatePipes())); | ||||
|     m_updatePipesTimer.start(1000); | ||||
|     m_networkManager = new QNetworkAccessManager(); | ||||
|     QObject::connect( | ||||
|         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/1420mhz_ra_dec.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() | ||||
| { | ||||
|     disconnect(MainCore::instance(), SIGNAL(channelAdded(int, ChannelAPI*)), this, SLOT(handleChannelAdded(int, ChannelAPI*))); | ||||
|     QObject::disconnect( | ||||
|         m_networkManager, | ||||
|         &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 | ||||
| { | ||||
|     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 <QNetworkRequest> | ||||
| #include <QTimer> | ||||
| 
 | ||||
| #include "feature/feature.h" | ||||
| #include "util/message.h" | ||||
| @ -109,6 +108,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
| @ -160,8 +160,6 @@ private: | ||||
| 
 | ||||
|     QNetworkAccessManager *m_networkManager; | ||||
|     QNetworkRequest m_networkRequest; | ||||
|     QList<AvailablePipeSource> m_availablePipes; | ||||
|     QTimer m_updatePipesTimer; | ||||
|     Weather *m_weather; | ||||
|     float m_solarFlux; | ||||
| 
 | ||||
| @ -176,7 +174,6 @@ private: | ||||
|     double applyBeam(const FITS *fits, double beamwidth, double ra, double dec, int& imgX, int& imgY) const; | ||||
| 
 | ||||
| private slots: | ||||
|     void updatePipes(); | ||||
|     void networkManagerFinished(QNetworkReply *reply); | ||||
|     void weatherUpdated(float temperature, float pressure, float humidity); | ||||
| }; | ||||
|  | ||||
| @ -139,6 +139,7 @@ public: | ||||
|     virtual bool handleMessage(const Message& cmd); | ||||
| 
 | ||||
|     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 QByteArray serialize() const; | ||||
|  | ||||
| @ -58,6 +58,7 @@ public: | ||||
| 
 | ||||
|     const QString& getURI() const { return m_uri; } | ||||
|     virtual void getIdentifier(QString& id) const = 0; | ||||
|     virtual QString getIdentifier() const = 0; | ||||
|     virtual void getTitle(QString& title) const = 0; | ||||
|     virtual void setName(const QString& name) { m_name = name; } | ||||
|     virtual const QString& getName() const { return m_name; } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user