mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00:00 
			
		
		
		
	* switch rs232 provider to completly async transfer * start of implementing a seperate init function for leddevices * rename setconfig to init * more fixes * implement missing code * fix code style * remove debug code * remove debug stuff * set loglevel to original state
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "LedDeviceLpd8806.h"
 | |
| 
 | |
| LedDeviceLpd8806::LedDeviceLpd8806(const Json::Value &deviceConfig)
 | |
| 	: ProviderSpi()
 | |
| {
 | |
| 	_deviceReady = init(deviceConfig);
 | |
| }
 | |
| 
 | |
| LedDevice* LedDeviceLpd8806::construct(const Json::Value &deviceConfig)
 | |
| {
 | |
| 	return new LedDeviceLpd8806(deviceConfig);
 | |
| }
 | |
| 
 | |
| bool LedDeviceLpd8806::init(const Json::Value &deviceConfig)
 | |
| {
 | |
| 	ProviderSpi::init(deviceConfig);
 | |
| 
 | |
| 	const unsigned clearSize = _ledCount/32+1;
 | |
| 	unsigned messageLength = _ledRGBCount + clearSize;
 | |
| 	// Initialise the buffer
 | |
| 	_ledBuffer.resize(messageLength, 0x00);
 | |
| 
 | |
| 	// Perform an initial reset to start accepting data on the first led
 | |
| 	return writeBytes(clearSize, _ledBuffer.data()) >= 0;
 | |
| }
 | |
| 
 | |
| int LedDeviceLpd8806::write(const std::vector<ColorRgb> &ledValues)
 | |
| {
 | |
| 	// Copy the colors from the ColorRgb vector to the Ldp8806 data vector
 | |
| 	for (unsigned iLed=0; iLed<(unsigned)_ledCount; ++iLed)
 | |
| 	{
 | |
| 		const ColorRgb& color = ledValues[iLed];
 | |
| 
 | |
| 		_ledBuffer[iLed*3]   = 0x80 | (color.red   >> 1);
 | |
| 		_ledBuffer[iLed*3+1] = 0x80 | (color.green >> 1);
 | |
| 		_ledBuffer[iLed*3+2] = 0x80 | (color.blue  >> 1);
 | |
| 	}
 | |
| 
 | |
| 	// Write the data
 | |
| 	return (writeBytes(_ledBuffer.size(), _ledBuffer.data()) < 0) ? -1 : 0;
 | |
| }
 |