| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | #ifndef INCLUDE_PLUGININTERFACE_H
 | 
					
						
							|  |  |  | #define INCLUDE_PLUGININTERFACE_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QtPlugin>
 | 
					
						
							|  |  |  | #include <QString>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct PluginDescriptor { | 
					
						
							|  |  |  | 	// general plugin description
 | 
					
						
							|  |  |  | 	const QString displayedName; | 
					
						
							|  |  |  | 	const QString version; | 
					
						
							|  |  |  | 	const QString copyright; | 
					
						
							|  |  |  | 	const QString website; | 
					
						
							|  |  |  | 	bool licenseIsGPL; | 
					
						
							|  |  |  | 	const QString sourceCodeURL; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PluginAPI; | 
					
						
							| 
									
										
										
										
											2016-10-11 01:17:55 +02:00
										 |  |  | class DeviceSourceAPI; | 
					
						
							| 
									
										
										
										
											2016-10-14 18:47:19 +02:00
										 |  |  | class DeviceSinkAPI; | 
					
						
							| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | class PluginGUI; | 
					
						
							| 
									
										
										
										
											2016-05-17 03:41:01 +02:00
										 |  |  | class QWidget; | 
					
						
							| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | class PluginInterface { | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2016-10-13 22:23:43 +02:00
										 |  |  | 	struct SamplingDevice | 
					
						
							| 
									
										
										
										
											2015-09-30 06:57:40 +02:00
										 |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | 		QString displayedName; | 
					
						
							| 
									
										
										
										
											2016-12-29 12:41:10 +01:00
										 |  |  | 		QString hardwareId; | 
					
						
							| 
									
										
										
										
											2015-09-30 06:57:40 +02:00
										 |  |  | 		QString id; | 
					
						
							|  |  |  | 		QString serial; | 
					
						
							|  |  |  | 		int sequence; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 22:23:43 +02:00
										 |  |  | 		SamplingDevice(const QString& _displayedName, | 
					
						
							| 
									
										
										
										
											2016-12-29 12:41:10 +01:00
										 |  |  |                 const QString& _hardwareId, | 
					
						
							| 
									
										
										
										
											2015-09-30 06:57:40 +02:00
										 |  |  | 				const QString& _id, | 
					
						
							|  |  |  | 				const QString& _serial, | 
					
						
							|  |  |  | 				int _sequence) : | 
					
						
							| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | 			displayedName(_displayedName), | 
					
						
							| 
									
										
										
										
											2016-12-29 12:41:10 +01:00
										 |  |  | 			hardwareId(_hardwareId), | 
					
						
							| 
									
										
										
										
											2015-09-30 06:57:40 +02:00
										 |  |  | 			id(_id), | 
					
						
							|  |  |  | 			serial(_serial), | 
					
						
							|  |  |  | 			sequence(_sequence) | 
					
						
							| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | 		{ } | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2016-10-13 22:23:43 +02:00
										 |  |  | 	typedef QList<SamplingDevice> SamplingDevices; | 
					
						
							| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	virtual ~PluginInterface() { }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual const PluginDescriptor& getPluginDescriptor() const = 0; | 
					
						
							|  |  |  | 	virtual void initPlugin(PluginAPI* pluginAPI) = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 23:42:08 +02:00
										 |  |  | 	// channel Rx plugins
 | 
					
						
							| 
									
										
										
										
											2017-05-25 20:13:34 +02:00
										 |  |  | 	virtual PluginGUI* createRxChannel(const QString& channelName __attribute__((unused)), DeviceSourceAPI *deviceAPI __attribute__((unused)) ) { return 0; } | 
					
						
							| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-14 18:47:19 +02:00
										 |  |  | 	// channel Tx plugins
 | 
					
						
							| 
									
										
										
										
											2017-05-25 20:13:34 +02:00
										 |  |  | 	virtual PluginGUI* createTxChannel(const QString& channelName __attribute__((unused)), DeviceSinkAPI *deviceAPI __attribute__((unused)) ) { return 0; } | 
					
						
							| 
									
										
										
										
											2016-10-14 18:47:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// device source plugins only
 | 
					
						
							| 
									
										
										
										
											2016-10-13 22:23:43 +02:00
										 |  |  | 	virtual SamplingDevices enumSampleSources() { return SamplingDevices(); } | 
					
						
							| 
									
										
										
										
											2017-05-25 20:13:34 +02:00
										 |  |  | 	virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId __attribute__((unused)), QWidget **widget __attribute__((unused)), DeviceSourceAPI *deviceAPI __attribute__((unused))) { return 0; } | 
					
						
							| 
									
										
										
										
											2016-10-14 18:47:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// device sink plugins only
 | 
					
						
							|  |  |  | 	virtual SamplingDevices enumSampleSinks() { return SamplingDevices(); } | 
					
						
							| 
									
										
										
										
											2017-05-25 20:13:34 +02:00
										 |  |  | 	virtual PluginGUI* createSampleSinkPluginGUI(const QString& sinkId __attribute__((unused)), QWidget **widget __attribute__((unused)), DeviceSinkAPI *deviceAPI __attribute__((unused))) { return 0; } | 
					
						
							| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-05 04:47:23 +02:00
										 |  |  | Q_DECLARE_INTERFACE(PluginInterface, "SDRangel.PluginInterface/0.1"); | 
					
						
							| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | #endif // INCLUDE_PLUGININTERFACE_H
 |