mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00:00 
			
		
		
		
	* commit debug code to save it due to merge * migrate first devices to new device registry and configure on runtime * fadecandy and rs232 resets device if config is set * try to hunt crash on osx * test commit if this works with osx * refactor spi devices * cleanup * refactor leddevices file, tinkerforge and ws2812b * refactor raw usb devices * refactor udp devices * - add tpm2net driver - remove old udp driver from build (files left in place for reference for new udp driver) - json serverinfo shows available leddevices * finish rework part 2 of leddevices * add schemas for leddevices. currently only compiled in, but not usedx
		
			
				
	
	
		
			124 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
// STL includes
 | 
						|
#include <string>
 | 
						|
 | 
						|
// Qt includes
 | 
						|
#include <QObject>
 | 
						|
#include <QString>
 | 
						|
#include <QNetworkAccessManager>
 | 
						|
#include <QHostAddress>
 | 
						|
 | 
						|
// Leddevice includes
 | 
						|
#include <leddevice/LedDevice.h>
 | 
						|
 | 
						|
class QUdpSocket;
 | 
						|
 | 
						|
class AtmoOrbLight {
 | 
						|
public:
 | 
						|
	unsigned int id;
 | 
						|
 | 
						|
	///
 | 
						|
	/// Constructs the light.
 | 
						|
	///
 | 
						|
	/// @param id the orb id
 | 
						|
	AtmoOrbLight(unsigned int id);
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * Implementation for the AtmoOrb
 | 
						|
 *
 | 
						|
 * To use set the device to "atmoorb".
 | 
						|
 *
 | 
						|
 * @author RickDB (github)
 | 
						|
 */
 | 
						|
class LedDeviceAtmoOrb : public LedDevice
 | 
						|
{
 | 
						|
	Q_OBJECT
 | 
						|
public:
 | 
						|
	// Last send color map
 | 
						|
	QMap<int, int> lastColorRedMap;
 | 
						|
	QMap<int, int> lastColorGreenMap;
 | 
						|
	QMap<int, int> lastColorBlueMap;
 | 
						|
 | 
						|
	// Multicast status
 | 
						|
	bool joinedMulticastgroup;
 | 
						|
 | 
						|
	///
 | 
						|
	/// Constructs specific LedDevice
 | 
						|
	///
 | 
						|
	/// @param deviceConfig json device config
 | 
						|
	///
 | 
						|
	LedDeviceAtmoOrb(const Json::Value &deviceConfig);
 | 
						|
 | 
						|
	///
 | 
						|
	/// Sets configuration
 | 
						|
	///
 | 
						|
	/// @param deviceConfig the json device config
 | 
						|
	/// @return true if success
 | 
						|
	bool setConfig(const Json::Value &deviceConfig);
 | 
						|
 | 
						|
	/// constructs leddevice
 | 
						|
	static LedDevice* construct(const Json::Value &deviceConfig);
 | 
						|
	///
 | 
						|
	/// Destructor of this device
 | 
						|
	///
 | 
						|
	virtual ~LedDeviceAtmoOrb();
 | 
						|
 | 
						|
	///
 | 
						|
	/// Sends the given led-color values to the Orbs
 | 
						|
	///
 | 
						|
	/// @param ledValues The color-value per led
 | 
						|
	/// @return Zero on success else negative
 | 
						|
	///
 | 
						|
	virtual int write(const std::vector <ColorRgb> &ledValues);
 | 
						|
 | 
						|
	virtual int switchOff();
 | 
						|
 | 
						|
private:
 | 
						|
	/// QNetworkAccessManager object for sending requests.
 | 
						|
	QNetworkAccessManager *_manager;
 | 
						|
 | 
						|
	/// String containing multicast group IP address
 | 
						|
	QString _multicastGroup;
 | 
						|
 | 
						|
	/// use Orbs own (external) smoothing algorithm
 | 
						|
	bool _useOrbSmoothing;
 | 
						|
 | 
						|
	/// Transition time between colors (not implemented)
 | 
						|
	int _transitiontime;
 | 
						|
 | 
						|
	// Maximum allowed color difference, will skip Orb (external) smoothing once reached
 | 
						|
	int _skipSmoothingDiff;
 | 
						|
 | 
						|
	/// Multicast port to send data to
 | 
						|
	int _multiCastGroupPort;
 | 
						|
 | 
						|
	/// Number of leds in Orb, used to determine buffer size
 | 
						|
	int _numLeds;
 | 
						|
 | 
						|
	/// QHostAddress object of multicast group IP address
 | 
						|
	QHostAddress _groupAddress;
 | 
						|
 | 
						|
	/// QUdpSocket object used to send data over
 | 
						|
	QUdpSocket * _udpSocket;
 | 
						|
 | 
						|
	/// Array of the orb ids.
 | 
						|
	std::vector<unsigned int> _orbIds;
 | 
						|
 | 
						|
	///
 | 
						|
	/// Set Orbcolor
 | 
						|
	///
 | 
						|
	/// @param orbId the orb id
 | 
						|
	/// @param color which color to set
 | 
						|
	/// @param commandType which type of command to send (off / smoothing / etc..)
 | 
						|
	///
 | 
						|
	void setColor(unsigned int orbId, const ColorRgb &color, int commandType);
 | 
						|
 | 
						|
	///
 | 
						|
	/// Send Orb command
 | 
						|
	///
 | 
						|
	/// @param bytes the byte array containing command to send over multicast
 | 
						|
	///
 | 
						|
	void sendCommand(const QByteArray &bytes);
 | 
						|
}; |