// hyperion local includes #include "LedDeviceAtmo.h" LedDeviceAtmo::LedDeviceAtmo(const QJsonObject &deviceConfig) : ProviderRs232() { _deviceReady = init(deviceConfig); } LedDevice* LedDeviceAtmo::construct(const QJsonObject &deviceConfig) { return new LedDeviceAtmo(deviceConfig); } bool LedDeviceAtmo::init(const QJsonObject &deviceConfig) { ProviderRs232::init(deviceConfig); if (_ledCount != 5) { Error( _log, "%d channels configured. This should always be 5!", _ledCount); return 0; } _ledBuffer.resize(4 + 5*3); // 4-byte header, 5 RGB values _ledBuffer[0] = 0xFF; // Startbyte _ledBuffer[1] = 0x00; // StartChannel(Low) _ledBuffer[2] = 0x00; // StartChannel(High) _ledBuffer[3] = 0x0F; // Number of Databytes send (always! 15) return true; } int LedDeviceAtmo::write(const std::vector &ledValues) { memcpy(4 + _ledBuffer.data(), ledValues.data(), _ledCount * sizeof(ColorRgb)); return writeBytes(_ledBuffer.size(), _ledBuffer.data()); }